FPGA之旅设计99例之第二十例---SDRAM存储器实现(上)

简介: 笔记

一. 简介


本例将介绍SDRAM的使用。SDRAM是一个存储器件,存储容量大,存储速度比较快,速度可达100M,特别适合用来当中视频或者音频中的存储器件。


在采集到OV5640传输过来的图像数据的时候,FPGA的片上资源是没有那么大的存储空间进行存储的,必须通过外部的存储器件进行存储。恰好开发板上有一片SDRAM,所以用此来进行存储,一般而言入门级的FPGA开发板上都是配置的SDRAM,中高级一点的是DDR2(alter开发板),DDR3(xilinx开发板)。


所以本例将实现一个完善的SDRAM存储控制器,供大家查看。


关注微信 公众号 FPGA之旅 回复 FPGA之旅设计99例之第二十例 获取全部工程文件 包括sdram仿真模型。


二. SDRAM接口信号


从下面框图中可以看出,SDRAM接口信号可以分为四大类:控制信号,地址信号,数据输入输出信号,掩码信号。下面将详细介绍各个命令的作用。

30.png31.png

以上就是SDRAM的全部接口信号了,并没有特别复杂。


下图是SDRAM的所有命令,在对SDRAM进行操作的时候,需要使用到。

32.png


然后在.v文件中先将其定义出来,方便后续使用

33.png



三. SDRAM上电初始化


上电后,没有任何时序上的操作,只需要延时100us(手册上要求最小为100us),使输入输出电平达到稳定,即可,在此期间,发送的命令最好为NOP。


这里初始化包括了初始化和加载模式寄存器,我认为初始化,就是加载模式寄存器。


(1)模式寄存器

模式寄存器的定义如下,通过地址线给出,每位都有其具体的含义。


0-2 bit:定义突发长度,每给一个读/写命令后,输出/输入的数据大小


4-6bit :定义潜伏期,发出读命令后,延时多少个周期给读数据,仅对读操作有效


10-12bit:保留,始终置高即可


其余位始终保持为0即可。模式寄存器的内容就这么多。

35.png



(2)初始化

下图是初始化的过程,按照图示要求依次发送对应的命令即可,命令与命令之间的间隔时间手册上都有说明,取的时候,可以适当取大。模式寄存器的A信号被分成了两部分A10和其他,可以看到A10在PRECHARGE阶段有特殊作用,一般为1,对所有的bank都进行预充电。


在模式寄存器中A10也是为1的,所以在整个初始化过程中,A可以直接赋值为模式寄存器的值。

36.png



实现过程如下,也是非常简介的,编写好初始化模块看,可以直接仿真,这里多亏了大佬写的sdram模型(就是一个.v文件),不用上板,可以直接仿真看代码编写是否正确。

37.png



仿真输出如下,可以看到和时序图中,命令发送过程是一样,同时也可以看到,模式寄存器配置的具体参数,非常方便,初始化模块就顺利的编写完成了。


38.png

公众号:FPGA之旅


目录
相关文章
|
Go vr&ar C语言
【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验二十一:SDRAM模块④ — 页读写 β
实验二十一:SDRAM模块④ — 页读写 β 未进入主题之前,让我们先来谈谈一些重要的体外话。《整合篇》之际,笔者曾经比拟Verilog如何模仿for循环,我们知道for循环是顺序语言的产物,如果Verilog要实现属于自己的for循环,那么它要考虑的东西除了步骤以外,还有非常关键的时钟。
854 0
|
Go vr&ar C语言
【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十九:SDRAM模块② — 多字读写
实验十九:SDRAM模块② — 多字读写 表示19.1 Mode Register的内容。 Mode Register A12 A11 A10 A9 A8 A7 A6 A5 A4 A3...
796 0
|
Go vr&ar C语言
【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十八:SDRAM模块① — 单字读写
实验十八:SDRAM模块① — 单字读写 笔者与SDRAM有段不短的孽缘,它作为冤魂日夜不断纠缠笔者。笔者尝试过许多方法将其退散,不过屡试屡败的笔者,最终心情像橘子一样橙。《整合篇》之际,笔者曾经大战几回儿,不过内容都是点到即止。
1010 0
|
22天前
|
机器学习/深度学习 算法 异构计算
m基于FPGA的多通道FIR滤波器verilog实现,包含testbench测试文件
本文介绍了使用VIVADO 2019.2仿真的多通道FIR滤波器设计。展示了系统RTL结构图,并简述了FIR滤波器的基本理论,包括单通道和多通道的概念、常见结构及设计方法,如窗函数法、频率采样法、优化算法和机器学习方法。此外,还提供了Verilog核心程序代码,用于实现4通道滤波器模块,包含时钟、复位信号及输入输出接口的定义。
39 7
|
3月前
|
算法 异构计算
基于FPGA的ECG信号滤波与心率计算verilog实现,包含testbench
基于FPGA的ECG信号滤波与心率计算verilog实现,包含testbench
|
2月前
|
算法 异构计算
m基于FPGA的电子钟verilog实现,可设置闹钟,包含testbench测试文件
该文介绍了基于FPGA的电子钟设计,利用Vivado2019.2平台进行开发并展示测试结果。电子钟设计采用Verilog硬件描述语言,核心包括振荡器、分频器和计数器。时间显示为2个十进制格式,闹钟功能通过存储器和比较器实现,当当前时间等于设定时间时触发。文中给出了Verilog核心程序示例,展示了时钟信号、设置信号及输出的交互。
36 2
|
4月前
|
算法 5G 数据处理
m基于FPGA的PPM光学脉位调制解调系统verilog实现,包含testbench
m基于FPGA的PPM光学脉位调制解调系统verilog实现,包含testbench
58 0
|
4月前
|
算法 异构计算 索引
m基于FPGA的Hamming汉明编译码verilog实现,包含testbench测试文件,不使用IP核
m基于FPGA的Hamming汉明编译码verilog实现,包含testbench测试文件,不使用IP核
51 1

热门文章

最新文章