用Xilinx FPGA实现DDR SDRAM控制器
制信号、地址信号以及数据信号。数据捕获技术及数据通道电路是DDR SDRAM控制器的技术核心。DDR SDRAM接口是源同步接口, 即数据与传输时钟是边沿对齐的。因此, 为了在FPGA 中可靠捕获数据要么延迟时钟要么延迟数据, 使数据与时钟中心对齐。本设计采取直接时钟数据捕获技术。 所谓直接时钟数据捕获技术就是利用DQS 信号计算数据延迟量, 通过延迟数据使数据中心与FPGA 内部时钟沿对齐, 然 后用该内部时钟直接读取数据。DQS 是由DDR 发出的数据选通信号, 它与FPGA 内部时钟频率相同。此项技术的关键是确定数据的延迟时间。相对于其他的数据捕获技术, 这种直接时钟数据捕获技术可以应用于更高的时钟频率, 精确性和稳定性都高于其他方法。 为了得到数据应该延迟的时间量, 首先要对DQS 进行边沿检测。控制器发出Dummy_rd_en 信号( 即假读信号) 使DDR SDRAM 发出DQS 信号, 当延迟量计算完毕时, 置Dummy_rd_en 为低。 在Xilinx VirtexTM- 4 FPGA 中实现该延迟检测电路是非常容易的, 因为设计可以直接利用FPGA 内部的IDELAY 与IDELAY_CTRL 电路。图5 表示了边沿检测以及数据通道电路。 在该电路中, DQS 输入到IDELAY 模块, 延迟量初始化为0, 然后延迟量逐次递增, 在这个过程中不断检测延迟后的DQS 的跳变沿, 并将延迟量TAP 值记录下来, 以便计算数据DQ 的延迟量。在图中可看出, 边沿检测和控制逻辑发出DLYRST、DLYCE 和DLYINC 三个信号来控制IDELAY 延迟模块的工作模式。 由于IDELAY 模块的最大延迟阶数为64, 且在Xilinx VirtexTM-4 FPGA 中, 延迟模块的精度TIDELAYRESOLUTION 为75ps, 所以延迟时间最大为75ps*64=4.8ns, 因此当时钟频率低于200MHZ( 周期为5ns) 时, 不可能检测到两个跳变沿, 此时必须采取适当的措施来获得数据延迟量。当64 阶延迟量完成时只检测到一个跳变沿时, 我们认为数据延迟量为检测到第一个跳变沿时的延迟量加上16, 因为四分之一个200MHZ 时钟周期大约为16阶延迟量( 16*75=1.2ns) 即: 延迟后的数据经过IDDR 触发器分别得到上升沿对应的数据和下降沿对应的数据, 然后再通过异步查找表FIFO 使读进FPGA 的数据与FPGA 内部时钟同步方便用户使用。 3 控制器实验结果及结论 该DDR 控制器设计总共占用751 个4 输入LUT, 占总LUT 资源的2%。另外, 设计还使用了3 个DCM。DDR 控制器在Xilinx ISE8.1i 编程环境下实现, 结合ModelSim SE6.1b 进行仿真。板上调试时时钟选为100MHZ, 经测试数据传输及捕获准确无误。 经实验验证该DDR 控制器工作稳定可靠、确实可行, 占用逻辑资源较少, 且具有较高的可移植性, 以及简单方便的用户接口。该DDR 控制器经过简单的修改就可以控制其他型号的DDR SDRAM芯片, 因此可以极大地提高信号处理板的存储容量, 很好的用于高速信号处理系统中。 本文的创新观点是基于Xilinx VirtexTM- 4 FPGA, 利用DCM及内部延迟线等优势, 采用直接时钟捕获技术实现DDR SDRAM控制器。
- 什么是FSL总线(01-03)
- 快速创建存储器接口的设计(10-22)
- Xilinx All Programmable RFSoC 背景资料(02-22)
- 基于FPGA的∑-△D/A转换器的设计与实现(04-23)
- 发射应用中多个高速复用DAC的同步(06-23)
- 一种锁定相位编程可调全数字锁相环设计(06-24)