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