chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

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

電子設(shè)計(jì) ? 來(lái)源:電子設(shè)計(jì) ? 作者:電子設(shè)計(jì) ? 2022-02-08 15:50 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作者: ALINX

適用于板卡型號(hào):

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ù)讀寫(xiě)操作。

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

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

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

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

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

pIYBAGAJnVSAeGXsAACSoVXg6Dw420.jpg

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

pIYBAGAJnZuAVsL5AABpBCf6DhU423.jpg

2.3 切換到Port A Options欄目下,將RAM位寬Port A Width改為16,也就是數(shù)據(jù)寬度。將RAM深度Port A Depth改為512,深度指的是RAM里可以存放多少個(gè)數(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)于讀使能信號(hào)。而Primitives Output Register取消勾選,其功能是在輸出數(shù)據(jù)加上寄存器,可以有效改善時(shí)序,但讀出的數(shù)據(jù)會(huì)落后地址兩個(gè)周期。很多情況下,不使能這項(xiàng)功能,保持?jǐn)?shù)據(jù)落后地址一個(gè)周期。

o4YBAGAJnhiAEL0PAABmHquA1Ig967.jpg

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

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

o4YBAGAJnpqAFxmeAABUFHhi0Pg928.jpg

3. RAM的端口定義和時(shí)序

Simple Dual Port RAM 模塊端口的說(shuō)明如下:

o4YBAGAJntiAYfwHAAArNPYwkKo166.png

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

pIYBAGAJnxaAbe8SAABg5Avs_LU169.jpg

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

pIYBAGAJn1SAGauYAABXxpG3o8s362.jpg

RAM讀時(shí)序

4. 測(cè)試程序編寫(xiě)

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

