• 
    

    
    

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

      ?

      基于STM32的Lattice FPGA脫機(jī)編程系統(tǒng)設(shè)計(jì)

      2017-03-04 21:30俸皓凌小壯
      現(xiàn)代電子技術(shù) 2017年3期

      俸皓 凌小壯

      摘 要: 為了解決運(yùn)用Lattice FPGA的深度嵌入式應(yīng)用環(huán)境不便于升級(jí)維護(hù)的問(wèn)題,提出一種基于STM32的新型脫機(jī)編程方案。該方案由上位機(jī)軟件和基于STM32的脫機(jī)編程器兩部分組成,實(shí)現(xiàn)了PC端的熔絲圖VME文件格式轉(zhuǎn)換、優(yōu)化、管理及傳輸至脫機(jī)編程器和編程器上VME文件的存儲(chǔ)、選擇及下載功能。設(shè)計(jì)的脫機(jī)系統(tǒng)擺脫了傳統(tǒng)的FPGA器件編程方式對(duì)PC機(jī)的依賴,提高了編程效率。通過(guò)測(cè)試及實(shí)際應(yīng)用結(jié)果表明,該脫機(jī)編程系統(tǒng)具有便攜、靈活、穩(wěn)定的特點(diǎn),能夠有效地滿足目標(biāo)應(yīng)用的生產(chǎn)、維護(hù)、升級(jí)需求。

      關(guān)鍵詞: Lattice FPGA; 脫機(jī)編程器; STM32; JTAG

      中圖分類號(hào): TN79+1?34; TP399 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2017)03?0143?04

      Design of Lattice FPGA off?line programming system based on STM32

      FENG Hao1, LING Xiaozhuang2, CHEN Junyan1

      (1. Guangxi Colleges and Universities Key Laboratory of Cloud Computing and Complex Systems, Guilin University of Electronic Technology, Guilin 541004, China; 2. Shenzhen Wnhoo Electronics Co., Ltd., Shenzhen 518057, China)

      Abstract: It is inconvenient to update and maintain the deeply?embedded application environment with Lattice FPGA, a novel off?line programming scheme based on STM32 is proposed. The scheme is composed of the off?line programmer based on STM32 and upper computer software, which can realize the VME file format conversion, optimization and management of the fuse figure in PC terminal, and VME file storage, selection and download function in off?line programmer and programmer. The off?lime system is rid of the dependency of PC on traditional FPGA programming method, and improves the programming efficiency. The test and practical application results show that the off?line programming system has the characteristics of portable use, flexibility and stability, and can meet the requirements of production, update and maintenance of the target applications.

      Keywords: Lattice FPGA; off?line programmer; STM32; JTAG

      0 引 言

      ISP技術(shù)對(duì)嵌入式系統(tǒng)的現(xiàn)場(chǎng)升級(jí)和功能重構(gòu)提供了強(qiáng)有力的支持,且具有靈活便捷的特點(diǎn)[1],一經(jīng)提出便得到了廣泛的使用。

      目前業(yè)界常用的編程方案有幾種,其中“計(jì)算機(jī)+下載線”是各個(gè)器件廠商官方提供的編程方式,也是最傳統(tǒng)且經(jīng)典的方式[2?4]。然而當(dāng)前市場(chǎng)上還沒(méi)有一種成熟的編程方案能夠提供脫離PC機(jī)的現(xiàn)場(chǎng)編程環(huán)境。針對(duì)這種狀況,本文提出一種新穎的脫離PC機(jī)的現(xiàn)場(chǎng)編程方案,即脫機(jī)編程系統(tǒng)。該編程系統(tǒng)由脫機(jī)編程器和上位機(jī)管理軟件兩部分組成,為L(zhǎng)attice FPGA的現(xiàn)場(chǎng)編程提供支持,使生產(chǎn)、維護(hù)人員擺脫了傳統(tǒng)PC機(jī)的束縛,只需攜帶脫機(jī)編程器至現(xiàn)場(chǎng)即可工作,從而大大提高了工作效率。

      1 脫機(jī)編程的系統(tǒng)結(jié)構(gòu)

      脫機(jī)編程系統(tǒng)的設(shè)計(jì)分為兩部分。首先設(shè)計(jì)了一款上位機(jī)軟件用于給編程器裝載FPGA的熔絲文件。如圖1所示,上位機(jī)軟件首先讀取VME.c格式的熔絲文件,然后進(jìn)行數(shù)據(jù)的萃取優(yōu)化,獲得有用數(shù)據(jù)并轉(zhuǎn)化為Hex格式文件保存,等待編程器的裝載請(qǐng)求,把數(shù)據(jù)發(fā)送裝載至編程器中。同時(shí)以STM32作為控制核心,設(shè)計(jì)了一款提供脫機(jī)編程功能的便攜式編程器。編程器在管理模式下通過(guò)上位機(jī)軟件獲得Hex格式的熔絲文件,并采用FLASH芯片存儲(chǔ);最后在編程模式下通過(guò)JTAG口把熔絲文件數(shù)據(jù)移入FPGA器件,實(shí)現(xiàn)對(duì)設(shè)備中FPGA器件進(jìn)行編程的目的。

      2 脫機(jī)編程器設(shè)計(jì)原理

      Lattice為FPGA產(chǎn)品提供了JTAG接口的編程方案,為脫機(jī)編程的實(shí)現(xiàn)提供了有力支持。JTAG( Joint Test Action Group,聯(lián)合測(cè)試行動(dòng)小組)制定了邊界掃描技術(shù),隨后成為 IEEE 的一個(gè)標(biāo)準(zhǔn)即IEEE1149.1?1990[5],此標(biāo)準(zhǔn)亦簡(jiǎn)稱為JTAG。JTAG對(duì)邊界掃描系統(tǒng)的定義包括四個(gè)部分: 引腳的測(cè)試接口TAP、數(shù)據(jù)寄存器、指令寄存器和TAP控制器[2]。TAP控制器作為一個(gè)狀態(tài)機(jī),共有16種狀態(tài);測(cè)試接口、指令寄存器和數(shù)據(jù)寄存器都由控制器控制[2]。

      TAP控制器狀態(tài)機(jī)的運(yùn)行邏輯如圖2所示,通過(guò)運(yùn)行這個(gè)狀態(tài)機(jī),即可將配置信息編程至芯片內(nèi)。JTAG測(cè)試接口有規(guī)范的時(shí)序,如圖3所示。

      由圖2和圖3可見(jiàn),可通過(guò)TCK,TMS對(duì)控制器進(jìn)行操作:當(dāng)TAP在 Shift?IR狀態(tài)時(shí),TDI接口收到的命令被送往指令寄存器;當(dāng)控制器狀態(tài)在Update?IR時(shí),指令寄存器的命令生效[2]。其中 TMS,TDI在TCK上升沿有效,TDO在TCK下降沿有效。Lattice FPGA的熔絲圖文件由AVF(Algorithm VME File)和DVF(Data VME File)兩部分組成。其中AVF稱為算法文件,存儲(chǔ)了FPGA器件編程時(shí)的器件與鏈之間的編程算法步驟,根據(jù)上下文和編程的當(dāng)前狀態(tài),每一個(gè)字節(jié)代表下一步該如何執(zhí)行;而DVF中存放的是實(shí)際的器件熔絲圖數(shù)據(jù),也就是待寫入FPGA器件的邏輯構(gòu)建數(shù)據(jù)。編程器在編程模式下,首先進(jìn)入TAP狀態(tài)機(jī),從AVF中讀取算法數(shù)據(jù)Algo之后,根據(jù)算法數(shù)據(jù)進(jìn)行狀態(tài)切換。其中算法數(shù)據(jù)保存在Algorithm VME File中,在SDR與SIR狀態(tài)下,根據(jù)兩個(gè)狀態(tài)進(jìn)一步讀取配置數(shù)據(jù)Data寫入FPGA器件,其他狀態(tài)進(jìn)行相關(guān)邏輯與時(shí)序處理。

      3 脫機(jī)編程器硬件設(shè)計(jì)

      編程器硬件主要由STM32F103核心控制器系統(tǒng)電路[6?7]、PL2303 USB轉(zhuǎn)RS 232串口、JTAG編程接口、FLASH存儲(chǔ)電路、OLED顯示及功能選擇輸入等部分組成,系統(tǒng)硬件結(jié)構(gòu)如圖4所示。STM32作為主控MCU,負(fù)責(zé)整個(gè)系統(tǒng)的運(yùn)行控制,是編程器的核心,包括時(shí)鐘電路、復(fù)位電路、boot啟動(dòng)選擇電路、SWD編程調(diào)試接口;為了同時(shí)存儲(chǔ)多個(gè)FPGA配置文件,采用外接FLASH 45DB321D芯片存儲(chǔ),采用SPI接口讀寫;系統(tǒng)通過(guò)串口與上位機(jī)通信獲取FPGA配置文件,本設(shè)計(jì)采用PL2303 USB轉(zhuǎn)RS 232芯片;最后也是最為重要的部分,編程器通過(guò)JTAG接口實(shí)現(xiàn)系統(tǒng)可編程,為簡(jiǎn)化設(shè)計(jì)、降低成本,本文采用JTAG中的4線接口設(shè)計(jì)方案,分別為TCK,TMS,TDI,TDO。

      4 脫機(jī)編程器軟件設(shè)計(jì)

      編程器工作于兩種模式:管理模式和編程模式。編程器首先在下載模式中通過(guò)與上位機(jī)管理軟件配合,存儲(chǔ)和管理自身的VME數(shù)據(jù)文件,之后切換到編程模式,即可在現(xiàn)場(chǎng)編程中獨(dú)立使用。編程器開(kāi)機(jī)啟動(dòng)后,將根據(jù)執(zhí)行流程與用戶的輸入選擇對(duì)應(yīng)的運(yùn)行模式,其運(yùn)行流程如圖5所示。在管理模式下當(dāng)串口連接計(jì)算機(jī)與上位機(jī)握手就緒后,可以打開(kāi)VME文件執(zhí)行相關(guān)操作進(jìn)行裝載,可連續(xù)裝載多個(gè)VME文件,使用時(shí)選擇對(duì)應(yīng)的文件號(hào)即可。在編程模式下,通過(guò)面板上的按鍵即可進(jìn)行VME文件的選擇。用JTAG接口連接目標(biāo)FPGA設(shè)備后,即可進(jìn)行編程配置任務(wù)。

      根據(jù)圖2的描述實(shí)現(xiàn)了編程器的狀態(tài)機(jī)之后根據(jù)狀態(tài)機(jī)請(qǐng)求,通過(guò)查詢用戶的選擇獲取配置數(shù)據(jù)。當(dāng)請(qǐng)求數(shù)據(jù)為算法數(shù)據(jù)時(shí),狀態(tài)機(jī)得到數(shù)據(jù)后根據(jù)算法數(shù)據(jù)推算下一個(gè)狀態(tài),繼續(xù)下一步;當(dāng)請(qǐng)求熔絲圖數(shù)據(jù)時(shí),狀態(tài)機(jī)獲得數(shù)據(jù)后移入FPGA器件,執(zhí)行編程操作實(shí)現(xiàn)數(shù)據(jù)的寫入。

      5 上位機(jī)管理軟件設(shè)計(jì)

      上位機(jī)的管理軟件使用VC++設(shè)計(jì)與實(shí)現(xiàn)。軟件的主要運(yùn)行流程如圖6所示。為了實(shí)現(xiàn)上位機(jī)與編程器的可靠通信,特別制定了專用的通信協(xié)議。脫機(jī)編程系統(tǒng)的上位機(jī)管理軟件的界面如圖7所示,可以直觀地看到編程器的端口及其狀態(tài)、所選FPGA熔絲文件路徑和大小類型、下載進(jìn)度及狀態(tài)以及軟件的相關(guān)使用幫助信息等。

      6 測(cè)試及分析

      為了滿足不同用戶的需求,本設(shè)計(jì)提供了適合個(gè)人用戶及開(kāi)發(fā)愛(ài)好者使用的盒子版和適合企業(yè)用戶使用的工業(yè)版兩個(gè)版本。盒子版編程器如圖8所示,工業(yè)版編程器如圖9所示。

      為了測(cè)試編程器的兼容性,本文對(duì)Lattice FPGA絕大部分型號(hào)的器件如:LatticeXP,MachXO,ispCLOCK,ispGDX2,ispXPGA,ispGAL22V10A,Power Manager,Power Manager Ⅱ等進(jìn)行了測(cè)試。測(cè)試結(jié)果表明,編程器可以完全兼容以上系列的器件。經(jīng)過(guò)優(yōu)化的熔絲文件所占存儲(chǔ)空間極少,編程速度約為PC直接編程速度的95%左右。在測(cè)試過(guò)程中,對(duì)每個(gè)器件進(jìn)行上萬(wàn)次的編程,結(jié)果顯示全部編程通過(guò)并得到可靠運(yùn)行,成功率達(dá)到了100%。表1給出了脫機(jī)編程器與傳統(tǒng)的依賴于PC的編程方式的編程速度對(duì)比,數(shù)據(jù)是每種情形下測(cè)試100次后所取的平均值,可以看出本文的設(shè)計(jì)可以達(dá)到傳統(tǒng)方式的80%,可以滿足現(xiàn)場(chǎng)編程的應(yīng)用需求。測(cè)試表明,該編程系統(tǒng)能夠?qū)attice FPGA的絕大部分芯片進(jìn)行編程,同時(shí)具有攜帶方便、交互友好、易學(xué)易用的特點(diǎn)。

      7 結(jié) 語(yǔ)

      本文提出一種基于STM32的Lattice FPGA脫機(jī)編程系統(tǒng),該系統(tǒng)首先把FPGA的熔絲文件轉(zhuǎn)換成VME HEX文件,然后通過(guò)上位機(jī)軟件裝載至編程器的FLASH中存儲(chǔ),現(xiàn)場(chǎng)編程時(shí)可以徹底擺脫對(duì)PC機(jī)的依賴,選定所需要的VME文件后,即可通過(guò)JTAG接口對(duì)Lattice FPGA器件進(jìn)行編程。本設(shè)計(jì)支持Lattice FPGA的絕大部分型號(hào),且可以靈活地?cái)U(kuò)展至支持JTAG接口編程的FPGA器件之中,為使用FPGA的應(yīng)用提供了靈活、便攜且低成本的編程方式,有較好的工程應(yīng)用價(jià)值和較為廣泛的應(yīng)用前景。

      參考文獻(xiàn)

      [1] 曾曉洋,郝志航.在系統(tǒng)可編程(ISP)技術(shù)及其器件[J].光學(xué)精密工程,1998,6(3):110?115.

      [2] 周維,何健鷹,聶菊根.CPLD和FPGA編程與配置的實(shí)現(xiàn)[J].計(jì)算機(jī)與數(shù)字工程,2006,34(1):101?102.

      [3] DONTHI S, HAGGARD R L. A survey of dynamically reconfi?gurable FPGA devices [C]// Proceedings of 2003 the 35th Southeastern Symposium on System Theory. Morgantown: IEEE, 2003: 422?426.

      [4] ZHOU Shengyu, SUN Huixian, CHEN Xiaomin, et al. Dyna?mically reconfigurable system based on FPGA [J]. Chinese journal of electron devices, 2007, 30(2): 646?650.

      [5] Institute of Electrical and Electronic Engineers. Test access port and boundary?scan architecture: IEEE1149.1?1990 [S]. New York: Institute of Electrical and Electronic Engineers, 1990.

      [6] 陳啟軍,余有靈,張偉,等.嵌入式系統(tǒng)及其應(yīng)用:基于Cortex?M3內(nèi)核和STM32F103系列微控制器的系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)[M].上海:同濟(jì)大學(xué)出版社,2011.

      [7] 呂中虎,張徽,張曉飛.基于STM32的便攜式二氧化碳監(jiān)測(cè)儀設(shè)計(jì)[J].電子設(shè)計(jì)工程,2014,21(26):91?93.

      三河市| 昌图县| 阿拉善左旗| 开化县| 湾仔区| 万州区| 长乐市| 威信县| 行唐县| 舞钢市| 德令哈市| 句容市| 新昌县| 温州市| 贵州省| 阳泉市| 蒙山县| 新竹县| 黔江区| 建昌县| 万源市| 贵南县| 沙湾县| 广水市| 无锡市| 华蓥市| 嘉善县| 来宾市| 黔东| 湖口县| 噶尔县| 明溪县| 平邑县| 邹城市| 苏尼特左旗| 修文县| 塔城市| 安徽省| 迁西县| 专栏| 和田市|