• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于GoAhead與JTAG的FPGA/CPLD/PROM遠(yuǎn)程配置方法

      2017-09-03 09:22:48黃和悅鄭志偉白楊黃國臣高榮亮
      關(guān)鍵詞:狀態(tài)機(jī)嵌入式器件

      黃和悅,鄭志偉,白楊,黃國臣,高榮亮

      (中國電子科技集團(tuán)公司 第三十四研究所 數(shù)字光通信與光電子部, 桂林 541004)

      基于GoAhead與JTAG的FPGA/CPLD/PROM遠(yuǎn)程配置方法

      黃和悅,鄭志偉,白楊,黃國臣,高榮亮

      (中國電子科技集團(tuán)公司 第三十四研究所 數(shù)字光通信與光電子部, 桂林 541004)

      提出了一種基于GoAhead嵌入式web服務(wù)器和JTAG總線的FPGA/CPLD/PROM器件遠(yuǎn)程配置方法。設(shè)計使用GoAhead嵌入式服務(wù)器接收來自以太網(wǎng)的XSVF文件,再由CPU解析并通過JTAG協(xié)議對FPGA/CPLD/PROM進(jìn)行配置文件更新,技術(shù)人員可以通過局域網(wǎng)中的任意PC機(jī)對目標(biāo)設(shè)備進(jìn)行遠(yuǎn)程操作,避免了繁瑣而不安全的設(shè)備開箱。本方法占用系統(tǒng)硬件資源極少,效果穩(wěn)定可靠,可作為各類通信設(shè)備中FPGA/CPLD/PROM器件的ISP方案,也可方便的用在舊設(shè)備的升級改造中。

      通信設(shè)備;GoAhead嵌入式Web服務(wù)器;FPGA/CPLD/PROM遠(yuǎn)程配置更新;XSVF文件

      引 言

      現(xiàn)場可編程門陣列(Field-Programmable Gate Array,F(xiàn)PGA)或者復(fù)雜可編程邏輯器件(Complex Programmable Logic Device,CPLD)常見的配置方法是通過JTAG接口下載,但對于各類設(shè)備尤其是大型通信設(shè)備而言,JTAG接口并不在設(shè)備面板上,這給設(shè)備的維護(hù)帶來了極大的不便。因此,利用以太網(wǎng)口來對FPGA/CPLD/PROM器件進(jìn)行遠(yuǎn)程配置更新得到了廣泛的關(guān)注。

      當(dāng)前的FPGA/CPLD/PROM器件遠(yuǎn)程配置更新方法大多采用單片機(jī)作為更新核心,使用從串模式將其與FPGA/CPLD/PROM器件連接,再解析TCP/IP協(xié)議包分析以太網(wǎng)傳過來的數(shù)據(jù),最終通過SPI總線將配置數(shù)據(jù)寫入FPGA/CPLD/PROM。此模式下,F(xiàn)PGA/CPLD/PROM必須等待單片機(jī)啟動后對其進(jìn)行配置,對于要求FPGA/CPLD在系統(tǒng)啟動順序中靠前并執(zhí)行看門狗功能的設(shè)備不適用;系統(tǒng)中必須增加單片機(jī)和SPI電路,難以用在老設(shè)備的改造升級中;單片機(jī)運行不了Web服務(wù)器,因此接收數(shù)據(jù)容易出錯,交互界面簡陋。針對這些缺陷,本文提出了一種基于GoAhead嵌入式Web服務(wù)器及JTAG協(xié)議的FPGA/CPLD/PROM遠(yuǎn)程配置方法,無需手動分析TCP/IP協(xié)議包,支持FPGA主串模式,效果穩(wěn)定可靠。

      1 系統(tǒng)整體設(shè)計

      本方法的整體示意圖如圖1所示。

      圖1 系統(tǒng)整體框圖

      在CPU上引出4個通用數(shù)字I/O口(GPIO)并連接到JTAG總線上,分別控制TMS、TCK、TDI、TDO信號;待編程的FPGA/CPLD/PROM以菊花鏈的形式連接到JTAG總線上。

      圖2 TAP狀態(tài)機(jī)示意圖

      由于JTAG接口是各類FPGA/CPLD/PROM器件均支持的接口,無需額外的占用器件的功能引腳,因此本方法中,JTAG鏈上的某個FPGA和對它進(jìn)行配置的PROM之間可以通過串行數(shù)據(jù)線連接,亦即FPGA的主串模式。在此模式下,上電后,F(xiàn)PGA的CCLK時鐘作為PROM的時鐘,在CCLK的上升沿,F(xiàn)PGA將配置文件數(shù)據(jù)從自己的DIN引腳讀入。與常見的單片機(jī)-FPGA配置方案中的從串模式相比,每次啟動時FPGA會主動從PROM中讀取配置文件,因此FPGA的啟動不再依賴CPU或者單片機(jī),給整個系統(tǒng)的設(shè)計帶來了更大的靈活性。

      2 JTAG協(xié)議及XSVF文件

      2.1 JTAG協(xié)議介紹

      JTAG協(xié)議是指IEEE Std 1149.1所規(guī)定的測試訪問口(Test Access Port,TAP)及邊界掃描協(xié)議,其基本原理是在器件的各個引腳及控制寄存器上定義一個邊界掃描寄存器(Boundary Scan Register,BSR),通過訪問BSR能實時操作各個寄存器或者讀取其狀態(tài),從而實現(xiàn)對器件的控制和測試。

      JTAG協(xié)議最核心的部分是TAP狀態(tài)機(jī)。此狀態(tài)機(jī)的不同狀態(tài)對應(yīng)著TMS、TCK、TDI、TDO4條數(shù)據(jù)線上電平的狀態(tài)。TAP狀態(tài)機(jī)包含指令寄存器和數(shù)據(jù)寄存器兩個子狀態(tài)機(jī),例如,當(dāng)狀態(tài)機(jī)進(jìn)入SHIFT-IR/SHIFT-DR的時候,將目標(biāo)寄存器連接到TDI和TDO之間,準(zhǔn)備寫入的指令/數(shù)據(jù)從TDI口串行移位進(jìn)入目標(biāo)器件并從TDO輸出。TAP狀態(tài)機(jī)的示意圖如圖2所示。

      2.2 SVF/XSVF文件格式

      SVF文件是一種工業(yè)用調(diào)試文件格式,它將一個待燒寫的文件“翻譯”成JTAG指令的形式,因此我們無需關(guān)注器件的細(xì)節(jié),只需按照SVF文件的指令來對JTAG總線的狀態(tài)進(jìn)行操作即可。例如,讀取設(shè)備ID操作:

      SDR 32 TDI (00000000) TDO (f9604093) SMASK(ffffffff) TDO (f9604093) MASK (0fffffff);

      為了更切合嵌入式系統(tǒng)的需要,XILINX推出了XSVF格式文件。主要特征是將SVF的ASCII語句壓縮成二進(jìn)制的形式,極大地縮小了文件所占用的空間。XSVF文件格式使用0x00~0x17的數(shù)字概括了操作JTAG總線的各條指令,表1是部分指令[1]。XSVF文件的生成使用iMPACT軟件即可,首先將JTAG鏈上面的各個器件的位置掃描出來,然后選中需要下載的器件,選擇.jed文件(用于CPLD)或.mcs/exo文件(用于PROM)或.bit文件(用于FPGA),點擊“生成XSVF文件”按鈕。器件在菊花鏈上的位置十分重要, XSVF文件的指令開頭就包含了開啟適當(dāng)?shù)腂YPASS(旁通)位,使得指令能到達(dá)預(yù)期編程的器件[2]。

      表1 部分XSVF指令與二進(jìn)制碼對照表

      3 嵌入式Web服務(wù)器實現(xiàn)配置文件遠(yuǎn)程上傳

      GoAhead嵌入式Web服務(wù)器支持ASP、嵌入式Javascript、標(biāo)準(zhǔn)CGI接口、內(nèi)存中的CGI處理(GoForms)等強(qiáng)大的功能,只需簡單的修改源碼中的某些定義即可在VxWorks、Linux等多種操作系統(tǒng)中運行。GoAhead順利運行后,即可用典型的前端交互-后端數(shù)據(jù)處理模型來處理Web數(shù)據(jù),而無需自己去解析TCP/IP數(shù)據(jù)包。

      3.1 Web前端頁面

      使用html中的form標(biāo)簽設(shè)計一個上傳選擇框,并定義特定action便于GoAhead服務(wù)器接收處理。上傳的MIME編碼方式“enctype”需要設(shè)置成“multipart/form-data”格式以便上傳文件。代碼如下:

      Select file:

      3.2 Web后端數(shù)據(jù)處理

      GoAhead源碼本身不含文件上傳功能,需要根據(jù)上傳補(bǔ)丁來修改。本文使用的是2.18版本的GoAhead源碼和2.11版本的上傳補(bǔ)丁。補(bǔ)丁增加了bmemdupNoBalloc函數(shù)用于處理二進(jìn)制數(shù)據(jù)流,并在webs.c文件中增加了關(guān)鍵的對于multipart form形式數(shù)據(jù)的支持,有關(guān)資料可以在GoAhead官網(wǎng)及CSDN等網(wǎng)站下載到。圖3是GoAhead服務(wù)器結(jié)構(gòu)圖。

      圖3 GoAhead服務(wù)器結(jié)構(gòu)圖

      在GoAhead Web服務(wù)器的main函數(shù)中注冊與html頁面請求的action所對應(yīng)的函數(shù):

      websFormDefine(T("upldFormForXSVFRam"), upldFormForXSVFRam); // 注冊處理函數(shù)

      則GoAhead服務(wù)器會自動將html頁面的訪問請求定位到upldFormForXSVFRam函數(shù)中。

      GoAhead定義了cgiRec結(jié)構(gòu)體用于處理CGI數(shù)據(jù),定義了websRec結(jié)構(gòu)體來表示每次收到的數(shù)據(jù)大小、長度、來源信息, 收到前端頁面的訪問請求后,GoAhead會將Web請求的數(shù)據(jù)指針信息wp傳入upldFormForXSVFRam函數(shù)中,只需在upldFormForXSVFRam函數(shù)中調(diào)用wp->postData指針即可得到html頁面發(fā)送過來的數(shù)據(jù)。

      4 解析XSVF文件并將數(shù)據(jù)發(fā)送到GPIO

      圖4 軟件整體流程圖

      XSVF文件傳輸?shù)紾oAhead web服務(wù)器后,保存在上文中wp→postData指針指向的內(nèi)存中。讀取XSVF數(shù)據(jù)并根據(jù)其中的指令編號來操作GPIO即可完成整個遠(yuǎn)程配置流程,流程圖如圖4所示。

      4.1 定義基本操作函數(shù)

      定義4個引腳來控制JTAG的4根信號線,定義延時函數(shù)來調(diào)節(jié)時序的快慢,定義setPort函數(shù)來操作具體引腳的置高置低。

      setPort函數(shù)的定義如下:

      setPort(short p,short var);

      對網(wǎng)絡(luò)上傳文件并配置FPGA/CPLD/PROM而言,關(guān)鍵在于定義readByte函數(shù),以便讀取Web服務(wù)器接收到的數(shù)據(jù)。readByte函數(shù)如下:

      void readByte(unsigned char *data){

      *data = *pXsvfData++;

      }

      readByte函數(shù)在每一次解析XSVF文件的最開始,調(diào)用讀入1byte的XSVF文件數(shù)據(jù),pXsvfData是一個全局變量,在解析開始前將pXsvfData定位到wp→postData。

      4.2 解析XSVF文件

      定義xsvf_pfDoCmd矩陣,將XSVF文件規(guī)定的所有命令包含進(jìn)來,每一條對應(yīng)一個子函數(shù),這樣就可以將所有的XSVF文件命令對應(yīng)到實際的操作;定義tagSXsvfInfo結(jié)構(gòu)體,里面包含當(dāng)前下載的XSVF文件的下載狀態(tài)及數(shù)據(jù);使用var_len_byte結(jié)構(gòu)體來解析命令語句后面跟的數(shù)據(jù)長度[3]。

      xsvf_pfDoCmd矩陣部分定義如下[4]:

      TXsvfDoCmdFuncPtr xsvf_pfDoCmd[]={

      xsvfDoXCOMPLETE, /*0*/

      xsvfDoXTDOMASK, /*1*/

      xsvfDoXSIR, /*2*/

      ……

      }

      tagSXsvfInfo結(jié)構(gòu)體的部分定義如下:

      typedef struct tagSXsvfInfo{

      /* XSVF status information */

      unsigned char ucComplete; //0運行;1完成

      unsigned char ucCommand; //當(dāng)前 XSVF 命令

      ……

      }

      根據(jù)ucCommand是否置位來判斷下載是否結(jié)束,若沒有結(jié)束,則不斷讀取XSVF文件數(shù)據(jù)并作出相應(yīng)的動作。TDO引腳在TAP狀態(tài)機(jī)的SHFIT-DR狀態(tài)會輸出寫入TDI引腳的數(shù)據(jù)[5],讀取TDO引腳數(shù)據(jù)與寫入數(shù)據(jù)對比來判斷數(shù)據(jù)是否寫入JTAG總線成功,寫入和校驗同步進(jìn)行。

      實際上,XILINX的xapp058 reference code對此給出了清晰的參考范例,本文的解析函數(shù)參考了上述方案。

      最后,軟件流程整體打包到upldFormForXSVFRam 函數(shù)中:

      int upldFormForXSVFRam(webs_t wp, char_t * path, char_t * query) {

      char_t* part = wp->postData;

      int errorcode;// for XSVF EXCUTEerrorcode;

      a_assert(websValid(wp));

      websHeader(wp);

      errorcode=xsvfExecuteForXSVFFromRam(wp->postData);

      //進(jìn)行下載

      switch(errorcode…)(此處省略對錯誤碼的判斷)

      websFooter(wp);

      websDone(wp, 200);

      return errorcode ;

      }

      結(jié) 語

      本文所述方案在占用硬件資源極少(只需4個GPIO口)的情況下實現(xiàn)了對FPGA/CPLD/PROM的遠(yuǎn)程配置,尤其適合用在大型通信設(shè)備(本身自帶以太網(wǎng)口)的升級改造中。實測下載8.5 MB大小的XSVF文件到FPGA的配置PROM XCF32P用時在5.5 min左右,且加上干擾信號仍可穩(wěn)定下載。

      [1] XILINX. XAPP503 SVF and XSVF File Formats for Xilinx Devices [EB/OL].[2017-03].https://china.xilinx.com/support/documentation/application_notes/xapp503.pdf.

      [2] XILINX.XAPP058 Xilinx In-System Programming Using anEmbedded Microcontroller[EB/OL].[2017-03].https://china.xilinx.com/support/documentation/application_notes/xapp058.pdf.

      [3] XILINX. XAPP058.zip[EB/OL].[2017-03].https://china.xilinx.com

      [4] 李迪挺. VXWORKS_fpga [EB/OL].[2017-03].http://www.pudn.com/downloads149/sourcecode/others/detail 642 524.html.

      [5] 周光海,李寧,黃志洲,等. 基于Linux的CPLD在線升級驅(qū)動程序設(shè)計[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2013(8):33-34.

      黃和悅(助理工程師)、鄭志偉(工程師),主要研究方向為嵌入式系統(tǒng)、光通信技術(shù);白楊(工程師),主要研究方向為數(shù)字光通信及相關(guān)領(lǐng)域的FPGA設(shè)計實現(xiàn)。

      FPGA/CPLD/PROM Remote Update Method Based on GoAhead and JTAG

      Huang Heyue,Zheng Zhiwei,Bai Yang,Huang Guochen,Gao Rongliang

      (Digital Optical Communication and Optoelectronics Department of The 34th Institute of China Electronics Technology Group Corporation,Guilin 541004,China)

      In the paper,a method based on GoAhead embedded web server and JTAG bus is proposed.The design uses GoAhead embedded web server to receive XSVF files from Ethernet,then the CPU parsing them and makes a FPGA/CPLD/PROM update through the JTAG protocol.The engineers can carry on the remote operation to the target device through the PC in the local area network,it avoids the cumbersome and unsafe operation to open the equipment box.The method takes up little hardware resources of the system,and it is stable and reliable,and can be used as the ISP scheme of FPGA/CPLD/PROM devices in various communication devices,and can be conveniently used in the upgrading of the old equipment.

      communication equipments;GoAhead embedded Web server;FPGA/CPLD/PROM device remote configuration;XSVF file

      TP316.2

      A

      ?迪娜

      2017-03-30)

      猜你喜歡
      狀態(tài)機(jī)嵌入式器件
      基于有限狀態(tài)機(jī)的交會對接飛行任務(wù)規(guī)劃方法
      搭建基于Qt的嵌入式開發(fā)平臺
      嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
      旋涂-蒸鍍工藝制備紅光量子點器件
      面向高速應(yīng)用的GaN基HEMT器件
      一種加載集總器件的可調(diào)三維周期結(jié)構(gòu)
      高分辨率遙感相機(jī)CCD器件精密熱控制
      Altera加入嵌入式視覺聯(lián)盟
      倍福 CX8091嵌入式控制器
      自動化博覽(2014年4期)2014-02-28 22:31:15
      FPGA設(shè)計中狀態(tài)機(jī)安全性研究
      叙永县| 通海县| 孙吴县| 马边| 额尔古纳市| 蕉岭县| 永宁县| 赤城县| 松江区| 蒲江县| 新津县| 玛曲县| 尉氏县| 温泉县| 莱芜市| 资源县| 文化| 陆河县| 宁城县| 寿宁县| 宜兰县| 宜良县| 来安县| 襄汾县| 阿拉尔市| 克东县| 石嘴山市| 儋州市| 天祝| 多伦县| 高雄市| 江都市| 津市市| 曲沃县| 榆林市| 荥阳市| 农安县| 克东县| 镇安县| 巫溪县| 南川市|