從StratixIII及CycloneIV開(kāi)發(fā)板談FPGA配置
掃描二維碼
隨時(shí)隨地手機(jī)看文章
最近為了給幾個(gè)新同學(xué)介紹實(shí)驗(yàn)室所使用的兩個(gè)開(kāi)發(fā)板——StratixIII開(kāi)發(fā)板和DEII-CycloneIV實(shí)驗(yàn)箱,所以整理了下關(guān)于兩個(gè)板子FPGA的配置過(guò)程,從中自己也獲益很多。兩款芯片的配置方式算是代表了如今Altera主流的方式吧。
首先介紹下CycloneIV實(shí)驗(yàn)箱。
實(shí)驗(yàn)箱提供了簡(jiǎn)單的配置流程,首先簡(jiǎn)單介紹下CycloneIV的配置部分電路。
圖中圈起部分及為FPGA配置部分電路圖解,其中重點(diǎn)是其使用的配置芯片為EPCS64,這也是最為常用的配置方式。
首先對(duì)FPGA可以通過(guò)USB Blaster然后以JTAG模式進(jìn)行下載,如下圖:
圖中有個(gè)撥碼開(kāi)關(guān),其中有兩個(gè)可選端,一個(gè)是RUN,一個(gè)是PROG,簡(jiǎn)單的理解就是運(yùn)行和程序配置。這里我比較認(rèn)同RUN的含義,老師們給我們講的時(shí)候都把將程序之間“燒”到FPGA也稱作配置。但我個(gè)人覺(jué)得,"運(yùn)行“這個(gè)詞很貼切,就好像我們是把一個(gè)文件寫入到FPGA在其中運(yùn)行一樣。這個(gè)過(guò)程很簡(jiǎn)單,每個(gè)工程編譯完成后都會(huì)生成一個(gè)sof文件,將它燒到FPGA里面就行了。
可是這樣的配置每次掉電后都需要重新燒寫,所以這里就需要配置芯片EPCS64來(lái)起作用了。我們把程序燒寫到它里面,每次上電后,就自動(dòng)由它來(lái)對(duì)FPGA進(jìn)行配置,這樣就不需要我們一次次的上電燒寫了。
下面介紹下EPCS64的燒寫了。手冊(cè)中給出了它的AS模式配置:
如圖,將撥碼開(kāi)關(guān)撥至PROG端,就可以用PC對(duì)EPCS64配置芯片進(jìn)行燒寫了。
1、先生成一個(gè)pof配置文件。在File下選擇Convert Programming File,這部分操作后面也會(huì)提到。
2、將撥碼開(kāi)關(guān)撥至PROG,在Programmer中將模式選擇為AS mode,選擇pof文件。
3、Start,開(kāi)始燒寫。這里可以發(fā)現(xiàn),過(guò)程較sof文件的燒寫要漫長(zhǎng)得多。
這里需要注意的是,其實(shí)上面圖中圈起部分是很容易引起誤解的。EPCS64要對(duì)FPGA進(jìn)行配置時(shí),撥碼開(kāi)關(guān)仍然需要撥回到RUN端,可以理解成,只是換成了配置芯片把程序燒寫到FPGA中"運(yùn)行”罷了。
下面介紹另一種對(duì)EPCS64的配置方式,我們希望通過(guò)JTAG模式來(lái)對(duì)EPCS64進(jìn)行配置。我們暫且稱它為jic文件模式。這里我們可以簡(jiǎn)單把EPCS64當(dāng)做一個(gè)Flash存儲(chǔ)器,既然是存儲(chǔ)器那肯定可以利用FPGA來(lái)對(duì)它進(jìn)行寫入操作。這種模式下,就是通過(guò)JTAG對(duì)FPGA進(jìn)行寫入操作,然后讓FPGA來(lái)對(duì)配置芯片進(jìn)行寫入操作。
首先,還是通過(guò)Convert Programming File來(lái)生成一個(gè)jic文件。
我們可以看到在下面Input files to convert設(shè)置的時(shí)候,其中比之前的pof文件生成多了一個(gè)Flash Loader,也就是說(shuō),這里選的FPGA就是用來(lái)Loader配置芯片的。
生成了jic文件后,在Programmer中選擇JTAG模式下載就行了,如下圖:
這里也有整個(gè)過(guò)程的體現(xiàn),上圖的下面也顯示了整個(gè)燒寫過(guò)程的簡(jiǎn)單示意圖。
Start之后,就完成了我們對(duì)EPCS64的燒寫了。其中并不需要再去撥動(dòng)撥碼開(kāi)關(guān)了,我們只需一直在RUN下面用JTAG就可以對(duì)兩者進(jìn)行燒錄了。
這里出現(xiàn)了個(gè)小插曲,上面過(guò)程都是在10.0里面完成的,在使用Quartus9.0的時(shí)候一直不能成功,如下圖:
中途報(bào)錯(cuò)了,提示:
對(duì)于這個(gè)問(wèn)題一直糾結(jié)了很久,后來(lái)無(wú)奈得認(rèn)為是Quartus版本bug,對(duì)比兩個(gè)版本Programmer里面可以看到,9.0下面Checksum部分都為0,可見(jiàn)它無(wú)法檢測(cè)。只要換到10.0就行了,后來(lái)發(fā)現(xiàn),其實(shí)別的版本也都可以,唯獨(dú)9.0不行……甚是不解。
另外在網(wǎng)上看到很多朋友說(shuō)不要勾取Verify和Blank-Check的選項(xiàng)可以下載成功,可是我們?cè)囘^(guò)之后雖然可以下載成功,但是卻無(wú)法配置FPGA,程序燒進(jìn)去沒(méi)有任何反應(yīng),所以還是覺(jué)得Quartus版本的問(wèn)題。