色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

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

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2022-02-08 15:50 ? 次閱讀

作者: ALINX

適用于板卡型號:

AXU2CGA/AXU2CGB/AXU3EG/AXU4EV-E/AXU4EV-P/AXU5EV-E/AXU5EV-P /AXU9EG/AXU15EG

實驗Vivado工程為“ram_test”。

RAM是FPGA中常用的基礎模塊,可廣泛用于緩存數據的情況,同樣它也是ROM,FIFO的基礎。本實驗將為大家介紹如何使用FPGA內部的RAM以及程序對該RAM的數據讀寫操作。

1.實驗原理

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

2.創建Vivado工程

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

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

pIYBAGAJnVSAeGXsAACSoVXg6Dw420.jpg

2.2 將Component Name改為ram_ip,在Basic欄目下,將Memory Type改為Simple Dual Prot RAM,也就是偽雙口RAM。一般來講“Simple Dual Port RAM”是最常用的,因為它是兩個端口,輸入和輸出信號獨立。

pIYBAGAJnZuAVsL5AABpBCf6DhU423.jpg

2.3 切換到Port A Options欄目下,將RAM位寬Port A Width改為16,也就是數據寬度。將RAM深度Port A Depth改為512,深度指的是RAM里可以存放多少個數據。使能管腳Enable Port Type改為Always Enable。

pIYBAGAJndmAXtQeAABgeo57cv8714.jpg

2.4 切換到Port B Options欄目下,將RAM位寬Port B Width改為16,使能管腳Enable Port Type改為Always Enable,當然也可以Use ENB Pin,相當于讀使能信號。而Primitives Output Register取消勾選,其功能是在輸出數據加上寄存器,可以有效改善時序,但讀出的數據會落后地址兩個周期。很多情況下,不使能這項功能,保持數據落后地址一個周期。

o4YBAGAJnhiAEL0PAABmHquA1Ig967.jpg

2.5 在Other Options欄目中,這里不像ROM那樣需要初始化RAM的數據,我們可以在程序中寫入,所以配置默認即可,直接點擊OK。

2.6 點擊“Generate”生成RAM IP。

o4YBAGAJnpqAFxmeAABUFHhi0Pg928.jpg

3. RAM的端口定義和時序

Simple Dual Port RAM 模塊端口的說明如下:

o4YBAGAJntiAYfwHAAArNPYwkKo166.png

RAM的數據寫入和讀出都是按時鐘的上升沿操作的,端口A數據寫入的時候需要置高wea信號,同時提供地址和要寫入的數據。下圖為輸入寫入到RAM的時序圖。

pIYBAGAJnxaAbe8SAABg5Avs_LU169.jpg

而端口B是不能寫入數據的,只能從RAM中讀出數據,只要提供地址就可以了,一般情況下可以在下一個周期采集到有效的數據。

pIYBAGAJn1SAGauYAABXxpG3o8s362.jpg

RAM讀時序

4. 測試程序編寫

下面進行RAM的測試程序的編寫,由于測試RAM的功能,我們向RAM的端口A寫入一串連續的數據,只寫一次,并從端口B中讀出,使用邏輯分析儀查看數據。代碼如下

