999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于SPI FLASH的FPGA多重配置

2013-04-12 00:00:00李平吳曉山壽
現代電子技術 2013年22期

摘 要: 現代硬件設計規模逐漸增大,單個程序功能越來越復雜,當把多個功能復雜的程序集成到一個FPGA上實現時,由于各個程序的數據通路及所占用的資源可能沖突,使得FPGA控制模塊的結構臃腫,影響了整個系統工作效率。通過FPGA的多重配置可以有效地精簡控制結構的設計,同時可以用邏輯資源較少的FPGA器件實現需要很大資源才能實現的程序。以Virtex5系列開發板和配置存儲器SPI FLASH為基礎,從硬件電路和軟件設計兩個方面對多重配置進行分析,給出了多重配置實現的具體步驟,對實現復雜硬件設計工程有一定的參考價值。

關 鍵 詞: FPGA; 多重配置; SPI FLASH; 控制結構設計

中圖分類號: TN710?34 文獻標識碼: A 文章編號: 1004?373X(2013)22?0127?04

0 引 言

現代硬件程序設計規模越來越大,功能越來越復雜,當多個應用程序同時在一個硬件平臺上實現時,各個程序的資源使用和數據通路可能會沖突,這增加了控制電路設計的復雜程度,給開發人員增加了工作量和開發難度。通過多重配置,可以將多個應用程序根據需要分時加載到FPGA中,不僅精簡了電路設計,而且使系統更加靈活。FPGA多重配置的特點可以讓特定條件下的用戶選擇片上資源不多的FPGA去實現需要很多資源FPGA才能實現的功能,這大大降低了開發費用,同時提高了FPGA的利用率[1]。

Xilinx 公司Virtex5系列 的FPGA具有多重配置的特性,允許用戶在不掉電重啟的情況下,根據不同時刻的需求,可以從FLASH中貯存的多個比特文件選擇加載其中的一個,實現系統功能的變換。

1 總體設計

當FPGA完成上電自動加載初始化的比特流后,可以通過觸發FPGA內部的多重啟動事件使得FPGA從外部配置存儲器(SPI FLASH)指定的地址自動下載一個新的比特流來重新配置。FPGA的多重配置可以通過多種方式來實現[2]。本文采用的是基于ICAP核的狀態機編碼方式。通過調用Xilinx自帶的ICAP核,編寫狀態機按照一定的指令流程對ICAP核進行不斷的配置,可以控制FPGA重新配置。這種方式可以在源代碼中加很多注釋,讓后來的開發者很清楚地明白ICAP核指令流順序,以及多重配置地址計算方法,是一種簡單實用的實現方法。

1.1 硬件電路

多重配置的硬件主要包括FPGA板卡和貯存配置文件的FLASH芯片。FPGA 選用XILINX 公司Virtex?5 系列中的ML507,該產品針對FPGA多重配置增加了專用的內部加載邏輯[3]。FLASH 芯片選用XILINX 公司的SPI FLASH芯片M25P32,該芯片存貯空間為32 Mb,存貯文件的數量與文件大小以及所使用的FPGA 芯片有關。實現多重配置首先要將FPGA和外部配置存儲器連接為從SPI FLASH加載配置文件的模式。配置電路硬件連接框圖如圖1所示[4]。

在FPGA配置模式中,M2,M1,M0為0,0,1,這種配置模式對應邊界掃描加上拉,FPGA在這種模式下所有的I/O只在配置期間有效。在配置完成后,不用的I/O將被浮空[5]。M2,M1,M0三個選擇開關對應于ML507開發板上的SW3開關中的4,5,6位,在FPGA上電之前將上述開關撥為0,0,1狀態[6]。

1.2 軟件設計

從軟件設計的角度可以將FPGA多重配置主要分為兩個部分。第一部分是用戶自己開發的程序,這一部分包括用戶要在FPGA上邊實現的功能,同時也包括為重載模塊提供時鐘信號,以及觸發信號,本文觸發信號是通過用戶程序編寫串口通信協議棧來接收PC端傳輸的數字作為觸發信號。第二部分是FPGA重載配置模塊。FPGA多重配置首先要調用ICAP核,當滿足觸發條件后,采用狀態機編碼的方式對ICAP核進行賦值配置。FPGA多重配置的軟件結構圖如圖2所示。

