国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

在FPGA中如何通過ICAP原語實現Multiboot?

FPGA之家 ? 來源:林深雜談 ? 作者:林深雜談 ? 2021-05-11 14:20 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

FPGA的MultiBoot功能可以支持遠程動態更新bitstream images,實現bitstream images的實時切換。在MultiBoot配置過程中檢測到錯誤時,FPGA可以觸發fallback 功能,以確保可以將已知良好的設計加載到器件中。

MultiBoot的大致過程如下圖:

f204ff4a-b20b-11eb-bf61-12bb97331649.png

MultiBoot的配置文件由兩個比特流文件生成,第一個為備份文件,永遠都不會變,稱為Golden_image,從Flash的0地址存儲。

第二個為更新文件,后面遠程更新,更新的就是這個文件,稱為Update_image,存放在某個地址處,這個地址有熱啟動地址寄存器(WBSTAR)指定。

配置過程大致如下:FPGA從FLASH的0地址處讀取配置,遇到IPROG Command命令時,跳轉到WBSTAR寄存器指定的地址,該地址存放Update_image的地址,此時FPGA嘗試加載該地址處的比特流文件,配置成功的話,就執行該配置的功能。如果遇到配置錯誤,則觸發FallBack,FPGA重新加載Golden_image。

1、ICAPE3 接口

FPGA實現IPROG通常有兩種方式,一種是通過ICAP配置,一種是把相關指令嵌入bit文件中。與通過bit文件實現IPROG相比,通過ICAP更靈活。

在Xilinx FPGA 中ICAP(Internal Configuration Access Port) 指的是內部配置訪問端口,其主要作用是通過內部配置訪問端口(ICAP),用戶可以在FPGA邏輯代碼中直接讀寫FPGA內部配置寄存器(類似SelectMAP),從而實現特定的配置功能,例如Multiboot。

ICAP目前為止有三個版本,包括ICAP,ICAPE2以及ICAPE3。UltraScale系列對應ICAPE3,7系列對應ICAPE2,7系列之前的對應ICAP。

以下以ICAPE3 為例,ICAPE3 的接口如下:

f265be16-b20b-11eb-bf61-12bb97331649.png

f27218b4-b20b-11eb-bf61-12bb97331649.png

f2a5ad1e-b20b-11eb-bf61-12bb97331649.png

2、IPROG指令

每個UltraScale系列的FPAG包括2個ICAPE3,但實際使用時只能例化并使用一個,默認頂部ICAPE3, 初級玩家采用默認的即可。

IPROG指令的作用跟外部Program_B管腳的作用類似,都是對FPGA芯片進行復位操作,該復位操作對FPGA內部的應用程序進行復位,復位過程中除專用配置管腳和JTAG管腳,其他輸入/輸出管腳均為高阻態,同時IPROG指令不能復位專用重配置邏輯,如WBSTAR寄存器、TIMER寄存器、BSPI寄存器和BOOTSTS寄存器。IPROG指令能夠觸發FPGA開啟初始化流程,同時拉低INIT和Done信號。完成復位操作后,將默認的加載地址用熱啟動地址寄存器(Warm Boot Start Address,WB-STAR)中的新地址替換。

通過ICAP發送IPROG指令實現Multiboot的步驟如下:

f2d4d8d2-b20b-11eb-bf61-12bb97331649.png

首先寫入同步頭 32’hAA995566, 然后將需要跳轉到的bit文件的起始地址寫入WBSTAR寄存器,最后寫入IPROG(internal PROGRAM_B)指令。

WBSTAR寄存器的格式,根據自己的要為Update_image分配在FLASH的地址,按照下面的格式生成一個32位數據。例如,我為Update_image分配的flash地址為2000000。

(1)對于BPI模式來說,可以通過RS[1:0]來控制具體位流的讀取,也可以通過STAT_ADDR[28:0]地址來控制具體位流的讀取。

(2)對于SPI模式來說,只有STAT_ADDR[23:0]地址來表征FLASH器件的地址,當使用32位地址的SPI(容量大于等于256Mb)時,需要將實際存儲的高24地址賦值給STAT_ADDR[23:0]。因此在位流存儲的起始地址早于255時,這就要求位流中的dummy數目要大于256個,否則就會出現易失部分有效位流讀取,導致加載失敗。為了安全起見,在使用大于等于256Mb的FLASH時,可以適當在位流頭前加入Dummy。

這里需要注意一點,ICAP以及SelectMAP都存在位反轉(Bit Swapping),也就是說,上表中所有的數據需要進行位反轉之后才能接到ICAP的輸入接口,同理,ICAP輸出的值需要進行位反轉后才能與實際的值對應起來,位反轉的示例如下圖。

f2e99b1e-b20b-11eb-bf61-12bb97331649.png


3、ICAPE3 例化示例

ICAPE3 進行例化,示例如下:

// ICAPE3: Internal Configuration Access Port

