基于FPGA的SDRAM控制器设计
发布时间:2008/5/28 0:00:00 访问次数:859
1 引 言
sdram的特点是大容量和高速度。其单片容量可达256mb或更高,工作速度可达100~200mhz以上,但是其控制方式比edo/fp dram复杂得多。目前,许多嵌入式设备的大容量存储器都采用sdram来实现。在设计中采用sdram存储器时,大多都是用专用芯片完成其控制电路。但是,当我们对sdram存储器进行特殊应用时,就需要自己设计控制电路了。 我们知道,显示器在显示文字或图形时,显示器在帧频、行频、彩色视频信号的控制下,控制电子束顺序地从上到下,从左到右逐行扫描。而这些显示控制信号是由显示控制器产生。在雷达光栅显示系统中,显示帧缓冲存储器(vram)存储雷达的实时信号。而在显示器的每个行周期的逆程时,需要把下一行的显示数据从显示帧缓冲存储器(vram)中取出,写到一个行缓冲存储器中去。在行周期的正程时,这个行缓冲存储器中的显示数据在显示时钟的同步下,顺序读出,送到视频形成电路(ramdac)形成显示视频信号,同时配合帧频、行频,这样显示器就能显示出雷达信号了。 在雷达光栅显示系统的通常设计中,采用专用的双口vram实现显示帧缓冲存储器。这种专用的双口vram内部具备串行存取存储器,因此实现系统比较简单。但是缺点是工作速度和容量都比较低,影响系统的性能指标。在本文的雷达光栅显示系统设计中,尝试采用sdram存储器作为显示帧缓冲存储器,采用fpga器件完成sdram的控制电路。下面介绍具体的实现过程。 2 sdram简介 sdram具有多种工作模式,内部操作是一个复杂的状态机。sdram器件的管脚分为以下几类: (1)控制信号 包括片选,时钟,时钟使能,行列地址选择,读写选择,数据有效。 (2)地址 时分复用管脚,根据行列地址选择管脚,控制输入的地址为行地址或列地址。 (3)数据 双向管脚。 sdram的所有操作都同步于时钟。根据时钟上升沿时控制管脚和地址输入的状态,可以产生多种输入命令: (1)模式寄存器设置命令;(2)激活命令; (3)预充命令;(4)读命令; (5)写命令;(6)带预充的读命令; (7)带预充的写命令;(8)自动刷新命令; (9)自我刷新命令;(10)突发停命令。 另外还有空操作命令。 根据输入命令,sdram状态在内部状态间转移。图1是sdram器件的状态转移图。 另外,sdram器件还有掉电状态,时钟中止等工作状态,使用较少,在此不做介绍。 3 设计实现 根据雷达光栅显示系统的要求,显示帧缓冲存储器采用双片1 m×l6b(hy57v161610)的sdram芯片构成32b的数据宽度。在该设计中,设定sdram的工作时钟为66mhz,这已经足以满足显示系统的要求了。 3.1 sdram的初始化 在电源正常之后,首先必须提供给sdram芯片稳定的工作时钟至少200μs。图2是sdram的初始化时序图。图中,首先t1时刻发出所有块预充命令,在trp时间后才能发出下一条命令。在t2时刻发出自动刷新命令,在trc时间后才能发出下一条命令。自动刷新命令必须至少8个。最后,在t4时刻发出模式寄存器设置命令设置工作模式,此时地址线上输入的就是控制代码。同样,在tmrd时间后才能发出下一条命令。本设计中,时钟周期为15ns,器件的trp为20ns,trc为20ns。因此trp=2clk,trc=5clk,tmrd固定为2clk。因此,t1时刻到t2时刻是2周期延迟,t2时刻到t3时刻是5周期延迟,而在t4时刻2周期之后,才能发出下一条命令。 在电路设计上,采用监控芯片max705产生复位信号,所有的控制电路都在复位信号正常后工作。该复位信号可以保证至少60ms,满足200μs的要求。了解了初始化时序之后,由fpga设计产生这种时序就比较简单了。 3.2 sdram的读写时序设计 在sdram芯片初始化完成之后,就进入正常工作状态。sdram芯片在正常的读写操作时,如果sdram芯片行地址不发生变化,那么可以满足每时钟周期进行一次读写的高速操作;但是当sdram芯片行地址发生变化时,就必须返回到预充状态。图3是一个完整的读改写时序。图中所示的是burst length=l,cas latency=2的情况。 在本设计中,雷达信号的一次显示分辨率为1 024×l
|