重載模塊首先要調用ICAP核。ICAP原語在Xilinx的編譯軟件ISE中調用,調用路徑為Edit → Language Templates,VHDL/Verilog → Device Primitive Instantiation→Virtex5FPGA → Config/BSCAN Components→ Internal Config Access Port(ICAP_VIRTEX5)。

ICAP_VIRTEX5調用接口如下:

ICAP_VIRTEX5 #(

.ICAP_WIDTH(\"X32\")

// \"X8\", \"X16\" or \"X32\" 這里選用X32

) ICAP_VIRTEX5_inst (

.BUSY(BUSY), //Busy Output

.O(O), //32?bit data Output

.CE(CE), //Clock enable Input

.CLK(clk), //Clock Input

.I(I), //32?bit data Input

.WRITE(ICAP_WRITE) //Write Input

);

ICAP核支持X8,X16,X32 三種數據帶寬模式。在整個FPGA重配置的過程中并沒有用到ICAP核的輸出,因此在重載模塊的狀態機控制程序中不關注BUSY,O信號的值,可以不對它們賦值。用戶程序在使用接口時只需對CE,CLK,I,WRITE4個信號不斷賦值來發送命令。

在調用了ICAP核接口之后,通過Verilog編碼的方式實現狀態機。通過狀態機發送IPROG指令給ICAP核,ICAP核在接收到這些指令后會根據指定的地址自動加載配置文件。

IPROG 指令的作用是對FPGA 芯片進行復位操作,該復位操作對FPGA 內部的應用程序進行復位,復位過程中除專用配置管腳和JTAG 管腳,其他輸入/輸出管腳均為高阻態。完成復位操作后,將默認的加載地址用熱啟動地址寄存器(Warm Boot Start Address,WBSTAR)中的新地址替換[7]。

在發送IPROG指令之前,需要對ICAP核進行預配置。重載控制模塊在收到觸發信號后,第一個時鐘周期將ICAP 核的WRITE信號和CE信號置高,第二個周期將WRITE信號置底,CE信號置高,第三個周期將WRITE信號置底,CE信號也置底。接著在下面的8 個時鐘周期里,將指令隊列中的控制命令逐個發出。狀態機指令流程如圖3所示。

在狀態機發送IPROG指令的過程中,為了保證ICAP核接收到正確的指令,每一個發送出去的命令和數據必須遵循SelectMAP數據順序。SelectMAP數據順序是將每個指令都按字節劃分,劃分后每個字節的數據都按比特位翻轉。如果為“X32”模式,則劃分為4個字節,每個字節進行位翻轉。圖4以“X16”為例說明SelectMAP數據順序。

當狀態機從用戶程序接收到一個觸發條件后,會發送一系列如圖3所示的IPROG命令。Verilog編碼實現狀態機的過程中,必須按照圖3給出的指令順序發送這些IPROG命令,否則無法正確的與ICAP核通信。同時這些指令都具有自己特殊的定義而且必須服從SelectMAP數據順序,否則無法通信。IPROG指令的具體定義及說明如表1所示。

表1 IPROG指令定義

在上述配置指令過程中,第五步Warm Boot Start Address Register (WBSTAR)指定了滿足觸發條件的比特流在SPI FLASH中的起始地址,WBSTAR被賦值的地址必須和即將配置的bit流在SPI FLASH中的物理位置相同,否則FPGA就無法從外部讀取bit流。WBSTAR被賦值的數值都是提前根據程序的要求計算好的。計算WBSTAR值的時候需要了解WBSTAR寄存器每一位的具體含義,如圖5所示。

