
简单SDRAM控制器设计
文章平均质量分 87
Joey的自由世界
这个作者很懒,什么都没留下…
展开
-
sdram控制器设计(六)-- 仲裁模块实现
对于仲裁模块,当sdram初始化完成后,进入ST_IDLE状态,当接收到操作请求命令后,则进入对应的操作状态,此时,如果有其他的操作请求命令,则只能等待状态回到ST_IDLE后再去响应。即当需要进行某一操作时,对应模块向仲裁模块发送给请求信号,仲裁模块根据自身所处的状态来响应请求信号,模块收到响应信号后,开始进行操作。输入信号包括自动刷新模块信号,写操作模块信号,读操作模块信号,输出信号包括发送给各模块的响应信号,以及sdram接口信号。下面验证一下仲裁模块功能,当自动刷新使能后,立即开始写数据,原创 2024-10-10 20:57:48 · 575 阅读 · 0 评论 -
sdram控制器设计(五)- 读操作问题排查
笔者有以下粗糙的分析,在sdram控制器的设计过程中,通常有一个控制时钟(这里为sys_clk)和提供给sdram器件的工作时钟(这里为sdram_clk),通常情况下指令,地址,写入的数据等信号都在sys_clk的上升沿被发送给sdram器件,sdram器件在sdram_clk上升沿采集发送过来的指令,地址,写入的数据等信号,此外还需要考虑寄存器延时,PCB走线等延时,从镁光的sdram器件手册可以得知指令,地址,写入的数据信号的最小的建立时间为1.5 ns, 最小的保持时间为0.8 ns。原创 2024-09-29 19:16:28 · 940 阅读 · 0 评论 -
sdram控制器设计(四)读操作
首先给激活命令(ACTIVE)命令,同时需要Address信号和Bank地址信号配合,等待tRCD,在等待tRCD过程中,需要给NOP命令,等待结束后,给读(READ)命令,等待CL个时钟周期(这里CL = 2, 即2个时钟周期)后读出的数据出现在dq上,然后是自动预充电过程,这里配置为自动预充电,所以不需要给PRECHARGE命令,等待tRP时间,等待过程中给NOP命令,等待结束后,读操作结束。可以看到,初始化完成后,进行了两次写操作,每次写操作完成后,write_done拉高一个时钟周期。原创 2024-09-28 22:57:25 · 1025 阅读 · 0 评论 -
sdram控制器设计(三)-写模块实现
首先给激活命令(ACTIVE)命令,同时需要Address信号和bank地址信号配合,等待tRCD,在等待tRCD过程中,需要给NOP命令,等待结束后,给写(WRITE)命令,同时给待写入数据到Dq信号上,等待tWR,等待过程中给NOP指令,等待结束后,是自动预充电过程,这里配置为自动预充电,所以不需要给PRECHARGE命令,等待tRP时间,等待过程中给NOP命令,等待结束后,写操作结束。在(二)中介绍了sdram自动刷新模块的实现和仿真过程,现在介绍写模块的实现和仿真验证。原创 2024-09-28 22:48:39 · 843 阅读 · 0 评论 -
sdram控制器设计(二)自动刷新操作
由于自动刷新,写操作,读操作可能会冲突,即需要进行刷新操作时,正在进行读或者写操作,这时就需要进行仲裁,在保证读写数据正确操作的基础上,自动刷新操作优先级最高,所以当自动刷新时间到了,自动刷新模块发出自动刷新请求aref_req给仲裁模块,当仲裁模块同意了,即使能aref_en信号,自动刷新模块开始进行自动刷新操作,同时aref_req信号释放,如果aref_req不使能,则aref_req一直有效。至此,sdram自动刷新模块实现与仿真内容介绍完毕,后面将介绍sdram读写模块实现与仿真。原创 2024-09-28 16:48:15 · 775 阅读 · 0 评论 -
sdram控制器设计(一)初始化操作
本系列分享介绍sdram控制器的设计思路与方法,目的是在设计的过程中提高模块划分,状态机编写,仿真测试,时钟模块处理,复位处理,约束文件编写,板级调试等FPGA开发能力,也是对自己设计能力的一个小的测试与总结,同时给大家提供力所能级的参考,在设计的过程中,由于笔者能力有限,肯定会有不合理的地方,望批评指正。该波形图将信号分为三组,输入信号,内部信号以及输出信号,包括状态信号的跳变,输出信号的改变等,波形图在一开始并不一定要特别精确,在开发过程中可能需要进行调整。原创 2024-09-25 21:02:16 · 673 阅读 · 0 评论