DDR2电路设计

在高速大数据的应用中,高速大容量缓存是必不可少的硬件。当前在FPGA系统中使用较为广泛的高速大容量存储器有经典速度较低的单数据速率的SDRAM存储器,以及速度较高的双速率DDR、DDR2、DDR3型SDRAM存储器,DDR系列的存储器都需要FPGA芯片有对应的硬件电路结构支持。对于Altera Cyclone IV系列的FPGA,其最高支持到DDR2存储器(不支持DDR3存储器,到了Cyclone V系列的FPGA才支持DDR3存储器)。芯航线AC6102开发板作为一个高速应用型开发板,为了保证系统的存储带宽和容量,电路上设计了一组32位的DDR2存储器,接口时钟速率可达200MHz,等效数据速率为400MHz,整体系统带宽为32bit*400M = 12.8Gb/s。

DDR2与FPGA连接方式

每片DDR2存储器的容量为1Gb,两片DDR2芯片组合,得到总容量为2Gb。单DDR2存储器为16bit,两片存储器共用控制线和地址线,数据线并列,即组成了32位的2Gb存储模组。

如下图所示:

  • 两片DDR2的CS、WE、CAS、RAS、CLK、CKE、ODT、Addr、BankAddr连接在一起
  • DDR2_1的16位数据线DQ[15:0]作为32位DDR2存储电路的低16位数据线连接到FPGA,即DDR2_DQ[15:0]
  • DDR2_2的16位数据线DQ[15:0]作为32位DDR2存储电路的高16位数据线连接到FPGA,即DDR2_DQ[31:16]
  • DDR2_1的2位DQS和DM分别连接到FPGA上,作为32位DDR2存储电路的DQS[1:0]和DM[1:0]
  • DDR2_2的2位DQS和DM分别连接到FPGA上,作为32位DDR2存储电路的DQS[3:2]和DM[3:2]

DDR2供电设计

DDR2电路使用1.8V供电,为了保证DDR2能够有充足的能量运行,使用了本板供电芯片TPS650243的一路DCDC输出作为DDR2的1.8V供电,

另外,DDR2的参考电源是否稳定也直接决定了DDR2工作的稳定性,DDR2的参考电源电压为工作电压的一半,即0.9V。在一般低成本的设计方案中,可以使用两个1%精度相同阻值的电阻分压得到该电压。AC6102上为了保证DDR2的工作绝对可靠,选择了使用专用的DDR系列存储器供电芯片LP2996M,该电源能够得到精准且稳定的DDRx芯片工作电压的一半的输出作为DDR2参考源(VREF),且能够提供DDRx系列的终端稳压供电(VTT),VTT是在DDR2需要并联终端电阻的时候,为终端电阻供电提供电源,只有在多于2片DDR2芯片并联使用的时候才考虑需要并联终端电阻,本设计仅使用2片DDR2芯片,因此实际实际不需要用到该芯片的VTT输出。

FPGA接DDR2时引脚分配策略

DDR2作为高速大容量存储器,其接口时钟速率高达200M,且为DDR模式,实际接口数据速率为400M。如此高的接口速率下,FPGA的管脚分配也有相当的讲究,根据Altera Cyclone IV系列器件手册的相关说明,当IO口配置在单端模式时,速度等级为C8的器件,上下两个BANK最高能支持167兆的IO速率,而左右两个BANK最高只能支持到133.3M,所以,对于DDR2,需要将引脚分布在BANK3+4或者BANK7+8。当然,如果使用C6的器件,BANK3、4、7、8(即上下bank)的速度可以达到200M、而BANK1、2、5、6(即左右Bank)只能达到166.7M。

