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