在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用FPGA內(nèi)部的RAM以及程序?qū)υ揜AM的數(shù)據(jù)讀寫操作

電子設(shè)計(jì) ? 來源:電子設(shè)計(jì) ? 作者:電子設(shè)計(jì) ? 2022-02-08 15:50 ? 次閱讀

作者: ALINX

適用于板卡型號:

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

實(shí)驗(yàn)Vivado工程為“ram_test”。

RAM是FPGA中常用的基礎(chǔ)模塊,可廣泛用于緩存數(shù)據(jù)的情況,同樣它也是ROM,F(xiàn)IFO的基礎(chǔ)。本實(shí)驗(yàn)將為大家介紹如何使用FPGA內(nèi)部的RAM以及程序?qū)υ揜AM的數(shù)據(jù)讀寫操作。

1.實(shí)驗(yàn)原理

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

2.創(chuàng)建Vivado工程

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

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

pIYBAGAJnVSAeGXsAACSoVXg6Dw420.jpg

2.2 將Component Name改為ram_ip,在Basic欄目下,將Memory Type改為Simple Dual Prot RAM,也就是偽雙口RAM。一般來講“Simple Dual Port RAM”是最常用的,因?yàn)樗莾蓚€端口,輸入和輸出信號獨(dú)立。

pIYBAGAJnZuAVsL5AABpBCf6DhU423.jpg

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

pIYBAGAJndmAXtQeAABgeo57cv8714.jpg

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

o4YBAGAJnhiAEL0PAABmHquA1Ig967.jpg

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

2.6 點(diǎn)擊“Generate”生成RAM IP。

o4YBAGAJnpqAFxmeAABUFHhi0Pg928.jpg

3. RAM的端口定義和時序

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

o4YBAGAJntiAYfwHAAArNPYwkKo166.png

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

pIYBAGAJnxaAbe8SAABg5Avs_LU169.jpg

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

pIYBAGAJn1SAGauYAABXxpG3o8s362.jpg

RAM讀時序

4. 測試程序編寫

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