即DDR2的引脚分配需要满足以下条件:

  • 希望速度高,尽量分配在BANK3+BANK4或者BANK7+BANK8
  • 数据总线按照8位或16位分组,对于256脚的这种器件,由于每个BANK的引脚数量有限,因此建议低8位和高8位分别分配在同一个Bank中,同时,对应的DQS和DM也应该和DQ数据分组对应分配在相应的BANK中。对于484脚或者引脚更多的器件,则每16位数据线及对应的DQS和DM分配在同一个BANK中
  • DDR2的IO电平为1.8V,所以FPGA上接DDR2的BANK,其IO供电电压应为1.8V
  • 上述提到,DDR2的IO电平味儿1.8V,因此FPGA对应Bank的IO供电电压页应该为1.8V,AC6102上,DDR2与FPGA的BANK3和BANK4连接,因此将FPGA芯片的对应IO BANK供电设置为1.8V,如下图所示:

通过本节介绍,我们了解了FPGA 连接DDR2芯片的电路原理和注意事项,大家可以根据自己的需求,结合我们提供的原理图,设计自己的软硬件系统。如有特殊需求,可联系我们以获取帮助。

千兆以太网电路设计

以太网接口作为一种互联型接口,当下应用非常的广泛。从家用宽带,到服务器数据交换,再到工业控制,各个地方都能看到以太网的身影。FPGA系统使用以太网,则主要用于高速远距离的数据传输,如LED大屏显示、监控系统等。以太网数据链路,也由早期的电话线传输,到后来的专用双绞线,发展到光纤,高频无线电,以及现在比较新颖的LIFI。

以太网与FPGA连接

AC6102开发板上,提供了一个千兆以太网接口,该接口由千兆以太网PHY和网络变压器接口组成。当需要发送以太网数据时,FPGA把数据发送给PHY芯片,PHY芯片将数据编码后,通过网络变压器将数据加载到网线上。数据经由网络传递到接收方。远端发送过来的数据,经由网线传递给网络变压器,网络变压器的输出连接到PHY芯片上,PHY芯片对信号进行解码后,得到实际的数据,然后将数据传递给FPGA芯片。FPGA实现千兆以太网数据传输的功能框图如下所示:

模式配置

RTL8211是一款支持GMII、RGMII、MII接口的以太网物理层收发器,能够工作在100M Base或1000M Base模式。接口可设置为GMII、RGMII、MII接口。并提供了若干引脚用于配置工作模式。

AC6102默认使用GMII接口,实现该配置的方法是将对应的配置引脚E_COL(对,就是这个引脚,芯片在上电时会检测该引脚的状态,并根据该引脚的状态确定工作模式,正常工作时又是正常的COL功能)通过10K的电阻接到GND。

以太网物理层芯片都有一个器件地址,该地址可通过外部引脚设置,上图中,R20、R21、R24通过连接到VCC或者GND,决定了芯片的器件地址为001b。当然,这些状态也仅在芯片上电时刻被读取,当芯片正常工作后,这些引脚就又恢复了普通功能。

与FPGA引脚连接
AC6102上以太网电路所有与FPGA相连的信号都被分配在了FPGA的BANK8,以获得更加理想的时序约束效果。以下为RTL8201芯片与FPGA之间的连接关系。

