FPGA学习之DDR3读写实验


参考正点原子视频

原理

简介

DDR3 SDRAM常 简称 DDR3 是当今较为常见的一种储存器,在计算机及嵌入式产品中得到广泛应用,特别是应用在涉及到大量数据交互的场合,比如电脑的内存条。对DDR3的读写操作大都借助IP核来完成,本次实验将采用 Xilinx公司 MIG IP核来实现DDR3读写测试。
DDR3相对于SDRAM是双沿触发,读写速度快一倍。相对于DDR2有更高的运行性能和更低的电压。本次实验使用的 DDR3芯片是南亚的 NT5CB128M16CP-DI,NT5CB128M16CP-DI的bank位宽为 3,行位宽为 14,列位宽为10,所以它的地址大小等于即 2^27=128M,数据位宽为 16bit,所以容量大小为 128M*16bit,也就是 256MByte。

配置原理

MIG IP核是硬核,左侧是用户接口,右侧是芯片接口。如下图
在这里插入图片描述
需要着重了解的是用到的用户接口的相关信号定义。
app_addr[addr_width-1:0]:写和读的地址空间,数据放在哪里,在哪读。
app_en:写入命令使能,我在写命令了。
app_cmd[2:0]:读写命令控制,告诉你我要读还是写。
app_rdy:我准备好了,你可以把读写命令发送进来了。
app_wdf_wren:写入数据使能,我在写数据了。
app_wdf_rdy:我准备好了,你可以把数据发送进来了。
app_wdf_end:突发写的过程结束了。
app_wdf_data[app_data_width-1:0]:用户写入的数据.
app_rd_data[app_data_width-1:0]:用户读入的数据。
app_rd_data_valid:读的数据是有效的。
ui_clk:用户时钟。
ui_clk_sync_rst:高电平有效的复位。
init_calib_complete:DDR3已初始化完成。
加粗的为相对于IP核是输入的,也就是FPGA输出的。


基本时序如上。准备信号和使能都拉高才算有效读入。

写和读的时序不一样,而且也有背靠背写/读(连续)和非背靠背写/读(非连续)。写的时序有3种情况可以正确写入:

写数据时序和写命令时序发生在同一拍/提前一拍/最多晚两拍。
背靠背写也是3种情形,但是没有最大延迟限制。

读数据往往要晚若干个周期。

背靠背读(连续读)

一般采用背靠背模式读写。这里还需要注意一点,在连续读的时候,读到的数据顺序跟请求的命令/地址是相对应的。

程序代码

约束文件

DDR3用到的约束引脚较多,建议导入。
用到3种电平:
LVCMOS、 SSTL和 DIFF_SSTL。
LVCMOS:全称 Low Voltage Complementary Metal Oxide Semiconductor,低压互补金属氧化物半导体。
SSTL:全称 Stub Series Terminated Logic 短截线串联端接逻辑。
DIFF_SSTL:全称Difference Stub Series Terminated Logic,差分短截线串联端接逻辑。
LVCMOS 的特点是噪声容限大,速度较SSTL 慢;SSTL 速度快,通常要匹配合适的端接电阻,常用于高速内存接口如DDR3;DIFF_SSTL 则是带有差分功能的SSTL。

设计文件

在这里插入图片描述
系统框图如上。
在这里插入图片描述
IP核配置的思维导图如上。
读写模块代码:
ddr3_rw.v
需要特别指出的是,在写的时候,app_en 拉高的条件是:app_rdy(MIG 命令接收准备好标志)和app_wdf_rdy(MIG 数据接收准备好标致)同时为高,根据数据手册,其实用户可以只判断app_rdy 信号,当app_rdy 信号为高,就可以拉高使能app_en,之所以同时判断app_rdy 和app_wdf_rdy 是因为本实验只考虑DDR3 写状态命令发送和数据发送同拍的情形,这样的做法基本上不会对DDR3 读写操作效率造成很大影响,但是却能大大简化代码编写难度
采用的是一段式状态机的写法。整个状态机写到一个always模块里面,在该模块中既描述状态转移,又描述状态的输入和输出。

  • 30
    点赞
  • 117
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
在进行FPGADDR3读写测试时,我们可以使用Xilinx公司的MIG IP核来实现。DDR3是一种常见的存储器,广泛应用于计算机和嵌入式产品中,特别是在需要大量数据交互的场合,比如电脑的内存条。DDR3相对于SDRAM是双沿触发,读写速度快一倍,并且具有更高的运行性能和更低的电压。在本次实验中,我们使用的DDR3芯片是南亚的NT5CB128M16CP-DI,它的地址大小为128M,数据位宽为16bit,容量大小为256MByte。在配置原理中,我们需要设置DDR3 IO接口时钟和DDR3 MIG IP核用户接口时钟的比例,以确保正确的时钟频率。另外,我们还可以根据需要选择IP核提供的定制化镁光系列芯片,或者自己输出DDR3芯片的相关参数进行配置。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [FPGA学习DDR3读写实验](https://blog.csdn.net/m0_51466525/article/details/122584907)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Xilinx FPGA DDR3设计(三)DDR3 IP核详解及读写测试](https://blog.csdn.net/gslscyx/article/details/130694959)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值