WBSTAR寄存器共31位,高三位是保留位,RS[1:0]兩位指定了可以多重配置的bit流的個數。RS_TS_B是RS[1:0]的使能信號:0表示 Disabled,1表示Enabled。START_ADDR表示要回讀的比特流在外部配置存儲器的起始地址。狀態機在對WBSTAR進行賦值時,要根據自己選擇的bit流個數以及對應各個bit流在外部配置存儲器貯存的地址自行計算WBSTAR地址。這里以4個bit流為例說明WBSTAR地址的計算方法,如表2所示。 狀態機使用的地址是服從SelectMAP數據順序的地址。FPGA 專用配置邏輯在收到IPROG 指令后,開始執行內部復位操作(JATG管角和重載控制部分不進行復位操作),擦除板卡上原有的程序,從FLASH 芯片中WBSTAR 所指向的起始地址開始讀取新配置文件完成FPGA的重配置。

表2 WBSTAR地址計算示意

2 多重配置的實現

Xilinx系列的FPGA需要將后綴名為mcs的內存鏡像文件固化到外部配置存儲器中,FPGA上電后才能自動加載配置文件。一般的mcs文件只包含一個bit流文件,多重啟動的固化文件(.mcs)包含多bit流文件。在將多個bit流整合到mcs文件的過程中,需要指定每個bit流的起始地址,這樣FPGA專用配置邏輯才能根據地址找到對應的bit流[8]。首先將用戶開發的應用程序和重載控制模塊添加到一個工程當中,利用ISE編譯軟件生成位流文件(.bit)。由于Virtex5系列器件本身的特性,一般情況下生產的bit流文件大約為3 300 KB,而SPI FLASH的容量為32 Mb即4 MB,這個容量無法滿足在一個SPI FLASH上貯存多個bit流文件,需要對生成的bit流進行壓縮。在用ISE軟件生成bit流文件時,當完成了Synthesize?XST以及Implement Design后,執行到最后一步Generate Programming File時,在Process Properties中General Options選項中勾選Enable Bitstream Compression。通過這個壓縮設置可以對bit流進行壓縮,壓縮后的bit流大約在500~600 KB之間,可以滿足在一個容量為32 Mb的SPI FLASH上貯存多個bit流文件。其次將需要進行重配置的多個位流文件拷貝至一個工程目錄下,有兩種方法可以將多個bit流整合為一個mcs文件[9]。第一種方法是通過ISE 編譯軟件的命令行窗口,使用命令行命令將多個位流文件合并為一個FLASH 存貯芯片M25P32 中燒寫的內存鏡像文件(.mcs)。第二種方法是用Impact軟件創建Multiboot SPI FLASH,選擇相應的FPGA型號和FLASH的容量以及要包含的bit流的個數(版本的個數)。本文使用第一種方法來將多個bit流文件形成一個內存鏡像文件(.mcs)。使用promgen 命令的具體格式為[10]:

命令中各參數的說明如下所述。–spi:表示生成的mcs文件要固化到SPI FLASH中;–p mcs:生成文件的格式是mcs格式;–o ML507.mcs:要生成的文件名,可以根據需要修改;–s 4096:定義了外部存儲器的容量,4096表示32 Mb;–u 0 rev0.bit:表示名字為rev0的比特流文件在外部存儲器的起始地址為0;–u 100000 rev1.bit:表示名字為rev1的比特流文件在外部貯存的起始地址為100000。在生成mcs文件后,通過IMPACT軟件將mcs文件固化到SPI FLASH中。FPGA上電自動從外部SPI FLASH加載一個初始化的bit流,當需要執行新的程序時,會根據觸發條件以及啟動地址重新配置。在實驗中,通過PC機串口終端發送指令當做觸發條件實現多重配置。在實際應用中,還可以根據具體硬件實現,采用其他通信方式傳送控制指令來進行觸發。

3 結 語

本文通過硬件電路和軟件設計兩個方面對FPGA的多重配置方法進行了詳細介紹,本文所介紹的多重配置方法靈活方便、易于操作、電路簡單,在工程中有很高的應用價值,同時關于bit流壓縮的方法也值得參考。

參考文獻

[1] 邱金蕙,李振全.基于Max Ⅱ CPLD和FLASH實現FPGA的多重配置[J].河北科技大學學報,2008(2):158?160.

