[IP核]双端口RAM

本文详细探讨了双端口RAM在单时钟和双时钟条件下的工作原理。在单时钟设置中,无论数据位宽或地址位宽如何,测试结果保持一致。而在双时钟场景中,当读写时钟频率不同时,可能出现"跳读"现象。当读时钟频率低于写时钟频率时,地址指针移动速度需匹配读时钟,否则会导致数据丢失。双时钟2的情况与双时钟1的"跳读"原因不同,前者是由于输出前寄存器结果被覆盖,后者则是因为地址跳变导致。
摘要由CSDN通过智能技术生成

单时钟:

八位DATA,八位地址时:

Testbench:

`timescale 1ns/1ns

`define clk_period 20

module dpram_tb;

	reg clock;
	reg [7:0]data;
	reg [7:0]rdaddress;
	reg [7:0]wraddress;
	reg wren;
	
	wire [7:0]q;
	
	integer i;
	
	dpram dpram0(
		.clock(clock),
		.data(data),
		.rdaddress(rdaddress),
		.wraddress(wraddress),
		.wren(wren),
		.q(q)
	);
	
	initial clock = 1;
	always#(`clk_period/2)clock = ~clock;	//50Mhz	t = 20ns
	
	initial begin
		data = 0;
		rdaddress = 30;
		wraddress = 0;
		wren = 0;
		#(`clk_period*20 +1 );
		for (i=0;i<=15;i=i+1)begin
			wren = 1;		//写使能
			data = 255 - i;//生成DATA
			wraddress = i;	//地址和i的变化相同
			#`clk_period;	//延时一个时钟
		end
		wren = 0;				//读状态
		#(`clk_period*20);
		for (i=0;i<=15;i=i
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值