莊雪亞,李蕾蕾
(中國(guó)電子科技集團(tuán)公司第五十八研究所,江蘇無錫 214072)
基于SRAM結(jié)構(gòu)的FPGA,上電時(shí)要將配置數(shù)據(jù)讀入到片內(nèi)SRAM中,配置完成就可以進(jìn)入工作狀態(tài)。掉電后SRAM中的配置數(shù)據(jù)丟失,F(xiàn)PGA內(nèi)部邏輯關(guān)系隨之消失。正常使用SRAM型FPGA時(shí)必須配一個(gè)配置芯片用來存儲(chǔ)配置數(shù)據(jù),上電后FPGA能快速從配置芯片內(nèi)加載到配置數(shù)據(jù),使FPGA正常工作。隨著設(shè)計(jì)工藝的飛速發(fā)展,F(xiàn)PGA規(guī)模也越做越大,配置容量也呈幾何倍數(shù)增長(zhǎng),因而對(duì)配置芯片的配置便捷性、加載速度、存儲(chǔ)容量提出了更高的要求[1]。本文基于SRAM型FPGA,設(shè)計(jì)一款改進(jìn)型配置芯片,該芯片兼容傳統(tǒng)的配置芯片。
配置芯片都是與SRAM型FPGA搭載使用,一般一片SRAM型FPGA會(huì)搭載一片配置芯片或多片配置芯片級(jí)聯(lián)使用。因此我們?cè)趯?duì)配置芯片加載數(shù)據(jù)時(shí)可以借助FPGA來完成。普通配置芯片下載方式[2]如圖1所示,通過上位機(jī)軟件建立FPGA工程、編譯、布局布線后生成配置數(shù)據(jù),連接JTAG下載至配置芯片,F(xiàn)PGA再通過BPI接口從配置芯片中加載配置數(shù)據(jù)。改進(jìn)型配置芯片下載方式如圖2所示,配置芯片去除了JTAG模塊,通過例化一個(gè)JTAG轉(zhuǎn)BPI的軟核在FPGA內(nèi)部實(shí)現(xiàn)。上位機(jī)可以通過連接FPGA的JTAG再通過軟核轉(zhuǎn)換為BPI格式的數(shù)據(jù)下載配置芯片,這樣可以在不提供額外硬件資源的前提下,實(shí)現(xiàn)用JTAG接口對(duì)配置芯片的讀寫。上位機(jī)也可以通過BPI接口直接對(duì)配置芯片讀寫數(shù)據(jù),BPI的數(shù)據(jù)總線為16位寬,數(shù)據(jù)傳輸量大,最高配置速度為800 Mb/s。配置芯片的下載方式?jīng)Q定了配置芯片的架構(gòu)設(shè)計(jì)。
本設(shè)計(jì)的優(yōu)點(diǎn)如下:
(1)不需要JTAG模塊,省去配置芯片的大部分控制邏輯,減少流片風(fēng)險(xiǎn);
(2)在不增加硬件資源的前提下,直接通過設(shè)計(jì)一個(gè)JTAG接口轉(zhuǎn)BPI接口的軟核,通過FPGA生成對(duì)應(yīng)的電路,仍能保留JTAG下載及調(diào)試配置芯片的功能;
(3)兼容以往配置芯片的功能。
圖1 普通配置芯片下載框圖
圖2 改進(jìn)型配置芯片下載框圖
如圖3所示,配置芯片由初始化模塊、JTAG接口模塊、BPI命令解析模塊、Flash讀寫模塊、接口數(shù)據(jù)處理模塊及Flash組成。上電后由內(nèi)部時(shí)鐘供給初始化模塊,讀取Flash的一些配置信息,保證每個(gè)Flash地址都可以正確讀寫。當(dāng)初始化結(jié)束后,就可以根據(jù)JTAG接口或者BPI接口接收數(shù)據(jù)。JTAG接口模塊是一種符合JTAG接口協(xié)議、能解析數(shù)據(jù)命令、下載、調(diào)試配置芯片的一個(gè)接口模塊[3]。BPI接口數(shù)據(jù)處理模塊通過BPI控制信號(hào)獲得數(shù)據(jù)總線及地址總線上的數(shù)據(jù)。通過兩個(gè)接口接收到的數(shù)據(jù)和地址由BPI命令解析模塊解析具體對(duì)Flash的操作并傳給Flash讀寫模塊[4],能產(chǎn)生有效的讀寫時(shí)序?qū)lash進(jìn)行讀寫。本文把圖3中用虛線畫的JTAG接口模塊省去,把這部分邏輯改為用FPGA的軟核實(shí)現(xiàn)。
圖3 配置芯片架構(gòu)
如圖4所示,軟核設(shè)計(jì)思路是:開始TMS信號(hào)經(jīng)過狀態(tài)機(jī)解析當(dāng)前TDI是數(shù)據(jù)還是命令,根據(jù)數(shù)據(jù)或者命令分別把TDI的數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)寄存器和指令寄存器;再進(jìn)一步根據(jù)指令和數(shù)據(jù)解析成BPI對(duì)應(yīng)的地址或者數(shù)據(jù),還有BPI的控制信號(hào)線。當(dāng)解析到是讀數(shù)據(jù)命令或者讀狀態(tài)命令,可以根據(jù)BPI接口的DATA總線讀到數(shù)據(jù)緩存器通過TDO輸出。
圖4 軟核框圖
如表1所示,BA是指塊地址,一個(gè)塊地址包括1 Mbits;BLA是指一個(gè)單位的地址,一個(gè)地址存儲(chǔ)16 bits;CRD是指配置數(shù)據(jù);SDR是指返回的狀態(tài)數(shù)據(jù);PD是指寫命令時(shí)每個(gè)地址對(duì)應(yīng)寫入的數(shù)據(jù);RD是指讀命令時(shí)讀出的數(shù)據(jù)。每個(gè)命令都需兩個(gè)有效周期完成,讀命令不需要具體的命令值,只要BPI接口的FOE信號(hào)直接拉低就可以,這樣做是為了方便FPGA上電完自動(dòng)去加載配置芯片內(nèi)的配置數(shù)據(jù),省去發(fā)讀命令的操作。
表1 配置芯片命令
如圖5所示,第一個(gè)寫周期數(shù)據(jù)總線發(fā)送20h命令,地址總線發(fā)送對(duì)應(yīng)要擦除的區(qū)域地址,第二個(gè)寫周期數(shù)據(jù)總線發(fā)送D0h命令,地址總線不變,當(dāng)擦除完成后數(shù)據(jù)總線會(huì)返回一個(gè)80h的狀態(tài),如未擦除完成會(huì)返回00h的狀態(tài)。
圖5 擦除時(shí)序
如圖6所示,第一個(gè)寫周期數(shù)據(jù)總線發(fā)送40h命令,地址總線發(fā)送對(duì)應(yīng)要寫數(shù)據(jù)的地址,第二個(gè)寫周期數(shù)據(jù)總線發(fā)送要寫入的數(shù)據(jù),地址總線不變,當(dāng)寫入完成后數(shù)據(jù)總線會(huì)返回一個(gè)80h的狀態(tài),如未寫完成會(huì)返回00h的狀態(tài)。
圖6 寫時(shí)序
如圖7所示,第一個(gè)寫周期FOE_B拉低,F(xiàn)EW_B為高,就說明是讀命令,每一個(gè)地址都需立即返回一個(gè)該地址的數(shù)據(jù)。
圖7 讀時(shí)序
采用基于verilog行為級(jí)描述的RTL代碼,建立整個(gè)仿真驗(yàn)證環(huán)境,利用Cadence公司仿真工具NC進(jìn)行設(shè)計(jì)仿真驗(yàn)證[5],對(duì)配置芯片進(jìn)行BPI接口數(shù)據(jù)仿真,對(duì)配置芯片接軟核進(jìn)行FPGA原型驗(yàn)證。
如圖8所示,通過配置芯片與FPGA對(duì)接,通過仿真波形看到done信號(hào)已經(jīng)由低變高,說明配置芯片內(nèi)的數(shù)據(jù)已經(jīng)正確無誤地加載到FPGA內(nèi)。
圖8 配置芯片加載FPGA時(shí)序
如圖9所示,通過用兩片xilinx virtex5 95T芯片來完成整個(gè)配置芯片的FPGA驗(yàn)證。先通過ISE-1軟件把設(shè)計(jì)好的配置芯片工程load到Virtex5-1中,此時(shí)virtex-1就實(shí)現(xiàn)了配置芯片的功能,再通過ISE-2軟件下載一個(gè)JTAG轉(zhuǎn)BPI接口的軟核給virtex5-2,再通過ISE-2建立一個(gè)工程,通過JTAG接口下載給virtex5-2,下載的數(shù)據(jù)通過轉(zhuǎn)換后對(duì)virtex5-1進(jìn)行寫入配置數(shù)據(jù),當(dāng)把全部數(shù)據(jù)寫完后,ISE-2對(duì)virtex5-2進(jìn)行復(fù)位,放開對(duì)virtex5-2的控制權(quán)限,再重新上完電后,virtex5-2會(huì)自動(dòng)從virtex5-1內(nèi)加載配置數(shù)據(jù),直到加載結(jié)束Done接的燈亮。Done信號(hào)變高代表配置數(shù)據(jù)已正確無誤地下載到FPGA內(nèi),F(xiàn)PGA對(duì)應(yīng)的工程可以正常啟動(dòng)。
圖9 配置芯片F(xiàn)PGA驗(yàn)證框圖
本文基于SRAM型FPGA設(shè)計(jì)的配置芯片,設(shè)計(jì)結(jié)構(gòu)簡(jiǎn)單,F(xiàn)lash容量大,通過BPI接口訪問速度快,在不需要更多硬件資源的情況下能兼容以前版本的配置芯片。通過EDA驗(yàn)證和FPGA原型驗(yàn)證,結(jié)果符合預(yù)期。
[1]石雪梅,計(jì)賢春.FPGA配置芯片測(cè)試方法的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)與數(shù)字工程,2010,38(09):77-79,87.
[2]劉笑嫘,何廣平.FPGA芯片的配置與下載[J].科技信息,2011,(15):109-110.
[3]呂彩霞.JTAG的設(shè)計(jì)與研究[D].北京:北京交通大學(xué),2006.
[4]潘立陽,朱鈞.Flash存儲(chǔ)器技術(shù)與發(fā)展[J].微電子學(xué),2002(01).
[5](美)Rabaey,J M.數(shù)字集成電路-電路、系統(tǒng)與設(shè)計(jì)(第二版)[M].周潤(rùn)德,等譯.北京:電子工業(yè)出版社,2004:319-357.