FPGA-学会使用vivado中的存储器资源RAM(IP核)

问题

信号源(例如ADC)以1us一个的速率产生12位的数据现要求获得连续1ms内的数据,通过串口以115200的波特率发到电脑。

分析

**·**数据量是1000个

**·**数据速率不匹配

**·**数据内容未知

**·**数据总数据量有限

**·**数据的使用速度低于数据的产生速度

**·**数据生产和消耗的位宽

· 数据量相对较大,数据要求能够重复使用,而且要求能够被更改

RAM:随机存储器(随机获取的存储器,可读可写的存储器)--random access memory

它可以随时把数据写入到任何一指定地址的存储单元。也可以随时从任一指定地址读出数据,其读写速度有时钟频率决定,主要用来存放程序以及程序执行过程中产生的数据,运算结果等

rom的预先存储 ram的实时写入

接下来 我们在Vivado中如何实现RAM IP核。

创建工程,进入Vivado界面

创建RAM IP 核

设置端口A(port A)

设置端口B(port B)

然后编写RAM测试文件

代码如下

复制代码
`timescale 1ns / 1ps
module ram_test_tb;
    reg clka;
    reg ena;
    reg wea;
    reg [15:0]addra;
    reg [15:0]dina;
    reg clkb;
    reg enb;
    reg [15:0]addrb;
    wire [15:0]doutb;
    ram ram (
      .clka(clka),    // input wire clka
      .ena(ena),      // input wire ena
      .wea(wea),      // input wire [0 : 0] wea
      .addra(addra),  // input wire [15 : 0] addra
      .dina(dina),    // input wire [15 : 0] dina
      .clkb(clkb),    // input wire clkb
      .enb(enb),      // input wire enb
      .addrb(addrb),  // input wire [15 : 0] addrb
      .doutb(doutb)  // output wire [15 : 0] doutb
    );
    
    initial clka = 1; always #10 clka = ~clka;
    initial clkb = 1; always #15 clkb = ~clkb;
    
    initial begin
       ena = 0;
       wea = 0;
       addra = 0;
       dina = 0;
       addrb = 0;
       enb = 0;
       //写入写满
       #201;
       repeat(65536) begin
        ena = 1;
        wea = 1;
        #20;
        addra = addra + 1;
        dina = dina + 1;
       end 
       ena = 0;
       wea = 0;
       #20000;
       //读出;
       addrb = 65535;
       #300;
       repeat(65536)begin
        enb = 1;
        #30;
        addrb = addrb - 1;
       end
       #2000;
       $stop;
    end
    
endmodule

仿真波形

写入数据时波形

读出数据时波形(读使能到数据输出2个时钟周期)

相关推荐
FPGA小徐1 小时前
FPGA FIFO一篇完整解释
fpga开发
I'm a winner10 小时前
【IP核】 Xilinx FPGA LVDS 高速接口,含验证工程与板级测试用例
tcp/ip·fpga开发·测试用例
I'm a winner11 小时前
基于Xilinx FPGA的LVDS高速串行通信系统 - 完整源码解决方案(一)(文末附源码)
fpga开发
国科安芯13 小时前
航天器多路并联大功率电源系统设计与ASP4644均流特性分析
单片机·嵌入式硬件·fpga开发·安全性测试
techdashen2 天前
从网络栈继续往下:micro:bit、2.4GHz、调制方式,以及一个不太靠谱但很有趣的想法
网络·fpga开发
FPGA小徐2 天前
FIR 数字滤波器 --verilog设计实现
fpga开发
zlinear数据采集卡2 天前
从协议解析到波形实时显示:硬核拆解ZLinear采集卡上位机软件的开发架构
arm开发·单片机·嵌入式硬件·fpga开发·架构·开源
pcjiushizhu2 天前
ModelSim 仿真时 Simulate 无反应或只显示 Loading 的解决方法:网卡问题排查
fpga开发
FPGA小迷弟2 天前
vivado中的AXI Interconnect到底应该怎么用,他的底层原理是什么,一篇文档全部理清楚!!!
网络协议·tcp/ip·fpga开发·verilog·fpga
国科安芯2 天前
ASC4T245S分组双向控制架构深度解析:独立DIR/OE控制、QFN16封装与混合方向总线桥接
单片机·嵌入式硬件·物联网·fpga开发·架构·risc-v