// UltraScale

// Xilinx HDL Language Template, version 2019.1

ICAPE3 #(

.DEVICE_ID(32‘h03628093),//pre-programmed Device ID value,used for simulation

// purposes.

.ICAP_AUTO_SWITCH(“DISABLE”),//Enable switch ICAP using sync word

.SIM_CFG_FILE_NAME(“NONE”)//Raw Bitstream (RBT) file,parsed by the simulation

// model

ICAPE3_inst (

.AVAIL(AVAIL), // 1-bit output: Availability status of ICAP

.O(O), // 32-bit output: Configuration data output bus

.PRDONE(PRDONE),//1-bit output: Indicates completion of Partial Reconfiguration

.PRERROR(PRERROR),//1-bit output: Indicates Error during Partial Reconfiguration

.CLK(CLK), // 1-bit input: Clock input

.CSIB(CSIB), // 1-bit input: Active-Low ICAP enable

.I(I), // 32-bit input: Configuration data input bus

.RDWRB(RDWRB) // 1-bit input: Read/Write Select input

);

// End of ICAPE3_inst instantiation

其中設備號DEVICE_ID需要查找USER GUIDE手冊,而ICAP原語接口時序跟Select Map接口時序非常相似。SelectMap模式下,FPGA的配置和回讀是通過CSI_B,RDWR_B和CCLK來控制的。

4、程序步驟

在發送IPROG指令之前,將默認的加載地址用熱啟動地址寄存器(Warm Boot Start Address,WB-STAR)中的新地址。

然后對ICAP核進行預配置。重載控制模塊在收到觸發信號后,第一個時鐘周期將ICAP核的RDWRB信號和CSIBCSIB信號置高,第二個周期將RDWRB信號置底,CE信號置高,第三個周期將RDWRB信號置底,CSIB信號也置底。

接著在下面的8個時鐘周期里,將指令隊列中的控制命令逐個發出。

運行工程,生成位流Bit,在約束XDC文件中添加壓縮等命令即可。

f3269406-b20b-11eb-bf61-12bb97331649.png

固化Mcs生成。Xilinx系列的FPGA需要將后綴名為mcs的內存鏡像文件固化到外部配置存儲器中,FPGA上電后才能自動加載配置文件。一般的mcs文件只包含一個bit流文件,多重啟動的mcs固化文件包含多個bit流文件。在將多個bit流整合到mcs文件的過程中,需要指定每個bit流的起始地址,這樣FPGA專用配置邏輯才能根據地址找到對應的bit流。在程序設計WBSTAR地址時,確定了Golden位流存儲的起始地址為0X00000000,Update位流存儲的起始地址為0X00800000,因此在將Bit整合到Mcs過程中需要指定對應的存儲起始地址,否則就無法加載成功了。

在SPI的flash里燒寫有A和B兩個程序,FPGA上電后,自動加載A程序,根據外部給FPGA指示信號,FPGA自動切換加載B的程序,同時在B程序運行期間,根據外部給FPGA指示信號,FPGA自動切換加載A的程序。

原文標題:FPGA中利用ICAP原語實現Multiboot功能

文章出處:【微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1660

    文章

    22408

    瀏覽量

    636248

