• 
    

    
    

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

      基于FPGA的極簡(jiǎn)在系統(tǒng)編程設(shè)計(jì)

      2017-09-03 09:22:42葉兵唐智慧賀孟
      關(guān)鍵詞:配置文件串口指令

      葉兵,唐智慧,賀孟

      (中國(guó)電子科技集團(tuán)公司 第三十研究所,成都 610041)

      基于FPGA的極簡(jiǎn)在系統(tǒng)編程設(shè)計(jì)

      葉兵,唐智慧,賀孟

      (中國(guó)電子科技集團(tuán)公司 第三十研究所,成都 610041)

      針對(duì)FPGA程序在線編程與加載問(wèn)題,提出一種極其簡(jiǎn)單的基于PicoBlaze6的FPGA高可靠性在系統(tǒng)編程方法?;诖朔椒?,實(shí)現(xiàn)了一個(gè)通過(guò)串口對(duì)SPI Flash在系統(tǒng)編程的設(shè)計(jì),該設(shè)計(jì)著重闡述整個(gè)設(shè)計(jì)的工作原理與實(shí)現(xiàn)方法,并給出了帶電重啟與選擇加載的實(shí)現(xiàn)時(shí)序仿真圖與在系統(tǒng)編程的調(diào)試結(jié)果。調(diào)試結(jié)果表明,在系統(tǒng)編程得到成功實(shí)現(xiàn),本設(shè)計(jì)已在工程實(shí)踐中得到應(yīng)用。

      FPGA;PicoBlaze6;在系統(tǒng)編程;SPI;多重啟動(dòng);自動(dòng)回滾

      引 言

      在很多系統(tǒng)中,可編程邏輯器件(FPGA)的應(yīng)用需要外置處理器配合實(shí)現(xiàn),然而,對(duì)于小系統(tǒng)應(yīng)用來(lái)說(shuō),外置處理器資源浪費(fèi)多,成本開銷大。FPGA 內(nèi)嵌8位單片機(jī)PicoBlaze,應(yīng)用簡(jiǎn)單[1],消耗資源極少,為上述問(wèn)題提供了一個(gè)有效的解決途徑。

      目前業(yè)界FPGA在系統(tǒng)編程設(shè)計(jì)趨于多樣化發(fā)展,例如模擬聯(lián)合測(cè)試行為組織(JATG)接口、模擬串行外設(shè)接口(SPI)、模擬并行外設(shè)接口(BPI)等[2-4],但是基本都需要外置處理器配合實(shí)現(xiàn),甚至需要軟件程序啟動(dòng)之后才能進(jìn)行,存在實(shí)現(xiàn)方法復(fù)雜、接口多、設(shè)計(jì)麻煩、冗余性差、通用性差、可移植性差、程序配置文件更新麻煩等一些問(wèn)題。

      針對(duì)上述問(wèn)題,提出了一種支持串口在線更新FPGA配置文件的在系統(tǒng)編程方法。系統(tǒng)設(shè)計(jì)支持計(jì)算機(jī)串口在系統(tǒng)編程更新FPGA程序配置文件:一方面,不需要外置處理器,單獨(dú)通過(guò)終端串口更新FPGA配置文件,應(yīng)用簡(jiǎn)單;另一方面,系統(tǒng)對(duì)軟件應(yīng)用層只提供簡(jiǎn)單的標(biāo)準(zhǔn)串口,接口簡(jiǎn)單實(shí)用,可靠性強(qiáng),應(yīng)用廣泛,通用性強(qiáng)。同時(shí),設(shè)計(jì)冗余性特別強(qiáng),支持FPGA程序更新加載配置文件失敗后,自動(dòng)回滾加載升級(jí)前一個(gè)版本的配置文件工作,能夠避免FPGA升級(jí)更新失敗所導(dǎo)致的死機(jī)問(wèn)題,用戶通過(guò)查詢FPGA版本號(hào)能夠快速知道FPGA升級(jí)成功與否。本系統(tǒng)的在系統(tǒng)編程設(shè)計(jì)可移植性強(qiáng),可移植應(yīng)用到包含PicoBlaze6的Xilinx FPGA平臺(tái)系統(tǒng)[5]。

      1 FPGA加載簡(jiǎn)介

      FPGA支持多種加載模式,如Master Serial/SPI、Master SelectMAP/BPI、JTAG、Slave SelectMAP和Slave Serial等。

      部分Xilinx FPGA支持多個(gè)配置文件的多重啟動(dòng)加載,F(xiàn)PGA通過(guò)多重啟動(dòng)可從FLASH內(nèi)存儲(chǔ)的多個(gè)配置文件中選擇加載。FPGA自身可觸發(fā)多重啟動(dòng)功能,重啟FPGA配置過(guò)程,重新加載一個(gè)新的FPGA 配置文件,同時(shí),部分Xilinx FPGA支持FPGA配置文件加載失敗后自動(dòng)回滾加載回滾存儲(chǔ)區(qū)域配置文件。

      2 PicoBlaze6基本原理

      PicoBlaze68位微控制器KCPSM6是Xilinx公司推出的一款FPGA內(nèi)嵌處理器軟核,適用于Xilinx公司的Spartan6、Virtex6和7系列FPGA應(yīng)用,只需要26個(gè)Slice和1個(gè)BRAM,消耗資源只相當(dāng)于XC6SLX4的4.3%與XC6SLX150T的0.11%,資源占用率非常低。

      KCPSM6支持52~119 MIPS的指令執(zhí)行速度,指令執(zhí)行速度與FPGA器件和器件速度等級(jí)有關(guān)系。KCPSM6的原理框圖如圖1所示,主要由以下部分組成:① 暫存寄存器:64字節(jié)、128字節(jié)與256字節(jié);② 兩塊寄存器A和B:16個(gè),8位位寬;③ 算術(shù)邏輯處理單元;④ 程序存儲(chǔ)模塊:最大支持4 KB指令存儲(chǔ);⑤ 譯碼與控制模塊;⑥ I/O接口模塊。

      圖1 KCPSM6原理框圖

      KCPSM6為用戶工程開發(fā)提供VHDL/verilog源文件,同時(shí),KCPSM6在線調(diào)試可使用Jtagloader迅速更新RAM中存在的KCPSM6程序執(zhí)行文件,采用指令jtagloader-l your_program.hex即可實(shí)現(xiàn)KCPSM6程序運(yùn)行指令的在線更新。

      3 總體設(shè)計(jì)

      系統(tǒng)設(shè)計(jì)主要分為三部分:硬件電路設(shè)計(jì)、FPGA邏輯設(shè)計(jì)與軟件設(shè)計(jì)。設(shè)計(jì)實(shí)現(xiàn)了以PicoBlaze6為控制樞紐的FPGA 在系統(tǒng)編程功能。本設(shè)計(jì)通過(guò)計(jì)算機(jī)串口把需要更新的FPGA程序配置文件與Header頭文件(記錄FPGA配置文件啟動(dòng)信息與回滾信息)編程寫入FPGA的SPI Flash中存儲(chǔ)[6-8];FPGA重啟后,檢測(cè)文件版本,若版本正確,編程配置文件更新成功;若版本錯(cuò)誤,編程配置文件更新失敗,需重新通過(guò)計(jì)算機(jī)串口編程更新FPGA的程序配置文件。頭文件、更新的配置文件與自動(dòng)回滾的配置文件分別存儲(chǔ)于Flash內(nèi)三個(gè)不同的存儲(chǔ)區(qū)域;配置文件啟動(dòng)區(qū)域和自動(dòng)回滾區(qū)域是動(dòng)態(tài)相互切換的;Header頭文件決定了啟動(dòng)區(qū)域和回滾區(qū)域。整個(gè)在系統(tǒng)編程流程不用對(duì)FPGA重新上電或者復(fù)位操作。此外,設(shè)計(jì)實(shí)現(xiàn)多重啟動(dòng)選擇加載功能,可通過(guò)指令操作控制ICAP實(shí)現(xiàn)完成。

      FPGA上電后,F(xiàn)PGA加載頭文件規(guī)定的啟動(dòng)信息區(qū)域的配置文件工作;如果啟動(dòng)信息區(qū)域的配置文件加載失敗,F(xiàn)PGA自動(dòng)回滾加載回滾區(qū)域的配置文件工作;當(dāng)需要更新配置文件時(shí),系統(tǒng)發(fā)指令更新FPGA回滾區(qū)域的配置文件并更新頭文件,修改以前的啟動(dòng)信息地址為回滾區(qū)域的地址,以前回滾區(qū)域的地址為啟動(dòng)信息地址,實(shí)現(xiàn)了兩個(gè)區(qū)域配置文件的交替更新并保存更新前一個(gè)版本的程序配置文件作為回滾區(qū)域配置文件。

      FPGA程序配置文件加載流程如圖2所示,上電工作,F(xiàn)PGA加載區(qū)域X的配置文件,串口在系統(tǒng)編程更新區(qū)域Z的配置文件與頭文件,更新成功以后斷電重啟,若加載成功,F(xiàn)PGA加載區(qū)域Z的配置文件工作;加載失敗,F(xiàn)PGA自動(dòng)回滾加載區(qū)域X的配置文件工作。系統(tǒng)設(shè)計(jì)可以通過(guò)串口發(fā)指令讀取程序版本號(hào),判斷FPGA程序是否更新成功。

      圖2 配置文件更新與加載流程圖

      在設(shè)計(jì)中,Header頭文件、區(qū)域X和區(qū)域Z的Flash存儲(chǔ)空間如表1所列。Header頭文件存儲(chǔ)啟動(dòng)地址的信息,決定了啟動(dòng)區(qū)域是X還是Z;如果啟動(dòng)區(qū)域是X,那么啟動(dòng)地址信息是0x01 0000,回滾地址信息是0x40 0000;如果啟動(dòng)區(qū)域地址是Z,那么啟動(dòng)地址信息是0x40 0000,回滾地址信息是0x01 0000。如果更新加載的是區(qū)域X的文件,那么設(shè)計(jì)更新區(qū)域Z存儲(chǔ)的配置文件,并更新頭文件修改啟動(dòng)信息地址為0x40 0000,回滾地址信息為0x01 0000;如果更新加載的是區(qū)域Z的文件,那么設(shè)計(jì)更新區(qū)域X存儲(chǔ)的配置文件,并更新頭文件(Header)修改啟動(dòng)信息地址為0x40 0000,回滾地址信息為0x01 0000。

      表1 Flash存儲(chǔ)區(qū)域劃分

      4 硬件設(shè)計(jì)

      4.1 電路設(shè)計(jì)

      如圖3所示,系統(tǒng)硬件架構(gòu)電路主要包括電源模塊、FPGA、FPGA外圍電路、串口芯片電路[9]、Flash電路、晶振電路等。

      圖3 系統(tǒng)硬件架構(gòu)

      在本系統(tǒng)的設(shè)計(jì)中,F(xiàn)PGA采用Spartan6系列的XC6SLX150T,串口芯片采用MAX3232,配置文件存儲(chǔ)芯片采用SPI Flash M25P64;電源模塊為FPGA提供了工作所需要的核電壓、I/O電壓與輔助電壓等;晶振提供100 MHz時(shí)鐘給FPGA;串口芯片實(shí)現(xiàn)FPGA I/O與計(jì)算機(jī)終端的電平匹配;設(shè)計(jì)通過(guò)SPI接口更新與加載程序配置文件;設(shè)計(jì)實(shí)現(xiàn)了串口與SPI接口數(shù)據(jù)通信協(xié)議的轉(zhuǎn)換[10-11]。

      4.2 FPGA邏輯設(shè)計(jì)

      FPGA邏輯主要由串口模塊、KCPSM6模塊、執(zhí)行指令RAM模塊、ICAP模塊組成,如圖4所示。

      圖4 FPGA邏輯框圖

      串口模塊分為串口收模塊與串口發(fā)模塊,實(shí)現(xiàn)115 200波特率的傳輸速率[12]。串口模塊對(duì)外接口應(yīng)用簡(jiǎn)單,只有收發(fā)數(shù)據(jù)兩個(gè)接口,串口模塊包括Xon/Xoff 軟流控設(shè)計(jì)[13-16]。

      KCPSM6模塊是整個(gè)系統(tǒng)的工作樞紐,控制實(shí)現(xiàn)串口數(shù)據(jù)與SPI數(shù)據(jù)的相互轉(zhuǎn)換。KCPSM6模塊按照?qǐng)?zhí)行指令RAM模塊里面存儲(chǔ)的指令信息來(lái)運(yùn)行的;執(zhí)行指令RAM模塊是由軟件匯編代碼編譯后轉(zhuǎn)化生成的FPGA代碼文件;執(zhí)行RAM模塊按設(shè)計(jì)嵌入整個(gè)工程文件中。KCPSM6模塊與執(zhí)行指令RAM模塊軟件設(shè)計(jì)的相關(guān)信息將在下一節(jié)中詳細(xì)介紹。

      此外,設(shè)計(jì)實(shí)現(xiàn)了多重啟動(dòng)選擇加載功能,通過(guò)重啟指令操作控制ICAP的配置信息寫入FPGA中,實(shí)現(xiàn)FPGA重啟選擇加載規(guī)劃的兩個(gè)區(qū)域內(nèi)任意一個(gè)區(qū)域的配置文件。ICAP配置信息寫入時(shí)序如圖5所示,MLTBT_STRT_ADDR_H是啟動(dòng)地址信息,F(xiàn)LBK_STRT_ADDR_H是回滾信息地址,使能信號(hào)CONFIG_EN(KCPSM6模塊輸出)由低電平變?yōu)楦唠娖?,啟?dòng)ICAP模塊寫入ICAP配置信息上電重啟加載MLTBT_STRT_ADDR_H設(shè)置的啟動(dòng)區(qū)域的FPGA配置文件工作。

      圖5 ICAP配置信息寫入時(shí)序仿真圖

      5 軟件設(shè)計(jì)

      PicoBlaze采用的是精簡(jiǎn)指令集,包括程序控制指令、算術(shù)指令、邏輯指令、移位和旋轉(zhuǎn)指令、中斷指令、存儲(chǔ)指令和I/O指令等。

      在該設(shè)計(jì)中系統(tǒng)軟件分為三層:驅(qū)動(dòng)層、內(nèi)核層、事務(wù)層。驅(qū)動(dòng)層負(fù)責(zé)訪問(wèn)外圍硬件設(shè)備,這里指串口、 Flash接口、ICAP接口;事務(wù)層負(fù)責(zé)和上層軟件接口,從上層應(yīng)用程序接收或發(fā)送信息;內(nèi)核層在驅(qū)動(dòng)層和事務(wù)層之間,負(fù)責(zé)兩層信息的字符轉(zhuǎn)義和用于燒寫Flash的MCS文件處理。具體架構(gòu)如圖6所示。

      圖6 軟件架構(gòu)框圖

      圖6的每個(gè)框圖都是一個(gè)子程序,這個(gè)程序架構(gòu)的好處是,更改或減少任何一個(gè)子程序不需要改動(dòng)其他子程序和程序架構(gòu),由此可見只要增加減少或更換Flash接口子程序就可適配各種類型的FPGA和Flash,而對(duì)上層應(yīng)用程序提供標(biāo)準(zhǔn)統(tǒng)一的交互指令格式,上層應(yīng)用程序只需按照標(biāo)準(zhǔn)數(shù)據(jù)格式下發(fā)接收指令和發(fā)送燒寫程序文件,就可實(shí)現(xiàn)FPGA程序配置文件的燒寫更新、上電多重啟動(dòng)與選擇重啟加載等功能,完全不用關(guān)心FPGA和Flash的種類型號(hào)。而且該程序?yàn)榱税姹咀R(shí)別以及防止非法訪問(wèn),還設(shè)置了口令保護(hù)和版本控制功能。

      6 結(jié)果分析

      如圖7所示,設(shè)計(jì)的板卡連接串口,輸入指令I(lǐng),可以讀取Flash的ID——0x20 2017,驗(yàn)證電路系統(tǒng)是否正常工作。輸入指令S,可以扇擦除Flash;輸入指令U,設(shè)計(jì)對(duì)Flash區(qū)域X或Z編程更新,要求將MCS文件寫入Flash中;編程完成后,設(shè)計(jì)會(huì)返回OK信號(hào)提示編程成功;輸入指令X,重啟加載區(qū)域X文件;輸入指令Z,重啟加載區(qū)域Z文件。如圖8所示,輸入指令D,可讀取當(dāng)前啟動(dòng)區(qū)域信息,為bootX,提示啟動(dòng)區(qū)域?yàn)閄;輸入指令M,寫頭文件到Flash中,修改配置文件啟動(dòng)信息;更新頭文件后,輸入指令D,可讀取啟動(dòng)區(qū)域信息bootZ,提示啟動(dòng)區(qū)域?yàn)閆。重啟板卡后,計(jì)算機(jī)串口編程前后打印信息對(duì)比顯示:如圖7所示,更新前,F(xiàn)PGA程序版本Version是170320B1;如圖8所示,更新后,程序版本Version是170320B3;FPGA在系統(tǒng)編程更新成功。

      圖7 更新前串口打印

      圖8 更新后串口打印

      結(jié) 語(yǔ)

      [1] 魏厚剛,楊寬泗,孫武,等.KCPSM6 PicoBlaze的原理與應(yīng)用[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2013(2):77-78.

      [2] 張江偉.基于Virtex_5和FLASH實(shí)現(xiàn)FPGA的多重配置[J].計(jì)算機(jī)與網(wǎng)絡(luò),2012(3):130-132.

      [3] 李磊,張春妹,趙翠華,等.一種FPGA配置加載管理電路的設(shè)計(jì)與實(shí)現(xiàn)[J].微電子學(xué)與計(jì)算機(jī),2015,32(8):146-153.

      [4] 晏勇.基于MCU的FPGA系統(tǒng)在線配置及實(shí)現(xiàn)[J].陜西科技大學(xué)學(xué)報(bào),2013,31(4):122-126.

      [5] 張坤.基于FPGA的PicoBlaze嵌入式通信系統(tǒng)設(shè)計(jì)[J].電子科技,2016,26(5):53-56.

      [6] 薛宏亮.基于SPI總線FLASH時(shí)序控制的FPGA實(shí)現(xiàn)[J].電子制作,2016(8):12-13.

      [7] 王永利.基于FPGA的帶寄存器尋址SPI接口設(shè)計(jì)[J].物聯(lián)網(wǎng)技術(shù),2013(3):45-47.

      [8] 關(guān)珊珊,周潔敏.基于XilinxFPGA的SPI Flash控制器設(shè)計(jì)與驗(yàn)證[J].電子器件,2012,35(2):216-220.

      [9] 黨俊博,李哲,李雅俊.基于FPGA的串口通信電路設(shè)計(jì)與實(shí)現(xiàn)[J].電子科技,2016,29(7):106-109.

      [10] 殷安龍,張持健,陳林,等.基于FPGA的多串口通信設(shè)計(jì)與實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2016,24(17):45-47.

      [11] 滿忠昊,權(quán)國(guó)棟,徐釗.基于FPGA多協(xié)議轉(zhuǎn)換網(wǎng)關(guān)設(shè)計(jì)[J].煤礦機(jī)械,2015,36(8):298-301.

      [12] 于中權(quán),王一誠(chéng),吳大慶,等.基于SystemGenerator的UART通訊[J].計(jì)算機(jī)與現(xiàn)代化,2015(1):96-101.

      [13] 賀春芝,夏銀水,王倫耀.UART IP核的設(shè)計(jì)及其FPGA實(shí)現(xiàn)[J].浙江大學(xué)學(xué)報(bào),2012,39(5):535-540.

      [14] 楊瀾,戚秀真.UART微控制器設(shè)計(jì)方法及其FPGA實(shí)現(xiàn)[J].電子科技,2016,26(6):72-74.

      [15] 謝謝.基于FPGA的UART設(shè)計(jì)[J].電子設(shè)計(jì)工程,2012,20(16):51-53.

      [16] 于志翔.基于FPGA的UART設(shè)計(jì)與實(shí)現(xiàn)[J].電子測(cè)量技術(shù),2015,38(3):77-81.

      葉兵(工程師),主要研究方向?yàn)殡娮优c通信工程、電路設(shè)計(jì)等。

      Minimalist in System Programming Design Based on FPGA

      Ye Bing,Tang Zhihui,He Meng

      (The 30th Research Institute of China Electronic Technology Group Corporation,Chengdu 610041,China)

      Aiming at the FPGA online program and load problem,a kind of extremely simple in system programming method based on PicoBlaze6 is proposed.Based on this method,the design of a serial port to the SPI Flash in system programming has been completed.The working principle of the design and implementation method are focused on.Finally the reboot application and selecting loading simulation diagram and the debugging results are given.The debugging results show that in system programming has been successfully implemented.This design has already been used in engineering practice.

      FPGA;PicoBlaze6;in system programming;SPI;multiboot;automatic fallback

      TN79

      A

      ?士然

      2017-05-08)

      猜你喜歡
      配置文件串口指令
      聽我指令:大催眠術(shù)
      提示用戶配置文件錯(cuò)誤 這樣解決
      淺談AB PLC串口跟RFID傳感器的通訊應(yīng)用
      搭建簡(jiǎn)單的Kubernetes集群
      互不干涉混用Chromium Edge
      ARINC661顯控指令快速驗(yàn)證方法
      LED照明產(chǎn)品歐盟ErP指令要求解讀
      忘記ESXi主機(jī)root密碼怎么辦
      USB接口的多串口數(shù)據(jù)并行接收方法探索
      基于藍(lán)牙串口適配器的GPS接收機(jī)與AutoCAD的實(shí)時(shí)無(wú)線通信
      南投县| 延吉市| 彩票| 城步| 西城区| 沈阳市| 嘉荫县| 宣化县| 甘肃省| 新建县| 宽城| 金塔县| 荃湾区| 荣成市| 泰和县| 玛沁县| 曲沃县| 大足县| 定日县| 苏尼特右旗| 达孜县| 新晃| 驻马店市| 肥城市| 信宜市| 伊宁县| 蒲江县| 洱源县| 桂平市| 红安县| 宁海县| 广州市| 曲沃县| 沭阳县| 陆良县| 上蔡县| 中宁县| 南投市| 四平市| 板桥市| 铜陵市|