[2] 劉釗,杜永鋒,許知博.基于Xilinx?Spartan6 FPGA的MultiBoot設計的實現[J].電子科技,2012(3):28?31.

[3] 何賓.Xilinx FPGA設計權威指南[M].北京:清華大學出版社,2012.

[4] Xilinx Inc. Virtex?5 FPGA configuration user guide (v3.11) [R]. USA: Xilinx Inc, 2012.

[5] 湯琦,蔣軍.Xilinx FPGA高級設計及應用[M].北京:電子工業出版社,2012.

[6] Xilinx Inc. Configuring Xilinx FPGAs with SPI serial Flash (v1.3) [R]. USA: Xilinx Inc, 2010.

[7] 張江偉.基于Virtex?5和FLASH實現FPGA的多重配置[J].計算機與網絡,2012(z1):130?132.

[8] 李正杰.高密度FPGA配置體系的設計與實現[D].成都:電子科技大學,2012.

[9] Xilinx Inc. MultiBoot with Virtex?5 FPGAs and platform Flash XL (v1.0) [R]. USA: Xilinx Inc, 2008.

[10] Xilinx Inc. ML505/ML506/ML507 evaluation platform user guide (v3.1.2) [R]. USA: Xilinx Inc, 2011.

主站蜘蛛池模板: 欧美19综合中文字幕| 国产swag在线观看| 色成人亚洲| 丝袜久久剧情精品国产| 欧美午夜网站| 亚瑟天堂久久一区二区影院| 久久久黄色片| 91九色最新地址| 毛片三级在线观看| 久久先锋资源| 婷婷六月综合| 久久亚洲美女精品国产精品| 日韩av无码DVD| 国产丝袜一区二区三区视频免下载| 无遮挡国产高潮视频免费观看| 亚洲综合一区国产精品| 日韩精品亚洲人旧成在线| 国产欧美又粗又猛又爽老| 在线视频一区二区三区不卡| 99一级毛片| 国产自无码视频在线观看| 久久亚洲高清国产| 漂亮人妻被中出中文字幕久久| 在线日本国产成人免费的| 在线网站18禁| 日韩最新中文字幕| 亚洲欧洲日韩久久狠狠爱| 久久中文字幕2021精品| 亚洲人精品亚洲人成在线| 色成人亚洲| 91欧美在线| 精品国产自在现线看久久| 特级精品毛片免费观看| 日本少妇又色又爽又高潮| 亚洲天堂自拍| 亚洲精品不卡午夜精品| 再看日本中文字幕在线观看| 亚洲欧美一区二区三区蜜芽| 超清人妻系列无码专区| 国产精品人成在线播放| 中文字幕中文字字幕码一二区| AV无码无在线观看免费| 2020亚洲精品无码| 91啪在线| 久久国产精品麻豆系列| 福利国产在线| 国产91小视频在线观看| 欧美有码在线观看| 2022国产91精品久久久久久| 精品国产中文一级毛片在线看| 日本成人福利视频| 欧洲av毛片| 亚洲视频在线网| 国产免费a级片| 一级毛片免费不卡在线| 国产毛片网站| 丝袜国产一区| 操操操综合网| 日本高清视频在线www色| 女同国产精品一区二区| 国产粉嫩粉嫩的18在线播放91 | 偷拍久久网| 久久精品人人做人人爽电影蜜月| 国产精品嫩草影院av| 亚洲狠狠婷婷综合久久久久| 亚洲欧美一区二区三区蜜芽| 久久久久亚洲精品无码网站| 女人一级毛片| 国产成人一二三| 美女潮喷出白浆在线观看视频| 国产特级毛片aaaaaaa高清| 亚洲成人福利网站| 8090午夜无码专区| 亚洲视频三级| 九九这里只有精品视频| 中文字幕av一区二区三区欲色| 亚洲欧美日韩中文字幕一区二区三区| 国产一区二区三区精品久久呦| 欧美在线黄| www.精品国产| 中文字幕资源站| 又猛又黄又爽无遮挡的视频网站|