基于SRAM的可重配置PLD(可編程邏輯器件)的出現(xiàn),,為系統(tǒng)設(shè)計(jì)者動(dòng)態(tài)改變運(yùn)行電路中PLD的邏輯功能創(chuàng)造了條件。PLD使用SRAM單元來保存字的配置數(shù)據(jù)決定了PLD內(nèi)部互連和功能,,改變這些數(shù)據(jù),,也就改變了器件的邏輯功能。由于SRAM的數(shù)據(jù)是易失的,,因此這些數(shù)據(jù)必須保存在PLD器件以外的EPROM,,EEPROM或FLASH ROM等非易失存儲器內(nèi),以便系統(tǒng)在適當(dāng)?shù)臅r(shí)候?qū)⑵湎螺d到PLD中,,從而實(shí)現(xiàn)在電路可重配置ICR(In-Circuit Reconfigurability,,在電路可重配置)。
如何實(shí)現(xiàn)ICR?ALTER公司的應(yīng)用方案AN88中詳細(xì)介紹一種基于DS87C520微控制器的ISP&ICR設(shè)計(jì)方法,,并鈄其源代碼放在ALTERA的網(wǎng)上,,供用戶免費(fèi)下載。作者在設(shè)計(jì)一要求具有ICR功能的電子裝置時(shí),,在詳細(xì)分析了AN88介紹的方法之后,,發(fā)現(xiàn)該應(yīng)用方案中介紹的電路結(jié)構(gòu)復(fù)雜,對微控制器性能及微控制器的開發(fā)裝置的要求和成本都較高,,且只適用于工作電壓為5V的PLD電路,。本文介紹的是作者設(shè)計(jì)的PLD ICR控制電路,它和ALTERA介紹的方法相比,,不但線路結(jié)構(gòu)簡潔,、開發(fā)容易、體積小,、成本低,,而且只需改變ICR控制電路的電源電壓,就能實(shí)現(xiàn)工作電壓為3.3V或5V的PLD器件的電路內(nèi)重配置,。
ICR控制電路硬件原理
ICR控制電路原理圖如圖1所示,。圖中的U1是ICR控制電路的核心器件,它是PHILIPS公司在1999年底推出的20引腳低成本的微控制器P87LPC762,,該微控制器具有2K字節(jié)的程序存儲器,、128字節(jié)的RAM、18/15個(gè)I/O,、WATCHDOG,、通用串行接口UART和一個(gè)硬件I2C總線控制器。P87LPC762采用的是80C51加速處理器結(jié)構(gòu),,其指令和80C51兼容,,但指令的執(zhí)行速度在相同時(shí)鐘下,是標(biāo)準(zhǔn)80C51微控制器的兩倍,。因它采用的是硬件I2C總線控制器節(jié)省大量的軟硬件資源,。U2、U3是ATMEL公司的串行EEPROM AT24C256,,其串行通信協(xié)議為I2C,,容量為32K字節(jié)。在電路中,,U2和U3有來存儲PLD的配置數(shù)據(jù),。
ICR控制電路的工作過程為:經(jīng)MAXPLUS Ⅱ編譯生產(chǎn)的PLD配置文件經(jīng)過預(yù)處理后,通過PC機(jī)的串行通訊口下載到U1中,,并在U1的控制下存儲在EEPROM U2和U3中,,U1再根據(jù)系統(tǒng)的要求通過P0.2、P0.3、P0.4,、P0.6和P0.7等5個(gè)I/O口,將其存儲在U2和U3中的PLD配置數(shù)據(jù)下載到電路中的PLD,。
因作者設(shè)計(jì)電路中的PLD是ALTERA公司的ACEX系列的EP1K30,,其配置文件的容量為52K字節(jié),故電路中采用了兩片AT24C256存儲PLD的配置數(shù)據(jù),。如果配置的PLD是EPF10K10或EPF10K20,,則只需要一片AT24C256,此時(shí)整個(gè)ICR控制電路僅僅只有兩片IC,,這可以說它是目前結(jié)構(gòu)最簡單,、成本最低的ICR控制電路了。讀者在應(yīng)用該電路時(shí),,可根據(jù)其PLD文件的大?。≒LD的配置文件的大小可參考ALTERR公司的應(yīng)用方案AN116)采用1~4片AT24C256。
ICR控制電路軟件設(shè)計(jì)要點(diǎn)
在圖1介紹的ICR控制電路中,,其存儲PLD配置數(shù)據(jù)的EEPROM AT24C256采用I2C串行總線進(jìn)行數(shù)據(jù)交換,,其數(shù)據(jù)交換速度較慢(當(dāng)工作電壓為5V時(shí),其最大I2C總線時(shí)鐘為1MHz),,而PLD配置數(shù)據(jù)又比較大,,通常都在數(shù)十K字節(jié)以上。因此如何提高圖1介紹的ICR控制電路的配置速度,,這將是軟件設(shè)計(jì)上的一個(gè)重點(diǎn),。
ALTERA公司生產(chǎn)且具有ICR功能的PLD器件有FLEX6000、FLEX10K,、APEX和ACEX系列,,它們的配置方式可分為PS(無源串行)、PPS(無源并行同步),、PSA(無源并行異步),、PSA(無源串行異步)和JTAG(Joint Test Action)等四種方式,在這四種方式,,PS方式因PLD與配置電路的互連最簡單,,對配置時(shí)鐘的最小頻率沒有限制而應(yīng)用最廣泛,因此在圖1介紹的ICR控制電路中也采用PS配置方式來實(shí)現(xiàn)ICR功能,。圖2是PS配置方式的時(shí)序圖,。
數(shù)據(jù)從AT24C256讀出時(shí),可采用讀當(dāng)前地址,、隨機(jī)讀和順序讀三種方式,。這三種方式中,順序讀的最簡單,速度最快,,因?yàn)樵谕黄珹T24C256中,,僅需要寫入一次讀命令就可以按順序從0地址開始直至讀完整片AT24C256中的全部數(shù)據(jù)。AT24C256順序讀的時(shí)序圖如圖3所示,。
比較圖2和圖3,,可以看出PLD的PS配置時(shí)序圖和AT24C256順序讀時(shí)序圖有很多相似之處,其唯一的差別在于:在PS配置方式中,,其數(shù)據(jù)配置順序是序列的最低位最先輸入,,而I2C總線讀過程則是其序列的最高位最先輸出,它們之間的輸入和輸出順序剛好相反,。如果將PLD的配置文件通過一定的預(yù)處理,,使其配置數(shù)據(jù)的最低位存儲在EEPROM的最高位上,則在配置過程中,,從EEPROM I2C總線上讀出的當(dāng)前位數(shù)據(jù)正好是PS配置時(shí)需要輸入到PLD中去的當(dāng)前位,,這將是提高ICR的配置速度,縮短配置時(shí)間的最有效措施,,其具體過程如下:
用戶設(shè)計(jì)的PLD程序經(jīng)MAXPLUS Ⅱ的編繹后將產(chǎn)生一個(gè)后綴為.sof的SRAM的SRAM目標(biāo)文件,,該文件含有除配置數(shù)據(jù)以外的控制字符,不能直接寫入到PLD中去,,需要利用MAXPLUS Ⅱ的編程文件轉(zhuǎn)化功能使其生成一個(gè)后綴為.ttf的表格文本文件,,該文件是不帶任何附加符號的PLD配置文件,可以直接配置到PLD中去,。該文件中每一字節(jié)在下載到ICR控制電路的EEPROM之前,,將D7 D6 D5 D4 D3 D2 D1 D0變換為D0 D1 D3 D4 D5 D6 D7之后再寫入EEPROM中,則在PLD配置過程中,,其配置數(shù)據(jù)不經(jīng)任何處理,,從EEPROM讀出的當(dāng)前位數(shù)據(jù)就是此時(shí)需要配置到PLD中去的當(dāng)前位數(shù)據(jù)(這是作者為什么采用時(shí)鐘頻率較慢的I2C的EEPROM,而沒有采用時(shí)鐘頻率相對較快,,但沒有順序讀功能的SPI接口的EEPROM的原因),,從而達(dá)到了縮短ICR控制電路配置時(shí)間的目的。
結(jié)論
本文介紹了一種基于微控制器的PLD ICR控制電路,,該控制電路結(jié)構(gòu)簡單,、占用空間小、性價(jià)比較高,,適用于需要ICR功能的電子裝置中,,該ICR控制電路是為配置ALTERR系列PLD器件來設(shè)計(jì)的,稍加屐也適用于XILINX公司的FPGA器件,。這個(gè)配置電路的主要弱點(diǎn)在于配置速率較慢,,只能適應(yīng)用于配置速率要求不高的應(yīng)用,。
注:文中的一個(gè)概念是ICR(In-Circuit Reconfigurability,在電路可重配置),,ICR是ALTERA提出的概念,,它和目前ISP(In System Programmabled,在系統(tǒng)編程)相并列的一個(gè)概念與IAP(In Application re-Programmable)的意義相差不大,。但筆者使用的是ALTERA的PLD,,因此在文中采用了ICR這個(gè)概念。