`timescale1ns/1ps ////////////////////////////////////////////////////////////////////////////////// module ram_test( input clk, //25MHz時鐘 input rst_n //復位信號,低電平有效 ); //----------------------------------------------------------- reg [8:0] w_addr; //RAM PORTA寫地址 reg [15:0] w_data; //RAM PORTA寫數據 reg wea; //RAM PORTA使能 reg [8:0] r_addr; //RAM PORTB讀地址 wire [15:0] r_data; //RAM PORTB讀數據 //產生RAM PORTB讀地址 always@(posedge clk ornegedge rst_n) begin if(!rst_n) r_addr 《=9‘d0; elseif(|w_addr) //w_addr位或,不等于0 r_addr 《= r_addr+1’b1; else r_addr 《=9‘d0; end //產生RAM PORTA寫使能信號 always@(posedge clk ornegedge rst_n) begin if(!rst_n) wea 《=#11’b0; else begin if(&w_addr)//w_addr的bit位全為1,共寫入512個數據,寫入完成 wea 《=#11‘b0; else wea 《=#11’b1;//ram寫使能 end end //產生RAM PORTA寫入的地址及數據 always@(posedge clk ornegedge rst_n) begin if(!rst_n) begin w_addr 《=9‘d0; w_data 《=16’d1; end else begin if(wea) //ram寫使能有效 begin if(&w_addr)//w_addr的bit位全為1,共寫入512個數據,寫入完成 begin w_addr 《= w_addr ;//將地址和數據的值保持住,只寫一次RAM w_data 《= w_data ; end else begin w_addr 《= w_addr +1‘b1; w_data 《= w_data +1’b1; end end end end //----------------------------------------------------------- //實例化RAM ram_ip ram_ip_inst ( .clka (clk ),// input clka .wea (wea ),// input [0 : 0] wea .addra (w_addr ),// input [8 : 0] addra .dina (w_data ),// input [15 : 0] dina .clkb (clk ),// input clkb .addrb (r_addr ),// input [8 : 0] addrb .doutb (r_data )// output [15 : 0] doutb ); //實例化ila邏輯分析儀 ila_0 ila_0_inst ( .clk (clk ), .probe0 (r_data ), .probe1 (r_addr ) ); endmodule

為了能實時看到RAM中讀取的數據值,我們這里添加了ila工具來觀察RAM PORTB的數據信號和地址信號。關于如何生成ila大家請參考”PL的”Hello World”LED實驗”。

o4YBAGAJn5KANr5FAAAfFZ8Eu00006.jpg

程序結構如下:

o4YBAGAJn9CAEDn5AAA8UDCQZl0058.jpg

綁定引腳

##################Compress Bitstream############################

set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]set_property PACKAGE_PIN AB11 [get_ports clk]set_property IOSTANDARD LVCMOS33 [get_ports clk]create_clock -period 40.000 -name clk -waveform {0.000 20.000} [get_ports clk]set_property PACKAGE_PIN AA13 [get_ports rst_n]set_property IOSTANDARD LVCMOS33 [get_ports rst_n]

5. 仿真

仿真方法參考”PL的”Hello World”LED實驗”,仿真結果如下,從圖中可以看出地址1寫入的數據是0002,在下個周期,也就是時刻2,有效數據讀出。

6. 板上驗證

生成bitstream,并下載bit文件到FPGA。接下來我們通過ila來觀察一下從RAM中讀出的數據是否為我們初始化的數據。

在Waveform的窗口設置r_addr地址為0作為觸發條件,我們可以看到r_addr在不斷的從0累加到1ff, 隨著r_addr的變化, r_data也在變化, r_data的數據正是我們寫入到RAM中的512個數據,這里需要注意,r_addr出現新地址時,r_data對應的數據要延時兩個時鐘周期才會出現,數據比地址出現晚兩個時鐘周期,與仿真結果一致。

審核編輯:何安

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

    關注

    8

    文章

    1368

    瀏覽量

    114641
收藏 人收藏

    評論

    相關推薦

    海量數據處理需要多少RAM內存

    海量數據處理所需的RAM(隨機存取存儲器)內存量取決于多個因素,包括數據的具體規模、處理任務的復雜性、數據庫管理系統的效率以及所使用軟件的優
    的頭像 發表于 11-11 09:56 ?286次閱讀

    如何檢測電腦的RAM內存

    在現代計算機系統中,隨機存取存儲器(RAM)是至關重要的組件之一。它負責存儲當前正在使用的程序數據,以便CPU可以快速訪問。隨著技術的發展,RAM的速度和容量都有了顯著的提升,但如何
    的頭像 發表于 11-11 09:51 ?419次閱讀

    什么是RAM內存 RAM內存對電腦性能的影響

    什么是RAM內存? RAM(Random Access Memory,隨機存取存儲器)是電腦中的一種易失性存儲器,它用于存儲電腦運行時的數據程序。與硬盤等非易失性存儲器不同,
    的頭像 發表于 11-11 09:38 ?831次閱讀

    ram和eeprom各有什么特點

    可擦可編程只讀存儲器)是兩種不同類型的存儲器,它們各自具有獨特的特點。 RAM的特點 隨機訪問能力 :RAM具有隨機訪問的能力,意味著它可以直接訪問任何存儲單元,而不需要按照順序進行讀寫操作
    的頭像 發表于 09-18 11:11 ?872次閱讀

    rom和ram都是內存儲器嗎

    存儲器,其內部存儲的數據在斷電后會丟失。RAM主要用于存儲計算機運行時所需的臨時數據程序,如操作
    的頭像 發表于 08-06 09:09 ?678次閱讀

    只讀存儲器(ROM)和隨機讀寫存儲器(RAM)的區別

    在計算機系統中,存儲器是不可或缺的組成部分,它負責存儲程序數據以供處理器使用。其中,只讀存儲器(ROM)和隨機讀寫存儲器(RAM)是兩種常見的存儲器類型,它們在計算機系統中各自扮演著
    的頭像 發表于 05-12 17:04 ?4036次閱讀

    fpga雙口ram的使用

    FPGA雙口RAM的使用主要涉及配置和使用雙端口RAM模塊。雙端口RAM的特點是有兩組獨立的端口,可以對同一存儲塊進行讀寫
    的頭像 發表于 03-15 13:58 ?987次閱讀

    使用分散加載將部分程序放到RAMRAM掉電后數據就沒有了,如何復原?

    我使用分散加載將部分程序放到RAMRAM掉電后數據就沒有了,重新上電后,芯片是如何將RAM程序
    發表于 03-06 07:01

    淺析RAM存儲器內部結構圖

    在計算機中,CPU需要定期地從 RAM 存儲器中讀取數據和指令。隨著計算機應用程序的不斷發展,RAM 存儲器的容量和速度不斷提高,以適應計算機系統的需要。
    的頭像 發表于 03-04 17:30 ?2090次閱讀
    淺析<b class='flag-5'>RAM</b>存儲器<b class='flag-5'>內部</b>結構圖

    IC設計:ram的折疊設計操作步驟

    在IC設計中,我們有時會使用深度很大,位寬很小的ram。例如深度為1024,位寬為4bit的ram
    的頭像 發表于 03-04 15:08 ?2131次閱讀
    IC設計:<b class='flag-5'>ram</b>的折疊設計<b class='flag-5'>操作</b>步驟

    ram內部存儲器電路組成

    ram在計算機和數字系統中用來暫時存儲程序數據和中間結果。隨機存取存儲器(ram)既可向指定單元存入信息又可從指定單元讀出信息。
    的頭像 發表于 02-19 11:23 ?1799次閱讀
    <b class='flag-5'>ram</b><b class='flag-5'>內部</b>存儲器電路組成

    ram和rom的作用和區別是什么

    詳細探討RAM和ROM的作用和區別。 一、RAM的作用: 臨時存儲:RAM被用作臨時存儲器,用于計算機處理數據程序時的工作區域。當計算機啟
    的頭像 發表于 02-04 17:05 ?4808次閱讀

    RAM和ROM的區別,哪個與CPU連接

    數據和指令,而ROM則用于存儲計算機的基本操作系統和啟動程序。本文將探討RAM和ROM的區別,以及它們與CPU之間的連接方式。 首先,我們來
    的頭像 發表于 01-31 14:14 ?2514次閱讀

    ram中存儲的數據在斷電后是否會丟失?

    篇文章中將詳細討論RAM的工作原理以及為什么它會丟失數據。 一、RAM的工作原理 隨機存取存儲器(RAM)是一種常見的計算機內存類型,用于臨
    的頭像 發表于 01-16 16:30 ?9775次閱讀

    一文介紹ram的結構和讀寫過程

    ram也叫主存,是與CPU直接交換數據內部存儲器。它可以隨時讀寫(刷新時除外)且速度很快,通常作為操作系統或其他正在運行中的
    發表于 01-09 11:11 ?3115次閱讀
    一文介紹<b class='flag-5'>ram</b>的結構和<b class='flag-5'>讀寫</b>過程
    主站蜘蛛池模板: freehd另类xxxx喷水| 70岁妇女牲交色牲片| 伊人久久大香| 真实国产精品视频国产网| 538在线播放| 成人免费观看国产高清| 高清欧美videos sexo| 国产无线乱码一区二三区| 精品欧美一区二区三区四区| 麻豆精品乱码WWW久久密| 秋霞三级理伦免费观看| 无限资源在线看影院免费观看| 亚洲国产精品一区二区第一页| 中文字幕国产在线观看| 哺乳期妇女挤奶水36d| 国产免费福利在线视频| 精品一区二区三区AV天堂| 免费在线视频成人| 少妇性饥渴BBBBBBBBB| 亚洲精品无码国产爽快A片| 7723日本高清完整版在线观看| 成熟YIN荡美妞A片视频麻豆| 黑人性xxx| 欧美精品3atv一区二区三区| 小莹的性荡生活40章| 13小箩利洗澡无码视频APP| 粗暴玩烂货调教| 精品国产自在天天线2019| 欧美高清vivoesosexo10| 无套内射CHINESEHD| 最近的中文字幕2019国语| 儿子你得太大了慢点插| 精品午夜寂寞影院在线观看| 麒麟色欧美影院在线播放| 亚洲精品国偷拍自产在线| 99国产这里只有精品视频| 国产亚洲视频中文字幕| 欧美黑白配性xxxxx| 一个人的免费完整在线观看HD| 草久热的视频在线观看| 久久久久综合一本久道|