vivado中bram简单使用

article/2025/10/9 10:49:31

bram设置为简单双口
在这里插入图片描述
在这里插入图片描述
建议取消勾选这个,这样读出来的数据是差一个时钟周期的
vivado中的bram,写的时候,写使能,写地址,写数据一起赋值

读的时候,读使能,读地址可以一起赋值,数据为下一时钟周期才会来
在这里插入图片描述
逻辑为在地址1写入了数据2。
在这里插入图片描述
读的逻辑,地址1的数据2在一个时钟周期之后

代码:

`timescale 1ns / 1psmodule 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) beginif(!restn) beginena_r <= 0;wea_r <= 0;dina_r <= 1;//数据为地址加一addra_r <= 0;cnt_a <= 0;endelse if (cnt_a < 10'd639)beginena_r <= 1;wea_r <= 1;dina_r <= dina_r + 1;addra_r <= addra_r + 1;cnt_a <= cnt_a + 1;endelse beginena_r <= 0;wea_r <= 0;dina_r <= 0;addra_r <= 0;end
endalways @(posedge clk or negedge restn) beginif(!restn) beginenb_r <= 0;addrb_r <= 0;endelse if (cnt_a == 10'd639)beginenb_r <= 1;addrb_r <= (addrb_r>=10'd639) ? 10'd639 : (addrb_r + 1);end
endendmodule

testbench:

//~ `New testbench
`timescale  1ns / 1psmodule tb_test_bram;// test_bram Parameters
parameter PERIOD  = 10;// test_bram Inputs
reg   clk                                  = 0 ;
reg   restn                                = 0 ;// test_bram Outputsinitial
beginforever #(PERIOD/2)  clk=~clk;
endinitial
begin#(PERIOD*2) restn  =  1;
endtest_bram  u_test_bram (.clk                     ( clk     ),.restn                   ( restn   )
);initial
begin$finish;
endendmodule

http://chatgpt.dhexx.cn/article/G3EMxMO7.shtml

相关文章

使用VIVADO中的MIG控制DDR3(AXI接口)二——用AXI4读写BRAM测试

上篇文章主要讲了一些关于AXI的知识&#xff0c;有了这些理论&#xff0c;让我们进行一些简单的实验测试&#xff0c;加深对AXI协议的理解。本次实验使用的平台是VIVADO2019.1。 1. 首先创建一个工程&#xff0c;名称和路径自己决定。 2.然后按照图中所示&#xff0c;点击新建和…

URAM和BRAM有什么区别

无论是7系列FPGA、UltraScale还是UltraScale Plus系列FPGA&#xff0c;都包含Block RAM&#xff08;BRAM&#xff09;&#xff0c;但只有UltraScale Plus芯片有UltraRAM也就是我们所说的URAM。BRAM和URAM都是重要的片上存储资源&#xff0c;但两者还是有些显著的区别。 容量 B…

【FPGA】AXI4-Lite总线读写BRAM

博主参考和学习的博客 AXI协议基础知识 。这篇博客比较详细地介绍了AXI总线&#xff0c;并且罗列了所有的通道和端口&#xff0c;写代码的时候可以方便地进行查表。AXI总线&#xff0c;AXI_BRAM读写仿真测试 。 这篇文章为代码的书写提供大致的思路&#xff0c;比如状态机和时…

如何对bram/ram进行初始化赋值呢?

1、首先对于常规的情况&#xff0c;即加载.coe文件的方式实现初始化&#xff08;与rom相同&#xff09; 点击load initial file, 在右侧可以直接添加.coe文件&#xff0c;或者选择edit进行手动编辑&#xff08;数据量不大的情况下可选&#xff0c;但是不推荐&#xff09;&#…

vivado中bram的种类与使用

vivado中bram的种类与使用 vivado中bram的分类单端口ram初始化工作时序仿真验证 简化的双端口RAM初始化端口定义仿真结果 双端口RAM初始化端口定义功能仿真单端口读数双端口读数双端口一读一写双端口写数据 vivado中bram的分类 在vivado中打开IP catalog&#xff0c;在其中搜索…

BRAM的使用

使用Block Memory Generator IP核&#xff0c;PL读取BRAM数据 软件环境&#xff1a;Vivado 2018.3 IP核&#xff1a;Block Memory Generator 8.4(Rev.2) 1、点击IP Catalog 2、搜索”Block Memory Generator“双击选择RAMs & ROMs & BRAM下的IP核 3、配置IP核为Si…

FPGA — BRAM学习笔记—读写操作

使用软件&#xff1a; Vivado 开发板&#xff1a; EGO1采用Xilinx Artix-7系列XC7A35T-1CSG324C FPGA BRAM笔记 BRAM介绍同步双端口BRAMBRAM读写操作(1)读操作(2)写操作(3)写模式写优先模式读优先模式不变模式 双端口块内存接口BRAM IP的使用及仿真验证IP核使用coe文件将IP核添…

FPGA从入门到精通(8)-BRAM

所使用EDA软件&#xff1a;VIVADO2018.3 FPGA型号&#xff1a;xc7a35tcsg325-2 很久没写了&#xff0c;随便写一篇BRAM的吧。说到BRAM &#xff0c;很多人都喜欢拿它来DRAM比较 &#xff0c;两者都有啥优缺点&#xff0c;其实我也拿不准。不过一般来说&#xff0c;存储较大的数…

Xilinx系列学习(一) BRAM的使用,并用PL读取BRAM数据

Xilinx系列学习(一) BRAM的使用,并用PL读取BRAM数据 一,Xilinx BRAM介绍二,BRAM对应的IP核调用和使用1,BRAM对应的IP核介绍2,BMG例化IP核的调用一,Xilinx BRAM介绍 BRAM 就是Block Memory,是Zynq的PL端的存储RAM单元。可以利用BRAM,在PS和PL之间进行数据的交换。Zyn…

FPGA设计中BRAM(Block RAMs)资源的使用(综合为BRAM)

FPGA设计中BRAM&#xff08;Block RAMs&#xff09;资源的使用 RAM分为BRAM&#xff08;Block RAMs&#xff09;和DRAM&#xff08;Distributed RAM&#xff09;&#xff0c;即块RAM与分布式RAM&#xff0c;这两个差别在于BRAM是FPGA上固有的一些存储资源&#xff08;针对不同型…

web测试与app测试的区别

目录 前言 首先从系统架构来看 专项测试 安装、卸载、更新&#xff1a; 界面操作&#xff1a; 前言 仅仅从功能测试的层面上来讲的话&#xff0c;在流程和功能测试上是没有区别的。那么区别在哪里呢&#xff1f; 我个人觉得就是由于载体不一样&#xff0c;所以系统测试和…

APP测试与WEB测试

APP测试与WEB测试的区别(异同) 相同点&#xff1a; 功能测试层面而言&#xff1a;APP测试和web测试都是使用相同的测试用例测试方法&#xff08;都用到等价类划分、边界值分析、正常和异常情况去考虑测试点&#xff09; UI界面测试&#xff1a;都需要按照原型图和设计图检查UI…

web测试,App测试,小程序测试区别

最近项目真的太忙了&#xff0c;不过&#xff0c;今天无论如何我都要更文章了&#xff0c;谢谢大家的支持&#xff0c;不断努力进步 这篇文章&#xff0c;我就是要梳理一下&#xff0c;web测试&#xff0c;app测试&#xff0c;和小程序的区别 话不多说&#xff0c;上主题 web…

WEB端与移动端测试区别和总结

WEB端与移动端测试区别总结如下&#xff1a; 1、系统架构 WEB端 B/S结构&#xff0c;WEB端的前端一般不做端的区分 WEB端的上线不管是预发布还是N环上线&#xff0c;server上线后&#xff0c;前端同步更新&#xff0c;一般是不存在多个版本的问题; 移动端 C/S结构&#xff0c;移…

Apifox简单了解——WEB端测试的集大成者

文章目录 0 引入1、Postman2、Swagger &#xff08;丝袜哥&#xff09;3、Mock4、JMeter5、Apifox6、引用 0 引入 Apifox Postman Swagger Mock JMeter 1、Postman 1 作用 Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件&#xff0c;简单易用的接口测试…

web测试的基本流程

1、web测试流程&#xff1a; (1)web测试 1)参与一个web新项目的测试前&#xff0c;先搜集测试相关的资料&#xff0c;包括原型图、各种需求文档、业务相关等需求相关材料 2)结合第一步搜集到的需求相关资料&#xff0c;自行熟悉系统&#xff0c;同时列出不明白的点&#xff0c;…

Web端测试常用方法

介绍下工作中&#xff0c;Web端测试所涉及到的方法&#xff1a; 前言&#xff1a;Web测试常用的方法&#xff0c;兼容性测试、安全性测试、可用性测试 & 逻辑功能测试 1 > 兼容性测试 先说下兼容性测试&#xff0c;工作中在测试时&#xff0c;一般涉及操作系统测试、浏…

web端测试经验(项目实战经验)

软件测试相信大家已经有一定的了解了&#xff0c;无非就是找bug 找缺陷 找问题 找这个程序&#xff08;前端、后端&#xff09;的不足点 以及不人性化的地方 &#xff0c;由我们监测并提出有效的建议给项目进行缺陷修复以及优化点。软件测试大体分为Web、App两个&#xff0c;当…

这可能是最全的Web测试各个测试点,有这一篇就够了

前言 什么是Web测试&#xff1f; Web测试测试Web或Web应用程序的潜在错误。它是在上线前对基于网络的应用程序进行完整的测试。 Web测试检查 功能测试 易用性测试 接口测试 性能测试 安全测试 兼容性测试 1、功能测试 测试网页中的所有链接、数据库连接、网页中用于提交或从…

【转载】 web项目测试

前言 之前说了APP项目的测试&#xff0c;今天来总结一下web项目的测试&#xff0c;其实大多数过程是差不多类似的。对比平常移动端手机的高频率使用来说&#xff0c;对于部分人使用pc端浏览器的概率就不会这么高&#xff0c;讲APP项目测试的时候没怎么涉及到网络协议部分的介绍…