通过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读写相关推荐

  1. 以Vivado工具为例了解FPGA综合

    Vivado设计流程 使用Vivado进行设计开发的步骤如下: 功能设计:使用HDL语言设计.自带或者第三方的IP.嵌入式处理器等. 综合:在综合时可以加入第三方的网表文件和约束文件. 实现:在Viv ...

  2. ZYNQ之FPGA学习----RAM IP核使用实验

    1 RAM IP核介绍 RAM 的英文全称是 Random Access Memory, 即随机存取存储器, 它可以随时把数据写入任一指定地址的存储单元,也可以随时从任一指定地址中读出数据,其读写速度 ...

  3. ZYNQ之FPGA学习----Vivado功能仿真

    1 Vivado功能仿真 阅读本文需先学习: FPGA学习----Vivado软件使用 典型的FPGA设计流程,如图所示: 图片来自<领航者ZYNQ之FPGA开发指南> Vivado 设计 ...

  4. Zynq和FPGA区别——快速认识Zynq开发

    Zynq和FPGA区别--快速认识Zynq开发 ZYNQ包含了2个部分,双核的ARM和FPGA.根据Xilinx提供的手册,用ARM实现的模块被称为PS,而用FPGA实现的模块被称为PL.简单的说FP ...

  5. 【正点原子FPGA连载】 第二十八章 双路高速DA实验-摘自【正点原子】领航者ZYNQ之FPGA开发指南_V2.0

    1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...

  6. ZYNQ之FPGA 片内RAM读写测试实验

    文章目录 前言 一.添加RAM IP核 二.编写测试程序 三.添加ILA 四.分配管脚 五.Simulator仿真 六.硬件调试 总结 前言 本实验的主要内容是介绍如何使用 FPGA内部的RAM以及程 ...

  7. ZYNQ之FPGA 片内ROM读写测试实验

    文章目录 前言 一.创建ROM初始化文件 二.添加ROM IP核 三.编写测试程序 四.添加ILA 五.分配管脚 六.Simulator仿真 七.硬件调试 总结 前言 FPGA本身是SRAM架构的,断 ...

  8. 【正点原子FPGA连载】第十五章 IP核之FIFO实验 -摘自【正点原子】领航者ZYNQ之FPGA开发指南_V2.0

    1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...

  9. 无招胜有招-Vivado非工程模式下的FPGA设计流程

    参考:UG892 UG835 Vivado集成开发工具为设计者提供了非工程模式下的FPGA设计流程.在Vivado非工程模式下,FPGA开发人员可以更加灵活地对设计过程的每个阶段进行控制,从而进一步提 ...

最新文章

  1. 高德地图SDK大致使用
  2. 【转载】请问Silverlight 获取客户端网卡mac码
  3. 支持向量机的最大分类间隔(转)
  4. linux中call命令,各种linux命令(pwn)
  5. mysql 授权truncate_有没有办法在MySQL中的TRUNCATE或DROP TABLE上有效地进行GRANT?
  6. Visual Studio 2005中编译调试新功能
  7. 解决 Windows Update 更新错误/无法创建还原点 代码 0x80246008
  8. java 字符串是否包含字符串_在Java中,如何检查字符串是否包含子字符串(忽略大小写)?...
  9. 用 python 实现各种排序算法(转)
  10. 2019腾讯广告算法初赛第一名的模型
  11. CSDN社区排名出炉了,来看看你的排名是多少?
  12. esp8266教程:编译sdk常用命令
  13. 微弱光信号检测MATLAB,基于数字锁相放大器的微弱光电信号检测研究
  14. adb shell dumpsys activity top
  15. Vimium、CrxMouse配置信息
  16. 常用颜色的RGB值及中英文名称
  17. 【工具推荐】进程查看管理工具——Process Explorer
  18. linux查看网络连接命令,linux查看网络链接状况命令之-netstat
  19. 【BirdDog】 Full NDI在体育/电竞直播中的降成本、轻量化、多机位现场制作
  20. IPU VPU GPU的关系

热门文章

  1. 破解字体加密,以58同城网站为例。
  2. 关于导出excel分页与否相关疑惑
  3. java中定义变量名时大写__Java变量及类名称定义坑之第二个字母大写
  4. 七夕连奥运冠军都开始虐狗!
  5. 美图 HTTPS 优化探索与实践
  6. 西北民族大学c语言程序设计复试科目,2016年西北民族大学中国民族信息技术研究院962C语言程序设计复试笔试最后押题五套卷...
  7. 专题八单元作业MATLAB图形用户界面设计答案
  8. Vue2中过滤器的用法详解
  9. 深圳大学计算机科学与技术哪个好,计算机,暨南大学和深圳大学哪个好?学校和怎么选?...
  10. Android 个人通讯录【安卓进化十四】