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

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

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

3天內不再提示

如何使用FPGA內部的ROM以及程序對該ROM的數據讀操作

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2022-02-08 16:30 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作者: ALINX

適用于板卡型號:
AXU2CGA/AXU2CGB/AXU3EG/AXU4EV-E/AXU4EV-P/AXU5EV-E/AXU5EV-P /AXU9EG/AXU15EG

實驗Vivado工程為“rom_test”

FPGA本身是SRAM架構的,斷電之后,程序就消失,那么如何利用FPGA實現一個ROM呢,我們可以利用FPGA內部的RAM資源實現ROM,但不是真正意義上的ROM,而是每次上電都會把初始化的值先寫入RAM。本實驗將為大家介紹如何使用FPGA內部的ROM以及程序對該ROM的數據讀操作。

1.實驗原理

Xilinx在VIVADO里為我們已經提供了ROM的IP核, 我們只需通過IP核例化一個ROM,根據ROM的讀時序來讀取ROM中存儲的數據。實驗中會通過VIVADO集成的在線邏輯分析儀ila,我們可以觀察ROM的讀時序和從ROM中讀取的數據。

2. 程序設計

2.1 創建ROM初始化文件

既然是ROM,那么我們就必須提前給它準備好數據,然后在FPGA實際運行時,我們直接讀取這些ROM中預存儲好的數據就行。Xilinx FPGA的片內ROM支持初始化數據配置。如下圖所示,我們可以創建一個名為rom_init.coe的文件,注意后綴一定是“.coe”,前面的名稱當然可以隨意起。

pIYBAGAJlkSADj6fAAAXhmyP0T4901.png

ROM初始化文件的內容格式很簡單, 如下圖所示。第一行為定義數據格式, 16代表ROM的數據格式為16進制。從第3行開始到第34行,是這個32*8bit大小ROM的初始化數據。每行數字后面用逗號,最后一行數字結束用分號。

pIYBAGAJloGAAPqdAABmGOBr0NA634.jpg

rom_init.coe編寫完成后保存一下, 接下去我們開始設計和配置ROM IP核。

2.2 添加ROM IP核

在添加ROM IP之前先新建一個rom_test的工程, 然后在工程中添加ROM IP,方法如下:

2.2.1 點擊下圖中IP Catalog,在右側彈出的界面中搜索rom,找到Block Memory Generator,雙擊打開。

o4YBAGAJlsKACHUcAACIrr-GvG0236.jpg

2.2.2 將Component Name改為rom_ip,在Basic欄目下,將Memory Type改為Single Prot ROM。

pIYBAGAJlwmAWbGhAACSuvD2380169.jpg

2.2.3 切換到Port A Options欄目下,將ROM位寬Port A Width改為8,將ROM深度Port A Depth改為32,使能管腳Enable Port Type改為Always,并取消Primitives Output Register

o4YBAGAJl0eAAWVBAAB8UIy6iWc134.jpg

2.2.4 切換到Other Options欄目下,勾選Load Init File,點擊Browse,選中之前制作好的.coe文件。

pIYBAGAJl7uAPgKHAABmm59nQ1c005.jpg

2.2.5 點擊ok,點擊Generate生成ip核。

pIYBAGAJl_qAZK3jAABTQh9aB0g294.jpg

3. ROM測試程序編寫

ROM的程序設計非常簡單, 在程序中我們只要每個時鐘改變ROM的地址, ROM就會輸出當前地址的內部存儲數據,例化ila,用于觀察地址和數據的變化。ROM IP的實例化及程序設計如下:

