记录向---DDR2IP核的简单自定义仿真(QUARTUS)

**

一,生成DDR2IP核

如何建项目就不多赘述,直接到DDR2的部分–
1.1接下来点击 tool -> MigWizard…
进入IP管理界面
1.2点击NEXT
=

1.3选择DDR2IP核
因为QUARTUS的文件很乱,所以最好是在项目文件夹里建一个子目录,这里我们将其命名为ipcore用于存放IP核的文件
1.搜索DD2关键字
2.选择对应的IP
3.将其放入我们新建的文件夹并且命名为ddr2_32b(因为开发板上是两片DDR2,位宽有32位)
1.4点击NEXT
在这里插入图片描述
1.5配置参数
参数的各个意思可以参考《ug_ddr_sdram.pdf》也可以参考这篇博文
一直到生成IP核这篇博文都有详细的说明,所以直接到自己写代码的部分
在这里插入图片描述
**

二,编写简单的读写测试代码

2.1代码目标
部分信号解释:
“phy_clk”留给用户的操作时钟
不断写入突发长度为4的数据 然后将其读出。
“local_init_done ”初始化完成后为高可作为复位信号使用
“local_burstbegin ”表示开始一次突发操作,无论mem_local_ready为高还是为低(前提是初始化完成)
“mem_local_ready”这个信号是表示能接受请求,高电平有效
“local_read_req” 读请求,不能与写请求同时为高 只用在mem_local_ready为高时保持一个高时钟周期,否则会进行多次突发(可以自己尝试)
“local_write_req” 写请求,不能与读请求同时为高 并且在写的时候要一直为高并且保持为突发长度那么多个时钟周期
“local_address ”不要求在突发时跟随时钟变化,因为其一开始就被锁存,在IP核内部进行自加

module ddr2wrtest (
	input 					clk 			,    // Clock
	input 					global_reset_n 	,  // Asynchronous reset active low


	output  [ 12: 0]		mem_addr 		,	
	output  [  2: 0] 		mem_ba 			,	
	output					mem_cas_n 		,	
	output					mem_cke 		,	
	inout					mem_clk 		,	
	inout 					mem_clk_n 		,	
	output 					mem_cs_n 		,	
	output 	[  3: 0]		mem_dm 			,	
	inout	[ 31: 0]		mem_dq 			,	
	inout	[  3: 0]		mem_dqs 		,	
	output					mem_odt 		,	
	output					mem_ras_n 		,	
	output					mem_we_n 			
	
);


	parameter 			LEN 	= 4; 				// 突发长度 4

	parameter 			IDEL 		= 5'b00001;		// 空闲态
	parameter 			WRITER 		= 5'b00010;		// 准备写
	parameter 			WRITING 	= 5'b00100;		// 写状态
	parameter 			READR 	 	= 5'b01000;		// 准备读
	parameter 			READING 	= 5&#
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值