基于FPGA的SDRAM控制器设计(三)

1.SDRAM写数据模块及仿真

图1.1为SDRAM工作方式状态机,要实现写数据功能,首先给到SDRAM一个ACT命令,用以激活要写入的行地址,从而使SDRAM从IDLE状态进入Row Active状态。接着给一个Write命令(其中带有列地址)就可以通过sdram_dq引脚写入数据。数据写完后,给到Precharge命令关闭现有工作行,准备打开新一行的操作,此命令进行完后自动返回IDLE状态
在这里插入图片描述

图1.1 工作方式状态机

在这里插入图片描述

图1.2 写命令时序图

图1.2为写命令的具体时序图,其中包含了列地址(A0-A9),BANK地址(BA0,BA1)以及其他各引脚的电平。
仿真模块的整体时序如图1.3所示,往SDRAM里面写入两行数据,中途会被Auto-refresh命令打断,为防止冲突,需要进一步完善TOP模块的仲裁机制,使得SDRAM在需要刷新时能够得到响应。
在这里插入图片描述

图1.3 仿真模块时序图
注:红色方框内应为低电平。 写模块命令产生时序图见图1.4。

在这里插入图片描述

图1.4 写模块时序图

在这里插入图片描述

图1.5 仿真结果
仿真结果如图1.5,可以看到在写入了第0行第507列的数据之后进行了一次Auto Refresh,之后继续写入数据直到第0行被写满,接着进行一次Precharge后对第1行继续写入数据。

2. SDRAM读数据模块及仿真

同样参照图1.1的状态机,在读命令前,需要给到ACT命令以激活相应的行,接着给到写命令进入到写数据状态。
可以参照读数据模块相应地构建读数据模块,只需要改写读数据命令为写数据命令。

3.代码

我的Github

4.参考资料

【开源骚客】基于FPGA的SDRAM控制器设计

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值