43_ZYNQ7020开发板Vivado配置ROM并用Vivao自带逻辑分析仪分析

摘要:FPGA本身是SRAM架构,断电之后,程序就消息,我们利用FPGA内部的RAM资源实现ROM,每次上电把初始化的值先写入RAM
一、实例化ROM的IP核
通过IP核实例化一个ROM,根据ROM的读时序来读取ROM中存储的数据。
在这里插入图片描述

创建ROM初始化文件
可以创建rom_init.coe文件,后缀一定是".coe",第一行为定义数据格式,16代表ROM的数据格式为16进制。第3行开始到第34行,是这个32*8bit,大小的ROM的初始化数据。最后一行用数字结束用分号。

MEMORY_INITIALIZATION_RADIX=16;        //表示ROM内容的数据格式是16进制
MEMORY_INITIALIZATION_VECTOR= 
11,
22,
33,
44,
55,
66,
77,
88,
99,
aa,
bb,
cc,
dd,
ee,
ff,
00,
a1,
a2,
a3,
a4,
a5,
a6,
a7,
a8,
b1,
b2,
b3,
b4,
b5,
b6,
b7,
b8;       //每个数据后面用逗号或者空格或者换行符隔开,最后一个数据后面加分号

添加IP核
1.首先新建一个rom_test工程
2.然后再工程中添加ROM IP
3.打开IP Catalog,在右侧弹出的界面中搜索rom
4.找到Block Memory Generator,将Component Name改为rom_ip
5.在Basic栏目下,将Memory Type改为Single Prot ROM。
在这里插入图片描述
6.切换到Port A Options栏目下,将ROM位宽Port A Width改为8,将ROM 深度Port A Depth改为32,使能管脚Enable Port Type改为Always,并取消Primitives Output Register
在这里插入图片描述
7.切换到Other Options栏目下,勾选Load init File,点击Browse,选中之前制作好的.coe文件

在这里插入图片描述
8.点击OK,点击Generate生成IP核
在这里插入图片描述
9.ROM测试程序编写
ROM的程序设计非常简单,在程序中我们只要每个时钟ROM 的地址,ROM就会输出当前地址的内部存储数据,实例化ila,用于观察地址和数据的变化。ROM IP的实例化及程序设计如下
rom_test.v

`timescale 1ns / 1ps

module rom_test(
	input sys_clk,	//50MHz时钟
	input rst_n		//复位,低电平有效
    );

wire [7:0] rom_data;	  //ROM读出数据
reg	 [4:0] rom_addr;      //ROM输入地址

//产生ROM地址读取数据
always @ (posedge sys_clk or negedge rst_n)
begin
    if(!rst_n)
        rom_addr <= 10'd0;
    else
        rom_addr <= rom_addr+1'b1;
end        
//实例化ROM
rom_ip rom_ip_inst
(
    .clka   (sys_clk    ),      //inoput clka
    .addra  (rom_addr   ),      //input [4:0] addra
    .douta  (rom_data   )       //output [7:0] douta
);
//实例化逻辑分析仪
ila_0 ila_m0
(
    .clk    (sys_clk),
    .probe0 (rom_addr),
	.probe1 (rom_data)
);

endmodule

新建ila_0逻辑分析仪IP核,程序分配管脚
在这里插入图片描述
新建vtf_tom_tb.v

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2019/10/28 17:01:15
// Design Name: 
// Module Name: vtf_rom_tb
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//


module vtf_tom_tb;
// Inputs
reg sys_clk;
reg rst_n;


// Instantiate the Unit Under Test (UUT)
rom_test uut (
	.sys_clk	(sys_clk), 		
	.rst_n		(rst_n)
);

initial 
begin
	// Initialize Inputs
	sys_clk = 0;
	rst_n = 0;

	// Wait 100 ns for global reset to finish
	#100;
      rst_n = 1;       

 end

always #10 sys_clk = ~ sys_clk;   //20nsÒ»¸öÖÜÆÚ£¬²úÉú50MHzʱÖÓÔ´
   
endmodule

按Run Simulation进行仿真
在这里插入图片描述
Generate Bitstream进行烧写程序和逻辑分析仪分析
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值