vivado中bram简单使用

这篇具有很好参考价值的文章主要介绍了vivado中bram简单使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

bram设置为简单双口
vivado bram,fpga开发
vivado bram,fpga开发
建议取消勾选这个,这样读出来的数据是差一个时钟周期的
vivado中的bram,写的时候,写使能,写地址,写数据一起赋值

读的时候,读使能,读地址可以一起赋值,数据为下一时钟周期才会来
vivado bram,fpga开发
逻辑为在地址1写入了数据2。
vivado bram,fpga开发
读的逻辑,地址1的数据2在一个时钟周期之后

代码:

`timescale 1ns / 1ps

module test_bram(
    input wire clk,
    input wire restn
    );

wire ena, enb, wea;
wire [9 : 0] addra, addrb;
wire [15 : 0] dina, doutb;
reg ena_r, enb_r, wea_r;
reg [9 : 0] addra_r, addrb_r;
reg [15 : 0] dina_r;
assign ena = ena_r;
assign enb = enb_r;
assign wea = wea_r;
assign addra = addra_r;
assign addrb = addrb_r;
assign dina = dina_r;
reg [9:0] cnt;
reg enb_r_1;
blk_mem_gen_0 bram (
  .clka(clk),    // input wire clka
  .ena(ena),      // input wire ena
  .wea(wea),      // input wire [0 : 0] wea
  .addra(addra),  // input wire [9 : 0] addra
  .dina(dina),    // input wire [15 : 0] dina
  .clkb(clk),    // input wire clkb
  .enb(enb),      // input wire enb
  .addrb(addrb),  // input wire [9 : 0] addrb
  .doutb(doutb)  // output wire [15 : 0] doutb
);
// bram先写后读验证
reg [9:0] cnt_a;
always @(posedge clk or negedge restn) begin
    if(!restn) begin
        ena_r <= 0;
        wea_r <= 0;
        dina_r <= 1;//数据为地址加一
        addra_r <= 0;
        cnt_a <= 0;
    end
    else if (cnt_a < 10'd639)begin
        ena_r <= 1;
        wea_r <= 1;
        dina_r <= dina_r + 1;
        addra_r <= addra_r + 1;
        cnt_a <= cnt_a + 1;
    end
    else begin
        ena_r <= 0;
        wea_r <= 0;
        dina_r <= 0;
        addra_r <= 0;
    end
end

always @(posedge clk or negedge restn) begin
    if(!restn) begin
        enb_r <= 0;
        addrb_r <= 0;
    end
    else if (cnt_a == 10'd639)begin
        enb_r <= 1;
        addrb_r <= (addrb_r>=10'd639) ? 10'd639 : (addrb_r + 1);
    end
end

endmodule

testbench:文章来源地址https://www.toymoban.com/news/detail-548336.html

//~ `New testbench
`timescale  1ns / 1ps

module tb_test_bram;

// test_bram Parameters
parameter PERIOD  = 10;


// test_bram Inputs
reg   clk                                  = 0 ;
reg   restn                                = 0 ;

// test_bram Outputs



initial
begin
    forever #(PERIOD/2)  clk=~clk;
end

initial
begin
    #(PERIOD*2) restn  =  1;
end

test_bram  u_test_bram (
    .clk                     ( clk     ),
    .restn                   ( restn   )
);

initial
begin

    $finish;
end

endmodule

到了这里,关于vivado中bram简单使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vivado综合生成BRAM及与LUTRAM的区别

    使用vivado中的BRAM可以通过例化 Block Memory Generator 这一ip并进行相关的设定。 另外可以通过直接编写符合BRAM规范的代码,借助综合工具直接将其综合为BRAM。这时需要通过 (*ram_style=\\\"block\\\"*) 对 array 进行修饰。 下面给出一种看似可以综合为BRAM的示例。 上述代码虽然用 (*ram_style

    2024年02月15日
    浏览(32)
  • Vivado开发FPGA使用流程、教程 verilog(建立工程、编译文件到最终烧录的全流程)

    目录 一、概述 二、工程创建 三、添加设计文件并编译 四、线上仿真 五、布局布线 六、生成比特流文件 七、烧录 一、概述 vivado开发FPGA流程分为创建工程、添加设计文件、编译、线上仿真、布局布线(添加约束文件)、生成比特流文件、烧录等步骤,下文将按照这些步骤讲

    2024年02月09日
    浏览(25)
  • FPGA开发环境 Vivado

    Vivado是Xilinx系列FPGA开发环境。本文记载收录了vivado常用开发技巧,随机记录、随时更新。。。 任何Xilinx相关问题都可到WELCOME TO XILINX SUPPORT!查询 静态时序分析(Static Timing Analysis, STA):简介及内容导航 VIVADO的综合属性ASYNC_REG 在XDC中作如下约束,表示对名字末尾为 _cdc_to 的寄

    2024年02月11日
    浏览(44)
  • FPGA开发环境安装VIVADO

     BASYS3开发板使用的是 Xilinx 厂商的 Artix-7 FPGA 芯片,所以要使用 Xilinx 提供的配套开发软件 Vivado ,我使用的是 Vivado 18.3 。Vivado 18.3 的版本相对来说是较为稳定的,所以推荐给大家这个版本当然 读者也可安装更新的版本,安装步骤都是大同小异的。 第一步: 找到 Vivado 2018.

    2024年02月09日
    浏览(79)
  • FPGA | BRAM和DRAM

    Block ram 由一定数量固定大小的存储块构成的,使用 BLOCK RAM 资源不占用额外的逻辑资源,并且速度快。 但是 使用的时候消耗的 BLOCK RAM 资源是其块大小的整数倍 。如 Xilinx公司的结构中每个 BRAM 有 36Kbit 的容量,既可以作为一个 36Kbit 的存储器使用,也可以拆分为两个独立的

    2024年02月12日
    浏览(35)
  • FPGA开发必备软件——Vivado,安装教程

    FPGA开发必备软件——Vivado,安装教程 如果你想开始FPGA的开发学习,那么Vivado是一个不可或缺的软件。它是Xilinx推出的一款针对FPGA、SoC和ASIC开发的综合设计环境。在这里,我们详细介绍如何下载、安装和配置Vivado软件。 在Xilinx官网上注册一个账号。注册时需要提供自己的邮

    2024年02月13日
    浏览(37)
  • FPGA — BRAM学习笔记—读写操作

    使用软件: Vivado 开发板: EGO1采用Xilinx Artix-7系列XC7A35T-1CSG324C FPGA BRAM 即块 RAM, 是 FPGA 的固有硬件资源。 另一种形式的 RAM 是分布RAM(Distribution RAM), 是由 FPGA 逻辑资源查找表 LUT 拼起来的 。这两种 RAM 最本质的区别是 块RAM 默认输入有寄存器 ,所以它在读、写使能信号后的 下个

    2024年02月01日
    浏览(60)
  • 【FPGA/数字IC】Multiport RAM,多读多写寄存器-——基于FPGA BRAM的多端口地址查找表与FPGA BRAM的资源分析

    目录 背景 手写Multiport Ram Multiport RAM 代码方案 资源评估 Multiport RAM 资源利用的优化 资源评估 防止读写冲突的组合逻辑设计(写优先) 仿真和时序 单口写数据 单端口读数据 多口读相同数据 多口同时读不同数据 背景         在多端口交换机的设计中,交换机的每个端口

    2024年04月26日
    浏览(31)
  • [FPGA IP系列] 2分钟了解FPGA中的BRAM

    FPGA设计中,BRAM是一项非常关键的内置存储资源,FPGA开发需要熟练使用BRAM,今天再复习一下BRAM的知识,包括BRAM的定义、组成、应用等等。 RAM是Random Access Memory,也就是随机访问数据存储器,RAM的内部是一个一个小内存单元(可以看成是一个小格子)组成。 每个内存单元都对应

    2024年02月12日
    浏览(37)
  • 【FPGA】Vivado开发流程(基于2018.3版本)

    基本流程:①设计定义 ②设计输入 ③分析综合 ④功能仿真 ⑤布局布线 ⑥分析性能   双击 Vivado图标即可启动 Vivado 软件。 ①Quick Start 组包含有 Create Project(创建工程) Open Project(打开工程)OpenExample Project(打开实例工程)。 ②Tasks 组包含有 Manage IP(管理 IP) Open Hardw

    2024年02月14日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包