热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于CycloneIIIFPGA的DDR2接口设计-mysql教程

欢迎进入IT技术社区论坛,与200万技术人员互动交流进入DDRSDRAM是DoubleDataRateSDRAM的缩写,即双倍速率同步动态随机存储器。DDR内存是在SDRAM内存基础上发展而来的,能够在时钟的上升沿和下降沿各传输一次数据,可以在与SDRAM相同的总线时钟频率下

欢迎进入IT技术社区论坛,与200万技术人员互动交流 >>进入 DDR SDRAM是Double Data Rate SDRAM的缩写,即双倍速率同步动态随机存储器。DDR内存是在SDRAM内存基础上发展而来的,能够在时钟的上升沿和下降沿各传输一次数据,可以在与SDRAM相同的总线时钟频率下

欢迎进入IT技术社区论坛,与200万技术人员互动交流 >>进入

>  DDR SDRAM是Double Data Rate SDRAM的缩写,即双倍速率同步动态随机存储器。DDR内存是在SDRAM内存基础上发展而来的,能够在时钟的上升沿和下降沿各传输一次数据,可以在与SDRAM相同的总线时钟频率下达到更高的数据传输率。虽然DDR2和DDR一样,都采用相同采样方式进行数据传输,但DDR2拥有两倍于DDR的预读取系统命令数据的能力。也就是说,在同样100MHz的工作频率下,DDR的实际频率为200MHz,而DDR2则可以达到400MHz。DDR2还引入了三项新的技术,它们是OCD、ODT和Post CAS。

  我们的设计(图1)采用Altera公司Cyclone III系列型号为EP3C16F484C6N的FPGA作为控制器,以Micron公司生产的型号为MT47H16M16BG-5E(16M×16bit)的DDR2 SDRAM为存储器。用一个IP核完成对4片DDR2的控制(带宽为64bit),且DDR2的最高速率可达200MHz,以此完成对数据的高速大容量存储。由于采用一个DDR2的IP核进行控制,所以4片DDR2以地址和控制线共用、数据线独立的方式进行管脚连接。

  图1 接口总框图

  EP3C16只有TOP和BOTTOM边的BANK支持200MHz DDR2接口(因为DDR2管脚的特殊要求,DQS、DQ、DM管脚在FPGA上都需要专用管脚),且最高速率可达200MHz。

  表1中Column I/O是指Top和Bottom I/O,Row I/O是指Right和Left I/O。Hybrid mode是指由Column和Row I/O混合。

  从表1中可以看出,Cyclone III只有6系列的FPGA在Top和Bottom BANK才支持200MHz频率的DDR2。为了满足设计要求,我们将4片DDR2分别挂在FPGA的Top和Bottom的4个BANK。

  表1 FPGA BANK管脚速度

  从表2中可以看到,EP3C16 F484封装系列的FPGA每个边所支持的DQS和DQ组。因为在DDR中若干个DQ是由一个DQS进行采样的,所以FPGA以若干个DQ和一个DQS为最小单位进行分组。

  表2 FPGA BANK DQ

  如Number of ×8 Groups,其中×8就是指8个DQ,一个DQS即和8个DQ组成一个Group(即这8个DQ由这一个DQS进行采样)。FPGA分别有Left、Right、Top和Bottom四边,其表示FPGA的每边都支持4个DQS和DQ组,而每一边有两个Bank,即每个Bank都支持两个×8架构的DQS和DQ组。图2展示了FPGA的DQS和DQ组的分配。

  由于设计中采用Top和Bottom边的Bank,这里以第3个Bank的DQS为例进行说明。在图2可以看到,FPGA的Bank3有三个DQS,分别为DQS1B、DQS3B和DQS5B。由于每组DQ都要和各自对应的DQS配对,所以理论上DQS1B应该和DQ1B为一组,DQS3B应该和DQ3B为一组,DQS5B应该和DQ5B为一组。

  图2 FPGA BANK DQS/DQ

  表3中展示了FPGA管脚中的DQ分配。可以看到,对于×8架构的DDR2,Bank3只有DQ3B和DQ5B,且DQ3B和DQ5B各自都有9个,DQS1B其实没有属于自己的DQ。其实在Bank4中还有1个DQS2B和8个DQ2B,1个DQS4B和8个DQ4B。

  而对于×16架构的DDR2,则有18个DQ3B和1个DQ5B,DQS1B没有属于自己的DQ,其实在Bank4中还有17个DQ5B,这样在Bank3和Bank4中一共就有18个DQ5B。

  表3 FPGA BANK Pin

  在×32架构的DDR2中则有19个DQ5B,没有DQ1B和DQ3B,在Bank4中还有17个DQ5B,这样在Bank3和Bank4中一共就有36个DQ5B。

  对于×9/×18/×36这里暂不讨论,其为QDRII SRAM设计,其多余DQ做奇偶校验使用。

  表4 不同架构DDR2的支持数量

  从表4可以看出FPGA是如何支持不同架构的DDR2的,还可以知道同一组的DQ不一定在同一个Bank,不是每个DQS都有自己的DQ,即使DQS有自己的DQ,其DQ数量也不一定相同。

  图3 FPGA DQ/DQS Pin

  除了DQS和DQ外,DM也有自己专用的管脚,在DDR中DM为数据信号(DQ)屏蔽位,由于DM是以8bit为单位起作用的,所以理论上只要有8个DQ便会有一个DM。事实上在FPGA的Bottom边Bank中DM的分配如表5所示。

  表5 FPGA的Bottom边Bank中DM的分配

  了解清楚FPGA中的DQS,DQ和DM分配,我们再来看看DDR2的架构。DDR2选用Micron生产的MT47H16M16BG-5E,其大小为16M×16bit,每一片分为4个Bank,每个Bank为4M×16bit。如果看到×16,你就认为这是一片×16架构的DDR2,再按照FPGA上×16架构的管脚去设计,那就大错特错了。

  虽然该DDR2是16位的带宽,但其却有两个DQS,分别是LDQS和UQDS,也就是说其实两个DQS分别采样低8位和高8位数据。请注意,即使是32位带宽的DDR,其也有4个DQS,每个DQS也仅采样8位数据。至于有没有一个DQS能采样16位或32位数据的DDR,这就不为人知了。

  确定了DDR2的架构,就确定了DDR2和FPGA的DQS,DQ和DM的连接方式。由于我们采用的是×8架构的DDR2,所以一组内的DQ仅需要8个,而有的DQS带有9个DQ,在选用该DQ的时候只要任意选取其中的8个就可以。

  在SSTL-18电平标准中,为了实现更高的信号频率,输入信号需要和一个参考电压(VREF)进行比较输出后才被认为是实际输入。因为DDR2采用1.8V的SSTL电平进行数据传输,所以DDR2所在FPGA 的Bank电压必须是1.8V,FPGA就必须在该Bank使用VREF参考电压。在FPGA的每个Bank都有两个VREF参考电压输入,该Bank的I/O分属这两个VREF组,如在Bank3存在VREFB3N0和VREFB3N1。

  当FPGA的一个Bank存在VREF输入或双向的管脚时,为了防止输出的开关噪声转移到VREF和限制输送到VCCIO的噪声水平,FPGA输入输出IO的位置有如下限制(BGA封装的FPGA):

  每个VREF最多支持32个输入;

  在Top和Bottom Bank每12个连续的管脚最多只支持9个输出。在Right和Left Bank每14个连续的管脚最多只支持9个输出;

  在VREF和输出管脚(除了DQ和DQS)之间必须用两个输入或空脚进行隔离。一般是空着,因为输入会因为输出管脚引来的噪声而导致读入不正确;

  如果不需VREF参考,一般在一个BANK中只要全部是同组数据总线或地址总线时,输出个数不受限制(即受同一个OE控制的不受限制)。如果不是同一个OE控制就要满足上面约束关系,以及驱动型接口要考虑驱动能力。

  图4所示,输出脚必须和VREF用两个输入或空脚进行隔离。另外,由于DDR2的地址和控制线都是输出管脚,所以在手动分配管脚的时候很容易超出2所述的限制,而且FPGA是BGA封装,只从SYMBOL上很难看出管脚的连续性。FPGA的管脚在外部看来是方阵排列,但其在FPGA的内部却是线性的排列,所以硬件设计时最好通过软件去看管脚的连续性。在原理图设计分配DDR2所在Bank的输出管脚时,建议采用Quartus II软件自动分配,这样才能更好地避免错误。

  图4 FPGA Output Pad

  此外,还要注意:

  在Cyclone III系列的FPGA中,不支持差分的DQS,该FPGA的IP只在写模式下用到DQS,在读数据时不用(因为IP复位时IP会发送接收训练序列自校正产生捕获时钟);

  多余不用的DQ可以当做普通I/O使用;

  Quartus II软件自动分配管脚时不会区分同一组的DQ和DM,即DQ和DM可以互换(在EP3C16时仅有TOP边的DQ和DM可以互换);

  DDR2的地址和控制线在FPGA上没有专用管脚,可以任意使用其它IO(只要符合输入输出位置限制);

  可以使用任何一对临近的差分I/O管脚当作DDR2的时钟。


