利用單片機(jī)實(shí)現(xiàn)CPLD的在系統(tǒng)編程
一、問(wèn)題的提出
本文引用地址:http://www.ex-cimer.com/article/171994.htm嵌入式系統(tǒng)而靈活性的要求。一方面,應(yīng)用環(huán)境會(huì)對(duì)嵌入式系統(tǒng)不斷提出新的要求,需要更改最初的設(shè)計(jì);另一方面指生產(chǎn)多個(gè)品種時(shí)希望盡量能在單一的硬件平臺(tái)上實(shí)現(xiàn)。為了最大限度地滿足靈活性的需要,嵌入式系統(tǒng)一般都設(shè)計(jì)而可編程邏輯器件CPLD。在設(shè)計(jì)階段和現(xiàn)場(chǎng)運(yùn)行之后的各個(gè)階段,都可能會(huì)遇到設(shè)計(jì)的升級(jí)、修改和測(cè)試問(wèn)題。FLASH的使用方便了程序的更新;帶而在系統(tǒng)可編程(ISP)功能的可編程邏輯器件,使得不需重新設(shè)計(jì)印制板就可以改變?cè)脑O(shè)計(jì);網(wǎng)絡(luò)技術(shù)的發(fā)展,又使得遠(yuǎn)程維護(hù)成為可能。
筆者設(shè)計(jì)的嵌入式系統(tǒng),實(shí)現(xiàn)了遠(yuǎn)程維護(hù)。其中CPLD采用了XILINX公司的XC9500系列。
二、JTAG簡(jiǎn)介
JTAG簡(jiǎn)介
JTAG是IEEE的聯(lián)合測(cè)試行動(dòng)小組(Joint Test Action Group)所制定的測(cè)試標(biāo)準(zhǔn)(IEEE1149.1-1990),使得用戶可以測(cè)試器件的邏輯和相互之間的連接。目前,它是國(guó)際上最流行的ICE技術(shù),眾多的芯片廠家都在自己的產(chǎn)品中加入JTAG口,以便用戶調(diào)試。
XILINX的XC9500系列CPLD采用了JTAG的編程和測(cè)試指令。XC9500系列CPLD帶而測(cè)試訪問(wèn)口TAP(Test Access Port),包括4個(gè)引腳:
*TDI-測(cè)試數(shù)據(jù)輸入;
*TDO-測(cè)試數(shù)據(jù)輸出;
*TCK-測(cè)試口同步時(shí)鐘;
*TMS-測(cè)試模式選擇。
當(dāng)用基于PC機(jī)的編程軟件對(duì)CPLD進(jìn)行編程時(shí),PC機(jī)的并口經(jīng)轉(zhuǎn)換板與目標(biāo)器件的TAP接口相連,完成編程工作。
在本設(shè)計(jì)上,將MCU的I/O口與CPLD的TAP接口相連,利用MCU的I/O口模擬JTAG測(cè)試口的行為,實(shí)現(xiàn)對(duì)PLD的編程。
三、SVF與XSVF
SVF (Serial Vector Format)格式由TI公司和Teradyne公司于1991年聯(lián)合開(kāi)發(fā)完成。SVF文件是一個(gè)ASCII碼文件,用于描述基于IEEE.1119.1 標(biāo)準(zhǔn)的測(cè)試模式,包括激勵(lì)、預(yù)期響應(yīng)和屏蔽數(shù)據(jù)。開(kāi)發(fā)SVF的初衷就是獲得一種獨(dú)立于供應(yīng)商的IEEE1149.1標(biāo)準(zhǔn)的測(cè)試模式,它能夠在各個(gè)仿真軟件和測(cè)試儀器廠商之間進(jìn)行數(shù)據(jù)交換,可以應(yīng)用于從設(shè)計(jì)驗(yàn)證現(xiàn)場(chǎng)診斷各個(gè)階段。
SVF文件中包含了編程所需要的命令及相應(yīng)的數(shù)據(jù)。SVF文件由一系列SVF語(yǔ)句組成。語(yǔ)句以分號(hào)結(jié)束。每一個(gè)語(yǔ)句由一個(gè)命令和相關(guān)的參數(shù)組成。命令分為三類:狀態(tài)命令、偏移命令和并行命令。其中狀態(tài)命令說(shuō)明測(cè)試序列如何驅(qū)動(dòng)IEEE1149.1TAP的狀態(tài)機(jī),包括:
*SDR-掃描數(shù)據(jù)寄存器;
*SIR-掃描指令寄存器;
*ENDDR-數(shù)據(jù)寄存器掃描結(jié)束;
*ENDIR-指令寄存器掃描結(jié)束;
*RUNTEST-進(jìn)入測(cè)試/空閑狀態(tài);
*STATE-進(jìn)入特定狀態(tài);
*TRST-驅(qū)動(dòng)TRST為特定電平。
XILINX 的CPLD通過(guò)自身的TAP接口接受SVF格式的編程指令和JTAG邊界掃描指令。事實(shí)上,XILINX提供的JTAGProgrammer編程軟件能夠自動(dòng)將標(biāo)準(zhǔn)的JEDEC/BIT格式的編程文件轉(zhuǎn)換為SVF格式;但是SVF文件格式為ASCII碼,需要較大的存儲(chǔ)空間,并不適合直接用于嵌入式系統(tǒng)。為此,需要一種結(jié)構(gòu)更為緊湊的數(shù)據(jù)格式-XSVF。
XSVF用與SVF類似的方法描述IEEE1149.1總線的操作。SXVF與SVF的最大區(qū)別在于它能獲得更大的數(shù)據(jù)壓縮率,從而得到較小的文件。它是二進(jìn)制格式的。
SVF轉(zhuǎn)換為XSVF可以利用XILINX公司的軟件SVF2XSVF.EXE來(lái)實(shí)現(xiàn)。經(jīng)轉(zhuǎn)換之后的文件大小如表1所列。注意文件的大小只與芯片的型號(hào)相關(guān)而和邏輯的復(fù)雜程度無(wú)關(guān)。
評(píng)論