• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    FPGA多重配置在LED顯示控制系統(tǒng)中的應(yīng)用

    2020-05-06 13:46:58程宏斌鄭喜鳳
    液晶與顯示 2020年5期
    關(guān)鍵詞:狀態(tài)機配置文件顯示屏

    曹 慧,程宏斌,2*,汪 洋,2,鄭喜鳳,2

    (1. 長春希達電子技術(shù)有限公司 吉林 長春 130103;2. 中國科學(xué)院 長春光學(xué)精密機械與物理研究所 吉林 長春 130033)

    1 引 言

    常規(guī)LED顯示控制系統(tǒng)主要由上位機、發(fā)送卡和接收卡組成,通過網(wǎng)絡(luò)鏈路,實現(xiàn)LED顯示屏的顯示和控制。發(fā)送卡接收視頻和控制信號,并將數(shù)據(jù)打包傳輸接收卡。接收卡截取自己需要的數(shù)據(jù)完成灰度調(diào)制或控制響應(yīng),并通過千兆網(wǎng)將數(shù)據(jù)串行轉(zhuǎn)發(fā)給下一張接收卡[1-3]。

    在指揮、監(jiān)控中心等工程項目中,LED顯示屏要求(7×24)h不間斷運行,因此確??刂葡到y(tǒng)程序升級正確越發(fā)重要。系統(tǒng)通過網(wǎng)絡(luò)傳輸更新發(fā)送卡、接收卡外置Flash存儲的程序文件,在過程中存在因干擾產(chǎn)生錯誤數(shù)據(jù)或遇到掉電、誤擦除等破壞程序文件完整性的情況,致使現(xiàn)場可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)[4-12]不能再次調(diào)用,人工逐一板卡燒錄程序費時費力,造成重大顯示故障。通過Xilinx Spartan-6 FPGA的MultiBoot特性,完成FPGA多重配置設(shè)計,在Flash某一固定區(qū)域存儲備用程序,當(dāng)FPGA更新程序出錯時,調(diào)用備用程序保障常規(guī)顯示和網(wǎng)絡(luò)鏈路功能,隨后在線更新程序,提高控制系統(tǒng)的容錯率。

    2 多重配置原理

    Spartan-6 FPGA在通電時從外部Flash加載存儲的項目程序文件(mcs),完成FPGA的配置后執(zhí)行系統(tǒng)功能。mcs文件一般只包含一個比特流配置文件,但也允許有多個。Spartan-6 FPGA具有MultiBoot邏輯配置模塊,來實現(xiàn)MultiBoot和Fallback操作。MultiBoot操作可以有選擇地從Flash的多個比特流文件中加載其中的一個,通過ICAP設(shè)置寄存器并觸發(fā)IPROG命令,在系統(tǒng)不重復(fù)上電情況下對FPGA重新配置[4-6],實現(xiàn)不同的功能。Fallback操作是在切換加載比特流文件過程中出錯時,用預(yù)存的安全比特流文件替代并進行FPGA的重新配置。

    MultiBoot邏輯配置流程中有Header、MultiBoot和Golden 3個比特流配置文件,此時外部Flash存儲器中的比特流文件組織模式及FPGA配置流程如圖1所示。

    圖1 MultiBoot邏輯配置流程Fig.1 MultiBoot logic configuration process

    Header配置文件包含同步字、MultiBoot和Golden配置文件在Flash存儲的起始地址等信息[7]。系統(tǒng)上電時,F(xiàn)PGA從0地址加載Header配置文件,根據(jù)存儲的地址跳轉(zhuǎn)并加載MultiBoot配置,這是滿足用戶使用的系統(tǒng)常規(guī)程序。Golden配置文件為備用的安全程序,當(dāng)加載MultiBoot配置出錯時,觸發(fā)Fallback操作,加載該安全程序配置FPGA。

    如圖1所示,Header、MultiBoot和Golden(Fallback)配置文件在加載過程中出錯時,根據(jù)相應(yīng)寄存器內(nèi)設(shè)置的起始地址值FPGA會重新加載3次,加載次數(shù)的計數(shù)器名稱為Strike。若Strike的計數(shù)值為6,則從0地址開始,F(xiàn)PGA執(zhí)行Header→MultiBoot→Golden (Fallback)→Header的循環(huán)加載。若期間MultiBoot或Golden(Fallback)配置文件加載成功,則停止循環(huán)。每次循環(huán)Strike值加1,最多3次,Strike值為9則停止所有配置加載。

    Fallback操作一旦被觸發(fā)且加載Golden配置成功,只有重啟系統(tǒng)或使用IPROG命令才能實現(xiàn)重新加載其他FPGA配置文件。MultiBoot特性提高了器件利用率及系統(tǒng)安全性、降低了復(fù)雜系統(tǒng)的成本。

    3 系統(tǒng)應(yīng)用設(shè)計

    LED顯示系統(tǒng)方案設(shè)計如圖2所示,增加MultiBoot控制模塊,采用狀態(tài)機編碼,按照指令流程通過Xilinx內(nèi)置的ICAP核向配置文件發(fā)送IPROG命令,熱啟動調(diào)用Flash中存儲的備用程序,實現(xiàn)對FPGA重新配置。

    圖2 系統(tǒng)方案設(shè)計Fig.2 System scheme design

    3.1 硬件設(shè)計

    采用FPGA型號為Xilinx Spartan-6 Lx16、Flash型號M25P16,F(xiàn)PGA與SPI Flash物理連接的硬件電路如圖3所示,數(shù)據(jù)寬度為×1 SPI配置的方式,M[1∶0] = 2′b01[8-9]。

    圖3 配置接口硬件電路Fig.3 Configuration interface hardware circuit

    LED顯示控制系統(tǒng)針對不同的顯示屏需要進行相匹配的顯示參數(shù)設(shè)置,在SPI Flash內(nèi)采用顯示參數(shù)設(shè)置與程序運行功能相獨立地址存儲,系統(tǒng)上電時加載程序比特流文件和顯示參數(shù)設(shè)置文件,完成FPGA配置后實現(xiàn)不同顯示屏的正常顯示。

    發(fā)送卡、接收卡的Flash存儲區(qū)分為程序文件區(qū)和設(shè)置文件區(qū)。程序文件區(qū)保存實現(xiàn)各自功能的程序比特流數(shù)據(jù);發(fā)送卡設(shè)置文件主要包含視頻信號截取、屏幕帶載分辨率、數(shù)據(jù)分包編碼信息等;接收卡設(shè)置文件主要包含單卡帶載分辨率、級聯(lián)編碼、顯示灰度和刷新率、Gamma表、校正系數(shù)表等。

    SPI Flash的容量選擇與系統(tǒng)設(shè)計的加載模式和FPGA芯片的型號有關(guān)。在發(fā)送、接收端采用相同的主備兩種FPGA配置加載設(shè)計方案,SPI Flash內(nèi)存儲Header、主程序MultiBoot、備用程序Golden比特流文件和2個程序附屬顯示設(shè)置文件(Config.hex)。所用型號為M25P16,16 Mbit(0x000000-0x1FFFFF)容量的Flash詳細(xì)的存儲空間如表1所示。

    表1 Flash存儲空間Tab.1 Flash storage space

    3.2 軟件設(shè)計

    軟件設(shè)計主要分為兩個部分:第一部分是在FPGA上開發(fā)的應(yīng)用模塊。實現(xiàn)系統(tǒng)發(fā)送卡、接收卡各自的功能,同時也為配置重載模塊提供時鐘信號和觸發(fā)信號,本文采用在線 Flash程序?qū)懭胪瓿珊筝敵龅臉?biāo)識信號作為觸發(fā)信號。第二部分是FPGA配置重載模塊。包括Header文件編寫、MultiBoot和Golden程序文件中例化ICAP核,滿足觸發(fā)條件后,發(fā)送IPROG命令,實現(xiàn)FPGA重新配置。程序備份啟動及升級流程如圖4所示。

    圖4 程序運行流程圖Fig.4 Program operation flowchart

    根據(jù)程序運行流程,Header配置文件作為啟動引導(dǎo)作用,參照Xilinx Spartan-6指令對內(nèi)部相關(guān)寄存器的規(guī)則[7](如表2所示),逐條編譯指令數(shù)據(jù)形成Header配置文件并保存為HEX形式,圖5為向內(nèi)部寄存器GENERAL2寫入指令數(shù)據(jù)的詳解示例。

    MultiBoot和Golden程序功能完全相同,需要注意的是:Golden備用程序內(nèi)對應(yīng)上位機程序升級指令的Flash擦除、寫入的偏移地址為MultiBoot主程序地址,且各程序在SPI Flash起始地址需要與Header程序文件內(nèi)地址設(shè)置值對應(yīng)。在主備程序的MultiBoot控制模塊中同時例化ICAP核, Xilinx的編譯平臺ISE中調(diào)用ICAP原語路徑為Edit→LanguageTemplates,Verilog→Device Primitive Instantiation→Spartan-6→Config/BSCAN Components→Internal Configuration Access Port(ICAP_SPARTAN6),調(diào)用接口如下:

    ICAP_SPARTAN6_inst (
    .BUSY(BUSY), // Busy/Ready output
    .O(O), // 16Bit Configuartion data output
    .CE(CE), // ICAP Enable input(Active-Low)
    .CLK(CLK), // Clock input
    .I(I), // 16Bit Configuration data input
    .WRITE(WRITE) // Read/Write control input
    );

    表2 Header配置文件內(nèi)指令Tab.2 Header configuration directive definition

    續(xù) 表

    圖5 指令數(shù)據(jù)詳解示例Fig.5 Detailed examples of command data

    在使用該接口時,通過如圖2所示的MultiBoot控制模塊中狀態(tài)機只對CE、CLK、I、WRITE 4個信號不斷賦值來發(fā)送指令數(shù)據(jù),不用關(guān)注BUSY、O的值[7]。ICAP寫數(shù)據(jù)的指令時序圖如圖6所示。

    圖6 ICAP寫數(shù)據(jù)指令時序圖(I總線寬度為16 bit)Fig.6 ICAP write data instruction timing chart (I bus width is 16 bit)

    按照Xilinx Spartan-6指令對內(nèi)部相關(guān)寄存器的規(guī)則,通過狀態(tài)機完成表2中序號1→2→8→11→12→13的6個指令I(lǐng)CAP賦值,生成IPROG指令。ICAP_SPARTAN6數(shù)據(jù)總線寬度為16 bit,需要把引用的6個32 bit指令數(shù)據(jù)依次拆分為16 bit數(shù)據(jù),以主備程序內(nèi)Flash寫入完成標(biāo)識Spi_wda=1為觸發(fā)信號,實現(xiàn)主備程序在線更新后按照運行流程自動重啟對FPGA重新配置。寫IPROG指令狀態(tài)機如圖7所示。

    圖7 寫IPROG指令狀態(tài)機Fig.7 Write IPROG instruction state machine

    在狀態(tài)機發(fā)送IPROG指令數(shù)據(jù)到ICAP核的過程中,需要先將16 bit位寬度數(shù)據(jù)分為高低各8 bit位寬字,在每8 bit位寬字內(nèi)進行一次位轉(zhuǎn)換(Bit Swapping)操作,確保ICAP_SPARTAN6核接收到位轉(zhuǎn)換后的正確指令。位轉(zhuǎn)換操作參照如下Verilog語句:

    wire [15∶0] I; ∥進行Swap之后的有效數(shù)據(jù)

    reg [15∶0] I_REG; ∥進行Swap前的I寄存數(shù)據(jù)

    assign I = {I_REG[8], I_REG[9], I_REG[10], I_REG[11], I_REG[12], I_REG[13], I_REG[14], I_REG[15], I_REG[0], I_REG[1], I_REG[2], I_REG[3], I_REG[4], I_REG[5], I_REG[6], I_REG[7]}; ∥Flash主SPI模式下,數(shù)據(jù)需要按照每8 bit進行一次Swap操作(即每個字8個Bit數(shù)據(jù)進行高低位互換)。

    同理,按照上述方法,增加外部觸發(fā)信號,參照表2中所有指令數(shù)據(jù),增加、修改圖8狀態(tài)機流程,則可以在MultiBoot控制模塊中根據(jù)內(nèi)部觸發(fā)、外部觸發(fā)信號輸出給ICAP核不同數(shù)據(jù),實現(xiàn)系統(tǒng)FPGA被動和主動兩種不同的熱啟動重新配置方式。

    4 生成固化文件

    Xilinx Spartan-6系列的FPGA需要將后綴名為mcs的內(nèi)存鏡像文件固化到外部配置存儲器中,上電后FPGA自動加載并完成配置。本文的mcs文件包含3個比特流文件和2個HEX文件,在整合到mcs文件的過程中,需要指定每個比特流、HEX文件在Flash中存放的物理地址,且必須與系統(tǒng)程序設(shè)計內(nèi)有關(guān)Flash擦除、寫入、讀取等指令設(shè)置的起始地址相同,這樣FPGA才能根據(jù)地址找到對應(yīng)的程序和數(shù)據(jù)。

    采用Xilinx ISE平臺完成主備兩個程序的工程項目文件設(shè)計后,通過軟件的Generate Programming File生成主程序MultiBoot.bit和備程序Golden.bit。把相關(guān)文件放在同一目錄下,使用ISE平臺內(nèi)的命令行窗口ISE Design Suite 32/64 Bit Command Prompt工具[10],按照以下步驟完成Flash存儲芯片中初始可燒錄的內(nèi)存鏡像(mcs)文件。

    (1)promgen -p bin -r Header_SPIx1.hex -o Header_SPIx1.bin。如圖8所示,把編寫后的Header配置文件進行格式轉(zhuǎn)換。

    圖8 Header配置文件格式轉(zhuǎn)換Fig.8 Header configuration file format conversion

    (2)promgen -w -p mcs -spi -s 2048 -data file up 000000 Header_SPIx1.bin -u 000044 Golden.bit -data file up 080000 Config.hex -u 100000 MultiBoot.bit -data file up 180000 Config.hex -o D:/H_M_G.mcs。

    命令中各參數(shù)說明:

    -spi:生成的mcs文件要固化到SPI Flash中;

    -p mcs:生成文件的格式是mcs格式;

    -s 2048:定義外部存儲器的容量,2 048 kbytes×8/1 024=16 Mbit;

    -data_file up 000000 Header_SPIx1.bin:名字為Header_SPIx1的BIN文件在Flash的起始地址為0x0;

    -u 000044Golden.bit:名字為Golden的比特率文件在Flash的起始地址為0x44;

    -u 100000MultiBoot.bit:名字為MultiBoot的比特率文件在Flash的起始地址為0x100000;

    -data_file up 080000 Config.hex:名字為Config的HEX文件在Flash的起始地址為0x80000;

    -data_file up 180000 Config.hex:名字為Config的HEX文件在Flash的起始地址為0x180000;

    -o D∶/H_M_G.mcs:合成后的文件名和保存的目錄。

    合并完成mcs文件后,通過ISE設(shè)計平臺中IMPACT軟件將mcs文件固化到SPI Flash中。

    5 測試分析與結(jié)果

    通過ISE平臺中集成的Simulation軟件對設(shè)計進行仿真,通過添加Test Bench,模擬激勵信號為升級程序?qū)懲闒lash的標(biāo)識信號Spi_wda,對MultiBoot控制模塊進行仿真。圖9是Flash重新加載時對ICAP核輸入信號的仿真結(jié)果,可以看到,狀態(tài)機成功生成了IPROG命令,并將位轉(zhuǎn)換后的數(shù)據(jù)發(fā)送給ICAP模塊。

    圖9 ICAP_SPARTAN6 IPROG命令仿真Fig.9 ICAP_SPARTAN6 IPROG command simulation

    如圖10所示,本設(shè)計通過LED顯示平臺進行主備升級程序的測試。測試過程及結(jié)果如下:

    升級程序格式轉(zhuǎn)換為HEX文件,由上位機軟件通過網(wǎng)絡(luò)傳輸升級指令和程序數(shù)據(jù),分別發(fā)送給LED控制系統(tǒng)的發(fā)送卡、接收卡。通過修改程序HEX文件內(nèi)數(shù)據(jù)和在上位機傳輸數(shù)據(jù)過程中拔掉網(wǎng)線、掉電,模擬升級過程中出現(xiàn)的突發(fā)情況,對發(fā)送卡、接收卡進行獨立的測試。通過LED顯示屏能否正常顯示圖像和系統(tǒng)指示燈狀態(tài)觀測FPGA是否正確加載配置。

    圖10 LED顯示平臺(軟件、控制系統(tǒng)、顯示屏)Fig.10 LED display platform (software, control system, display)

    系統(tǒng)主備程序的顯示功能一致,顯示配置文件一致,主程序工作狀態(tài)指示燈閃爍頻率是備程序的2倍。在系統(tǒng)主程序正常工作時,模擬主程序升級故障,觀測到板卡自動重啟后系統(tǒng)指示燈從高頻變?yōu)榈皖l閃爍,LED顯示屏顯示正常,確認(rèn)板卡備程序自動啟用;此時正常進行程序升級,觀測到板卡自動重啟后系統(tǒng)指示燈由低頻變?yōu)楦哳l閃爍,LED顯示屏顯示正常,確認(rèn)板卡主程序升級成功并自動啟用;當(dāng)備程序已經(jīng)啟用,模擬升級故障時,觀測到板卡自動重啟后系統(tǒng)指示燈維持低頻閃爍狀態(tài),LED顯示屏顯示正常,確認(rèn)板卡主程序升級失敗,自動保持啟用備程序。

    6 結(jié) 論

    本文LED顯示控制系統(tǒng)的發(fā)送卡、接收卡程序采用主備程序熱啟動設(shè)計,在LED顯示屏使用過程中極大地保障了系統(tǒng)在線升級的安全性和時效性。同時,顯示程序文件與顯示配置文件分區(qū)存儲、靈活調(diào)用,通過上位機軟件對Flash擦除、寫入顯示配置時,既滿足不同LED顯示屏需要靈活配置,又規(guī)避了對顯示程序直接操作的風(fēng)險。在Xilinx Spartan-6 FPGA系統(tǒng)設(shè)計中編寫狀態(tài)機調(diào)用ICAP核,通過內(nèi)部、外部觸發(fā)信號可以控制FPGA重新配置。該設(shè)計方法靈活方便,易于操作,可分時復(fù)用提高編程資源的利用率和系統(tǒng)穩(wěn)定性,在工程應(yīng)用中有很高的應(yīng)用價值。

    猜你喜歡
    狀態(tài)機配置文件顯示屏
    一塊布就是一個顯示屏?
    軍事文摘(2022年10期)2022-06-15 02:29:30
    提示用戶配置文件錯誤 這樣解決
    搭建簡單的Kubernetes集群
    互不干涉混用Chromium Edge
    基于有限狀態(tài)機的交會對接飛行任務(wù)規(guī)劃方法
    蒼蠅迷戀顯示屏
    忘記ESXi主機root密碼怎么辦
    未來五年LED顯示屏出貨將保持16%增長
    中國照明(2016年6期)2016-06-15 20:30:14
    基于AT89S52的手勢可控LED滾動顯示屏設(shè)計
    FPGA設(shè)計中狀態(tài)機安全性研究
    永昌县| 永宁县| 会理县| 灵丘县| 乌审旗| 呼玛县| 伊金霍洛旗| 马山县| 甘泉县| 观塘区| 沙湾县| 天祝| 武威市| 宕昌县| 兴海县| 石林| 广西| 平罗县| 洪湖市| 南岸区| 浏阳市| 密山市| 孟连| 金川县| 永兴县| 扶绥县| 营山县| 洪湖市| 车致| 安顺市| 通许县| 万年县| 威宁| 炎陵县| 诸暨市| 拉萨市| 新昌县| 平昌县| 廊坊市| 莱西市| 西乡县|