配置電路設(shè)計(jì)
我們所說(shuō)的FPGA配置電路,一方面要完成從PC上把bit文件下載到FPGA或存儲(chǔ)器的任務(wù),另一方面則要完成FPGA上電啟動(dòng)時(shí)加載配置數(shù)據(jù)的任務(wù)。在開(kāi)始設(shè)計(jì)FPGA的配置電路之前,我們不妨花一些篇幅簡(jiǎn)單的了解一下FPGA的配置過(guò)程和配置方式。
大都數(shù)FPGA器件都是基于RAM結(jié)構(gòu)的,當(dāng)然了,也有基于Flash結(jié)構(gòu)的,但RAM結(jié)構(gòu)的是主流,也是我們討論的重點(diǎn)。而RAM是易失存儲(chǔ)器,在掉電后保存在上面的數(shù)據(jù)就丟失了,重新上電后需要再次加載配置數(shù)據(jù)。因此,我們肯定不希望每次重新上電后都用PC去加載一次,工程應(yīng)用也不允許我們這么做。所以,F(xiàn)PGA旁邊都有一顆配置芯片,它通常是一顆Flash存儲(chǔ)器。不管是串行還是并行的Flash,它們的啟動(dòng)加載原理基本相同。
為避免混淆,這里對(duì)FPGA的下載配置和啟動(dòng)配置做一點(diǎn)區(qū)分。FPGA器件的下載配置,是指將PC上的FPGA配置數(shù)據(jù)流通過(guò)下載線(xiàn)纜燒錄到FPGA或者Flash存儲(chǔ)器中。而FPGA器件的啟動(dòng)配置,則是指將配置數(shù)據(jù)流從PC或者Flash存儲(chǔ)器中加載到FPGA內(nèi),使其運(yùn)行起來(lái)。
FPGA器件的下載配置,最常見(jiàn)的是基于JTAG的配置方式,這種方式既可以直接將PC上的配置數(shù)據(jù)流加載到FPGA上在線(xiàn)運(yùn)行,也可以通過(guò)FPGA器件本身間接的將數(shù)據(jù)燒錄到Flash等外部配置芯片中。另一種下載配置是將配置數(shù)據(jù)流直接下載到配置芯片中。由于JTAG方式靈活多用,尤其是在線(xiàn)調(diào)試非??焖俦憷?,因此我們的FPGA核心板電路中就只預(yù)留了JTAG接口。
FPGA器件的啟動(dòng)配置主要有JTAG方式,AS和PS配置方式。
AS配置方式由FPGA器件引導(dǎo)配置過(guò)程,它控制著外部存儲(chǔ)器及其初始化過(guò)程。FPGA器件處于主動(dòng)地位,配置器件處于從屬地位。配置數(shù)據(jù)通過(guò)DATA0引腳送入 FPGA。配置數(shù)據(jù)被同步在DCLK輸入上,1個(gè)時(shí)鐘周期傳送1位數(shù)據(jù)。
PS配置方式則由PC或其它控制器控制配置過(guò)程。在PS配置期間,配置數(shù)據(jù)從外部?jī)?chǔ)存器件通過(guò)DATA0引腳送入FPGA。配置數(shù)據(jù)在DCLK上升沿鎖存,1個(gè)時(shí)鐘周期傳送1位數(shù)據(jù)。
JTAG接口是一個(gè)業(yè)界標(biāo)準(zhǔn),主要用于芯片測(cè)試等功能,使用IEEE Std 1149.1聯(lián)合邊界掃描接口引腳,支持JAM STAPL標(biāo)準(zhǔn),可以使用Altera下載電纜或主控器來(lái)完成。
FPGA在正常工作時(shí),它的配置數(shù)據(jù)存儲(chǔ)在RAM中,加電時(shí)須重新下載。在實(shí)驗(yàn)系統(tǒng)中,通常用計(jì)算機(jī)或控制器進(jìn)行調(diào)試,因此可以使用PS配置方式。在實(shí)用系統(tǒng)中,多數(shù)情況下必須由FPGA主動(dòng)引導(dǎo)配置操作過(guò)程,這時(shí)FPGA將主動(dòng)從外圍專(zhuān)用存儲(chǔ)芯片中獲得配置數(shù)據(jù),而此芯片中FPGA配置信息是用普通編程器將設(shè)計(jì)所得的pof格式的文件燒錄進(jìn)去。
JTAG模式在線(xiàn)下載FPGA的原理如圖2.21所示,PC端的Quartus II軟件通過(guò)下載線(xiàn)纜將配置數(shù)據(jù)流(sof文件)下載到FPGA內(nèi)部,下載完成后FPGA中立刻執(zhí)行下載代碼,速度很快,非常適合調(diào)試。

