《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動態(tài) > XC9500系列CPLD遙控編程的實現(xiàn)

XC9500系列CPLD遙控編程的實現(xiàn)

2009-05-31
作者:孫紅勝

  摘 要: 簡單介紹了XC9500系列CPLD器件及其系統(tǒng)內(nèi)編程(ISP)性能,,接著講述了XC9500系列CPLD器件遙控編程的實現(xiàn)方法,并重點介紹了在遙控編程系統(tǒng)中應(yīng)用微控制器(Intel 8031)實現(xiàn)嵌入式ISP的軟硬件設(shè)計。
  關(guān)鍵詞: CPLD 遙控編程 ISP 微控制器


1 XC9500系列CPLD器件及其ISP性能
  XC9500系列CPLD器件是由多個功能塊(FB)和IO塊(IOB)組成,,可用開關(guān)矩陣FastCONNECT完全互連的子系統(tǒng),,IOB提供輸入和輸出的緩沖,,每個FB提供具有36個輸入和18個輸出的可編程邏輯容量,。FastCONNECT開關(guān)矩陣連接所有的FB的輸出和FB的輸入,對于每個FB,,12至18個(取決于封裝的引腳數(shù))輸出和有關(guān)的輸出使能信號直接驅(qū)動IOB,。
  所有XC9500系列CPLD器件都是系統(tǒng)內(nèi)編程的,最小達一萬次編程/擦除次數(shù),,支持擴充的IEEE 1149.1邊界掃描標準,,XC9500的結(jié)構(gòu)特性著重滿足系統(tǒng)內(nèi)編程的要求,增強的引腳鎖定能力可以避免重做昂貴的印制板,,擴充的JTAG指令集允許編程模式和系統(tǒng)內(nèi)診斷的各種控制,。由于JTAG在其權(quán)限內(nèi)把ISP的性能擴充到1149.1的測試標準中,XC9500系列CPLD器件可以通過JTAG接口實現(xiàn)ISP性能,。XC9500系列的系統(tǒng)內(nèi)編程性能,,不僅為現(xiàn)場編程和調(diào)試提供了方便,允許用戶編程和再編程已經(jīng)安裝在系統(tǒng)印制板上的XC9500系列器件來改進樣機,、更新制造流程,;而且正是由于系統(tǒng)內(nèi)編程性能使得搖控編程成為可能。下面對XC9500系列CPLD器件搖控編程的實現(xiàn)方法做一介紹,。
2 XC9500系列CPLD器件遙控編程的實現(xiàn)方法
  對CPLD器件的編程,,傳統(tǒng)的方法都是現(xiàn)場工程師通過PC機來實現(xiàn)的,PC機上必須有EZTag或者JTAG編程器軟件,,并且PC機必須通過Xchecker或JTAG電纜和目標板相連,,然后將JEDEC編程數(shù)據(jù)下載到目標板的CPLD器件中去。這種傳統(tǒng)的編程方法要求工程師必須親臨現(xiàn)場,,這就帶來一個問題,,那就是當(dāng)產(chǎn)品銷售以后,如果要對它升級(主要是指升級CPLD器件的功能)就十分麻煩,。本文所要介紹的遙控編程不同于傳統(tǒng)的編程方法,,它不需要工程師親臨現(xiàn)場,只需在系統(tǒng)設(shè)計時將編程控制電路加入到嵌入式系統(tǒng)中去即可實現(xiàn),。


  遙控編程的方框圖如圖1所示,。要實現(xiàn)遙控編程,關(guān)鍵在于通信和嵌入式下載技術(shù),。通信部分包括通信接口和通信信道,它完成遠程數(shù)據(jù)傳輸,即將本地PC機生成的CPLD器件編程數(shù)據(jù)傳輸?shù)竭h程的目標系統(tǒng)的嵌入式下載模塊(即圖中所示的“微控制器及嵌入式編程控制”部分),;嵌入式下載技術(shù)是指用微控制器通過JTAG接口實現(xiàn)對XC9500系列CPLD器件編程,。通信可采用現(xiàn)有的各種通信技術(shù),例如通過電話線用調(diào)制解調(diào)器實現(xiàn)通信以及通過電纜,、激光和無線電等實現(xiàn)通信,,在本文對通信的實現(xiàn)不做過多的介紹,下面只以簡單的紅外收發(fā)器為例加以說明,,重點介紹微控制器及嵌入式編程控制的軟硬件實現(xiàn),。