`timescale1ns/1ps ////////////////////////////////////////////////////////////////////////////////// module ram_test( input clk, //25MHz時(shí)鐘 input rst_n //復(fù)位信號(hào),低電平有效 ); //----------------------------------------------------------- reg [8:0] w_addr; //RAM PORTA寫(xiě)地址 reg [15:0] w_data; //RAM PORTA寫(xiě)數(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寫(xiě)使能信號(hào) always@(posedge clk ornegedge rst_n) begin if(!rst_n) wea 《=#11’b0; else begin if(&w_addr)//w_addr的bit位全為1,共寫(xiě)入512個(gè)數(shù)據(jù),寫(xiě)入完成 wea 《=#11‘b0; else wea 《=#11’b1;//ram寫(xiě)使能 end end //產(chǎn)生RAM PORTA寫(xiě)入的地址及數(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寫(xiě)使能有效 begin if(&w_addr)//w_addr的bit位全為1,共寫(xiě)入512個(gè)數(shù)據(jù),寫(xiě)入完成 begin w_addr 《= w_addr ;//將地址和數(shù)據(jù)的值保持住,只寫(xiě)一次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í)時(shí)看到RAM中讀取的數(shù)據(jù)值,我們這里添加了ila工具來(lái)觀察RAM PORTB的數(shù)據(jù)信號(hào)和地址信號(hào)。關(guān)于如何生成ila大家請(qǐng)參考”P(pán)L的”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. 仿真

仿真方法參考”P(pán)L的”Hello World”LED實(shí)驗(yàn)”,仿真結(jié)果如下,從圖中可以看出地址1寫(xiě)入的數(shù)據(jù)是0002,在下個(gè)周期,也就是時(shí)刻2,有效數(shù)據(jù)讀出。

6. 板上驗(yàn)證

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

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

審核編輯:何安

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

    關(guān)注

    8

    文章

    1398

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    芯源MCU的RAM存儲(chǔ)器的操作

    用戶(hù)可執(zhí)行的RAM 存儲(chǔ)器操作包括:讀操作、寫(xiě)操作。 對(duì)RAM讀寫(xiě)
    發(fā)表于 11-21 07:46

    雙口ram的使用方法

    單口 RAM 只有一個(gè)時(shí)鐘(clka)(時(shí)鐘上升沿到來(lái)時(shí)對(duì)數(shù)據(jù)進(jìn)行寫(xiě)入或者讀出)、一組輸入輸出數(shù)據(jù)線(xiàn)(dina & douta)、一組地址線(xiàn)(addra)、一個(gè)使能端(ena
    發(fā)表于 10-29 06:28

    ram ip核的使用

    1、簡(jiǎn)介 ram 的英文全稱(chēng)是 Random Access Memory,即隨機(jī)存取存儲(chǔ)器, 它可以隨時(shí)把數(shù)據(jù)寫(xiě)入任一指定地址的存儲(chǔ)單元,也可以隨時(shí)從任一指定地址中讀出數(shù)據(jù), 其讀寫(xiě)
    發(fā)表于 10-23 07:33

    如何利用Verilog HDL在FPGA上實(shí)現(xiàn)SRAM的讀寫(xiě)測(cè)試

    、建立讀寫(xiě)操作、配置地址計(jì)數(shù)器、模擬數(shù)據(jù)流、綜合與仿真以及下載到FPGA進(jìn)行硬件測(cè)試。通過(guò)實(shí)踐,掌握SRAM在
    的頭像 發(fā)表于 10-22 17:21 ?3929次閱讀
    如何利用Verilog HDL在<b class='flag-5'>FPGA</b>上實(shí)現(xiàn)SRAM的<b class='flag-5'>讀寫(xiě)</b>測(cè)試

    USB讀RAM buffer使用規(guī)范建議

    Questions:硬件和軟件同時(shí)去訪問(wèn) USB RAM buffer 造成數(shù)據(jù)亂掉或丟失 造成亂碼流程: 軟件設(shè)置 USB Valid 關(guān)總中斷,USB 收數(shù)據(jù)RAM Buffe
    發(fā)表于 09-22 17:27

    嵌入式系統(tǒng)中,F(xiàn)LASH 中的程序代碼必須搬到 RAM 中運(yùn)行嗎?

    嵌入式系統(tǒng)里,F(xiàn)LASH 中的程序代碼并非必須搬到 RAM 中運(yùn)行,這得由硬件配置、實(shí)際性能需求和應(yīng)用場(chǎng)景共同決定。就像很多低端單片機(jī),無(wú)論是依賴(lài)片內(nèi) Flash 還是外掛的 SPI NOR
    的頭像 發(fā)表于 08-06 10:19 ?1117次閱讀
    嵌入式系統(tǒng)中,F(xiàn)LASH 中的<b class='flag-5'>程序</b>代碼必須搬到 <b class='flag-5'>RAM</b> 中運(yùn)行嗎?

    【RK3568+PG2L50H開(kāi)發(fā)板實(shí)驗(yàn)例程】FPGA部分 | ROM、RAM、FIFO 的使用

    和功能均一致,不會(huì)像 PLL 那樣有動(dòng)態(tài)配置以及內(nèi)部反饋選項(xiàng)的選擇等之間的差異,所以是 RAM、ROM、FIFO 是通用的。 2.1. RAM 介紹
    發(fā)表于 07-10 10:37

    Xilinx Shift RAM IP概述和主要功能

    Xilinx Shift RAM IP 是 AMD Xilinx 提供的一個(gè) LogiCORE IP 核,用于在 FPGA 中實(shí)現(xiàn)高效的移位寄存器(Shift Register)。 IP 核利用
    的頭像 發(fā)表于 05-14 09:36 ?809次閱讀

    ADSP-21992高性能混合型信號(hào)DSP,160MHz,32K字程序存儲(chǔ)器RAM,16K字數(shù)據(jù)存儲(chǔ)器RAM技術(shù)手冊(cè)

    ADSP-21992進(jìn)一步擴(kuò)展了ADSP-2199x混合信號(hào)DSP產(chǎn)品系列的性能,可提供32K字程序存儲(chǔ)器RAM和16K字數(shù)據(jù)存儲(chǔ)器RAM。此外,ADSP-21992還可提供片上CAN
    的頭像 發(fā)表于 05-12 16:08 ?678次閱讀
    ADSP-21992高性能混合型信號(hào)DSP,160MHz,32K字<b class='flag-5'>程序</b>存儲(chǔ)器<b class='flag-5'>RAM</b>,16K字<b class='flag-5'>數(shù)據(jù)</b>存儲(chǔ)器<b class='flag-5'>RAM</b>技術(shù)手冊(cè)

    淺談MCU片上RAM

    MCU片上RAM是微控制單元(MCU)中集成于芯片內(nèi)部的隨機(jī)存取存儲(chǔ)器,主要用于程序運(yùn)行時(shí)的數(shù)據(jù)存儲(chǔ)與高速讀寫(xiě)
    的頭像 發(fā)表于 04-30 14:47 ?954次閱讀

    將指定文件下的函數(shù)加載到指定ram問(wèn)題

    問(wèn)題:mcuxpresso環(huán)境,xip模式下我需要使用flexspi將norflash的一部分作為文件系統(tǒng),將flex以及fatfs相關(guān)函數(shù)全部加載到ram,發(fā)現(xiàn)rodata仍然在flash地址
    發(fā)表于 03-12 17:02

    RAM容量不足導(dǎo)致的數(shù)據(jù)溢出如何預(yù)防和處理?

    在 STM32F411 中,RAM 容量是有限的,特別是在進(jìn)行復(fù)雜的數(shù)據(jù)處理和存儲(chǔ)時(shí),可能會(huì)遇到數(shù)據(jù)溢出問(wèn)題。數(shù)據(jù)溢出是指程序運(yùn)行時(shí),
    發(fā)表于 03-07 16:09

    MXD1210非易失RAM控制器技術(shù)手冊(cè)

    MXD1210非易失性RAM控制器是一款超低功耗CMOS電路,可將標(biāo)準(zhǔn)(易失性)CMOS RAM轉(zhuǎn)換為非易失性存儲(chǔ)器。它還會(huì)持續(xù)監(jiān)控電源,以在RAM的電源處于邊際(超出容限)條件時(shí)提供RAM
    的頭像 發(fā)表于 02-28 10:48 ?749次閱讀
    MXD1210非易失<b class='flag-5'>RAM</b>控制器技術(shù)手冊(cè)

    富士通鐵電白皮書(shū),選擇鐵電存儲(chǔ)的4點(diǎn)理由以及技術(shù)原理分析

    鐵電存儲(chǔ)器(FRAM)產(chǎn)品將ROM的非易失性數(shù)據(jù)存儲(chǔ)特性和RAM的無(wú)限次讀寫(xiě)、高速讀寫(xiě)以及低功耗等優(yōu)勢(shì)結(jié)合在一起。
    的頭像 發(fā)表于 12-04 09:11 ?1684次閱讀
    富士通鐵電白皮書(shū),選擇鐵電存儲(chǔ)的4點(diǎn)理由<b class='flag-5'>以及</b>技術(shù)原理分析

    淺談DDR6 RAM設(shè)計(jì)挑戰(zhàn)

    DDR6 RAM 是 目前DDR 迭代中的最新版本,最大的數(shù)據(jù)速率峰值超過(guò) 12000 MT/s。
    的頭像 發(fā)表于 12-03 16:47 ?1938次閱讀