曹鵬飛
摘要:FPGA在電子通信領(lǐng)域是一種用途廣泛的可編程邏輯器件,能否選擇合適的程序配置方式是一個重要的問題,關(guān)系到FPGA上電后能否快速可靠地進(jìn)入到工作狀態(tài)。通過設(shè)置FPGA為從串配置模式,利用SPI Flash芯片作為外置存儲器,CPLD作為程序加載控制器可以對FPGA進(jìn)行可靠配置。實(shí)踐證明,這種配置方式操作方便,可實(shí)施性強(qiáng),具有一定的參考價值。
關(guān)鍵詞:FPGA CPLD SPI Flash 配置
中圖分類號:TP206.1 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2016)12-0092-02
1 引言
現(xiàn)場可編程門陣列(FPGA)技術(shù)在當(dāng)前許多領(lǐng)域都得到了大規(guī)模的廣泛應(yīng)用,包括通信、網(wǎng)絡(luò)、工業(yè)、醫(yī)療、汽車等各個領(lǐng)域都發(fā)揮了重要作用,滿足了對電子產(chǎn)品高性能、高可靠性和高靈活性的要求。
FPGA基于芯片內(nèi)部的SRAM技術(shù)完成其邏輯功能,并具有可重復(fù)編程的特點(diǎn),但是SRAM存在易失性,掉電則數(shù)據(jù)丟失,因此需要將配置程序存入外部存儲芯片中,上電進(jìn)入對應(yīng)的管理模式即可進(jìn)行程序加載。FPGA的程序配置有多種選擇方式,既可以選擇FPGA公司提供的配置芯片,也可以選擇通用存儲芯片,還可以選擇在線配置模式。而選用通用存儲芯片在性價比方面具有一定的優(yōu)勢,通過CPLD進(jìn)行數(shù)據(jù)讀寫控制操作,即可實(shí)現(xiàn)對FPGA的程序配置,操作簡單靈活。
2 配置原理
按照數(shù)據(jù)接口進(jìn)行劃分,F(xiàn)PGA的配置模式可以分為并行模式和串行模式。按照是否由FPGA提供時鐘源又可以分為主模式和從模式,由FPGA提供配置時鐘CCLK信號的模式稱為為主模式,反之由外部器件給FPGA提供配置時鐘的模式稱為從模式。因此配置模式主要包括主并、主串、從并、從串以及JTAG配置方式。具體模式由FPGA模式管腳M2、M1、M0設(shè)定。外部SPI Flash芯片是一種串行芯片,CPLD作為主控制器,選擇從串配置模式。M(2:0)信號設(shè)為“111”。
FPGA選用Xilinx公司的Virtex 6芯片XC6VLX130T。Virtex 6系列芯片采用40nm工藝制造,是一種高性能的現(xiàn)場可編程門陣列。Virtex 6 FPGA系列包括高性能邏輯、高性能DSP以及高速串行收發(fā)器三個面向應(yīng)用領(lǐng)域而優(yōu)化的FPGA平臺,分別提供了不同的功能和特性組合來滿足不同客戶應(yīng)用的需求。
CPLD芯片選用的是Xilinx公司的CoolRunner-Ⅱ系列的XC2A64A。具有高性能、低功耗的特點(diǎn),并且具有封裝尺寸小的特點(diǎn),可以有效節(jié)約電路板的布局面積。
SPI FLASH存儲芯片選擇的是意法半導(dǎo)體的M25P128,存儲容量為128M比特。SPI接口最大傳輸速率為50Mhz。M25P128具有多種操作指令。
CPLD執(zhí)行對SPI Flash芯片的讀操作時,操作指令為0x03。當(dāng)開始讀取數(shù)據(jù)時,首先將片選信號CS由高電平拉為低電平,SPI Flash芯片在數(shù)據(jù)輸入管腳(D)讀取讀操作指令,然后讀取3字節(jié)的存儲單元的首地址。隨后SPI Flash芯片在數(shù)據(jù)輸出管腳(O)輸出該地址的存儲數(shù)據(jù)字節(jié)。讀取地址自動加1,再跳至下一地址,存儲字節(jié)可以依次輸出到數(shù)據(jù)輸出管腳(O)。該Flash芯片為128Mbit,最大存儲單元為16777216字節(jié)。當(dāng)?shù)竭_(dá)最高地址時,地址計數(shù)器清零。在此期間CS信號一直保持低電平。一旦CS信號重新拉高,即可中止對數(shù)據(jù)的讀取操作。
SPI Flash芯片內(nèi)部按頁分塊進(jìn)行地址空間的劃分,可以存儲多個FPGA的配置文件。當(dāng)需要配置FPGA時,CPLD根據(jù)配置文件的具體保存地址進(jìn)行數(shù)據(jù)的讀取操作,從而可以實(shí)現(xiàn)在不同功能要求下的不同F(xiàn)PGA文件的動態(tài)可重配置,具有一定的靈活性。
3 功能實(shí)現(xiàn)
FPGA配置系統(tǒng)平臺主要由3部分組成:FPGA芯片、CPLD芯片和SPI Flash芯片。由CPLD提供配置參考時鐘CCLK給FPGA,同時提供SPI工作時鐘給SPI Flash芯片。
FPGA配置電路圖如圖1所示。
接口信號功能說明如下:
MSCK: SPI工作時鐘。
CS: 配置芯片選擇信號,低電平有效。
MOSI: Flash數(shù)據(jù)信號串行輸入。
MISO: Flash數(shù)據(jù)信號串行輸出。
CCLK: FPGA配置時鐘,和SPI工作時鐘反相。
PROG: 低電平FPGA異步復(fù)位信號,從低電平重新拉高后才可以進(jìn)行編程。
INIT: FPGA初始化完成信號,當(dāng)為低電平時,F(xiàn)PGA清除配置寄存器。當(dāng)FPGA采集配置模式信號M2、M1、M0狀態(tài)完成后,由低電平變?yōu)楦唠娖健?/p>
DONE: FPGA配置完成信號。
CPLD按照不同功能主要包括3個模塊:信號檢測模塊,計數(shù)器模塊,SPI信號產(chǎn)生模塊。
信號檢測模塊完成對PROG、INIT、DONE等信號的檢測判斷。
計數(shù)器模塊完成符合SPI時序要求的計數(shù)以及復(fù)位計數(shù)器等計數(shù)器的計數(shù)。
SPI信號產(chǎn)生模塊主要完成符合SPI時序要求的CS、MOSI、MISO等信號的輸出。
CPLD上電后可以實(shí)現(xiàn)對FPGA的重復(fù)配置。CPLD完成對FPGA的配置操作是通過對SPI Flash的讀操作和對FPGA的寫操作兩個過程來實(shí)現(xiàn)的。FPGA在沒有完成編程之前,INIT和DONE信號為低電平,PROG信號為高電平。
CPLD在兩種條件下選擇是否對FPGA進(jìn)行程序配置。首先,當(dāng)電路板上電時,CPLD即進(jìn)入FPGA程序加載編程模式。其次,CPLD對來自上位機(jī)或電路板CPU的FPGA程序加載使能信號進(jìn)行判斷,使能信號為脈沖信號,脈寬為一個SPI工作時鐘周期,高電平有效。判斷信號有效時則進(jìn)入程序加載編程模式。
FPGA選用V6芯片,而V6芯片是多電源供電,在FPGA各路電源按照上電順序供電正常后,電源管理模塊輸出給CPLD一個power-complete高電平信號,才可以對FPGA進(jìn)行程序配置。
在電路板上電后,CPLD檢測power-complete信號和加載使能信號,一旦信號有效,CPLD內(nèi)部的的4位PROG計數(shù)器開始計數(shù),產(chǎn)生一個不小于250us的PROG低電平信號,然后PROG信號重新拉高。
CPLD開始檢測FPGA的INIT信號,在PROG信號由低電平變?yōu)楦唠娖阶疃?ms 的時間之內(nèi),INIT信號應(yīng)該由低電平變?yōu)楦唠娖?,CPLD可以開始對Flash芯片的讀操作,否則進(jìn)入無效狀態(tài)。
Flash芯片的存儲容量為128Mbit,即16M字節(jié)。數(shù)據(jù)讀寫計數(shù)器包括3位計數(shù)器mcnt(2:0)和24位計數(shù)器mcnt1(23:0)。mcnt1(23:0)最大計數(shù)值為0xFFFFFF,一旦計滿停止計數(shù),除非計數(shù)器重新復(fù)位。
CPLD產(chǎn)生CS信號和MOSI輸出信號,一旦進(jìn)入Flash讀操作模式,CS信號電平即拉低為低電平。MOSI信號首先輸出1個字節(jié)的操作指令,由于是對FLASH的讀操作,因此輸出指令為0x03,然后輸出3個字節(jié)的地址。由于程序是從Flash芯片的第0字節(jié)開始寫入,因此讀取的初始地址設(shè)為0X000000。Flash芯片在收到正確的指令后,從第5個字節(jié)周期開始,F(xiàn)LASH芯片的MISO管腳開始輸出配置文件的數(shù)據(jù),并同時送給FPGA芯片和CPLD芯片。FPGA開始執(zhí)行配置數(shù)據(jù)的寫操作,接收MCS配置文件碼流。
同時CPLD芯片開始檢測FPGA的DONE信號,一旦檢測到DONE信號為高電平,說明配置碼流傳輸正常結(jié)束,CS信號需要重新拉高,表示FPGA配置完成。
利用VHDL語言編寫代碼,完成CPLD的邏輯電路設(shè)計。
在仿真軟件里得到的仿真波形圖如圖2所示。
4 功能驗(yàn)證
為了對本文設(shè)計的FPGA配置系統(tǒng)進(jìn)行驗(yàn)證,按照圖1設(shè)計了系統(tǒng)驗(yàn)證平臺。SPI Flash芯片通過配置接口寫入FPGA配置程序MCS文件,然后由CPLD進(jìn)行數(shù)據(jù)讀取,再寫入到FPGA XC6VLX130T芯片進(jìn)行程序配置。經(jīng)過驗(yàn)證,CPLD可以成功實(shí)現(xiàn)FPGA的配置。
5 結(jié)語
本文提供了一種通過CPLD配置FPGA的方法,對于其它類似的FPGA和SPI Flash芯片的配置,可以進(jìn)行同樣的電路和程序設(shè)計,具有一定的參考價值。
參考文獻(xiàn)
[1]候伯亨,劉凱,顧新.VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第四版)[M].西安電子大學(xué)出版社,2014.
[2]何賓.EDA原理及VHDL實(shí)現(xiàn)[M].清華大學(xué)出版社,2011.
[3]李春雨,夏敏磊.基于CPLD的SPI Flash程序在線加載方案[J].自動化與儀器儀表,2015.
[4]陸禮紅,尹煥亭.基于CPLD 技術(shù)的FPGA 快速加載方案研究[J].電子技術(shù)與軟件工程,2015.
[5]Xilinx.Virtex-6 FPGA Configuration User Guide UG360 (v3.9) [R] November 18,2015.