基于單片機(jī)的現(xiàn)場可編程門陣列的配置
掃描二維碼
隨時(shí)隨地手機(jī)看文章
1 引言
在大規(guī)??删幊踢壿嬈骷霈F(xiàn)以前,把器件焊接在電路板上是設(shè)計(jì)數(shù)字系統(tǒng)的最后一步。當(dāng)設(shè)計(jì)存在問題并解決后,設(shè)計(jì)者往往不得不重新設(shè)計(jì)印制電路板。設(shè)計(jì)周期長,設(shè)計(jì)效率低。CPLD 、FPGA出現(xiàn)后,利用其在系統(tǒng)可編程或可重配置功能,設(shè)計(jì)者可以在進(jìn)行邏輯設(shè)計(jì)而未進(jìn)行電路設(shè)計(jì)時(shí)就把CPLD、FPGA焊接在電路板上,然后在設(shè)計(jì)調(diào)試時(shí)可一次次隨心所欲的改變電路的硬件邏輯關(guān)系,而不用改變電路板的結(jié)構(gòu)。
2基于SRAM的FPGA的結(jié)構(gòu)和原理
可編程邏輯器件從結(jié)構(gòu)上可分為:
⑴ 乘積項(xiàng)結(jié)構(gòu)器件。其基本結(jié)構(gòu)是〝與-或陣列〞的器件,大部分簡單PLD和CPLD多是這種器件。
⑵ 查找表結(jié)構(gòu)器件。由簡單的查找表組成可編程門,再構(gòu)成陣列形式。大部分FPGA
器件都采用基于SRAM的查找表結(jié)構(gòu)。如XILINX的XC4000系列﹑SPATRAN系列,ALTERA的FLEX10K 系列﹑ACEX系列都是基于SRAM查找表的典型FPGA器件。查找表(LUT)是一種函數(shù)發(fā)生器,一個(gè)N輸入查找表能實(shí)現(xiàn)N個(gè)輸入變量的任何邏輯功能。目前FPGA中多使用4輸入的LUT,所以每一個(gè)LUT可以看成有4位地址線的16×1bit的RAM。當(dāng)用戶通過GDF原理圖或VHDL語言描述了一個(gè)邏輯電路后,F(xiàn)PGA開發(fā)軟件會(huì)自動(dòng)計(jì)算邏輯電路的所有可能結(jié)果,并把結(jié)果事先存入查找表。這樣,當(dāng)多個(gè)信號進(jìn)行邏輯運(yùn)算時(shí)就等于輸入一個(gè)地址進(jìn)行查表,找出地址所對應(yīng)的內(nèi)容,然后將其輸出即可。
3 FPGA的配置原理
FPGA使用SRAM單元來保存配置數(shù)據(jù)。這些配置數(shù)據(jù)決定了FPGA內(nèi)部的互連關(guān)系和邏輯功能,改變這些數(shù)據(jù),也就改變了器件的邏輯功能。由于SRAM 的數(shù)據(jù)是易失的,因此這些數(shù)據(jù)必須保存在FPGA器件以外的EPROM、EEPROM或FLASH ROM等非易失存儲器內(nèi),以便使系統(tǒng)在適當(dāng)?shù)臅r(shí)候?qū)⑵湎螺d到FPGA的SRAM單元中,從而實(shí)現(xiàn)在系統(tǒng)可重配置ICR(In-Circuit Reconfigurability)。ALTERA公司的FPGA有兩種配置下載方式:主動(dòng)方式(AS)與被動(dòng)方式(PS)。在實(shí)驗(yàn)系統(tǒng)中,通常用計(jì)算機(jī)或控制器進(jìn)行調(diào)試,可采用被動(dòng)方式。將在FPGA集成開發(fā)環(huán)境(如QUARTUSII)下經(jīng)編譯﹑仿真后形成的編程文件用下載電纜下載到FPGA中,進(jìn)行硬件調(diào)試與驗(yàn)證。電路設(shè)計(jì)成功后,將配置數(shù)據(jù)燒寫固化在一個(gè)由ALTERA生產(chǎn)的專用EEPROM(如EPC1441)中。上電時(shí),由這片配置 EEPROM先對FPAG加載數(shù)據(jù),幾十毫秒后,F(xiàn)PGA即可正常工作。
ALTERA的FPGA有六種配置模式:配置器件﹑PS(Passive Serial)模式﹑PPS(Passive
Parallel Synchronous)模式﹑PPA(Passive Parallel Asynchronous)模式、PSA(Passive Serial Asynchronous)模式﹑JTAG(Joint Test Action Group)模式。其中,PS模式因FPGA與配置電路的互連最簡單,對配置時(shí)鐘的最小頻率沒有限制而應(yīng)用最廣泛,因此在ICR控制電路中通常采用PS配置方式來實(shí)現(xiàn)ICR功能。FPGA器件有三種工作狀態(tài):配置狀態(tài),初始化狀態(tài),正常工作狀態(tài)(用戶模式)。其時(shí)序如圖
4 用單片機(jī)配置FPGA
目前很多產(chǎn)品都廣泛用了FPGA,雖然品種不同,但編程方式幾乎都一樣:利用專用EPROM對FPGA進(jìn)行配置。專用的EPROM價(jià)格不便宜,且大都是一次性O(shè)PT方式編程。一旦更改FPGA設(shè)計(jì),代價(jià)不小。而且在FPGA實(shí)際應(yīng)用中,設(shè)計(jì)的保密性和可升級性是非常重要的,用單片機(jī)來配置FPGA可以很好的解決上述問題。單片機(jī)用PS模式配置FPGA的時(shí)序與圖1相同。配置時(shí)關(guān)鍵是用單片機(jī)產(chǎn)生合適的時(shí)序。
4.1 硬件設(shè)計(jì)
FPGA的配置文件比較大,通常在數(shù)十千字節(jié)以上。本系統(tǒng)對ALTERA公司的EPF10K20進(jìn)行配置,其配置文件大小為29KB,因此可采用一片 89C51單片機(jī),外擴(kuò)展一片27256存儲器,存放FPGA配置數(shù)據(jù)。單片機(jī)與FPGA間數(shù)據(jù)傳輸采用串行口,電路如圖2。單片機(jī)上電后,根據(jù)系統(tǒng)要求,利用P1.1、 P1.2、 P1.3、 RXD、TXD5個(gè)I/O口將存儲在27256中的配置數(shù)據(jù)下載到電路中的FPGA器件中。
表1 配置引腳功能說明
4.2 軟件設(shè)計(jì)
在軟件編程時(shí),采用串行口工作方式0:移位寄存器方式。本程序以方式0發(fā)送,發(fā)送數(shù)據(jù)從RXD引腳輸出,TXD引腳輸出同步移位脈沖。當(dāng)一個(gè)字節(jié)數(shù)據(jù)寫入發(fā)送數(shù)據(jù)緩沖器SBUF時(shí),啟動(dòng)串行發(fā)送。每發(fā)送一位二進(jìn)制數(shù),寄存器右移一位,直到八位二進(jìn)制數(shù)發(fā)送結(jié)束,置發(fā)送中斷標(biāo)志TI。CPU響應(yīng)中斷,執(zhí)行中斷服務(wù)程序。重復(fù)測試CONFIG_DOWN,直到CONGIG_DOWN為高電平配置結(jié)束。此后在經(jīng)初始化,F(xiàn)PGA才能進(jìn)入用戶工作狀態(tài)。
圖3 主程序流程圖
參考文獻(xiàn):
[1] 胡乾斌,李光斌,李玲等。 單片微型計(jì)算機(jī)原理與應(yīng)用.武漢:華中科技大學(xué)出版社,2002
[2] 潘松,黃繼業(yè)。EDA技術(shù)實(shí)用教程.北京:科學(xué)出版社,2004
[3] 劉曉明。王軍,謝明欽。基于單片機(jī)的復(fù)雜可編程邏輯器件快速配置方法.電子技術(shù)應(yīng)用