傳輸文件進(jìn)行PCB打樣
圖2.21 JTAG方式下載配置過(guò)程
FPGA下載數(shù)據(jù)到配置芯片的原理如圖2.22所示,PC端的Quartus II軟件通過(guò)下載線(xiàn)纜將配置數(shù)據(jù)流(jic文件)下載到配置芯片中。由于配置芯片和JTAG接口都是分別連接到FPGA的,他們不是直接連接,所以配置文件從PC先是傳送到FPGA,然后FPGA內(nèi)部再轉(zhuǎn)送給配置芯片,這個(gè)過(guò)程FPGA相當(dāng)于起到一個(gè)橋接的作用。

傳輸文件進(jìn)行PCB打樣
圖2.22 JTAG方式下載數(shù)據(jù)到配置芯片
看完JTAG模式下在線(xiàn)配置FPGA和燒錄配置芯片的原理,我們?cè)倭私庖幌翭PGA上電初始的配置過(guò)程。FPGA上電后,內(nèi)部的控制器首先工作,確認(rèn)當(dāng)前的配置模式,如果是外部配置芯片啟動(dòng),則通過(guò)和外部配置芯片的接口(如我們的SPI接口)將配置芯片的數(shù)據(jù)加載到FPGA的RAM中,配置完成后開(kāi)始正式運(yùn)行。當(dāng)然了,有人可能在想,JTAG在線(xiàn)配置是否和配置芯片加載相沖突呢?非也,JTAG在線(xiàn)配置的優(yōu)先級(jí)是最高的,無(wú)論此時(shí)FPGA中在運(yùn)行什么邏輯,只要JTAG下載啟動(dòng),則FPGA便停下當(dāng)前的工作,開(kāi)始運(yùn)行JTAG下載的新的配置數(shù)據(jù)。
先看器件手冊(cè)中給出的一些相關(guān)參考設(shè)計(jì),如圖2.23所示,這是FPGA和用于配置的SPI Flash的接口連接方式,即我們所說(shuō)的AS配置方式。注意FPGA的幾個(gè)主要引腳nSTATUSCONF_DONEnCONFIGnCE的連接,或者上拉,或者接地,主要是為了保證這些信號(hào)在上電初始處于一個(gè)確定的電平狀態(tài),防止錯(cuò)誤電平導(dǎo)致誤觸發(fā)。DATADCLKNCSOASDO這4個(gè)引腳便是SPI接口,連接到SPI Flash。

傳輸文件進(jìn)行PCB打樣
圖2.23 AS配置參考電路的截圖
如圖2.24所示,F(xiàn)PGA有組MSEL引腳是用于設(shè)置FPGA初上電時(shí)的啟動(dòng)模式,我們的FPGA上電使用Standard AS模式從SPI Flash里面加載配置數(shù)據(jù)。

傳輸文件進(jìn)行PCB打樣
圖2.24 MSEL引腳配置說(shuō)明的截圖
有了前面的理論做鋪墊,我們的設(shè)計(jì)也就有依有據(jù)了。如圖2.25所示,這是我們的SPI FLASH芯片,它的4個(gè)信號(hào)分別連接到FPGA器件的相應(yīng)引腳上。

圖2.25 FPGA的AS配置電路
前面是上電啟動(dòng)配置數(shù)據(jù)的電路,通過(guò)一個(gè)SPI Flash來(lái)實(shí)現(xiàn)。而PC端到FPGA器件的下載則是通過(guò)JTAG來(lái)實(shí)現(xiàn)的,JTAG這個(gè)概念網(wǎng)絡(luò)上滿(mǎn)天飛了,大家自己去消化,但凡有CPU的地方,基本都有JTAG的存在,F(xiàn)PGA也不例外。另外,大家注意前面的MSEL設(shè)置了FPGA啟動(dòng)模式是Standard AS模式,但是JTAG永遠(yuǎn)是最高優(yōu)先級(jí)的模式,任何時(shí)刻,只要JTAG需要進(jìn)行下載配置,那么配置模式將會(huì)轉(zhuǎn)換。JTAG下載插座以及部分配置專(zhuān)用引腳的連接電路如圖2.26所示。

圖2.26 JTAG插座與FPGA配置電路