FPGA片内RAM读写代码示例

RAM(Random Access Memory),也就是随机存取寄存器,它可以随时把数据数据写入任一指定地址的存储单元,也可以随时从任一指定地址中读出数据,其读写速度是由时钟频率决定的。
在本例程汇总,实现了向RAM里面写入1024个数据,然后再读取出来,通过ILA(在线逻辑分析仪)进行查看。

1、新建工程

器件选择Zynq 7000系列中的xc7z030ffg676-2,其他按默认选项。
在这里插入图片描述
在Design source中,选择“+”来生成代码文件。
在这里插入图片描述
创建一个RAM_TOP文件,并且选择Verilog格式。
在这里插入图片描述
创建完成后,可以看到Design Sources文件夹中有一个RAM_TOP.v文件,这就是需要编写verilog程序的文件。
在这里插入图片描述
添加RAM IP到工程,如下图:
在这里插入图片描述
RAM IP配置如下(其他默认):
在这里插入图片描述
[在这里插入图片描述
添加ILA IP到工程,如下图:
在这里插入图片描述
ILA IP配置如下(其他默认):
在这里插入图片描述
在这里插入图片描述
双击RAM_TOP文件,添加代码如下:

module RAM_TOP(
input clk_p,
input clk_n,
input rst);wire clk;IBUFDS #(.DIFF_TERM("FALSE"),.IBUF_LOW_PWR("TRUE"),.IOSTANDARD("DEFAULT")) IBUFDS_inst(.O(clk),.I(clk_p),.IB(clk_n));wire  ena;reg  [0:0] wea;reg  [9:0] addra;reg  [15:0] dina;wire [15:0] douta;assign ena = rst;reg [2:0] ram_state;always @(posedge clk or negedge rst)if(!rst) beginram_state <= 'b0;wea <= 'b1;addra <= 'b0;dina <= 'b0;endelse begincase(ram_state)'b0:  beginif(addra < 1023) beginwea <= 'b1;addra <= addra + 'b1;dina <= dina + 'b1;endelse beginram_state <= 'b1;wea <= 'b0;addra <= 'b0;dina <= 'b0;endend'b1:  beginif(addra < 1023) beginwea <= 'b0;addra <= addra + 'b1;                     endelse beginram_state <= 'b0;wea <= 'b1;addra <= 'b0;dina <= 'b0;endenddefault: beginram_state <= 'b0;wea <= 'b0;addra <= 'b0;dina <= 'b0;endendcaseendblk_mem_gen_0 u0 (.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.douta(douta)  // output wire [15 : 0] douta);ila_0 u1 (.clk(clk), // input wire clk.probe0(ena), // input wire [0:0]  probe0  .probe1(wea), // input wire [0:0]  probe1 .probe2(addra), // input wire [9:0]  probe2 .probe3(dina), // input wire [15:0]  probe3 .probe4(douta) // input wire [15:0]  probe4);
endmodule

2、添加管脚约束文件

在Design Sources中选择“+”,在“Add Sources”对话框中选择添加约束文件main.xdc。
在这里插入图片描述
文件类型默认为xdc。
在这里插入图片描述
在Design Sources中点击main.xdc进行编辑。
在这里插入图片描述
约束文件代码如下:

set_property IOSTANDARD lVDS [get_ports clk_p]
set_property PACKAGE_PIN C8 [get_ports clk_p]set_property IOSTANDARD SSTL135 [get_ports rst]
set_property PACKAGE_PIN G9 [get_ports rst]

3、编译并生成bit文件

点击Flow Navigator中的Generate Bitstream,等待生成bit文件。
在这里插入图片描述
bit文件生成成功。
在这里插入图片描述

4、加电测试

连接仿真器,给设备加电。
注意:为了延长仿真器的使用时间,尽可能不要带电插拔仿真器。
点击Flow Navigator——>PROGRAM AND DEBUG——>Open Hardware Manager——>Open Target,在弹出界面上点击Auto Connect。
在这里插入图片描述
在HardWare的xc7z030_1上点击右键,选择Program Device…
在这里插入图片描述
选择刚刚生成的bit文件和ltx文件,点击Program。
在这里插入图片描述
下载完成后,自动跳出ILA界面,点击界面上的“》”即可开始抓取信号。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/638010.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NewStarCTF 2023 web

目录 week1 泄漏的秘密 Begin of Upload Begin of HTTP ErrorFlask Begin of PHP R!C!E! EasyLogin week2 游戏高手 include 0。0 ez_sql Unserialize&#xff1f; Upload again! R!!C!!E!! week3 Include &#x1f350; medium_sql POP Gadget GenShin wee…

Axure琐碎细节

文章目录 琐碎细节注释预览编写原型图的时候可以把颜色改为灰色标尺竖直文字左对齐Axure中的文字怎么添加元件层级问题如何找到各种各样的形状&#xff0c;比如三角形了 五角星了 十字架了给按钮设置简单的交互动作通过锁来等比例缩放 琐碎细节 注释 有时候我们需要给我们的元…

CefSharp.WinForms模拟登录

一、新建Web项目 {ViewData["Title"] "Home Page";Layout null; } <script src"~/lib/jquery/dist/jquery.min.js"></script> <script src"~/lib/jquery/dist/jquery.js"></script> <head><scrip…

MyBatisPlus详解(二)条件构造器Wrapper、自定义SQL、Service接口

文章目录 前言2 核心功能2.1 条件构造器2.1.1 Wrapper2.1.2 QueryWrapper2.1.3 UpdateWrapper2.1.4 LambdaQueryWrapper 2.2 自定义SQL2.2.1 基本用法2.2.2 多表关联 2.3 Service接口2.3.1 IService2.3.1.1 save2.3.1.2 remove2.3.1.3 update2.3.1.4 get2.3.1.5 list2.3.1.6 co…

PaddleOCRV4训练自己的模型(4)------模型推理及导出

一、Det模型推理&#xff1a; &#xff08;1&#xff09;上一篇文章只讲了推理的实现方法&#xff0c;没有展示结果&#xff0c;这里顺带展示一下结果。 因为训练定位模型的时候是整图训练&#xff0c;所以推理的时候也是整图推理。 &#xff08;2&#xff09;在推理的时候可以…

解决Django中调页面时出现“Did you forget to register or load this tag”报错

解决Django中调页面时出现“Did you forget to register or load this tag?”报错 1.问题收录 2.分析问题 在HTML文件中&#xff0c;{{title}}&#xff0c;{{lanyy}}&#xff0c;django 默认规定的语法&#xff0c;用{{}}包起来的变量叫做模板变量。 django渲染模板时会将大…

Linux-内存文件

1. 基础IO操作 1.1 c语言的IO接口 fopen&#xff1a;打开一个文件&#xff0c;按照指定方式 参数&#xff1a;filename 文件名&#xff0c;也可以是路径&#xff0c;mode&#xff1a;打开方式 返回打开的文件指针 fread&#xff1a;从指定流中读数据 参数&#xff1a;从FIL…

上海亚商投顾:沪指缩量调整 油气、低空经济概念逆势走强

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指4月19日震荡调整&#xff0c;深成指跌超1%&#xff0c;创业板指盘中跌超2%。周期股逆势走强&#xff0c;油…

木马——文件上传

目录 1、WebShell 2.一句话木马 靶场训练 3.蚁剑 虚拟终端 文件管理 ​编辑 数据操作 4.404.php 5.文件上传漏洞 客户端JS检测 右键查看元素&#xff0c;删除检测代码 BP拦截JPG修改为php 服务端检测 1.MIME类型检测 2.文件幻数检测 3.后缀名检测 1、WebShell W…

将记录从excel当中导出为.sql文件,再新增到数据库

一、背景 临时遇到了一个需求&#xff0c;比如根据人员的名字查询对应记录&#xff0c;看起来还是很简单的&#xff0c;直接用select查询就可以&#xff0c;然而如果此时存在以下情况&#xff1a; 数据库根本就没有人员信息表&#xff1b;------这个倒是好操作&#xff1b;现…

SpringMVC--RESTful

1. RESTful 1.1. RESTful简介 REST&#xff1a;Representational State Transfer&#xff0c;表现层资源状态转移。 RESTful是一种网络架构风格&#xff0c;它定义了如何通过网络进行数据的交互。这种风格基于HTTP协议&#xff0c;使得网络应用之间的通信变得更加简洁和高效。…

安信可 ESP_01SWIFI模块的使用 (电脑通过usb转tll模块连接wifi模块进行调试)

一&#xff1a;需要用到的模块 &#xff08;1&#xff09;安信可的ESP_01wifi模块 ESP-01是深圳安信可科技基于ESP8266芯片开发的串口wifi模块&#xff0c;模组集成了透传功能&#xff0c;即买即用&#xff0c;支持串口指令集&#xff0c;用户通过串口即可实现网络访问…