推荐阅读
  • 本文对唐代诗人王建的《泛水曲》进行详细的赏析和翻译,探讨其文学价值及艺术特色。 ... [详细]
  • 探讨《深入理解计算机系统》一书中关于寄存器保存规则的理解难题,特别是调用者保存寄存器的使用与恢复机制。 ... [详细]
  • 软件项目管理实践——Jenkins持续集成与Maven、GitHub的应用
    本文详细介绍了如何利用Jenkins实现持续集成,以及Maven和GitHub在项目开发中的具体应用。包括环境搭建、工具安装、项目创建及代码管理等关键步骤。 ... [详细]
  • 本文详细介绍了在Hive中创建表的基本语法,包括临时表、外部表的创建方法,以及如何设置表的各种属性和约束条件。 ... [详细]
  • 浩方对战平台账户注册指南
    作为一款深受学生和年轻人喜爱的游戏对战平台,浩方对战平台不仅提供了如《魔兽RPG》、《星际争霸》等经典游戏的对战环境,还是许多玩家交流技巧、结交朋友的好去处。本文将详细介绍如何轻松完成浩方对战平台的账户注册。 ... [详细]
  • InnoDB中Serializable隔离级别的实现机制
    在数据库的最高隔离级别——Serializable下,当一个事务(如事务A)正在对某一行进行修改时,任何其他试图读取或修改该行的事务(如事务B)都必须等待,直到事务A完成并释放其写锁。这一机制确保了所有操作都能以一种线性化的顺序执行,避免了并发带来的数据不一致问题。 ... [详细]
  • Kafka 示例项目中 Log4j 的配置与调试
    本文详细介绍了如何在 Kafka 源码中的示例项目配置 Log4j,以确保能够正确记录日志信息,帮助开发者更好地理解和调试代码。 ... [详细]
  • 本文介绍如何利用Python中的Epoll机制构建一个高效的Web服务器,该服务器能够处理多个并发连接,并向每个连接的客户端返回预定义的响应文本。通过使用Epoll,服务器可以实现高性能的I/O多路复用。 ... [详细]
  • 多版本CUDA共存与即时切换方案
    本文探讨了在同一台机器上安装并管理多个CUDA版本的方法,以适应不同软件或项目的需求。特别是在使用旧版PyTorch等依赖特定CUDA版本的软件时,该方法尤为实用。 ... [详细]
  • 一、数据更新操作DML语法中主要包括两个内容:查询与更新,更新主要包括:增加数据、修改数据、删除数据。其中这些操作是离不开查询的。1、增加数据语法:INSERTINTO表名称[(字 ... [详细]
  • 本文提供了唐代诗人高瑾的《晦日重宴》一诗的现代汉语翻译及其艺术特点的赏析。 ... [详细]
  • 本文详细介绍了如何通过Percona插件监控MySQL 5.7数据库,包括环境准备、插件安装、配置调整及数据测试等步骤,旨在为用户提供一个高效且稳定的监控解决方案。 ... [详细]
  • 本文介绍了如何通过安装 VirtualBox 和 Vagrant 来快速搭建和管理虚拟机环境。我们将详细探讨如何选择合适的 Box 镜像,以及如何高效地下载、添加和管理这些镜像。 ... [详细]
  • Django框架的使用教程mysql数据库[三]
    Django的数据库1.在Django_test下的view.py里面model定义模型fromdjango.dbimportmodels#Createyourmodelshere ... [详细]
  • HTML中用于创建表单的标签是什么
    本文将详细介绍HTML中用于创建表单的标签及其基本用法,包括表单的主要特性和常用的属性设置。如果您正在学习HTML或需要了解如何在网页中添加表单,这将是一个很好的起点。 ... [详细]
author-avatar
mobiledu2502885523
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有