【小梅哥FPGA进阶学习之旅】基于Altera FPGA 的DDR2+千兆以太网电路设计的更多相关文章

  1. WCF学习之旅—基于Fault Contract 的异常处理(十八)

       WCF学习之旅—WCF中传统的异常处理(十六) WCF学习之旅—基于ServiceDebug的异常处理(十七) 三.基于Fault Contract 的异常处理 第二个示例是通过定制Servic ...

  2. 【转】简谈基于FPGA的千兆以太网

    原文地址: http://blog.chinaaet.com/luhui/p/5100052903 大家好,又到了学习时间了,学习使人快乐.今天我们来简单的聊一聊以太网,以太网在FPGA学习中属于比较 ...

  3. 千兆以太网TCP协议的FPGA实现

    转自https://blog.csdn.net/zhipao6108/article/details/82386355 千兆以太网TCP协议的FPGA实现 Lzx 2017/4/20 写在前面,这应该 ...

  4. 【重新发布,代码开源】FPGA设计千兆以太网MAC(1)——通过MDIO接口配置与检测PHY芯片

    原创博客,转载请注明出处:[重新发布,代码开源]FPGA设计千兆以太网MAC(1)——通过MDIO接口配置与检测PHY芯片 - 没落骑士 - 博客园 https://www.cnblogs.com/m ...

  5. WCF学习之旅—基于ServiceDebug的异常处理(十七)

    WCF学习之旅—WCF中传统的异常处理(十六) 二.基于ServiceDebug的异常处理 从前面的示例中,可以看到客户端捕获了异常,这是我们处理异常的前提.为了有利于我们进行有效的调试,WCF提供了 ...

  6. FPGA设计千兆以太网MAC(2)——以太网协议及设计规划

    上篇该系列博文中通过MDIO接口实现了PHY芯片的状态检测,验证其已处于1000M 全双工工作模式.在设计MAC逻辑之前,要先清楚MAC与PHY之间的接口以及以太网协议细节,这样才能保证网络的兼容性. ...

  7. 【转】基于TMS320C6455的千兆以太网设计

    基于TI公司最新DSP芯片TMS320C6455.设计并实现了以太网通信软硬件接口.采用TMS320C6455片内以太网接口模块EMAC/MDIO,结合片外AR8031 PHY芯片,在嵌入式操作系统D ...

  8. iOS开发|从小公司到进大厂,我的进阶学习之旅!

    iOS高级进发 OC源码下载地址 苹果开发文档 如何阅读苹果开发文档 GNUstep是GNU计划的项目之一,它将Cocoa的OC库重新开源实现了一遍 源码地址:http://www.gnustep.o ...

  9. FPGA设计千兆以太网MAC(3)——数据缓存及位宽转换模块设计与验证

    本文设计思想采用明德扬至简设计法.上一篇博文中定制了自定义MAC IP的结构,在用户侧需要位宽转换及数据缓存.本文以TX方向为例,设计并验证发送缓存模块.这里定义该模块可缓存4个最大长度数据包,用户根 ...

随机推荐

  1. 清理session的案例

    and OPNAME ='Sort Output'; and OPNAME ='Sort Output'; and OPNAME ='Sort Output' ); select 'alter sys ...

  2. Thinking in Java——笔记(12)

    Error Handling with Exceptions The ideal time to catch an error is at compile time, before you even ...

  3. laravel的门面模式

    核心技术是__callStatic()方法,当调用的方法不存在时,会自动调用魔术方法__callStatic()方法,和__autoload()方法同工异曲.

  4. app活动页面上的痛点

    app项目上需要做一个小的活动,先看下页面布局 需求是这5个板块逐个展示,展示一块的时候,页面整体向上滚动一定的距离. 刚开始考虑的时候,是准备依赖css3属性的transition实现的,包括顺序延 ...

  5. PostgreSQL windows service启动失败

    from: http://stackoverflow.com/questions/1251233/unable-to-run-postgresql-as-windows-servicepg_ctl - ...

  6. 关于swap函数传值的问题

    #include <stdio.h> void swap(int * p3,int * p4); int main() {  int a = 9;  int b = 8;  int * p ...

  7. Javascript基础知识总结一

    Javascript基础知识总结一 <!DOCTYPE html> <html> <head lang="en"> <meta chars ...

  8. Docker的镜像

    镜像是容器的运行基础,容器是镜像运行后台的形态 镜像的概念 镜像是一个包含程序运行必要依赖环境和代码的只读文件,它采用分层的文件系统,将每一次改变以读写层的形式增加到原来的只读文件上 镜像的系统结构 ...

  9. 终端检测HTTPS服务端

    nscurl --ats-diagnostics --verbose https:ssl.tianwensm.xyz

  10. VSO-Branch和Merge

    分支策略 一般采用一个MAIN分支,一个或多个DEVELOPMENT分支的分支结构,如下图(来自:https://msdn.microsoft.com/en-us/library/ee782536.a ...