3 微控制器及嵌入式編程控制的實現(xiàn)
3.1 硬件設(shè)計

  微控制器及嵌入式編程控制硬件電路如圖2所示,由微控制器Intel 8031,、時鐘,、地址鎖存器74LS373、程序存儲器27512,、數(shù)據(jù)存儲器RAM(包括XSVF格式數(shù)據(jù)存儲器),、XC95108及數(shù)據(jù)輸入接口等幾部分組成。圖中8031不僅可用來對CPLD進行編程控制,,而且還可實現(xiàn)其它控制和處理,,因為設(shè)計中使用了一片XSVF(Xilinx Serial Vector Format)格式數(shù)據(jù)存儲器,在XC95108的控制下可以在后臺實現(xiàn)數(shù)據(jù)通信,,并將XSVF格式數(shù)據(jù)存儲到XSVM RAM中,,當(dāng)數(shù)據(jù)接收完畢時再中斷微控制器,在微控制器的中斷服務(wù)子程序中通過JTAG接口實現(xiàn)對目標CPLD器件編程,。從圖中可見,,除了XC95108、數(shù)據(jù)輸入和XSVF RAM部分外,,其它部分和常見的8031應(yīng)用系統(tǒng)一樣,,這里不再贅述,下面主要講述數(shù)據(jù)輸入和XC95108的內(nèi)部功能,。


  數(shù)據(jù)輸入由紅外收發(fā)器實現(xiàn)(如可用Siemens公司的IRM3105),,它所接收到的數(shù)據(jù)是由PC機生成的按RS232格式打包的XSVF格式編程數(shù)據(jù)文件,收發(fā)器通過UART(Universal Asynchronous Receiver Transmitter)接口和XC95108相連,。
  XC95108包含URAT接收器,、時序控制狀態(tài)機及總線控制器等。URAT接收器對接收到的數(shù)據(jù)進行校驗,,并且去掉起始位和結(jié)束位,,如果接收正確則通知時序控制狀態(tài)機數(shù)據(jù)接收就緒,如果接收不正確則給出錯誤指示,。
  時序控制狀態(tài)機是遙控編程的核心,,包括四種狀態(tài),,即HIGH、LOW,、DOWNLOAD和ISP,。XSVF文件的第一、二個字節(jié)為傳輸?shù)淖止?jié)總數(shù),,在狀態(tài)HIGH和LOW時字節(jié)總數(shù)的高低字節(jié)被保存到一個變量中,,當(dāng)在DOWNLOAD狀態(tài)時,每當(dāng)往XSVF RAM寫入一個字節(jié),,該變量的值減1,,同時XSVF RAM的地址增1。一旦全部XSVF文件都寫入XSVF RAM中,,狀態(tài)機便進入ISP狀態(tài),,此時中斷微控制器,微控制器響應(yīng)中斷并進入中斷服務(wù)子程序,。中斷服務(wù)子程序根據(jù)XSVF RAM中的信息通過JTAG對XC9500 CPLD器件進行編程,。
  總線控制器根據(jù)時序控制狀態(tài)機控制XSVF格式數(shù)據(jù)存儲器的數(shù)據(jù)總線的切換,當(dāng)在DOWNLOAD狀態(tài)時,,總線控制權(quán)交由XC95108,;當(dāng)在ISP狀態(tài)時,總線控制權(quán)交由8031,;當(dāng)在HIGH和LOW狀態(tài)時,,總線為高阻狀態(tài)。
