数字DDR PHY

来源:互联网 发布:15套java架构师 云盘 编辑:程序博客网 时间:2024/06/08 19:04

   在ASIC的设计中,PHY是经常要遇到的,它是链接数字逻辑和物理电路的必要环节。通常这部分设计由模拟电路来完成,但是这很可能就意味着局限在某个固定的厂家或者工艺上。

   在这之前,我有机会针对DDR2设计了一个数字PHY。虽然在实现上仍然要和后端的工程师有比较密切和有效的沟通,但是对于数字PHY,毕竟在很大程度上不再依赖厂家和工艺,这至少的商务上提供了很大的灵活性。

 

  其实DDR的PH在逻辑上简单的,只要由3部分构成:延时链、控制信号逻辑、数据信号的串并转换。

 

  延时链,这个部分是和普通数字电路区别最到的地方:普通的数字设计希望延时越下越好,最好没有延时;但是这里要用到的恰恰就是门电路的基本延时特性。虽然写出来就是简单的buffer和mux,但是在挑选器件时却要小心,要选用那些上升沿和下降沿时间特性一至的期间。而且在后端实现时,还要考虑到“线”延时对远端延时但愿带来的额外延时。延时电路的好坏,直接决定PHY是否能工作。

   控制信号的处理其实是相对简单的。只要你正确的处理时序,并选择好时钟沿,将其按照一定的顺序发送出去就好。

   数据的处理是比较复杂的。这里要处理2个信号:DQ和DQS。当然你也可以将DM归于此类。这里要处理的就是时钟的延时和串并时的时钟顺序。如果时钟顺序设计的好,那么将对实现提供很大的冗余度,反之,将会使后端变成灾难。而此时,你也会明白延时链的精度其实就意味着你实现的成功率。

   当然必要检测逻辑也是要有的,以保证当PHY接受到不正常的时序时能返回正常的状态。

   管脚的选用其实没什么可说的,必须用DDR专用的管脚。CK和CKN要用差分输出管脚。很不幸,我的厂家没有给我提供这样的差分管脚。我用匹配的clock器件输出,并在transerve上做了必要的调整。实践证明还是可以工作的。

   PHY既然是数字逻辑,就设计到测试。本来我是不主张再做测试电路的,因为这很可能会使时序变差。尤其是其中的延时链和DQ的最后一级,逻辑上就是不可能去做测试电路的。当然本着严格的数字设计思想,我现在正在努力在新的一版中将测试加上去。

 

  设计PHY对于一个数字前端工程师来说确实是一个不大不小的挑战。我在近10年的设计中还是第一次做数字PHY的设计,在这之前,我曾经企图设计数字的USB  PHY,但是由于USB的PHY已经比较便宜,就放弃了。在DDR的PHY的设计中,我更体会到时序对数字逻辑意味着什么。现在的数字设计越来越变的像是写软件了,对功能的重视越来越高,对测试的依赖越来越大,但是不重视对时序的理解,将大大的延缓设计的周期。一个好的前端工程师是要能将正确的时序时刻存放在心里的。要能清楚的理解自己手下写的代码对应的电路面积和延时,而这种修炼可能要很长的时间。

原创粉丝点击