基于單片機的 復(fù)雜可編程邏輯器件快速配置方法 作者: 時間:2007-03-09 來源:網(wǎng)絡(luò) 加入技術(shù)交流群 掃碼加入和技術(shù)大咖面對面交流海量資料庫查詢 收藏 摘要:介紹基于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%26;#215;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 配置引腳功能說明 DATA0 輸出配置數(shù)據(jù) DCLK 輸出配置時鐘 nCONFIG 輸出器件復(fù)位腳(該信號線的上升沿使配置開始) CONF_DONE 輸入狀態(tài)位(在配置完成后,該信號線為高) nSTATUS 輸入狀態(tài)位(如果該信號線為低,表明在配置過程中出現(xiàn)錯誤,需重新配置)表2 各種CPLD配置文件大小 器 件配置數(shù)據(jù)大小(Bits)配置文件大?。↘bytes) APEX 0K1000E APEX 20K600E APEX 20K400E APEX 20K300E APEX 20K200E APEX20K100 EPF10K100E EPF10K70 EPF10K40 EPF10K30 EPF10K20 EPF10K10 8,938,000 5,564,000 3,878,000 2,733,000 1,950,000 985,000 1,336,000 892,000 498,000 376,000 231,000 118,000 1,029 680 474 333 238 121 164 109 61 46 29 15 注:配置文件大小由.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ū)可以將可編程邏輯器件在線配置成多種不同的工作模式。
評論