0 引言
SDRAM(同步动态存储器)是一种应用广泛的存储器,具有容量大、数据读写速度快、价格低廉等优点,特别适合那些需要海量存储器的应用领域,例如视频方面。
这里有一个视频项目要求将非标准的ITU-R BT.656视频格式的数据转换成VGA格式,直接用于显示器显示。如图1,输入的视频格式是非标准的ITU-R BT.656格式,图像分辨率是1280×1024,帧速是15帧/秒,每一个像素点是24bit;输出的视频格式是VGA格式,图像分辨率是1280× 1024,帧速是60帧/秒,每一个像素点还是24bit。
本项目使用SDRAM来存储视频数据。在设计中,要求能够将一幅完整的图像(1280×1024×24bit)存储在SDRAM中。并且要求读写突发长度是1280,即一行视频数据(1280×24bit)。SDRAM突发长度最高只能达到256(即SDRAM芯片的一列的长度),为此需要使用FPGA专门实现一个SDRAM控制器。在控制器的设计中通过采用切换bank操作、自动预冲、集中刷新等技术实现了这种超长突发长度的数据读写。同样通过适当地修改此控制器,可以实现任意突发长度的数据读写。
1 SDRAM基本特性
本设计中采用的SDRAM芯片的型号是MT48LC2M3282-7。SDRAM的主要操作包括初始化、读写和刷新操作。SDRAM的初始化操作过程如下:上电后等待100 μs;然后依次完成预冲,两次刷新操作;接下来就可以配置寄存器了。至此整个初始化工作结束,SDRAM进入正常工作状态。SDRAM进入正常工作状态后,就可以根据命令来工作。这些命令包括:预冲(Precharge)和自动预冲(AutoPrecharge)、激活(Active)、读 (read)、写(write)、自动刷新(Auto Refresh)和自刷新(Self Refresh)等。根据本设计的需要,这里详细介绍设计中相关的命令:自动预冲、激活、读写、自动刷新。自动预冲命令是SDRAM芯片在一次突发读/写结束后自动发出预冲命令,将读写的行关闭。它与预冲命令有着相同的功能,但是发起命令的方式不一样。预冲命令是SDRAM控制器发起的命令,它需要占据 SDRAM的总线,在这段时间不能读写数据。而自动预冲命令是SDRAM自动的行为,不需要占据SDRAM的总线。这个命令是在发起读写命令时设置的。
激活命令是对SDRAM的某一行激活,这样才能对这一行数据发起读写操作。读写命令是对某一激活的行进行突发读写操作。具体的突发读写的数据长度在初始化时配置寄存器时设置了。