嵌入式系統(tǒng)中從串配置FPGA的實(shí)現(xiàn)
本文主要論述在ARM嵌入式系統(tǒng)中如何實(shí)現(xiàn)FPGA從串配置的方法,將系統(tǒng)程序及配置數(shù)據(jù)存儲(chǔ)在系統(tǒng)Flash中,利用ARM的通用I/O口產(chǎn)生配置時(shí)序,省去專用的配置PROM。
文中ARM微處理器采用samsung公司的ARM7TDMI系列中的S3C4480X,F(xiàn)PGA采用xilinx
公司spartan3E系列中的XC3S100E,詳細(xì)討論FPGA的從串配置的時(shí)序,同時(shí)論述S3C4480X從串配置spartan3E系列FPGA的軟、硬件實(shí)現(xiàn)方法。實(shí)踐證明,該方法在成本、體積、靈活性上均具有優(yōu)勢,將此方法應(yīng)用在嵌入式系統(tǒng)中具有很強(qiáng)的實(shí)用價(jià)值。
引言
基于ARM微處理器技術(shù)的應(yīng)用已經(jīng)得到了廣泛、深入的應(yīng)用,包括工業(yè)控制領(lǐng)域、網(wǎng)絡(luò)應(yīng)用、消費(fèi)類電子產(chǎn)品、成像和安全產(chǎn)品等領(lǐng)域。
FPGA通過把設(shè)計(jì)生成的數(shù)據(jù)文件配置到芯片內(nèi)部的SRAM完成其邏輯功能,具有可重復(fù)編程性,可靈活實(shí)現(xiàn)各種邏輯功能,F(xiàn)PGA的這種特性使其在現(xiàn)代電子系統(tǒng)設(shè)計(jì)中得到了廣泛應(yīng)用。
基于SRAM工藝的FPGA是易失性的,系統(tǒng)掉電后SRAM內(nèi)的數(shù)據(jù)將全部丟失,需要外接ROM保存其配置數(shù)據(jù),系統(tǒng)每次上電時(shí)必須重新配置數(shù)據(jù)才能正常工作。通常設(shè)計(jì)時(shí)采用兩種方案保存SRAM內(nèi)的數(shù)據(jù),一是使用專用的PROM,Xilinx公司的XCFxx系列PROM提供FPGA的配置時(shí)序,上電時(shí)自動(dòng)加載PROM中的配置數(shù)據(jù)到FPGA的SRAM中;另一種是在含有微控制器的系統(tǒng)中,如嵌入式系統(tǒng),采用其他非易失性存儲(chǔ)器來存儲(chǔ)配置數(shù)據(jù),如EEPROM、FLASH等,微控制器模擬FPGA的配置時(shí)序?qū)OM中的數(shù)據(jù)置入FPGA中。與前面一種方案相比,在對(duì)成本和體積敏感的系統(tǒng)中,該方案更適用。
從串配囂原理
1.從串配置原理
Xilinx公司的Spartan3E系列FPGA采用90nm工藝的2.5V低電壓FPGA芯片,高性能、低功耗、可無限次編程。XC3S100E總門數(shù)達(dá)10萬門,可采用從串、主串、從并、主并、JTAG等方式進(jìn)行配置,與從串配置相關(guān)的引腳功能及配置如下:
①M(fèi)[2:O]:配置模式選擇位。M2,M1,M0均接上拉電阻,即M[2:O]=111時(shí)為從串模式。
②CCLK:配置時(shí)鐘位,由微處理器提供,上升沿有效。
③DIN:串行數(shù)據(jù)輸入位。
④DOUT:串行數(shù)據(jù)輸出位,用于菊花鏈?zhǔn)脚渲谩?BR>
⑤)PROG_B:低電平異步復(fù)位FPGA內(nèi)部邏輯位。內(nèi)部配置Memory完全復(fù)位后,該引腳指示高電平,此時(shí)才能配置FPGA。
⑥ INIT_B:由低電平到高電平跳變時(shí),采樣配置模式選擇位M[2:0],確定配置方式;配置過程中若出現(xiàn)配置錯(cuò)誤,INIT_B將呈現(xiàn)低電平。
⑦DONE:復(fù)位時(shí)為低電平,配置成功,則為高電平。
2.微處理器從串配置FPGA的時(shí)序
FPGA的配置過程:
①系統(tǒng)上電后,將PROG_B置為低電平,復(fù)位FPGA內(nèi)部邏輯重新配置FPGA,延時(shí)100 μs充分復(fù)位內(nèi)部邏輯后,將PROG_B置為高電平。
②INIT_B保持低電平,將PROG_B置高電平大于300ns后,F(xiàn)PGA將INILB置為高電平,在INIT_B由低向高跳變的瞬間,采樣配置模式選擇位M[2:0],采用從串配置模式。
③FPGA采樣配置模式后,微處理器開始配置FPGA時(shí)鐘CCLK和數(shù)據(jù),在CCLK的每個(gè)上升沿,每bit數(shù)據(jù)被傳入到DIN,數(shù)據(jù)字節(jié)先發(fā)低位,再發(fā)高位,配置過程中若發(fā)生錯(cuò)誤,則INIT_B呈現(xiàn)低電平。
④所有配置數(shù)據(jù)傳送完成,CRC校驗(yàn)無誤,則DONE呈現(xiàn)高電平,否則為低電平。
⑤DONE為高后,F(xiàn)PGA釋放全局三態(tài)(GTS),激活I(lǐng)O管腳,釋放全部置位復(fù)位(GSR)和全局寫使能(GWE)有效,開始執(zhí)行配置區(qū)里的邏輯。
3.配置文件產(chǎn)生的方法
用Xilinx公司提供的開發(fā)工具ISE8.1將工程經(jīng)過綜合、映射、布局、布線后產(chǎn)生編程文件,編程文件有.bit、.bin、.mcs、.tek、.hex等格式,其中.bit格式用作JTAG下載,其他幾種格式用作專用PROM編程。系統(tǒng)產(chǎn)生配置文件時(shí)首先按照產(chǎn)生專用PROM編程文件的方法產(chǎn)生.bin文件,然后將該bin文件轉(zhuǎn)換成ASC Il碼文件存儲(chǔ),并且各個(gè)字節(jié)之間用逗號(hào)分隔,最后把該配置數(shù)據(jù)存放在系統(tǒng)程序的一個(gè)頭文件的數(shù)組Config_data_array[]中,作為系統(tǒng)程序源代碼的一部分,和其它程序一起編譯。
硬件設(shè)計(jì)
ARM微處理器S3C44BOX片內(nèi)集成ARM7TDMI核,同時(shí)集成了豐富的外圍功能模塊,內(nèi)部增加的8K高速緩;中器大大提高了性能。S3C44BOX可訪問256MB的地址空間,最高運(yùn)行頻率達(dá)66MHz,包含4M Flash程序存儲(chǔ)器,XC3S100E從串配置程序和配置文件都固化于其中保存,該FIash支持低電壓寫入(1.65~3.3V)。SDRAM具有8M的運(yùn)行空間,系統(tǒng)在直接運(yùn)行Flastl時(shí)速度非常慢,通常將Flash中的代碼搬到SDRAM中運(yùn)行。
S3C4480X與XC3S100E接口主要是PROG_B、lNIT_B、DONE、CCLK、DIN五根信號(hào)線,硬件接口電路如圖2所示,其中VCC33表示3.3V,VCC25表示2.5V。
1.在S3C44BOX中實(shí)現(xiàn)配置時(shí)序
Xilinx公司的每個(gè)特定型號(hào)的FPGA器件,其配置文件大小是相同的,跟FPGA內(nèi)部邏輯設(shè)計(jì)的復(fù)雜度無關(guān),Spartan3E系列的10萬門FPGA×C3S100E,其配置文件固定為581344bits,若CCLK的時(shí)鐘周期設(shè)置為2 μ s,配置時(shí)間約為1.2s。
軟件配置以確保ARM完全按照配置信號(hào)的時(shí)序工作,本文采用S3C44BOX的通用IO口GPF0、GPFl、GPF2、GPF3膠GPF4模擬FPGA的DIN、CCLK、DONE、INIT_B及PROG_B的時(shí)序。
S3C44BOX微處理中大多數(shù)引腳都是多功能引腳,通過端口配置寄存器選擇不同的功能。以端口F為例,控制寄存器rP-CONF用作設(shè)定引腳功能、輸入、輸出或特殊功能;數(shù)據(jù)寄存器rPDATF[0:8]對(duì)應(yīng)GPF0-GPF8引腳上的數(shù)據(jù);讀寫寄存器rP-DATF的相應(yīng)位,對(duì)應(yīng)于相應(yīng)引腳的讀或?qū)懙目刂啤?BR>
微處理器將CCLK設(shè)為上升沿時(shí),可先向GPF1寫0,再寫1得到,延時(shí)程序由for循環(huán)實(shí)現(xiàn),程序如下所示:

CCLK在每個(gè)上升沿將1 bit數(shù)據(jù)輸入到DIN,首先將GPF1置低電平,1bit數(shù)據(jù)在GPF0準(zhǔn)備好,然后將GPF1置高即可傳輸,重復(fù)循環(huán)著將Config_data_array[]中的每個(gè)字節(jié)按先低位再高位的次序?qū)懭隖PGA中。
實(shí)驗(yàn)結(jié)果驗(yàn)證
驗(yàn)證環(huán)境:編程專用PROM的led.bin文件。用一個(gè)簡單的C程序?qū)in文件轉(zhuǎn)成ASC II碼文件,把該ASC II碼文件復(fù)制到配置數(shù)據(jù)數(shù)組corlfig_data_array[]中,然后把配置程序、配置數(shù)據(jù)、和系統(tǒng)程序在ADT環(huán)境下一起編譯,將生成的bin文件通過JTAG口燒寫到FLASH中。重新上電后,F(xiàn)PGA配置正常,實(shí)驗(yàn)運(yùn)行結(jié)果與預(yù)設(shè)一致。
結(jié)束語
基于ARM的FPGA從串配置方案結(jié)構(gòu)簡單,接線容易,軟件編程也不復(fù)雜,雖然該配置控制電路以Xilinx公司Spartan13E系列的FPGA為例,但稍加修改即可適用于其它系列的FPGA器件,具有一定的通用性。
另外,F(xiàn)PGA具有可重復(fù)配置的靈活性,在嵌入式系統(tǒng)中可以通過串口、網(wǎng)口遠(yuǎn)程燒寫Flash重構(gòu)系統(tǒng)功能,這種在線重構(gòu)技術(shù),為設(shè)備的智能化在線維護(hù)、功能重組和在線升級(jí)等提供了可能,具有很強(qiáng)的靈活性。
來源:零八我的愛0次