基于單片機的復(fù)雜可編程邏輯器件快速配置方法 作者:重慶大學(xué)通信工程學(xué)院(400044)劉曉明 王 軍 謝明欽來源:《電子技術(shù)應(yīng)用》 摘要:介紹基于SRAM的可重配置CPLD的原理,,通過對多種串行配置的比較,,提出了由單片機和FLASH存儲器組成的串行配置方式,并從系統(tǒng)復(fù)雜度,、可靠性和經(jīng)濟性等方面進行了比較和分析,。 關(guān)鍵詞:復(fù)雜可編程邏輯器件 靜態(tài)隨機存儲器 被動串行 基于SRAM(靜態(tài)隨機存儲器)的可重配置PLD(可編程邏輯器件)的出現(xiàn),,為系統(tǒng)設(shè)計者動態(tài)改變運行電路中PLD的邏輯功能創(chuàng)造了條件。PLD使用SRAM單元來保存配置數(shù)據(jù),。這些配置數(shù)據(jù)決定了PLD內(nèi)部的互連關(guān)系和邏輯功能,,改變這些數(shù)據(jù),也就改變了器件的邏輯功能,。由于SRAM的數(shù)據(jù)是易失的,,因此這些數(shù)據(jù)必須保存在PLD器件以外的EPROM、EEPROM或FLASH ROM等非易失存儲器內(nèi),,以便使系統(tǒng)在適當?shù)臅r候?qū)⑵湎螺d到PLD的SRAM單元中,,從而實現(xiàn)在電路可重配置ICR(In-Circuit Reconfigurability)。 本文介紹筆者設(shè)計的PLD ICR控制電路,,它不但線路結(jié)構(gòu)簡潔,、開發(fā)容易、體積小,、成本低,,并且在圖2介紹的ICR控制電路中,其存儲PLD配置數(shù)據(jù)的FLASH存儲器采用并行總線,,交換速度較快,。然而PLD配置數(shù)據(jù)較大,通常都在數(shù)十千字節(jié)以上,。如何提高圖2介紹的ICR控制電路的配置速度,,使系統(tǒng)上電后的最短的時間內(nèi)完成配置而進入正常工作狀態(tài),軟件設(shè)計上的一個重點,。 1 基于SRAM的可重配置CPLD的結(jié)構(gòu)與原理 早期的可編程邏輯器件大多采用紫外線可擦除只讀存儲器(EPROM)和電可擦除只讀存儲器(EEPROM)方式,。如GAL系列、EPF7064,、EPF7128等,。由于其結(jié)構(gòu)簡單、規(guī)模小,,只能完成簡單數(shù)字邏輯功能,。此后,出現(xiàn)了一類結(jié)構(gòu)上稍復(fù)雜的基于SRAM存儲器的可編程芯片,,即復(fù)雜可編程邏輯器件(CPLD),,它能完成各種數(shù)字邏輯功能。 采用這些結(jié)構(gòu)的可編程邏輯器件有ALTERA公司的FLEX,、ACEX,、APEX系列,XILINX公司的Spartan、Virtex系列,。多年來,,ALTERA公司一直致力于CPLD的開發(fā)。近幾年,,該公司又推出了很有競爭力的CPLD器件,,即靈活的邏輯單元陣列的FLEX(Flexible Logic Element Matrix)系列產(chǎn)品。相對于其它一些廠家的FPGA產(chǎn)品來說,,ALTERA公司的FLEX系列產(chǎn)品有其獨特之處,。這主要表現(xiàn)在高密度、在線配置功能,、高速度和連續(xù)式布線結(jié)構(gòu)等方面,。 查找表LUT(Look-Up-Table)是基于SRAM的可重配置PLD的一個重要組成部分,LUT本質(zhì)上就是一個RAM,。目前CPLD中多使用4輸入的LUT,,所以每一個LUT可以看成個有4位地址線的16×1bit的RAM。當用戶通過GDF原理圖或VHDL語言描述了一個邏輯電路后,,CPLD開發(fā)軟件會自動計算邏輯電路的所有可能結(jié)果,,并把結(jié)果事先存入查找表。這樣,,當多信信號進行邏輯運算時就等于輸入一個地址進行查表,,找出地址所對應(yīng)的內(nèi)容,然后將其輸出即可,。 2 可編程邏輯器件的配置原理 首先在開發(fā)軟件MAX+PLUS II的ASSIGN菜單下選擇將要采用的基于SRAM的器件名稱,。經(jīng)過編譯、優(yōu)化,、邏輯綜合,、仿真等步驟達到設(shè)計要求后,軟件會自動產(chǎn)生一個編程文件(擴展名為.SOF文件),。對于基于SRAM工藝的可編程邏輯器件(如ALTERA的所有FLEX,、ACEX、APEX系列,,XILINX的Sparten,、Vertex系列),由于SRAM存儲器的特點,,掉電后數(shù)據(jù)會消失,,因此在調(diào)試期間可以采用并口ByteblasteMV下載電纜多次重復(fù)配置PLD器件。當電路設(shè)計成功,,調(diào)試完成后,,需要將配置數(shù)據(jù)燒寫固化在一個由ALTERA生產(chǎn)的專用EEPROM(如EPC1441)中,。上電時,由這片配置EEPROM先對PLD加載數(shù)據(jù),,幾十毫秒后,PLD即可正常工作,。 CPLD器件的工作狀態(tài)分為三種:首先是上電配置狀態(tài)(Configuration Mode),,將編程的數(shù)據(jù)裝入CPLD器件的過程,也可稱之為構(gòu)造,;然后是初始化狀態(tài)(Initialization Mode),,在配置完成后,CPLD器件復(fù)位內(nèi)部各類寄存器,,讓I/O引腳為邏輯器件正常工作做準備,;最后是用戶狀態(tài)(User Mode),指電路中CPLD器件正常工作時的狀態(tài),。 ALTERA公司具有ICR功能的PLD器件有FLEX8000,、FLEX10K、APEX和ACEX系列,,它們的配置方式可分為PS,、PPS和JTAG(Joint Test Action Group)等方式。PS方式因PLD與配置電路的互連最簡單,,對配置時鐘的最小頻率沒有限制而應(yīng)用最廣泛,,因此在ICR控制電路中通常采用PS配置方式來實現(xiàn)ICR功能。 被動串行(PS)配置方式:在該配置方式下,,由ByteblasteMV下載電纜產(chǎn)生一個由低到高的跳變送到nCONFIG引腳腳復(fù)位PLD,,然后將配置數(shù)據(jù)送到DATA0引腳,直到CONF_DONE引腳變?yōu)楦唠娖?。圖1是PS配置方式的時序圖,。CONF_DONE變成高電平后,DCLK必須多余十個周期來初始化該器件,。器件的初始化由下載電纜自動執(zhí)行,。在PS方式中沒有握手信號,所以配置時鐘的工作頻率必須低于10MHz,。在多器件PS配置方式中,,第一片PLD的nCEO引腳級聯(lián)到下一片PLD的nCE引腳。在配置完第一個器件后,,nCEO輸出為低,,使第二個PLD器件的nCE有效,開始對第二塊器件進行配置,。 3 用WINBOND78E58單片機配置可編程邏輯器件 用單片機配置可編程邏輯器件與上述PS配置方式原理一致,,只需模擬PS配置方式中DATA0,、DCLK、nCONFIG,、CONF_DONE,、nSTATUS引腳的配置時序,將配置數(shù)據(jù)串行移入PLD,。配置引腳的功能如表1所示,。 3.1 硬件設(shè)計 用單片機配置PLD,可以使用普通輸入輸出口或單行口,。使用普通I/O口(如P1口),,向PLD發(fā)送1Bit數(shù)據(jù)至少需要4個指令周期。一個指令給DATA0賦值,,兩個指令產(chǎn)生DCLK時鐘,,一個指令移位取數(shù)據(jù)。如果晶振為fosc,,一個指令周期為12/fosc,,因此它的下載速率為fosc/48。然而如果采用串行口方式0,,其下載速率提高為fosc/12,。考慮到PLD配置文件數(shù)據(jù)比較大,,通常都在數(shù)十千字節(jié)以上(其配置文件大小如表2),,為了加快配置速度,并適合各種不同規(guī)模的PLD,,采用了WINBOND78E58單片機,。 表1 配置引腳功能說明
表2 各種CPLD配置文件大小
注:配置文件大小由.rbf文件決定 該單片機外接晶振最大頻率為40MHz,,它在串行口方式0下波特率可設(shè)置為fosc/4。另外通過設(shè)置特殊功能寄存器CKCON的MD0,、MD1,、MD2三位,可以將MOVX,、MOVC等指令周期縮短至2個機器周期,。與普通單片機相比,可使配置時間大為縮短,。WINBOND78E58單片機內(nèi)部擁有32KB FLASH ROM.由配置文件數(shù)據(jù)表2可知,,只需一片單片機就可以對EPF10K20系列以下的PLD進行配置了,。本系統(tǒng)中使用了一片APEX20K300E,因此在硬件電路設(shè)計中,,擴展了一片WINBOND29C040 FLASH存儲器(容量為512KB),,其電路如圖2。DATA0與RXD,、DCLK與TXD,、nCONF與P15、CONFIG_DONE與P16,、nSTATUS與P17分別相連。 3.2 軟件設(shè)計 在軟件編程時,,使用了串行口移位寄存器輸入輸出方式,。本系統(tǒng)只需用到輸出方式,串行數(shù)據(jù)通過RXD引腳輸出,,而在TXD引腳輸出移位時鐘,。當一字節(jié)數(shù)據(jù)寫入串行數(shù)據(jù)緩沖器SBUF時,就開始發(fā)送,。在此期間,,發(fā)送控制器送出移位信號,使發(fā)送移位寄存器的內(nèi)容右移一位,,直至最高位(D7位)數(shù)字移出后,,停止發(fā)送數(shù)據(jù)和移位時鐘脈沖。RXD,、TXD時序如圖3,。由圖3可知,它可以用來模擬配置時序,。發(fā)送完一字節(jié)數(shù)據(jù)后,,硬件置發(fā)送標志位TI為1,向CPU申請中斷,。若CPU響應(yīng)中斷,,則從0023H單元開始執(zhí)行串行中斷服務(wù)程序。 為了提高配置速度,,單片機程序用匯編語言編寫,。單片機上電后使nCONFIG腳由低到高復(fù)位待配置PLD;當判斷到nSTATUS為高后,,開始從外部FLASH存儲器取數(shù)據(jù)串行移位,。配置過程中,查詢CONF_DONE,。一旦為高,,配置完成,,但還要送40個DCLK脈沖,PLD才能進入用戶工作狀態(tài),。 用戶設(shè)計PLD程序經(jīng)MAXPLUS II或QUARTUS編譯后將產(chǎn)生后綴后為.sof的SRAM目標文件,。該文件含有除配置數(shù)據(jù)以外的控制字符,不能直接寫入到PLD中去,,需要利用軟件的編程文件轉(zhuǎn)換功能將文件轉(zhuǎn)換成.rbf(Raw Binary File)十六進制文件,。把.rbf文件燒寫到存儲器中,單片機通過MOVX指令讀入后,,串行移位到PLD,。 部分asm語言源程序如下: NCONFIG BIT P1.5 CONFDONE BIT P.6 NSTATUS BIT P1.7 ORG 000h …… CLR SM0 CLR SM1 ;SM0,,SM1為0,,串口工作于方式0 CLR SM2 ;串口波特率為fosc/4 CLR REN ANL 8EH,,#0f8h ,;地址8EH是CKCON單元,MD0,、MD1,、MD2清0 CLR EA WJRESTART:CLR NCONFIG SETB NCONFIG ;上升沿復(fù)位PLD WAIT:JNB NSTATUS,,WAIT ,;NSTATUS為高,可進行配置 WJPEIZHI:MOV P1,,COUNTER3 MOV DPH,,COUNTER2 MOV DPL,COUNTER1 ,;配置數(shù)據(jù)大,,需3個單元作地址記數(shù) MOVX A,@DPTA MOV SBUF,,A ,;串行移位 NOP NOP ;采用填充2個空指令,,正好使一個字節(jié)發(fā)送完成,,可發(fā)送下一個字節(jié) INC COUNTER1 ;地址加 MOV A,,COUNTER1 JB CONFDONE,,WJEND1 CJNE A,#0,,WJPEIZHI INC COUNTER2 NOV A,,COUNTER2 CJNE A,,#0,WJPEIZHI INC COUNTER3 LJMP WJPEIZHI WJEND1:MOV R0,,#60 WJEND:WOV A,,#55H …… MOV SBUF,A ,;由此產(chǎn)生40個DCLK時鐘 DJNZ R0,,WJEND WERE:LJMP HERE ;配置完成,,進入用戶工作模式 使用OTP(One Time Programming)器件配置CPLD具有一定的冒險性,,一次簡單的代碼更換就可能意味著更換OTP器件,并重新開始所有的程序,。被動串行微處理器(Passive Serial With Processor)配置方式以EEPROM為基礎(chǔ),,允許對這些存儲器進行多次編程,所有其它芯片都無需從已裝配的印制電路板上拆卸下來,。高速讀寫周期的FLASH存儲器能確保1萬次編程,而且能對任何以SRAM為基礎(chǔ)的PLD下載,。該方式除了在加電期間能承載配置數(shù)據(jù)外,,還有許多方便之處。例如,,用戶可以將多個配置文件.rbf分區(qū)編程到外部存儲器的未用區(qū)段,,通過單片機讀取不同存儲區(qū)可以將可編程邏輯器件在線配置成多種不同的工作模式。 |
|