FPGA学习笔记_Quartus II prime Standard Edition---存储器IP核的调用

FPGA学习笔记

Quartus II prime Standard Edition—存储器IP核的调用

Quartus II的老版本跟新版本的IP核的调用方法有些不同,下面是Quartus II prime Standard Edition的调用方式,仅供参考。

  1. 如下图所示,点击assignmen中的IP Catalog,输入ram ,双击RAM:2-PORT在这里插入图片描述

  2. 根据需求选择端口信息存储器的存储尺寸,点击next
    在这里插入图片描述

  3. 根据需求选择数据宽度,点击next
    在这里插入图片描述

  • Auto:自动分配
    LCs:内部寄存器
    M9K: 内部块ram
  1. 选择时钟类型,点击next在这里插入图片描述
    Creat byte enable for port A: 针对位宽大于8位时的情况

  2. 选择端口寄存方式,点击next在这里插入图片描述

  3. 选择存储器初始化内容,点击next在这里插入图片描述

  4. 点击next在这里插入图片描述

  5. 点击finish,调用ram ip核完成。
    在这里插入图片描述

  6. 右键点击工程file,按顺序1,2,3,添加调用后的ram 的.v文件到工程内部
    在这里插入图片描述在这里插入图片描述

  7. 添加完成后,进行仿真验证功能 在这里插入图片描述

  8. 创建testbench,进行仿真验证

//----testbench-------------------------------------
`timescale 1ns/1ns
`define clock_period 20
module ram_dual_tb;//ram_dual

	reg clk;
	reg [7:0] data;
	reg [7:0] rdaddress;
	reg [7:0] wraddress;
	reg wren;
	wire [7:0] q;
	integer i;
	
//----例化ip核---------------------------------	
	ip ram_dual(
	.clock(clk),
	.data(data),
	.rdaddress(rdaddress),
	.wraddress(wraddress),
	.wren(wren),
	.q(q)
	);
//----激励设置--------------------------------	
	initial clk = 1;
	always begin #(`clock_period/2) clk = ~clk;end
	
	initial begin
		data = 0;
		rdaddress = 32;
		wraddress = 0;
		wren = 0;
		
		#(`clock_period*30+1);
		for(i=0;i<=15;i=i+1)begin
			wren = 1;
			data = 255-i;
			wraddress = i;
			#(`clock_period);
		end
		wren = 0;
		
		#(`clock_period*30+1);
		for(i=0;i<=15;i=i+1)begin
			rdaddress = i;
			#(`clock_period);
			
		end
		
		#(`clock_period*30);
		$stop;
	end
endmodule

在这里插入图片描述

【注】:个人学习笔记,如有错误,望不吝赐教,这厢有礼了~~~

猜你喜欢

转载自blog.csdn.net/weixin_50722839/article/details/109748878