3.2 XSVF文件的生成
  上面提到過遠程端接收到的數(shù)據(jù)為XSVF文件,,XSVF文件是由本地PC機生成的,,它是如何生成的呢?首先將設(shè)計數(shù)據(jù)輸入,,開發(fā)系統(tǒng)進行設(shè)計轉(zhuǎn)換生成JEDEC器件編程文件,;然后,由Xilinx公司提供的軟件EZTagTM自動讀取JEDEC文件并轉(zhuǎn)換成SVF文件,,SVF格式是專門用來描述IEEE 1149.1(JTAG)總線操作的格式,,SVF文件中不僅包含CPLD的編程數(shù)據(jù),也包含有編程命令,,但由于SVF格式為ASCII碼,,因要求較大內(nèi)存,不適合嵌入式應(yīng)用,;最后,,由軟件svf2xsvf將SVF格式轉(zhuǎn)換成XSVF格式,XSVF格式為壓縮的二進制格式,,占用存儲空間小,,因而更適合嵌入式應(yīng)用,。
3.3 嵌入式ISP編程流程
  XC9500通過四線測試存取端口TAP(Test Access Port)和TAP控制器來執(zhí)行系統(tǒng)內(nèi)編程和IEEE 1149.1邊界掃描測試(JTAG)。TAP包括TCK,、TMS,、TDI和TDO四個引腳,TAP控制器是16狀態(tài)的狀態(tài)機,,控制邊界掃描電路按照TMS運行,執(zhí)行由IEEE規(guī)定的狀態(tài)圖(詳細內(nèi)容參見參考文獻1,,下面所提到的狀態(tài),,如Shift-IR、Shift-DR等包含在16個狀態(tài)之中),。微控制器根據(jù)XSVF文件提供的指令和數(shù)據(jù)激勵TAP端口,,在TAP控制器的控制下實現(xiàn)XC9500 CPLD的ISP編程。流程圖如圖3所示,。


  XSVF格式的編程文件包含編程指令和數(shù)據(jù),,編程指令主要有三條,即XRUNTEST,、XSIR和XSDR,。微控制器讀取指令后進行解釋,并根據(jù)指令執(zhí)行相應(yīng)的操作,。
  XRUNTEST指令指定在執(zhí)行下一條XSIR和XSDR指令之前在Run-Test/Idle狀態(tài)停留的時間,,指令之后緊接的4個字節(jié)為時間數(shù)值(毫秒數(shù));當(dāng)微控制器讀取的指令為XSIR時,,便為TMS和TCK提供激勵直至進入Shift-IR狀態(tài),,然后讀取指定的數(shù)據(jù)長度值和數(shù)據(jù),并將數(shù)據(jù)送到TDI口,;微控制器讀取XSDR指令時,,首先讀取將要在Shift-DR狀態(tài)輸出的數(shù)據(jù),再觸發(fā)TMS和TCK直接進入Shift-DR狀態(tài),,并保持TMS為低,,停留在Shift-DR狀態(tài),將XSVF文件數(shù)據(jù)輸出到TDI口,,并存儲從TD0口接收到的數(shù)據(jù),,在所有數(shù)據(jù)都輸出到TDI口之后,TMS變高進入Exit-1-DR狀態(tài),,然后將從TD0輸入的值和TD0預(yù)期值相比較,,如果不匹配則轉(zhuǎn)出錯處理,如匹配則重新進入Run-Test/Idle狀態(tài),。微控制器循環(huán)地從XSVF RAM中讀取指令和數(shù)據(jù)并執(zhí)行,,直到編程結(jié)束,。
參考文獻
1 孟憲元.可編程ASIC集成數(shù)字系統(tǒng).北京:電子工業(yè)出版社,1998
2 Xilinx公司.The Programmable Logic Data Book,1999

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。