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

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

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

圖2.23 AS配置參考電路的截圖
如圖2.24所示,F(xiàn)PGA有組MSEL引腳是用于設置FPGA初上電時的啟動模式,我們的FPGA上電使用Standard AS模式從SPI Flash里面加載配置數(shù)據(jù)。

圖2.24 MSEL引腳配置說明的截圖
有了前面的理論做鋪墊,我們的設計也就有依有據(jù)了。如圖2.25所示,這是我們的SPI FLASH芯片,它的4個信號分別連接到FPGA器件的相應引腳上。

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

圖2.26 JTAG插座與FPGA配置電路