原创 SDR数据输出的较佳方式

2010-3-17 11:05 3157 9 11 分类: FPGA/CPLD

                     

SDR数据输出的较佳方式 (by Wind330)

   

概述

FPGA的常用场合用于数据接口转换,DSP运算等,而这一切的前提都需要数据能正确的输入至FPGA,并正确的输出至外部芯片。

SDR输出实现方法

wind330工作大部分涉及数据接口的转换,其中最常用的数据传输方式就是 SDR(Singal Data Rate) ,如何保证数据能被外部器件正确接收,也即保证数据信号与时钟信号存在一个稳定的相位差,而最好的情况是时钟信号的采集边沿处在数据信号的正中央,即 Center Aligned 。中心对齐(Center Aligned)确保下一级芯片有二分之一时钟周期的建立时间和保持时间。

那如何保证FPGA的数据流输出是中心对齐?wind330在学习FPGA前期的理解是,将数据输出寄存器约束在IO模块上,并将时钟取反(相移180°)输出。从原理上说,这种方法并没有错,但是在FPGA实际使用过程中,我们无法预知时钟信号是通过如何路径到达IO口的,在器件资源利用差异较大时,时钟路径也会产生较大的差异。也许有人会说,FPGA的全局时钟资源不是通过专用布线资源到达整个器件吗?wind330在博文BUFGMUX使用注意事项就有提到:全局时钟资源只能到达每个Slice中的FlipFlop,并不包括Slice中的LUT等资源,也就是全局时钟资源不会直接连至IO口,需要用普通布线资源到达IO口。

后来慢慢地,学会了给时钟输出路径添加约束,只要设置合理,就能保证后级器件的建立时间和保持时间。还是觉得麻烦,总是需要查阅器件IO特性和计算,于是就有了下面的方式。

DDR方式输出时钟

从CycloneIII开始,IO模块就里有5个Registers,可以查阅博文Cyclone2 vs Cyclone3(二),而Spartan3更是有6个Registers,所有IO都支持DDR输入和输出。

Xilinx参考代码如下:

  CLKOUT : FDDRRSE
    port map (
      Q  => CLKO,
      C0 => CLK180,
      C1 => CLK,
      CE => '1',
      D0 => '1',
      D1 => '0',
      R  => '0',
      S  => '0');

利用这种方法,时钟输出和数据输出都是通过IO模块的寄存器输出,而触发时钟到达各个寄存器的skew可以忽略不计,保证了数据和时钟信号是中间对齐的,对任何时钟频率都适用。

 
PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户1122702 2010-3-22 09:20

可以,调整输入数据信号线的延时,最好的方法是确认输入时钟与输入数据线的相位差,然后做好输入接口的时序约束。

用户62408 2010-3-21 12:54

请教一个问题:如果外部输入的时钟和数据信号经过板上走线到达FPGA时的时序已经变得不太好了(如:时钟沿不能在数据的中间),那么,在FPGA内部能否做以处理,来进行改善呢?如果可以,又应该如何处理?谢谢!

用户900892 2007-7-27 15:20

现在深圳太热了!不到必不得已.打死不出门!

 

用户900892 2007-3-5 11:56

在深圳特区,公园的山坡上白天一年四季都有人!人还不少!

晚上也能隐隐约约看到草地上一对一对的。

再问:谁没有过花前月下?哈哈

用户1053025 2007-3-2 09:55

那你的同事,一定是晚上出去瞎逛悠了。北方的冬天是没有户外夜生活滴。。。

用户900892 2007-3-1 16:11

深圳不能和北京比,

我有同事在北京边出差,回来就给我们大讲特讲北京的晚上有多冷!我没有到过北方,不知他说的是不是真的。

用户19679 2007-3-1 15:40

羡慕啊,北京今年虽然暖冬,但是回来还是很冷得说

相关推荐阅读
用户1122702 2015-12-20 21:29
在Emacs中应用Ctags
适宜人群 具备Emacs使用经验的程序员 什么是Tag? Tag,即标记,记录了程序重要信息(如函数、变量、宏定义等)的位置和相应的文件,方便程序浏览器进行跳转。 ...
用户1122702 2015-12-13 22:23
可综合的SystemVerilog:命名空间
关键名词解释: 编译单元(compilation unit):SystemVerilog 源代码的集合 编译单元域(compilation-unit scope):即编...
用户1122702 2015-12-13 22:15
可综合的SystemVerilog:参数化函数/任务
在Verilog中,参数化模块被广泛应用。参数可重新定义保证模块的可配置性及可复用性。但是,函数及任务并无法像模块一样被参数化,减弱了Verilog的描述化能力。 SystemVer...
用户1122702 2010-10-28 11:34
基于SOPC下RapidIO调试方法
RapidIO的一个难点在于地址转换方法,即将远端的Memory映射到当前Avalon-MM总线,所以地址需要一个转换过程——Local Avalon-MM<->RapidIO Addr&...
用户1122702 2010-08-24 14:22
西行重庆
八月初时离开生活并工作四年的深圳,来到求学四年的重庆。已经过去三周时间,对自己的将来也随之变的不可琢磨。重庆的生活水平并不如想象的低,除了房价不像沿海城市高企,其他诸如公共交通,生活日常用品基本都是一...
用户1122702 2010-07-07 18:05
Tcl用后感
                    Tcl用后感 (by Wind330)    Tcl - Tool Command Language近期做了一个Tcl脚本用于Modelsim仿真,完成如下功能...
EE直播间
更多
我要评论
2
9
关闭 站长推荐上一条 /3 下一条