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