莊雪亞,李蕾蕾
(中國(guó)電子科技集團(tuán)公司第五十八研究所,江蘇無(wú)錫 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è)配置芯片用來(lái)存儲(chǔ)配置數(shù)據(jù),上電后FPGA能快速?gòu)呐渲眯酒瑑?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來(lái)完成。普通配置芯片下載方式[2]如圖1所示,通過(guò)上位機(jī)軟件建立FPGA工程、編譯、布局布線(xiàn)后生成配置數(shù)據(jù),連接JTAG下載至配置芯片,F(xiàn)PGA再通過(guò)BPI接口從配置芯片中加載配置數(shù)據(jù)。改進(jìn)型配置芯片下載方式如圖2所示,配置芯片去除了JTAG模塊,通過(guò)例化一個(gè)JTAG轉(zhuǎn)BPI的軟核在FPGA內(nèi)部實(shí)現(xiàn)。上位機(jī)可以通過(guò)連接FPGA的JTAG再通過(guò)軟核轉(zhuǎn)換為BPI格式的數(shù)據(jù)下載配置芯片,這樣可以在不提供額外硬件資源的前提下,實(shí)現(xiàn)用JTAG接口對(duì)配置芯片的讀寫(xiě)。上位機(jī)也可以通過(guò)BPI接口直接對(duì)配置芯片讀寫(xiě)數(shù)據(jù),BPI的數(shù)據(jù)總線(xiàn)為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)在不增加硬件資源的前提下,直接通過(guò)設(shè)計(jì)一個(gè)JTAG接口轉(zhuǎn)BPI接口的軟核,通過(guò)FPGA生成對(duì)應(yīng)的電路,仍能保留JTAG下載及調(diào)試配置芯片的功能;
(3)兼容以往配置芯片的功能。
圖1 普通配置芯片下載框圖
圖2 改進(jìn)型配置芯片下載框圖
如圖3所示,配置芯片由初始化模塊、JTAG接口模塊、BPI命令解析模塊、Flash讀寫(xiě)模塊、接口數(shù)據(jù)處理模塊及Flash組成。上電后由內(nèi)部時(shí)鐘供給初始化模塊,讀取Flash的一些配置信息,保證每個(gè)Flash地址都可以正確讀寫(xiě)。當(dāng)初始化結(jié)束后,就可以根據(jù)JTAG接口或者BPI接口接收數(shù)據(jù)。JTAG接口模塊是一種符合JTAG接口協(xié)議、能解析數(shù)據(jù)命令、下載、調(diào)試配置芯片的一個(gè)接口模塊[3]。BPI接口數(shù)據(jù)處理模塊通過(guò)BPI控制信號(hào)獲得數(shù)據(jù)總線(xiàn)及地址總線(xiàn)上的數(shù)據(jù)。通過(guò)兩個(gè)接口接收到的數(shù)據(jù)和地址由BPI命令解析模塊解析具體對(duì)Flash的操作并傳給Flash讀寫(xiě)模塊[4],能產(chǎn)生有效的讀寫(xiě)時(shí)序?qū)lash進(jìn)行讀寫(xiě)。本文把圖3中用虛線(xiàn)畫(huà)的JTAG接口模塊省去,把這部分邏輯改為用FPGA的軟核實(shí)現(xiàn)。
圖3 配置芯片架構(gòu)
如圖4所示,軟核設(shè)計(jì)思路是:開(kāi)始TMS信號(hào)經(jīng)過(guò)狀態(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)線(xiàn)。當(dāng)解析到是讀數(shù)據(jù)命令或者讀狀態(tài)命令,可以根據(jù)BPI接口的DATA總線(xiàn)讀到數(shù)據(jù)緩存器通過(guò)TDO輸出。
圖4 軟核框圖
如表1所示,BA是指塊地址,一個(gè)塊地址包括1 Mbits;BLA是指一個(gè)單位的地址,一個(gè)地址存儲(chǔ)16 bits;CRD是指配置數(shù)據(jù);SDR是指返回的狀態(tài)數(shù)據(jù);PD是指寫(xiě)命令時(shí)每個(gè)地址對(duì)應(yīng)寫(xiě)入的數(shù)據(jù);RD是指讀命令時(shí)讀出的數(shù)據(jù)。每個(gè)命令都需兩個(gè)有效周期完成,讀命令不需要具體的命令值,只要BPI接口的FOE信號(hào)直接拉低就可以,這樣做是為了方便FPGA上電完自動(dòng)去加載配置芯片內(nèi)的配置數(shù)據(jù),省去發(fā)讀命令的操作。
表1 配置芯片命令
如圖5所示,第一個(gè)寫(xiě)周期數(shù)據(jù)總線(xiàn)發(fā)送20h命令,地址總線(xiàn)發(fā)送對(duì)應(yīng)要擦除的區(qū)域地址,第二個(gè)寫(xiě)周期數(shù)據(jù)總線(xiàn)發(fā)送D0h命令,地址總線(xiàn)不變,當(dāng)擦除完成后數(shù)據(jù)總線(xiàn)會(huì)返回一個(gè)80h的狀態(tài),如未擦除完成會(huì)返回00h的狀態(tài)。
圖5 擦除時(shí)序
如圖6所示,第一個(gè)寫(xiě)周期數(shù)據(jù)總線(xiàn)發(fā)送40h命令,地址總線(xiàn)發(fā)送對(duì)應(yīng)要寫(xiě)數(shù)據(jù)的地址,第二個(gè)寫(xiě)周期數(shù)據(jù)總線(xiàn)發(fā)送要寫(xiě)入的數(shù)據(jù),地址總線(xiàn)不變,當(dāng)寫(xiě)入完成后數(shù)據(jù)總線(xiàn)會(huì)返回一個(gè)80h的狀態(tài),如未寫(xiě)完成會(huì)返回00h的狀態(tài)。
圖6 寫(xiě)時(shí)序
如圖7所示,第一個(gè)寫(xiě)周期FOE_B拉低,F(xiàn)EW_B為高,就說(shuō)明是讀命令,每一個(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所示,通過(guò)配置芯片與FPGA對(duì)接,通過(guò)仿真波形看到done信號(hào)已經(jīng)由低變高,說(shuō)明配置芯片內(nèi)的數(shù)據(jù)已經(jīng)正確無(wú)誤地加載到FPGA內(nèi)。
圖8 配置芯片加載FPGA時(shí)序
如圖9所示,通過(guò)用兩片xilinx virtex5 95T芯片來(lái)完成整個(gè)配置芯片的FPGA驗(yàn)證。先通過(guò)ISE-1軟件把設(shè)計(jì)好的配置芯片工程load到Virtex5-1中,此時(shí)virtex-1就實(shí)現(xiàn)了配置芯片的功能,再通過(guò)ISE-2軟件下載一個(gè)JTAG轉(zhuǎn)BPI接口的軟核給virtex5-2,再通過(guò)ISE-2建立一個(gè)工程,通過(guò)JTAG接口下載給virtex5-2,下載的數(shù)據(jù)通過(guò)轉(zhuǎn)換后對(duì)virtex5-1進(jìn)行寫(xiě)入配置數(shù)據(jù),當(dāng)把全部數(shù)據(jù)寫(xiě)完后,ISE-2對(duì)virtex5-2進(jìn)行復(fù)位,放開(kāi)對(duì)virtex5-2的控制權(quán)限,再重新上完電后,virtex5-2會(huì)自動(dòng)從virtex5-1內(nèi)加載配置數(shù)據(jù),直到加載結(jié)束Done接的燈亮。Done信號(hào)變高代表配置數(shù)據(jù)已正確無(wú)誤地下載到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容量大,通過(guò)BPI接口訪(fǎng)問(wèn)速度快,在不需要更多硬件資源的情況下能兼容以前版本的配置芯片。通過(guò)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]潘立陽(yáng),朱鈞.Flash存儲(chǔ)器技術(shù)與發(fā)展[J].微電子學(xué),2002(01).
[5](美)Rabaey,J M.數(shù)字集成電路-電路、系統(tǒng)與設(shè)計(jì)(第二版)[M].周潤(rùn)德,等譯.北京:電子工業(yè)出版社,2004:319-357.