DDR2的调试记录(MT47H64M16)-草稿

环境说明

由于项目设计需要,在FPGA上挂载了一个1G的DDR2 SDRAM,型号为MT47H64M16,FPGA为Cyclone IV E系列。要用DDR2实现多个GMII高速输入的缓存。

DDR2驱动需求:

1、最大限度的提升DDR2的吞吐率。

2、支持多通道、不同类型、不同位宽的数据。

3、支持FIFO和RAM两种接口。

结构

-->FIFO[0]---->|--->---\                                                                                         /-->FIFO'[0]---->

-->FIFO[n-1]-->|--->----\                                                                                     /--->FIFO'[n-1]-->

                                         |--->[ID,WRaddr,RDaddr,ExistNum]--->[DDR2]---->|

-->RAM[0]---->|--->----/                                                                                     \--->RAM'[0]---->

-->RAM[m-1]->|--->---/                                                                                        \-->RAM'[m-1]->

关于速度方面的考虑

根据<ug_ddr_ddr2_sdram_hp.pdf>的Interface Description章节的描述,可以知道,Consecutive Write/Read将会有更高的吞吐率,而Consecutive Write/Read在一个ROW内的操作,因此,尽量减少row的切换将有效提高DDR2的吞吐率。

在这里,我们采用突发长度为2,Full-Rate模式,即local端,数据结构为32比特,不超过单个M9K的最大位宽(36比特)。

因此,我们在对连续地址的数据进行读写时,尽量按尽可能多的突发的操作进行。就是,一次性进行1~N个突发读或突发写操作。

在Cyclone IV E中,基本RAM单元是M9K,可配置成256x32bits的模式,因此,输入缓存可以最大缓存128个突发操作。设计时,同样需要考虑数据的延迟、读空。

较大的连续突发操作,能够抵抗输入最大的突发性;较小的连续突发操作可以保证FIFO中的数据可以被完全读出。

设计伪随机序列进行验证,在125MHz(Cyclone IV E中最大时钟频率167MHz)的时钟下,突发连续突发操作为1,DDR的吞吐率大约在800Mbps,在突发操作为2的情况下,DDR2的吞吐率大约在1Gbps,其余待验证。

最后

格式很乱,还是习惯用typora做项目文档,详细设计将在调试完成后一起上传。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值