原文標題:FPGA中利用ICAP原語實現Multiboot功能

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    【ALINX 教程】FPGA Multiboot 功能實現——基于 ALINX Artix US+ AXAU25 開發板

    系統級設計 階段的學習者 Multiboot 功能概述 基礎實驗FPGA 通常通過 JTAG 下載 bitstream,這種方式掉電
    的頭像 發表于 01-05 15:41 ?1203次閱讀
    【ALINX 教程】<b class='flag-5'>FPGA</b> <b class='flag-5'>Multiboot</b> 功能<b class='flag-5'>實現</b>——基于 ALINX Artix US+ AXAU25 開發板

    為什么FPGA設計中使用MicroBlaze V處理器

    各類行業與應用,經常能看到許多 FPGA 設計。一個非常常見的現象是:設計者常常用復雜的有限狀態機(FSM)來實現 I2C、SPI、GPIO 時序控制等功能。
    的頭像 發表于 12-19 15:29 ?8321次閱讀
    為什么<b class='flag-5'>在</b><b class='flag-5'>FPGA</b>設計中使用MicroBlaze V處理器

    易靈思FPGA DSP原語使用方法

    現代數字信號處理(DSP)應用FPGA(現場可編程門陣列)憑借其高度并行性、可定制性和靈活性,已成為加速信號處理任務的核心硬件平臺之一。
    的頭像 發表于 12-10 10:32 ?5577次閱讀
    易靈思<b class='flag-5'>FPGA</b> DSP<b class='flag-5'>原語</b>使用方法

    如何使用FPGA實現SRIO通信協議

    本例程詳細介紹了如何在FPGA實現Serial RapidIO(SRIO)通信協議,并通過Verilog語言進行編程設計。SRIO作為一種高速、低延遲的串行互連技術,高性能計算和嵌
    的頭像 發表于 11-12 14:38 ?5764次閱讀
    如何使用<b class='flag-5'>FPGA</b><b class='flag-5'>實現</b>SRIO通信協議

    FPGA設計中集成事件斷點的實現過程

    如果對處于全速(at-speed)運行下的FPGA調試,工程師現有通用“能力技術”基礎上,再增加“硬件斷點”功能,那么對高速運行FPGA,也就擁有像調試軟件程序類似的完整可觀測能力(Full Visibility)和可控制能力
    的頭像 發表于 11-07 11:20 ?5389次閱讀
    <b class='flag-5'>在</b><b class='flag-5'>FPGA</b>設計中集成事件斷點的<b class='flag-5'>實現</b>過程

    以太網通訊FPGA上的實現

    一、介紹本項目由于我們需要使用PC實時的向FPGA發送將要識別的圖片,所以我們最終選擇使用以太網來從PC向FPGA發送圖片并暫存在DDR,下面是對以太網協議和硬件
    發表于 10-30 07:45

    基于FPGA平臺的蜂鳥E203 JTAG debug出錯問題的解決思路

    固化存在的問題并不大,只需要按照硬件電路完成管腳的刪減和映射(約束)即可,這里重點說明一下debug出錯問題的解決思路。 我FPGA固化文件完成后,在上位機SDKdebug helloworld
    發表于 10-28 07:38

    如何利用Verilog HDLFPGA實現SRAM的讀寫測試

    本篇將詳細介紹如何利用Verilog HDLFPGA實現SRAM的讀寫測試。SRAM是一種非易失性存儲器,具有高速讀取和寫入的特點。FPGA
    的頭像 發表于 10-22 17:21 ?4341次閱讀
    如何利用Verilog HDL<b class='flag-5'>在</b><b class='flag-5'>FPGA</b>上<b class='flag-5'>實現</b>SRAM的讀寫測試

    使用VerilogFPGA實現FOC電機控制系統

    自動駕駛、電動滑板車、無人機甚至工業自動化領域,高性能電機控制是不可或缺的核心技術。而如果你對硬件有足夠的熱情,你會發現:傳統用 MCU 實現 FOC(Field-Oriented Control,磁場定向控制)也能“搬”到 FPGA
    的頭像 發表于 08-21 15:27 ?5332次閱讀
    使用Verilog<b class='flag-5'>在</b><b class='flag-5'>FPGA</b>上<b class='flag-5'>實現</b>FOC電機控制系統

    FPGA機器學習的具體應用

    ,越來越多地被應用于機器學習任務。本文將探討 FPGA 機器學習的應用,特別是加速神經網絡推理、優化算法和提升處理效率方面的優勢。
    的頭像 發表于 07-16 15:34 ?2885次閱讀

    如何使用FPGA通過CYUSB3014連接U盤?

    你好, 我考慮使用CYUSB3014擴展FPGA的USB接口,然后通過USB接口連接U盤,這種情況下需要FPGA+CYUSB3014實現
    發表于 07-16 07:34

    基于FPGA的壓縮算法加速實現

    本設計,計劃實現對文件的壓縮及解壓,同時優化壓縮中所涉及的信號處理和計算密集型功能,實現對其的加速處理。本設計的最終目標是證明充分并行化的硬件體系結構
    的頭像 發表于 07-10 11:09 ?2389次閱讀
    基于<b class='flag-5'>FPGA</b>的壓縮算法加速<b class='flag-5'>實現</b>

    PLL技術FPGA的動態調頻與展頻功能應用

    隨著現代電子系統的不斷發展,時鐘管理成為影響系統性能、穩定性和電磁兼容性(EMI)的關鍵因素之一。FPGA設計,PLL因其高精度、靈活性和可編程性而得到廣泛應用,本文將深入探討PLL技術
    的頭像 發表于 06-20 11:51 ?2625次閱讀
    PLL技術<b class='flag-5'>在</b><b class='flag-5'>FPGA</b><b class='flag-5'>中</b>的動態調頻與展頻功能應用

    微芯Microchip PolarFire? SoC FPGA通過AEC-Q100汽車級認證

    通過 AEC-Q100 認證的器件都經過嚴格的測試,能夠承受汽車應用的極端條件。PolarFire SoC FPGA通過汽車行業1級溫度認證,支持-40°C至125°C工作范圍。
    的頭像 發表于 03-31 19:26 ?2402次閱讀

    ISERDESE2原語端口及參數介紹

    前面講解HDMI接口之前,講解過IDDR、ODDR、OSERDESE2、IBUF等原語,之后一直有讀者問什么時候更新ISERDESE2這個原語。前文講解過這些
    的頭像 發表于 03-17 10:52 ?2654次閱讀
    ISERDESE2<b class='flag-5'>原語</b>端口及參數介紹