`timescale1ns/1ps ////////////////////////////////////////////////////////////////////////////////// module ram_test( input clk, //25MHz時鐘 input rst_n //復(fù)位信號,低電平有效 ); //----------------------------------------------------------- reg [8:0] w_addr; //RAM PORTA寫地址 reg [15:0] w_data; //RAM PORTA寫數(shù)據(jù) reg wea; //RAM PORTA使能 reg [8:0] r_addr; //RAM PORTB讀地址 wire [15:0] r_data; //RAM PORTB讀數(shù)據(jù) //產(chǎn)生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 //產(chǎn)生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個數(shù)據(jù),寫入完成 wea 《=#11‘b0; else wea 《=#11’b1;//ram寫使能 end end //產(chǎn)生RAM PORTA寫入的地址及數(shù)據(jù) 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個數(shù)據(jù),寫入完成 begin w_addr 《= w_addr ;//將地址和數(shù)據(jù)的值保持住,只寫一次RAM w_data 《= w_data ; end else begin w_addr 《= w_addr +1‘b1; w_data 《= w_data +1’b1; end end end end //----------------------------------------------------------- //實(shí)例化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 ); //實(shí)例化ila邏輯分析儀 ila_0 ila_0_inst ( .clk (clk ), .probe0 (r_data ), .probe1 (r_addr ) ); endmodule

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

o4YBAGAJn5KANr5FAAAfFZ8Eu00006.jpg

程序結(jié)構(gòu)如下:

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實(shí)驗(yàn)”,仿真結(jié)果如下,從圖中可以看出地址1寫入的數(shù)據(jù)是0002,在下個周期,也就是時刻2,有效數(shù)據(jù)讀出。

6. 板上驗(yàn)證

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

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

審核編輯:何安

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • RAM
    RAM
    +關(guān)注

    關(guān)注

    8

    文章

    1384

    瀏覽量

    116311
收藏 人收藏

    評論

    相關(guān)推薦

    如何優(yōu)化RAM內(nèi)存使用

    優(yōu)化RAM內(nèi)存使用是一個重要的任務(wù),特別是對于那些擁有有限內(nèi)存資源的用戶。以下是一些優(yōu)化RAM內(nèi)存使用的策略,這些策略可以幫助您更有效地使用內(nèi)存資源: 1. 關(guān)閉不必要的程序和服務(wù) 檢查后臺
    的頭像 發(fā)表于 11-11 09:58 ?1107次閱讀

    海量數(shù)據(jù)處理需要多少RAM內(nèi)存

    海量數(shù)據(jù)處理所需的RAM(隨機(jī)存取存儲器)內(nèi)存量取決于多個因素,包括數(shù)據(jù)的具體規(guī)模、處理任務(wù)的復(fù)雜性、數(shù)據(jù)庫管理系統(tǒng)的效率以及所使用軟件的優(yōu)
    的頭像 發(fā)表于 11-11 09:56 ?916次閱讀

    RAM內(nèi)存不足的表現(xiàn)及解決方法

    操作系統(tǒng)會將部分內(nèi)存數(shù)據(jù)暫時存儲到硬盤上,這個過程稱為頁面交換。如果頻繁發(fā)生,說明內(nèi)存不足。 高CPU使用率 由于內(nèi)存不足,CPU需要花費(fèi)更多時間處理頁面交換,導(dǎo)致CPU使用率異常升高。 程序崩潰或自動關(guān)閉 內(nèi)存不足可能導(dǎo)致
    的頭像 發(fā)表于 11-11 09:53 ?3707次閱讀

    如何檢測電腦的RAM內(nèi)存

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

    如何選擇合適的RAM內(nèi)存

    著系統(tǒng)的響應(yīng)速度和多任務(wù)處理能力。 1. 了解RAM的作用 在開始選擇RAM之前,了解其作用是必要的。RAM是計(jì)算機(jī)的短期記憶,用于存儲當(dāng)前正在使用的程序
    的頭像 發(fā)表于 11-11 09:40 ?1251次閱讀

    什么是RAM內(nèi)存 RAM內(nèi)存對電腦性能的影響

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

    什么是RAM?它有哪些作用?

    RAM,即隨機(jī)存取存儲器(Random Access Memory),是計(jì)算機(jī)系統(tǒng)中至關(guān)重要的一個組成部分。它作為一種臨時存儲設(shè)備,具有獨(dú)特的工作原理和多種關(guān)鍵作用。以下是對RAM的詳細(xì)探討,包括其定義、工作原理、作用以及相關(guān)信
    的頭像 發(fā)表于 09-26 18:22 ?7713次閱讀

    ram和eeprom各有什么特點(diǎn)

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

    ram芯片為什么要設(shè)置片選引腳

    ,多個RAM芯片或其他存儲設(shè)備可能會共享同一組總線(如地址總線、數(shù)據(jù)總線和控制總線)。為了確保每次操作只針對特定的RAM芯片,需要通過片選引腳來選中
    的頭像 發(fā)表于 09-18 11:09 ?1385次閱讀

    ram存儲的數(shù)據(jù)在斷電后會丟失嗎

    RAM(Random Access Memory,隨機(jī)存取存儲器)是一種計(jì)算機(jī)存儲設(shè)備,用于存儲計(jì)算機(jī)運(yùn)行時所需的數(shù)據(jù)和指令。與硬盤、固態(tài)硬盤等永久性存儲設(shè)備不同,RAM是一種易失性存儲器,即在斷電
    的頭像 發(fā)表于 08-06 09:19 ?3381次閱讀

    外部存儲器是ROM還是RAM

    外部存儲器通常指的是計(jì)算機(jī)系統(tǒng)中除了主存(RAM)以外的存儲設(shè)備,如硬盤、固態(tài)硬盤(SSD)、USB閃存驅(qū)動器、光盤等。它們主要用于長期存儲數(shù)據(jù)程序,以供計(jì)算機(jī)在需要時讀取和寫入。外部存儲器
    的頭像 發(fā)表于 08-06 09:13 ?2597次閱讀

    rom和ram都是內(nèi)存儲器嗎

    存儲器,其內(nèi)部存儲的數(shù)據(jù)在斷電后會丟失。RAM主要用于存儲計(jì)算機(jī)運(yùn)行時所需的臨時數(shù)據(jù)程序,如操作
    的頭像 發(fā)表于 08-06 09:09 ?1215次閱讀

    ESP32-PICO-MINI-02確定內(nèi)部flash為2MB,沒有外部ram嗎?

    我購買的 ESP32-PICO-DevKitM-2 ,燒錄 getstart 中的helloword程序(添加了打印內(nèi)部ram和外部ram),日志顯示flash只有2MB,外部
    發(fā)表于 07-02 08:08

    求教FPGARAM與EEPROM問題?

    將一組8位的256個數(shù)據(jù)RAM中讀取出來,然后寫入到eeprom中,modesim仿真顯示一直寫入失敗,eeprom的通訊使用的是i2c。請問這是什么原因呢?找了好久都找不出來。程序和仿真見圖。
    發(fā)表于 06-25 16:15

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

    在計(jì)算機(jī)系統(tǒng)中,存儲器是不可或缺的組成部分,它負(fù)責(zé)存儲程序數(shù)據(jù)以供處理器使用。其中,只讀存儲器(ROM)和隨機(jī)讀寫存儲器(RAM)是兩種常見的存儲器類型,它們在計(jì)算機(jī)系統(tǒng)中各自扮演著
    的頭像 發(fā)表于 05-12 17:04 ?5534次閱讀
    主站蜘蛛池模板: 免费一级特黄特色大片在线 | 狠狠色丁香久久婷婷综 | 天天综合在线视频 | 乱肉情欲杂乱小说 | 青草午夜精品视频在线观看 | 日本不卡视频一区二区三区 | 四虎国产精品永久地址51 | 欧美日韩亚洲色图 | 日日干视频 | 四虎国产精品视频免费看 | 欧美在线激情 | 午夜三级在线 | 可以免费播放的在线视频 | 亚洲欧美日本视频 | 狠狠色狠狠色综合久久一 | 日韩国产片 | 色校园| 婷婷网五月天天综合天天爱 | 97色涩 | 一级做a爰片久久毛片看看 一级做a爰片久久毛片毛片 | 高清一级毛片一本到免费观看 | aaaaa特级毛片 | 国产成人精品午夜二三区 | 国产综合久久久久影院 | 精品国产理论在线观看不卡 | 欧美 激情 在线 | 天天做天天爽爽快快 | 五月天丁香花婷婷 | 成人夜夜嗨 | 亚洲国产毛片aaaaa无费看 | 国模私拍一区二区 | 欧美猛交喷潮在线播放 | 射久久| 五月婷婷激情综合网 | 污污的黄色小说 | 国产手机在线 | 精品福利在线观看 | 久久婷婷六月 | 午夜激情福利视频 | 国产成人综合日韩精品婷婷九月 | 欧美操穴 |