`timescale1ns/1ps module rom_test( input sys_clk, //25MHz時鐘 input rst_n //復位,低電平有效 ); wire[7:0] rom_data; //ROM讀出數據 reg [4:0] rom_addr;//ROM輸入地址 //產生ROM地址讀取數據 always@(posedge sys_clk ornegedge rst_n) begin if(!rst_n) rom_addr <=10'd0; else rom_addr <= rom_addr+1'b1; end //實例化ROM rom_ip rom_ip_inst ( .clka (sys_clk ),//inoput clka .addra (rom_addr ),//input [4:0] addra .douta (rom_data )//output [7:0] douta ); //實例化邏輯分析儀 ila_0 ila_m0 ( .clk (sys_clk), .probe0 (rom_addr), .probe1 (rom_data) ); endmodule

綁定引腳
##################Compress Bitstream############################
set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]set_property PACKAGE_PIN AB11 [get_ports sys_clk]set_property IOSTANDARD LVCMOS33 [get_ports sys_clk]create_clock -period 40.000 -name sys_clk -waveform {0.000 20.000} [get_ports sys_clk]set_property IOSTANDARD LVCMOS33 [get_ports {rst_n}]set_property PACKAGE_PIN W13 [get_ports {rst_n}]

4. 仿真

仿真結果如下,符合預期,與RAM的讀取數據一樣,數據也是滯后于地址一個周期。

5. 板上驗證

以地址0為觸發條件,可以看到讀取的數據與仿真一致。

審核編輯:何安

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

    關注

    1660

    文章

    22408

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    詳細解釋Keil-MDK中Code、RO-data、RW-data、ZI-data的含義

    ,這就是把RW-data與ZI-data區別存儲的原因,因為在RAM創建數據的時候,默認值為0,但如果有的數據要求初值非0,那就需要使用ROM記錄初始值,運行時再復制到RAM中。
    發表于 01-21 07:19

    單片機里的程序運行方式

    :它是單片機內部的核心部件,決定了單片機的主要功能特性,由運算器和控制器兩大部分組成。 存儲器:8051單片機在系統結構上采用了哈佛型,將程序數據分別存放在兩個存儲器內,一個稱為程序
    發表于 01-16 06:57

    ram ip核的使用

    決定的。 ram 主要用來存放程序程序執行過程中產生的中間數據、 運算結果等。 rom為只讀存儲器,只能讀取數據而不能向里面寫入
    發表于 10-23 07:33

    怎么像kell一樣設置rom下載起始地址?

    如題,怎么像kell一樣設置rom下載起始地址?
    發表于 10-10 07:21

    中微愛芯2K FLASH ROM的AD型8位微控制器代理供應

    ROM 空間:2K * 16 位。 ? RAM 空間:128字節。 ? 8層堆棧緩存器 ? 4個中斷源 ? 3個內部中斷源:T0、TC0、ADC ? 1個外部中斷源:INT0 ? I/O引腳配置
    發表于 07-19 17:11

    【RK3568+PG2L50H開發板實驗例程】FPGA部分 | ROM、RAM、FIFO 的使用

    和功能均一致,不會像 PLL 那樣有動態配置以及內部反饋選項的選擇等之間的差異,所以是 RAM、ROM、FIFO 是通用的。 2.1. RAM 介紹 RAM 即隨機存取存儲器。它可以在運行過程中把
    發表于 07-10 10:37

    Simcenter FLOEFD BCI-ROM和Package Creator模塊

    優勢采用獨立于邊界條件的降階模型(BCI-ROM)加速執行瞬態熱仿真,同時采用PackageCreator輕松創建電子封裝熱模型。求解速度比完整的3D詳細模型快40,000倍,且不折損精度有效保持
    的頭像 發表于 07-08 10:32 ?684次閱讀
    Simcenter FLOEFD BCI-<b class='flag-5'>ROM</b>和Package Creator模塊

    LMK03318如何使用TICS將程序燒錄進ROM

    請問 LMK03318芯片如何用TICS PRO燒錄進芯片內部ROM?并且上電時鐘就工作,有輸出(就是上電程序自啟動),急!!!
    發表于 07-07 14:35

    基于FPGA搭建神經網絡的步驟解析

    本文的目的是在一個神經網絡已經通過python或者MATLAB訓練好的神經網絡模型,將訓練好的模型的權重和偏置文件以TXT文件格式導出,然后通過python程序將txt文件轉化為coe文件,(coe
    的頭像 發表于 06-03 15:51 ?1190次閱讀
    基于<b class='flag-5'>FPGA</b>搭建神經網絡的步驟解析

    Simcenter Flotherm BCI-ROM技術:與邊界條件無關的降階模型可加速電子熱設計

    BCI-ROM可生成為矩陣類型、用于電路仿真的電熱模型(VHDL-AMS格式)、用于系統仿真(FMU格式)的模型,甚至用于3DCFD的嵌入式BCI-ROM從根據熱瞬態測試數
    的頭像 發表于 05-28 10:37 ?1085次閱讀
    Simcenter Flotherm BCI-<b class='flag-5'>ROM</b>技術:與邊界條件無關的降階模型可加速電子熱設計

    飛凌嵌入式ElfBoard ELF 1板卡-uboot啟動流程分析之boot ROM階段

    將uboot代碼從啟動介質取出,加載到內存中去執行。那么就需要某個程序來做這些工作。i.MX6ULL內部有一塊ROM,存儲著一段代碼,這部分代碼是SOC設計時實現的,上電后會首先運行,uboot的引導
    發表于 05-28 10:01

    求助,關于FX3 ROM引導加載程序系統重啟問題求解

    加載程序問題是否與已知勘誤表問題(FX3 自供電時,USB 啟動模式下 USB 枚舉失敗)有關,因為 USB 端口/電路板在系統重置期間不會完全斷電? 如果是這樣,那么就沒有辦法解決這個問題,讓 ROM 引導加載
    發表于 05-13 06:06

    如何使用MCX N ROM API進行內部閃存擦除/編程?

    使用 MCX N ROM API 進行內部閃存擦除/編程
    發表于 03-27 07:04

    7路達林頓驅動的16KB Flash ROM的AD型MCU AiP8F3201

    7路達林頓驅動的16KB Flash ROM的AD型MCU AiP8F3201
    的頭像 發表于 03-24 10:09 ?954次閱讀
    7路達林頓驅動的16KB Flash <b class='flag-5'>ROM</b>的AD型MCU AiP8F3201

    具有小容量ROM/低引腳數系列和內置USB 2.0的32位微控制器RX111系列數據手冊

    計算機外設、醫療保健以及可穿戴設備等領域。由于其配備了三相電機控制定時器,它們也適用于家用電器和工業設備中的電機控制應用場景。 *附件:具有小容量ROM低引腳數系列和內置USB 2.0的32位微控制器RX111系列數據手冊.pd
    的頭像 發表于 03-19 17:02 ?880次閱讀
    具有小容量<b class='flag-5'>ROM</b>/低引腳數系列和內置USB 2.0的32位微控制器RX111系列<b class='flag-5'>數據</b>手冊