• 
    

    
    

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

      一種批量FPGA遠(yuǎn)程并行智能升級的方案

      2016-09-16 09:10:06郝天琪孟立凡孫玉環(huán)中北大學(xué)電子測試技術(shù)國家重點實驗室太原03005中北大學(xué)儀器與電子學(xué)院太原03005
      電子器件 2016年4期
      關(guān)鍵詞:狀態(tài)機字節(jié)編程

      郝天琪,孟立凡*,孫玉環(huán)(.中北大學(xué)電子測試技術(shù)國家重點實驗室,太原03005;.中北大學(xué)儀器與電子學(xué)院,太原03005)

      一種批量FPGA遠(yuǎn)程并行智能升級的方案

      郝天琪1,孟立凡1*,孫玉環(huán)2
      (1.中北大學(xué)電子測試技術(shù)國家重點實驗室,太原030051;2.中北大學(xué)儀器與電子學(xué)院,太原030051)

      針對存儲陣列卡中批量FPGA手動逐個升級緩慢的問題,在不修改原有硬件的條件下,提出并成功實現(xiàn)了一種批量FPGA遠(yuǎn)程并行智能升級的方案。依托存儲陣列卡中僅有的PCIE接口,各片F(xiàn)PGA以并發(fā)競爭的方式向控制主機提出升級數(shù)據(jù)讀取請求并實時響應(yīng),解決了配置Flash手動串行編程效率低的難題。經(jīng)過存儲陣列卡板上遠(yuǎn)程調(diào)試證明,該方案可行,運行穩(wěn)定可靠,且移植方便,是一種廉價又理想的遠(yuǎn)程并行智能升級方案。

      FPGA;配置Flash;并發(fā)競爭;遠(yuǎn)程智能升級

      隨著大規(guī)模集成電路的高速發(fā)展,現(xiàn)場可編程門陣列FPGA(Field Programable Gate Array)在工業(yè)領(lǐng)域得到了廣泛應(yīng)用[1]。為了加快電子存儲設(shè)備的研發(fā)進度,提高存儲陣列卡的吞吐量,眾多電子存儲陣列卡使用了大量的FPGA代替?zhèn)鹘y(tǒng)的ASIC。在整機調(diào)試過程中,由于FPGA數(shù)量眾多,固化配置邏輯極其耗時,給遠(yuǎn)程存儲陣列卡邏輯更新和設(shè)備維護造成了困難。國內(nèi)外對較多FPGA芯片的配置更新研究甚少,在解決此類難題時加入了微控制器、IP核或只能串行逐個更新,通用性差,不夠靈活且移植困難[2,3]。因此,在不修改硬件板卡的前提下,利用存儲陣列卡現(xiàn)有的PCIE接口和PCIE協(xié)議的強突發(fā)傳輸處理能力、高速傳輸特性對配置Flash[4]并行編程是一種理想方案。本文以SPI接口的NOR Flash為例,詳細(xì)闡述了遠(yuǎn)程并行智能升級的原理和FPGA邏輯結(jié)構(gòu)。

      1 遠(yuǎn)程并行智能升級原理

      遠(yuǎn)程并行智能升級系統(tǒng)包括兩部分,遠(yuǎn)程服務(wù)站(Romote Server)和存儲陣列(Storage Array)。遠(yuǎn)程服務(wù)站通過因特網(wǎng)將新的配置文件傳到存儲陣列卡中工控機IPC(Industrial Personal Computer)的內(nèi)存上,接著觸發(fā)FPGA升級信號,各片F(xiàn)PGA在收到升級觸發(fā)信號后向IPC確認(rèn),接著FPGA對配置Flash進行擦除,再以并發(fā)競爭的方式向IPC請求配置數(shù)據(jù)并編程配置Flash芯片的指定區(qū)域,編程完成后回讀配置Flash的更新區(qū)域,對比確認(rèn)后再啟動加載配置命令,在不掉電的情況下完成配置文件升級[5],如圖1所示。由于PCIE傳輸速率高,NOR Flash的寫入速度低,每完成一頁的編程Flash都需要等待較長時間,所以各片F(xiàn)PGA彼此之間的影響并不大,多片F(xiàn)PGA可以同時進行升級,這樣可以將升級配置時間由N個時間單位縮短為稍大于一個時間單位,大大提高了存儲設(shè)備遠(yuǎn)程升級效率。

      圖1 遠(yuǎn)程并行智能升級示意圖

      2 遠(yuǎn)程并行智能升級FPGA邏輯結(jié)構(gòu)

      遠(yuǎn)程并行智能升級FPGA邏輯包括W rite_Read子模塊和 BitLoad子模塊,其結(jié)構(gòu)如圖 2所示。W rite_Read子模塊的功能包括檢查FPGA的連接狀態(tài)、對指定區(qū)域的配置Flash進行擦除、編程和讀取。BitLoad子模塊的功能是當(dāng)Flash編程完畢回讀確認(rèn)后從配置Flash加載FPGA的配置文件,這樣FPGA在編程完畢后無需斷電就可以啟動新配置,有效保護了存儲陣列卡中DDR等其它器件上的數(shù)據(jù)[6~8]。Top interface為上層控制接口,同PCIE寄存器連接,PCIE模塊在此沒有列出,它主要用于陣列卡數(shù)據(jù)高速傳輸。Bottom interface為底層接口,同F(xiàn)lash芯片連接。

      圖2 W rite_Read和BitLoad的結(jié)構(gòu)

      2.1W rite_Read模塊

      配置Flash讀寫子模塊包括兩條獨立且互斥的通道,讀通道和寫通道。兩條通道在上層是獨立無聯(lián)系的,下層通過MUX模塊的選擇與SpiSerdes模塊連接,通道的選擇由W rite_ReadENB控制,當(dāng)W rite_ReadENB置位‘0'時,連接讀通道,為‘1'時連接寫通道。下面,由下至上分別介紹各個子模塊的實現(xiàn)及其關(guān)系。

      2.1.1STARTUPE2模塊

      SPI協(xié)議是同步通信協(xié)議,數(shù)據(jù)的傳輸依賴于同步時鐘CCLK的邊沿,因此需要準(zhǔn)確控制CCLK的電平跳變。FPGA的SPI配置方式時鐘CCLK為專用管腳,需要硬件原語模塊STARTUPE2來管理CCLK。設(shè)計中SPI協(xié)議選用常見的模式3,即時鐘極性CPOL=1,時鐘相位CPHA=1。STARTUPE2的USERCLKO直接控制著 CCLK的輸出,通過SpiSerdes模塊的傳輸開始標(biāo)志位啟動USERCLKO,傳輸完成標(biāo)志位延時拉高USERCLKO[9-10]。

      2.1.2SpiSerdes模塊

      為了數(shù)據(jù)傳輸管理方便,我們將一個字節(jié)作為此模塊的傳輸單位,用兩個有限狀態(tài)機ShiftCounter和ShiftDate組織字節(jié)內(nèi)數(shù)據(jù)接收和發(fā)送。SpiSerdes包含兩個移位寄存器組ShiftCounter和ShiftDate。Shift-Counter有9 bit,用于標(biāo)識ShiftDate的傳輸狀態(tài),當(dāng)ShiftDate傳輸完成后,保留一個時鐘周期用于Shift-Date更新數(shù)據(jù),其位數(shù)高于ShiftDate。ShiftCounter初始值為B“000000001”,ShiftDate每傳輸完一位,ShiftCounter循環(huán)右移一位,當(dāng)數(shù)字‘1'再次回到LSB位時,標(biāo)記一個字節(jié)傳輸完成,同時為下一個字節(jié)的傳輸做好了準(zhǔn)備,如圖3(a)所示。ShiftDate寄存器組的LSB和MSB分別連接至配置Flash的MISO和MOSI。當(dāng)數(shù)據(jù)傳輸時,首先將ShiftDate寄存器組用待發(fā)送的數(shù)據(jù)初始化,然后在時鐘的上升沿將MSB發(fā)往MOSI接口,同時將ShiftDate左移,在時鐘的下降沿再將MISO填充到ShiftDate的LSB位,這樣隨著時鐘的周期性循環(huán),當(dāng)ShiftCounter的位‘1'再次回到LSB,就完成了一個字節(jié)的發(fā)送和接收,如圖3(b)所示。

      圖3 狀態(tài)寄存器組循環(huán)右移示意圖

      完成一個字節(jié)的數(shù)據(jù)發(fā)送和接收后,將TransferDone置為高電平,再根據(jù)TransferStart的情況選擇是否繼續(xù)傳輸數(shù)據(jù)。需要注意的是在發(fā)送有效數(shù)據(jù)之前,SpiSerdes模塊都要先發(fā)出一組空操作,以穩(wěn)定SPI的同步時鐘CCLK。

      2.1.3MUX模塊

      配置Flash的讀通道和寫通道的切換由MUX模塊來完成。當(dāng)W rite_ReadB為低電平時MUX選擇讀數(shù)據(jù)通道與SpiSerdes連接,當(dāng)W rite_ReadB為高電平時選擇寫數(shù)據(jù)通道與SpiSerdes連接,這樣獨立且互斥的讀寫通道可以有效降低因誤操作導(dǎo)致Flash內(nèi)容被篡改的可能性。讀寫通道的切換由時鐘同步處理,避免了毛刺的產(chǎn)生。

      2.1.4SpiFlashReader模塊

      配置Flash編程完畢后,檢驗配置文件已經(jīng)全部正確寫入的可靠方法就是讀出本次更新的配置數(shù)據(jù),再將讀取的數(shù)據(jù)與寫入的數(shù)據(jù)對比,確認(rèn)無誤后再從配置Flash加載更新后的配置文件。因此,SpiFlashReader模塊對編程的完整性檢驗具有重要意義[11-12]。

      SpiFlashReader以寄存器組DateBox移位的形式實現(xiàn)數(shù)據(jù)和命令傳輸?shù)?。DateBox有5個字節(jié),當(dāng)發(fā)送數(shù)據(jù)前需要發(fā)送讀命令時,以[ReadCommand,32 bitsDate]的形式組織,比如Flash讀通道選定后需要發(fā)送讀數(shù)據(jù)命令和起始地址,就將讀命令放在高字節(jié),起始地址放在低4個字節(jié)。DateBox初始化后被賦予待發(fā)送的值,同時它的狀態(tài)計數(shù)器Counter也被賦予待發(fā)送的字節(jié)數(shù),當(dāng)發(fā)送使能觸發(fā)后,DateBox的高字節(jié)被送往SpiSerdes模塊的數(shù)據(jù)發(fā)送接口,每傳輸完1個字節(jié),DateBox左移1個字節(jié),同時將SpiSerdes模塊接收到的一個字節(jié)的數(shù)據(jù)填充到低字節(jié),這樣循環(huán)直到Counter減為0,就完成了讀命令和起始地址的發(fā)送和接收。DateBox移位狀態(tài)圖4所示。

      圖4 DateBox寄存器組的移位示意圖

      起始地址發(fā)出后,就開始了數(shù)據(jù)接收的過程。DateBox每次接收完4個字節(jié)的數(shù)據(jù),就向上層控制模塊發(fā)出Ready信號,表明該模塊接收端口數(shù)據(jù)有效,當(dāng)收到應(yīng)答信號ACK后繼續(xù)讀取下一組數(shù)據(jù)。在此過程中讀取的地址隨著Ready信號的跳變不斷累加,直至接收完指定的數(shù)據(jù)長度才停止,最后將讀完成狀態(tài)信號置為高電平標(biāo)識讀過程已經(jīng)完成。

      2.1.5SpiFlashProgrammer模塊

      ①編程模塊子狀態(tài)機設(shè)計

      編程模塊是遠(yuǎn)程智能升級的關(guān)鍵,SpiFlashProgrammer模塊包含SendWords、PollStatus和Program-Pages 3個逐層嵌套的子狀態(tài)機。PollStatus發(fā)送命令時調(diào)用SendWords狀態(tài)機,ProgramPage在查詢狀態(tài)時調(diào)用PollStatus狀態(tài)機,在傳輸配置數(shù)據(jù)時調(diào)用SendWords狀態(tài)機,3個子狀態(tài)機結(jié)構(gòu)如圖5所示。

      圖5 SendW ords、PollStatus和Program Pages狀態(tài)機狀態(tài)轉(zhuǎn)移圖

      SendWords狀態(tài)機是編程模塊最底層的狀態(tài)機,配置Flash的ID讀取、擦除、編程都需要使用該狀態(tài)機,它的傳輸單位是雙字(DoubleWords)。進入該子狀態(tài)機后,首先在PreSendWord的狀態(tài)準(zhǔn)備好一組待發(fā)送數(shù)據(jù),然后進入Sendword狀態(tài),向SpiSerdes模塊發(fā)送四個字節(jié)的編程命令或數(shù)據(jù),每發(fā)送完成4個字節(jié),Sendwords狀態(tài)機就回到Pre-SendWord狀態(tài)重新初始化發(fā)送器。當(dāng)一組數(shù)據(jù)傳輸完畢后,有限狀態(tài)機就轉(zhuǎn)移到下一個指定的狀態(tài),若傳輸過程中長時間沒有收到配置Flash的正確回應(yīng),狀態(tài)機就會轉(zhuǎn)移至傳輸超時狀態(tài),將錯誤指示信號拉至高電平,提前結(jié)束編程。

      NOR Flash以頁為最小編程塊,每次編程的數(shù)據(jù)量為一頁。由于Flash寫入速度較慢,每次寫入一頁的數(shù)據(jù)之后需要等待,查詢配置Flash是否完成本頁的燒寫,這就需要一個狀態(tài)機PollStatus負(fù)責(zé)檢查配置Flash的頁編程狀態(tài)。PollStatus狀態(tài)機的結(jié)構(gòu)與SendWords狀態(tài)機相似,進入PrePollStatus之后不停地查詢頁寫入狀態(tài),直至寫入完成或?qū)懭氤瑫r。

      每片F(xiàn)lash包括許多頁,以頁為單位編程NOR Flash需要準(zhǔn)確組織頁的大小和順序,ProgramPages狀態(tài)機能夠自動累加編程地址,準(zhǔn)時更新待編程數(shù)據(jù),精確的控制頁編程。當(dāng)一頁編程未完成時,ProgramPages持續(xù)調(diào)用Sendwords狀態(tài)機,直至本頁數(shù)據(jù)全部寫入配置Flash,當(dāng)本頁編程完成時,調(diào)用PollStatus子狀態(tài)機,以確認(rèn)數(shù)據(jù)已經(jīng)準(zhǔn)確寫入,之后再根據(jù)寫地址判斷是否需要編程下一頁,編程全部完成后進入結(jié)束狀態(tài)。

      ②編程模塊更新配置Flash流程

      配置Flash在編程前需要先檢查其連接狀態(tài),通過讀取設(shè)備的ID可以確認(rèn)設(shè)備是否已經(jīng)正確連接,F(xiàn)lash ID讀取正確后就可以擦除其指定區(qū)域了,擦除完畢后才可以進行數(shù)據(jù)燒寫。如果只需要檢查配置Flash是否能夠識別,只檢查其ID就可以了,如圖6所示。在檢查設(shè)備ID、擦除或編程過程中,一旦出現(xiàn)Flash回應(yīng)超時,狀態(tài)機就會切換到到對應(yīng)的錯誤指示狀態(tài),提前結(jié)束編程。編程過程中或編程順利通過后,相應(yīng)的狀態(tài)指示信號也會置位,比如 Ready_BusyB,Done,Started,InitializeOK,Check IdOK,EraseOK,ProgramOK等,這些指示信號在調(diào)試和升級的過程中指明了編程模塊的進度,對定位錯誤、加快調(diào)試進度有很大幫助。

      圖6 配置Flash編程流程

      2.2BitLoad模塊

      配置Flash編程完畢后,需要將FPGA的配置切換到更新后的版本,但是存儲陣列卡又要求必須保護板卡中的DDR等輔助設(shè)備中的數(shù)據(jù),不得斷電,此時就需要BitLoad模塊向FPGA內(nèi)部配置寄存器發(fā)送命令,主動加載新的配置文件,這樣就達到了FPGA在不掉電的情況下重新加載新配置文件的目標(biāo)。ICAP命令的發(fā)送順序及其含義如表1所示,更新后配置文件的起始地址根據(jù)具體環(huán)境有所不同。ICAP命令的字節(jié)內(nèi)位序是LSB在前,使用時需要轉(zhuǎn)換,比如X“30020001”轉(zhuǎn)換后變?yōu)閄“0C400080”。BitLoad的觸發(fā)需要延時確認(rèn),避免了毛刺、尖峰信號的誤觸發(fā)。

      表1 ICAP命令發(fā)送順序

      3 邏輯功能仿真

      為了便于理解各模塊之間的時序關(guān)系,下面以讀取設(shè)備的ID為例對FPGA遠(yuǎn)程智能升級邏輯進行功能仿真。首先選擇寫通道,將Reset_EnableB置為低電平使能寫通道,同時將Check IdOnly信號拉高,Started變?yōu)楦唠娖?,F(xiàn)lash片選信號SpiCsB有效,進入寫模式狀態(tài),SpiFlashProgrammer模塊開始初始化配置Flash,initializeOK跳變?yōu)楦唠娖街?,開始發(fā)送讀ID命令X“9F”。SpiMosi和SpiMiso兩條信號線顯示了SPI串行總線發(fā)送和接收數(shù)據(jù)時數(shù)據(jù)高低電平的變化。從此時起TranserDone第一個脈沖說明讀ID命令已經(jīng)下發(fā),第2、第3個脈沖和隨后的高電平表示FPGA已經(jīng)完成了3個字節(jié)的接收,X“01”、X“02”、X“19”,這就是讀出的Flash的ID。配置Flash ID讀取完成后,Check IdOK狀態(tài)信號被拉高,隨后Done信號也被拉高,Error維持低電平,說明讀ID已經(jīng)順利完成,如圖7所示。FPGA邏輯仿真正確后,將各模塊連接到FPGA的PCIE寄存器接口上上板驗證,順利完成了批量FPGA的遠(yuǎn)程并行升級。

      圖7 讀取設(shè)備ID功能仿真

      4 結(jié)論

      本文介紹了一種批量FPGA遠(yuǎn)程并行智能升級的方案并對編程模塊進行了仿真,該方案邏輯功能由VHDL/Verilog編程實現(xiàn),不需要額外添加微控制器或其它輔助升級設(shè)備,在存儲陣列卡只留有PCIE接口的條件下,用少量的LUT和原語模塊順利實現(xiàn)了FPGA的遠(yuǎn)程并行智能升級,大大縮短了存儲設(shè)備整機升級時間,提高了存儲設(shè)備整機調(diào)試和升級維護的效率。經(jīng)過完備的功能仿真和上板遠(yuǎn)程調(diào)試證明,遠(yuǎn)程智能升級方案可移植性強,可靠性高,維護簡單,適用于Xilinx K7、V7、S7等系列主流芯片。

      [1] 劉迎輝,朱恒靜,張大宇,等.Xilinx低等級FPGA高可靠應(yīng)用的升級試驗方法研究[J].電子產(chǎn)品可靠性與環(huán)境試驗,2014,32(1):11-17.

      [2] 劉永恩,王俊芳.FPGA遠(yuǎn)程升級技術(shù)的分析與實現(xiàn)[J].專題技術(shù)與工程應(yīng)用,2012,42(9):48-50.

      [3] 李強,羅超,夏威,等.FPGA遠(yuǎn)程更新系統(tǒng)[J].儀表技術(shù)與傳感器,2014(7):72-74.

      [4] 唐磊.基于FPGA的USB、Flash控制器設(shè)計[D].北京:北京交通大學(xué),2010.

      [5] 丁丁,湯曉斌,陳立德,等.基于μClinux的FPGA遠(yuǎn)程更新系統(tǒng)的實現(xiàn)[J].電子技術(shù)應(yīng)用,2014,40(3):6-8.

      [6] Xilinx Corp.Platform Flash In-System Programmable Configuration PROMs[EB/OL].USA:Xilinx,Product Specification,May 2012:19.

      [7] 任勇峰,張凱華,程海亮.基于FPGA的高速數(shù)據(jù)采集存儲系統(tǒng)設(shè)計[J].電子器件,2015,38(1):135-139.

      [8] 李加超,孟令軍,周之麗,等.基于FPGA的斷電續(xù)傳存儲系統(tǒng)的設(shè)計與實現(xiàn)[J].電子器件,2015,38(3):588-591.

      [9] 孫云峰,段哲民.基于微處理器系統(tǒng)的FPGA在線配置方法[J].微處理機,2008,10(5):29-31.

      [10]連猛,丑修建,李慶,等.基于FPGA和DSP的數(shù)據(jù)采集與壓縮系統(tǒng)[J].電子器件,2015,38(1):130-134.

      [11]徐晶晶,陳帥.SSD系統(tǒng)中多級FPGA在線升級電路的設(shè)計與實現(xiàn)[J].信息技術(shù)教學(xué)與研究,2013(72):116-117.

      [12]逄錦昊,蘇濤,楊濤,等.基于FPGA的多路高速數(shù)據(jù)傳輸同步時延測量系統(tǒng)[J].電子器件,2015,38(2):447-451.

      郝天琪(1992-),男,漢族,山西河津人,中北大學(xué)碩士研究生,主要研究方向嵌入式系統(tǒng)及現(xiàn)代測試技術(shù),384047315@ qq.com;

      孟立凡(1956-),女,漢族,中北大學(xué)教授,主要研究方向為現(xiàn)代傳感理論與技術(shù)。1996年12月至1998年1月日本千葉大學(xué)高級訪問學(xué)者。主編有《傳感器原理及技術(shù)》高等學(xué)校教材,撰寫論文二十余篇,其中一級論文、核心期刊論文、EI收錄論文十余篇。發(fā)明專利一項。主持完成十余項省部級課題,menglifan@nuc.edu.cn。

      A Scheme of FPGA Remote Parallel Intelligent Upgrade

      HAO Tianqi1,MENG Lifan1*,SUN Yuhuan2
      (1.National Key Laboratory forElectronic Measurement Technology,North Uniυersity of China,Taiyuan 030051,China;2.College of Instrumentand Electric Technology,North Unitυersity ofChina,Taiyuan 030051,China)

      In order to solve the problem that storage array cards upgrade too slow inmanual one by another,a perfectmethod was proposed and successfully implemented on FPGA withoutmodifying the storage array cards.Relying on the storage array card's PCIE interface,each piece of FPGA proposes read request in concurrent competitive way,and respond to the controller in real time.Storage array card onboard debugging shows that the scheme proposed is feasible,reliable,and easy to transplant,and it isan inexpensive and ideal scheme.

      FPGA;deploy Flash;concurrentcompetition;remote intelligentupgrade

      TP336

      A

      1005-9490(2016)04-0820-05

      2015-08-09修改日期:2015-09-09

      EEACC:6120B;721010.3969/j.issn.1005-9490.2016.04.014

      猜你喜歡
      狀態(tài)機字節(jié)編程
      我家有只編程貓
      我家有只編程貓
      我家有只編程貓
      我家有只編程貓
      No.8 字節(jié)跳動將推出獨立出口電商APP
      基于有限狀態(tài)機的交會對接飛行任務(wù)規(guī)劃方法
      No.10 “字節(jié)跳動手機”要來了?
      簡談MC7字節(jié)碼
      FPGA設(shè)計中狀態(tài)機安全性研究
      基于反熔絲FPGA的有限狀態(tài)機加固設(shè)計
      水富县| 中山市| 壶关县| 盐山县| 弋阳县| 榆树市| 福鼎市| 广东省| 酒泉市| 米林县| 精河县| 永年县| 徐水县| 兴安盟| 娄烦县| 南投县| 迭部县| 琼结县| 晋宁县| 马山县| 石嘴山市| 聂荣县| 汝城县| 巴中市| 会昌县| 侯马市| 桃园县| 岳池县| 龙口市| 珲春市| 江达县| 汕尾市| 邓州市| 开化县| 会宁县| 屏南县| 武功县| 武夷山市| 栖霞市| 遵义县| 收藏|