<?xml version="1.0" encoding="gbk"?> <rss version="2.0"><channel> <title>定阅帖子更新</title> <link>http://www.broadkey.com.cn/XML.ASP</link><description>TEAM Board - 意得法电子</description> <copyright>TEAM 2.0.5 Release</copyright><generator>TEAM Board by TEAM5.Cn Studio</generator> <ttl>30</ttl><item><link>http://www.broadkey.com.cn/Thread.asp?tid=101 </link><title>DDR&amp;nbsp;SDRAM控制器的FPGA实现</title><author>lucy</author><pubDate>2009-11-27 12:35:35</pubDate><description><![CDATA[<strong>摘要：</strong>ＤＤＲ ＳＤＲＡＭ高容量和快速度的优点使它获得了广泛的应用，但是其接口与目前广泛应用的微处理器不兼容。介绍了一种通用的ＤＤＲ ＳＤＲＡＭ控制器的设计，从而使得ＤＤＲ ＳＤＲＡＭ能应用到微处理器中去。
<div>&nbsp;&nbsp; <strong>关键词：</strong>ＤＤＲ ＳＤＲＡＭ控制器 延时锁定回路 ＦＰＧＡ</div>
<div>ＤＤＲ ＳＤＲＡＭ是建立在ＳＤＲＡＭ的基础上的，但是速度和容量却有了提高。首先，它使用了更多的先进的同步电路。其次，它使用延时锁定回路提供一个数据滤波信号。当数据有效时，存储器控制器可使用这个数据滤波信号精确地定位数据，每１６位输出一次，并且同步来自不同的双存储器模块的数据。</div>
<div>ＤＤＲ ＳＤＲＡＭ不需要提高时钟频率就能加倍提高ＳＤＲＡＭ的速度，因为它允许在时钟脉冲的上升沿和下降沿读写数据。至于地址和控制信号，还是跟传统的ＳＤＲＡＭ一样，在时钟的上升沿进行传输。</div>
<div>由于微处理器、ＤＳＰ等不能直接使用ＤＤＲ ＳＤＲＡＭ，所以本文介绍一种基于ＦＰＧＡ的ＤＤＲ ＳＤＲＡＭ控制电路。<strong><br />
<br />
<img src="http://www.avrw.com/article/pic/20061118224144734.gif" alt="" /><br />
<br />
１ ＤＤＲ ＳＤＲＡＭ控制器的设计</strong></div>
<div>１．１总体逻辑图</div>
<div>ＤＤＲ ＳＤＲＡＭ控制器的总体逻辑图如图１所示。主要由ＤＤＲ控制模块（Ｃｏｎｔｒｏｌｌｅｒ）、ＤＤＲ接口模块 ｄｄｒ＿ｉｎｔｅｒｆａｃｅ 以及延时锁定回路模块（ＤＬＬ）三部分组成。下面详细介绍各个模块的设计。</div>
<div>１．２ ＤＤＲ控制模块的设计</div>
<div>ＤＤＲ控制模块包含了主要的状态转换。处理器通过ｓｙｓ＿ｃｍｄ对ＤＤＲ控制模块写入命令，完成总线仲裁、解释命令、时序分配等任务。当ＤＤＲ接口模块对ＤＤＲ ＳＤＲＡＲ数据读写时便进行控制。<img border="0" hspace="1" vspace="1" align="right" src="http://www.avrw.com/article/pic/20061118224145580.gif" width="369" height="476" alt="" /></div>
<div>控制器的状态机如图２所示。控制器开始设置在空闲（Ｉｄｌｅ）状态，接下去的状态根据控制命令的不同可以是预充电 Ｐｒｅｃｈａｒｇｅ 、导入模式寄存器 Ｌｏａｄ Ｍｏｄｅ Ｒｅｇｉｓｔｅｒ 、刷新 Ｒｅｆｒｅｓｈ 、有效 Ａｃｔｉｖｅ 等状态。要进入读写数据状态，必须先经过有效状态。读数据时，状态机由有效状态转换为读准备状态 然后根据指令进入读状态。控制模块保持在读状态直到脉冲终止命令触发或者数据读完。写的过程与读类似，在后面的接口模块中将详细介绍。</div>
<div>１．３ ＤＤＲ接口模块</div>
<div>ＤＤＲ接口模块负责维持外部信号、ＤＤＲ控制器与ＤＤＲ ＳＤＲＡＭ之间的双向数据总线信号，保证数据和命令能送达ＤＤＲ ＳＤＲＡＭ。</div>
<div>图３给出了读写操作的数据流框图。对写周期而言，１２８位的ｓｙｓ＿ｄａｔａ＿ｉ被ｆｐｇａ＿ｃｌｋ２ｘ分频为６４位的数据，通过ｌａｃ＿ｃｌｋ选择高低位。为了减小输入输出的延迟，数据在进出模块时都将被保存在输入输出寄存器中。ｄｄｒ＿ｗｒｉｔｅ＿ｅｎ产生ｄｄｒ＿ｄｑ所需的三态信号。</div>
<div>对于写周期而言，６４位的ｄｄｒ＿ｄｑ信号在输入输出寄存器被ｆｐｇａ＿ｃｌｋ２ｘ触发装配成１２８位的信号，其中低位信号在下降沿时被装配，高位信号在上升沿时被装配。</div>
<div>图４给出了一个典型的写操作的波形图。在Ｔ１期间，写命令、地址和第一个１２８位数据被分别置于ｓｙｓ＿ｃｍｄ、ｓｙｓ＿ａｄｄｒ和ｓｙｓ＿ｄａｔａ＿ｉ三个端口。在Ｔ２期间 控制器的状态由空闲转变为有效。接下来两个周期，控制器给出ＡＣＴＩＶＥ命令以及行片选地址。再经３个周期的延迟以后，控制器给出ＷＲＩＴＥＡ命令和列片选地址。接下来，ｄｄｒ＿ｄｑ和ｄｄｒ＿ｄｑｓ被设置成双倍速率模式。<br />
<br />
<strong><img src="http://www.avrw.com/article/pic/20061118224147621.gif" alt="" /><a href="http://www.avrw.com/article/pic/20061118224147621.gif"><br />
</a></strong><br />
&nbsp;&nbsp;&nbsp; １．４ ＤＬＬ模块</div>
<div>图５示出了给ＦＰＧＡ以及ＤＤＲ ＳＤＲＡＭ提供时钟信号的两个ＤＬＬ模块的结构图。第一个ＤＬＬ模块，即ＤＬＬ＿ＥＸＴ给ＤＤＲ ＳＤＲＡＭ提供ｄｄｒ＿ｃｌｋ及ｄｄｒ＿ｃｌｋｂ两个时钟信号，并且接收ｄｄｒ＿ｃｌｋ的反馈。第二个ＤＬＬ模块，即ＤＬＬ＿ＩＮＴ给ＦＰＧＡ提供两个内部时钟信号ｆｐｇａ＿ｃｌｋ和ｆｐｇａ＿ｃｌｋ２ｘ，它的反馈信号来自ｆｐｇａ＿ｃｌｋ。两个ＤＬＬ有着相同的时钟输入，但是不同的反馈信号保证了输入时钟和ＦＰＧＡ时钟以及ＤＤＲ ＳＤＲＡＭ时钟之间的零延迟。<strong><br />
<br />
<img src="http://www.avrw.com/article/pic/20061118224147360.gif" alt="" /><br />
<br />
２ 实现</strong></div>
<div>本设计选用ＸＩＬＩＮＸ公司的Ｖｉｅｔｅｘ－Ｅ系列ＦＰＧＡ来实现，因为这个系列内嵌的ＤＬＬ模块和可选择输入输出.<br />
<br />
<strong><img src="http://www.avrw.com/article/pic/20061118224148371.gif" alt="" /></strong><br />
<br />
&nbsp;&nbsp;&nbsp; 结构的特点能极大地方便设计。仿真结果显示，在１３３ＭＨｚ的主频下，最高能获得１．６ＧＢ／ｓ的速率。</div>
<div>本文给出了基于ＦＰＧＡ的ＤＤＲ ＳＤＲＡＭ控制器的设计。从仿真中可以看出，这种结构的ＤＤＲ控制器有着很高的性能，因此将得到广泛的应用</div>]]></description></item></channel></rss>