通过vivado工具实现zynq的FPGA内部RAM读写
通过vivado工具实现zynq的FPGA内部RAM读写(调用vivado自带IP核),从新建工程到仿真并下载到FPGA开发板中,通过vivado自带的ILA逻辑分析仪查看读写数据是否正确,包含详细步骤,也可做为vivado工具使用方法实战教程。
1.点击Create Project,新建工程。
2.点击Next。
3.填写工程名及路径。
4.选择项目类型,使用默认的RTL Project,“Do not specify sources at this time”表示不创建或者添加设计文件。
5.此处可以创建设计文件并添加进来,我们这里直接点击Next跳过,在后面的工程中根据需要添加设计文件。
6.此处可以创建时序或IO口约束文件并添加进来,我们这里直接点击Next跳过。
7.根据实际情况选择工程的器件或开发板。
8.点击Finish,完成工程的创建。
9.进入IP选择界面,并选择Block Memory Generator。
10.配置RAM参数。
11.添加逻辑分析仪,用于对读取信号分析,如不需要可跳到第13步。
12.配置逻辑分析仪参数。
13.点击Add Source或点击工程目录上的加号,添加设计文件。
14.点击Create File,填写Verilog文件名称,然后点击OK。
15.然后点击Finish。
16.先不添加管脚约束,直接点击OK,然后点击Yes。
17.在ram_test.v文件中填写如下代码:
代码如下:
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2022/06/19 23:30:23
// Design Name:
// Module Name: ram_test
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//module ram_test(input clk, //50MHz时钟input rst_n //复位信号,低电平有效 );
//-----------------------------------------------------------
reg [8:0] w_addr; //RAM PORTA写地址
reg [15:0] w_data; //RAM PORTA写数据
reg wea; //RAM PORTA使能
reg [8:0] r_addr; //RAM PORTB读地址
wire [15:0] r_data; //RAM PORTB读数据//产生RAM PORTB读地址
always @(posedge clk or negedge rst_n)
beginif(!rst_n) r_addr <= 9'd0;else if (|w_addr) //w_addr位或,不等于0r_addr <= r_addr+1'b1;elser_addr <= 9'd0;
end//产生RAM PORTA写使能信号
always@(posedge clk or negedge rst_n)
begin if(!rst_n) wea <= 1'b0;else beginif(&w_addr) //w_addr的bit位全为1,共写入512个数据,写入完成wea <= 1'b0; else wea <= 1'b1; //ram写使能end
end //产生RAM PORTA写入的地址及数据
always@(posedge clk or negedge rst_n)
begin if(!rst_n) beginw_addr <= 9'd0;w_data <= 16'd1;endelse beginif(wea) //ram写使能有效begin if (&w_addr) //w_addr的bit位全为1,共写入512个数据,写入完成beginw_addr <= w_addr ; //将地址和数据的值保持住,只写一次RAMw_data <= w_data ;endelsebeginw_addr <= w_addr + 1'b1;w_data <= w_data + 1'b1;endendend
end //-----------------------------------------------------------
//实例化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
);//实例化ila逻辑分析仪
ila_0 ila_0_inst (.clk (clk ), .probe0 (r_data ), .probe1 (r_addr )
);endmodule
18.点击Add Source,新建仿真文件。
19.填写仿真文件名。
20.模块名默认,直接点击OK。
21.填写testbench仿真代码。
代码如下:
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2022/06/19 23:35:23
// Design Name:
// Module Name: vtf_ram_test
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//module vtf_ram_tb;
// Inputs
reg clk;
reg rst_n;// Instantiate the Unit Under Test (UUT)
ram_test uut (.clk (clk), .rst_n (rst_n)
);initial
begin// Initialize Inputsclk = 0;rst_n = 0;// Wait 100 ns for global reset to finish#100;rst_n = 1; endalways #10 clk = ~ clk; //20ns一个周期,产生50MHz时钟源endmodule
22.点击Run Simulation进行仿真。
23.选择需要观察的信号,添加到仿真波形的Name区域。
24.设置仿真时间,重新进行仿真,仿真波形如下图所示。
25.新建管脚约束文件
26.填写文件名。
27.填写约束代码,并保存。
代码如下:(根据开发板原理图自行调整)
############## clock and reset define##################
create_clock -period 20 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [get_ports {clk}]
set_property PACKAGE_PIN U18 [get_ports {clk}]set_property IOSTANDARD LVCMOS33 [get_ports {rst_n}]
set_property PACKAGE_PIN N15 [get_ports {rst_n}]
28.生成bit文件,此处等待时间可能较长(与电脑和工程大小有关系)。
29.开发板连接电源和烧录数据线,并点击Open Hareware Manager。
30.点击Open target,然后点击Auto Connet。
31.最后点击Program device,将bit文件烧录到FPGA中。
32.然后会出现逻辑分析仪的波形图界面,此处可以设置触发信号。
波形如下:
通过vivado工具实现zynq的FPGA内部RAM读写相关推荐
- 以Vivado工具为例了解FPGA综合
Vivado设计流程 使用Vivado进行设计开发的步骤如下: 功能设计:使用HDL语言设计.自带或者第三方的IP.嵌入式处理器等. 综合:在综合时可以加入第三方的网表文件和约束文件. 实现:在Viv ...
- ZYNQ之FPGA学习----RAM IP核使用实验
1 RAM IP核介绍 RAM 的英文全称是 Random Access Memory, 即随机存取存储器, 它可以随时把数据写入任一指定地址的存储单元,也可以随时从任一指定地址中读出数据,其读写速度 ...
- ZYNQ之FPGA学习----Vivado功能仿真
1 Vivado功能仿真 阅读本文需先学习: FPGA学习----Vivado软件使用 典型的FPGA设计流程,如图所示: 图片来自<领航者ZYNQ之FPGA开发指南> Vivado 设计 ...
- Zynq和FPGA区别——快速认识Zynq开发
Zynq和FPGA区别--快速认识Zynq开发 ZYNQ包含了2个部分,双核的ARM和FPGA.根据Xilinx提供的手册,用ARM实现的模块被称为PS,而用FPGA实现的模块被称为PL.简单的说FP ...
- 【正点原子FPGA连载】 第二十八章 双路高速DA实验-摘自【正点原子】领航者ZYNQ之FPGA开发指南_V2.0
1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...
- ZYNQ之FPGA 片内RAM读写测试实验
文章目录 前言 一.添加RAM IP核 二.编写测试程序 三.添加ILA 四.分配管脚 五.Simulator仿真 六.硬件调试 总结 前言 本实验的主要内容是介绍如何使用 FPGA内部的RAM以及程 ...
- ZYNQ之FPGA 片内ROM读写测试实验
文章目录 前言 一.创建ROM初始化文件 二.添加ROM IP核 三.编写测试程序 四.添加ILA 五.分配管脚 六.Simulator仿真 七.硬件调试 总结 前言 FPGA本身是SRAM架构的,断 ...
- 【正点原子FPGA连载】第十五章 IP核之FIFO实验 -摘自【正点原子】领航者ZYNQ之FPGA开发指南_V2.0
1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...
- 无招胜有招-Vivado非工程模式下的FPGA设计流程
参考:UG892 UG835 Vivado集成开发工具为设计者提供了非工程模式下的FPGA设计流程.在Vivado非工程模式下,FPGA开发人员可以更加灵活地对设计过程的每个阶段进行控制,从而进一步提 ...
最新文章
- 高德地图SDK大致使用
- 【转载】请问Silverlight 获取客户端网卡mac码
- 支持向量机的最大分类间隔(转)
- linux中call命令,各种linux命令(pwn)
- mysql 授权truncate_有没有办法在MySQL中的TRUNCATE或DROP TABLE上有效地进行GRANT?
- Visual Studio 2005中编译调试新功能
- 解决 Windows Update 更新错误/无法创建还原点 代码 0x80246008
- java 字符串是否包含字符串_在Java中,如何检查字符串是否包含子字符串(忽略大小写)?...
- 用 python 实现各种排序算法(转)
- 2019腾讯广告算法初赛第一名的模型
- CSDN社区排名出炉了,来看看你的排名是多少?
- esp8266教程:编译sdk常用命令
- 微弱光信号检测MATLAB,基于数字锁相放大器的微弱光电信号检测研究
- adb shell dumpsys activity top
- Vimium、CrxMouse配置信息
- 常用颜色的RGB值及中英文名称
- 【工具推荐】进程查看管理工具——Process Explorer
- linux查看网络连接命令,linux查看网络链接状况命令之-netstat
- 【BirdDog】 Full NDI在体育/电竞直播中的降成本、轻量化、多机位现场制作
- IPU VPU GPU的关系
热门文章
- 破解字体加密,以58同城网站为例。
- 关于导出excel分页与否相关疑惑
- java中定义变量名时大写__Java变量及类名称定义坑之第二个字母大写
- 七夕连奥运冠军都开始虐狗!
- 美图 HTTPS 优化探索与实践
- 西北民族大学c语言程序设计复试科目,2016年西北民族大学中国民族信息技术研究院962C语言程序设计复试笔试最后押题五套卷...
- 专题八单元作业MATLAB图形用户界面设计答案
- Vue2中过滤器的用法详解
- 深圳大学计算机科学与技术哪个好,计算机,暨南大学和深圳大学哪个好?学校和怎么选?...
- Android 个人通讯录【安卓进化十四】