FPGA学习-rom只读存储器(嵌入式块应用)

实验现象:

        将一组固定的数据(三角波、正弦波)存储在IP核构建的rom中。系统工作时,从rom中按照地址顺序读取数据,有modelsim仿真工具观察波形。

第一步:

第二步:配置ip核rom

        主要设置数据位宽和地址深度。

第三步:

        rom默认必须要有一个初始化.mif文件(而ram不必要),需要在一开始就先新建一个.mif文件。

第四步:

        生成IP核后,记着把.qip文件设置成Top顶层文件。

testbench测试文件编写:

`timescale 1ns/1ns
`define clock_period 20
module rom_tb;

	reg	[7:0]  address;
	reg	       clock;
	wire [7:0]  q;

	integer i;

	rom rom(
		.address(address),
		.clock(clock),
		.q(q)
	);

	initial clock=1;
	always #(`clock_period/2) clock=~clock;
	
	initial begin
		address=0;
		#(`clock_period*20+1);
		for(i=0;i<=255;i=i+1) begin
			#(`clock_period);
			address=address+1;
		end
		#(`clock_period*20);
		$stop;
	end
endmodule

        这里三角波是数据宽度=8位0~255,地址深度=256,从0~128~1一共256个数字;

        正弦波是数据宽度=10位0~1023,地址宽度=2048,从512~1023~0~510一共2048个数字;

        所以在编辑rom IP核时需要注意位宽和深度,在tesbench中的激励定义和for循环中也要做相应的修改。

波形图分析:

图1和图二都是三角波

图三是正弦波

图四是对上面的三角波和正弦波合在一个mif文件中,修改rom位宽和深度读取到的数据波形

如何在已有的IP核基础上进行编辑:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值