基于DSP的嵌入式導(dǎo)航計算機系統(tǒng)中CPLD器件軟件更新的實現(xiàn)
0 引言
在現(xiàn)代導(dǎo)航計算機系統(tǒng)朝著微型化發(fā)展的過程中,采用高性能數(shù)字信號處理器和可編程邏輯器件方案實現(xiàn)的導(dǎo)航計算機系統(tǒng)有著很高的性能優(yōu)勢。在本課題組研制的基于浮點型DSP和復(fù)雜可編程邏輯器件(CPLD)結(jié)構(gòu)的嵌入式微型導(dǎo)航計算機系統(tǒng)中,DSP負(fù)責(zé)導(dǎo)航解算任務(wù),CPLD用來輔助DSP對外圍通信接口芯片進行控制,以減少DSP的控制任務(wù),使其更專注于導(dǎo)航任務(wù)的解算。采用CPLD可以提高導(dǎo)航計算機控制和配置的靈活性,便于系統(tǒng)的升級和更新,使接口配置更靈活,適合于不同的傳感器和便于應(yīng)用于采用多傳感器信息融合的組合導(dǎo)航系統(tǒng)中,充分發(fā)揮DSP的計算能力,提高導(dǎo)航性能。此嵌入式導(dǎo)航計算機系統(tǒng)中CPLD采用的是Xilinx公司的XC95144,該器件支持在系統(tǒng)編程(In System Programming)和擴展的IEEEStd 1149.1 JTAG邊界掃描測試規(guī)范。JTAG標(biāo)準(zhǔn)作為一個測試規(guī)范,已被多數(shù)可編程邏輯器件采用。對于該芯片的一般編程方法是,通過Xilinx公司提供的下載線纜將PC機并口轉(zhuǎn)接至其JTAG端口,使用PC機下載軟件實現(xiàn)對其軟件更新。由于JTAG口的信號特點,下載線纜不能太長,否則會導(dǎo)致信號失真;此外,在系統(tǒng)投入使用后,如果需要對軟件進行更新升級,采用這種線纜方式必須將系統(tǒng)的外殼打開,不便于系統(tǒng)的維護更新。本文通過對JTAG接口特性的研究,提出了一種采用UART串行通信進行軟件更新的方案,對基于DSP接口控制的CPLD器件實現(xiàn)了軟件更新,使采用JTAG口進行編程的PLD器件可以實現(xiàn)遠(yuǎn)端更新和升級。
1 JTAG接口原理
JTAG是IEEE的聯(lián)合測試行動小組(Joint TestAction Group)提出的測試標(biāo)準(zhǔn),此標(biāo)準(zhǔn)最初是用來解決因芯片集成度和板級器件密度越來越高帶來的測試問題。現(xiàn)在這一標(biāo)準(zhǔn)已被大多數(shù)器件廠商采用并設(shè)計到芯片電路中,用以支持其器件在系統(tǒng)調(diào)試或編程功能。對于本文所用的CPLD器件,其JTAG接口的結(jié)構(gòu)如圖1所示。
JTAG標(biāo)準(zhǔn)定義了4個基本單元:測試訪問端口TAP(Test Access Port)、數(shù)據(jù)寄存器、指令寄存器和TAP控制器。TAP端口包含了4個JTAG信號:測試時鐘輸入引腳TCK,測試數(shù)據(jù)輸入引腳TDI,測試數(shù)據(jù)輸出引腳TDO和測試模式選擇引腳TMS。數(shù)據(jù)寄存器主要包含2種:BYPASS寄存器和BSR(Botlndary Scan Register)寄存器,其中BSR由BSC(Botmdary Scan Cell)串聯(lián)而成,正是通過BSC掃描鏈電路,來自于TDI上的CPLD配置信息便可移入到芯片內(nèi)部,從而實現(xiàn)對器件的擦除與編程功能。TAP控制器其實是一個包含16個狀態(tài)的狀態(tài)機,它控制著測試訪問口、指令寄存器和數(shù)據(jù)寄存器。TAP控制器狀態(tài)轉(zhuǎn)換圖如圖2所示。
TAP控制器的狀態(tài)由TMS和TCK兩信號控制。當(dāng)需要將TDI上的數(shù)據(jù)移到指令寄存器中時,可使TAP控制器進入Shift-IR狀態(tài);當(dāng)需要將TDI上的數(shù)據(jù)移到數(shù)據(jù)寄存器中時,可使其進入Shift-DR狀態(tài)。通過TAP控制器的狀態(tài)轉(zhuǎn)換,可將CPLD的配置信息移入到其內(nèi)部邏輯中。
在基于PC的編程方法中,CPLD的配置信息文件存儲在PC里,在PC中運行的下載軟件不斷讀取器件的配置信息,并通過其并行接口模擬JTAG測試端口的時序和邏輯,從而實現(xiàn)其軟件更新和下載。本文將采用導(dǎo)航計算機系統(tǒng)中的DSP來實現(xiàn)這種編程方法:CPLD的配置文件通過DSP的UART串行口發(fā)送給導(dǎo)航計算機系統(tǒng),然后由DSP解析并執(zhí)行配置文件中的指令,通過DSP的I/O口模擬JTAG端口信號行為,來實現(xiàn)對CPLD器件軟件更新的功能?;谶@種方案可以實現(xiàn)采用普通的串行口方便地對CPLD進行遠(yuǎn)端編程和更新。
2 CPLD的JTAG接口編程的硬件設(shè)計
為實現(xiàn)本文提出的導(dǎo)航計算機系統(tǒng)中基于DSP的CPLD器件軟件更新串行方案,首先需要在硬件方面解決如下3個問題:
(1)導(dǎo)航計算機系統(tǒng)所用DSP至少要有4個空余的I/O口,分別用于模擬CPLD的4個JTAG信號時序信號。
(2)導(dǎo)航計算機系統(tǒng)必須包含支持一個UART通信接口,用于接收CPLD的配置文件。此UART接口不能由CPLD參與控制,以避免CPLD某次編程失敗后,該UART通信口不再可用的問題。
(3)導(dǎo)航計算機系統(tǒng)應(yīng)保證足夠的CPLD配置信息文件需要的存儲空間。
本文所用DSP為TI公司的TMS320C6713B芯片,該款DSP支持16個通用輸入輸出口(GPIO)。在本導(dǎo)航計算機系統(tǒng)中,有12個GPIO口已被占用,多余的4個GPIO口可用來連接CPLD的4個JTAG信號引腳。
TMS320C6713B本身并不支持包含UART通信接口,其片上外設(shè)中包含2個多通道緩沖串行接口(McBSP),McBSP接口支持全雙工串行通信,只是收發(fā)數(shù)據(jù)需要獨立的收發(fā)幀同步信號。根據(jù)TI公司提供的應(yīng)用技術(shù)報告,經(jīng)過對軟件或硬件進行改造設(shè)計,McBSP接口可以支持UART通信標(biāo)準(zhǔn)。軟件修改方法是通過將McBSP接口配置成通用I/O接口來模擬UART時序;硬件修改方法是將McBSP接口配置在串行口模式,McBSP接口中接收幀同步信號FSR來自于UART的發(fā)送數(shù)據(jù)線Tx,在檢測到Tx的下跳沿時,McBSP內(nèi)部開始采樣接收數(shù)據(jù),之后Tx的下跳沿將被忽略直至下一個字節(jié)的起始位再次觸發(fā)內(nèi)部幀接收新的數(shù)據(jù);發(fā)送幀同步信號FSR由McBSP電路在發(fā)送UART數(shù)據(jù)起始位時產(chǎn)生。本文采用硬件修改和過采樣軟件措施,將一個多通道緩沖串行接口McBSP0設(shè)計成了支持UART通信標(biāo)準(zhǔn)的接口。
本導(dǎo)航計算機系統(tǒng)使用的CPLD配置信息文件是串行矢量格式(SVF),可以在Xilinx軟件開發(fā)平臺ISE上生成。SVF是一種用來描述IEEE 1149.1(JTAG)總線操作的規(guī)范,包含了編程需要的指令和數(shù)據(jù),描述了TAP測試訪問端口狀態(tài)圖中各狀態(tài)之間的掃描操作過程和行為。由于SVF文件是ASCII格式,所以占用的存儲空間比較大,可以將其轉(zhuǎn)換為一種更簡潔和緊湊的二進制格式:XSVF文件。對于本系統(tǒng)所用CPLD器件而言,僅對其進行編程操作時,XSVF文件大小為129 720 B,加上擦除和校驗操作后,XSVF文件大小為259 533 B。根據(jù)上述分析,本文設(shè)計的嵌入式導(dǎo)航計算機系統(tǒng)中通過UART接口對CPLD器件進行在系統(tǒng)軟件更新的硬件電路結(jié)構(gòu)如圖3所示。
圖3中,UART通信口由DSP片上多通道緩沖串行口McBSP0實現(xiàn)。為了存儲通過UART口接收到的包含CPLD配置信息的XSVF文件,本系統(tǒng)外擴了一片512 kB的SRAM。FLASH芯片用來存儲導(dǎo)航計算機系統(tǒng)升級固件和應(yīng)用程序。CPLD的JTAG口直接與DSP空閑的4個GPIO口相連,為了提高CPLD器件編程的靈活性,在本系統(tǒng)中保留了連接PC機并口的CPLD程序下載接口。
3 CPLD的JTAG接口編程的軟件設(shè)計
在硬件設(shè)計的基礎(chǔ)上,為實現(xiàn)通過DSP的GPIO口模擬JTAG信號時序邏輯來對CPLD進行軟件更新,需嚴(yán)格按照J(rèn)TAG標(biāo)準(zhǔn)中的端口信號時序要求。對于本文所用的CPLD器件,其JTAG端口信號時序關(guān)系如圖4所示。
由圖4可見,對于JTAG口時序邏輯需考慮如下3項內(nèi)容:
(1)JTAG接口要求一個最小時鐘周期TCKMIN。
(2)JTAG接口在TCK的上升沿采樣TMS和TDI信號。因此在TCK上升沿之前,TMS和TDI要具有最小分別為TMSS和TDIS的建立時間,同時在TCK下降沿之后要保持最小分別為TMSH和TDIH長的時間。
(3)在TCK的下降沿,JTAT接口輸出新的TDO值,并保持至少TDOV長的時間。
本文所用CPLD的JTAG端口時序參數(shù)要求如表1所示。
在本文設(shè)計的導(dǎo)航計算機系統(tǒng)中,DSP的工作主頻為200 MHz,利用TI公司提供的庫函數(shù),由該DSP的GPIO口模擬的時鐘頻率最大不超過3 MHz,可以滿足表中TCKMIN參數(shù)對應(yīng)的最大10 MHz的要求。對于建立和保持時間等參數(shù)要求,可通過軟件延時或定時器實現(xiàn)。由于在本系統(tǒng)的應(yīng)用中,DSP在上電期間專注于CPLD的軟件更新,所以本文將采用軟件延時來實現(xiàn)這些參數(shù)要求,設(shè)計的JTAG口信號電平驅(qū)動函數(shù)模塊代碼如下:
利用上述代碼,模擬實現(xiàn)的JTAG時鐘信號頻率為367.6 kHz。
DSP在配置CPLD器件時,不斷從存儲在SRAM里的XSVF文件中讀出指令和參數(shù),并根據(jù)不同的指令執(zhí)行對應(yīng)的操作。根據(jù)功能特點,XSVF文件中的指令主要包括:狀態(tài)轉(zhuǎn)移、指令移入、數(shù)據(jù)移入或移出和空閑等待這4類指令。狀態(tài)轉(zhuǎn)移指令用于控制TAP狀態(tài)機進入與下條XSVF指令操作對應(yīng)的狀態(tài)中,在XSVF文件中,圖2中的每個狀態(tài)對應(yīng)一個字節(jié)的編碼;指令移入用于將TDI上的指令代碼移入對應(yīng)的指令寄存器;數(shù)據(jù)移入或移出指令可將TDI上的數(shù)據(jù)移入CPLD器件內(nèi)部邏輯中,同時可以捕獲從TDO上移出的數(shù)據(jù);空閑等待指令可提供移進CPLD擦出指令或數(shù)據(jù)后等待內(nèi)部邏輯成功響應(yīng)需要的時間。
在上述設(shè)計的基礎(chǔ)上,設(shè)計通過串行方式的CPLD更新流程如圖5所示。
圖5中系統(tǒng)首先通過DSP的串行口接收CPLD的編程配置文件,接收完配置文件后,可在35 s之內(nèi)完成CPLD的軟件更新。在實際應(yīng)用中,應(yīng)用本文的更新方案,可根據(jù)需要很快實現(xiàn)不同的系統(tǒng)配置方案,如可選擇INS和GPS組合?;蚺c地磁組合等,無需重新更改硬件,便可配合多種傳感器,克服了通過常用PC機與下載線纜進行軟件更新的弊端,避免了反復(fù)打開、組裝系統(tǒng)等一系列的繁瑣工作,提高了現(xiàn)場調(diào)試的效率,從而提高了導(dǎo)航計算機系統(tǒng)的適應(yīng)性。
4 結(jié)語
通過硬件和軟件設(shè)計,本文實現(xiàn)了基于DSP的CPLD器件軟件更新的串行方式。目前已在本課題組研制的基于DSP和CPLD的嵌入式導(dǎo)航計算機系統(tǒng)中進行了成功應(yīng)用。該串行口更新方式相對常用的基于PC并口的編程方法,解決了并口轉(zhuǎn)JTAG口的下載線纜過長而不能可靠對CPLD更新的問題,同時可以實現(xiàn)CPLD器件在系統(tǒng)的遠(yuǎn)端更新,避免了繁瑣的現(xiàn)場拆除板卡進行軟件更新和升級的弊端,提高了系統(tǒng)的可維護性。另外,通過外加網(wǎng)絡(luò)接口,應(yīng)用本文設(shè)計的軟件更新方案,還可實現(xiàn)CPLD器件的遠(yuǎn)程更新。本文的設(shè)計對于嵌入式導(dǎo)航計算機系統(tǒng)的更新和升級具有較好的適用性,提高了系統(tǒng)應(yīng)用的靈活性,可以應(yīng)用到具有不同配置的多種導(dǎo)航系統(tǒng)中,也可以在一種導(dǎo)航計算機系統(tǒng)中通過對CPLD的不同配置來適應(yīng)不同的傳感器和接口。
評論