打印
[Quartus]

如何产生差分时钟输出?

[复制链接]
19039|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhushouxi|  楼主 | 2012-6-19 21:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用的是spartan6,输入时钟为单端,想要输出差分时钟,时钟ip核似乎没这个功能(有差分时钟输入),也没找到可用的原语,该怎么解决呢?

相关帖子

沙发
weiwenty| | 2012-6-19 21:59 | 只看该作者
OBUFDS

使用特权

评论回复
板凳
zhushouxi|  楼主 | 2012-6-19 22:07 | 只看该作者
2# weiwenty
一直在时钟组件里没找到,用IO端口里的原语不知会不会对时钟进度产生影响,先试试看

使用特权

评论回复
地板
foreverly| | 2012-6-19 22:35 | 只看该作者
没碰到过,等看结果。

使用特权

评论回复
5
5509| | 2012-6-20 10:44 | 只看该作者
如果DCM 相移180度能否解决这个问题?

使用特权

评论回复
6
probug| | 2012-6-20 13:46 | 只看该作者
可以将单端的时钟经过一个OBUFDS原语,它是FPGA自带的基元

使用特权

评论回复
7
Backkom80| | 2012-6-20 13:56 | 只看该作者
本帖最后由 Backkom80 于 2012-6-20 16:15 编辑

DCM相移180度不行,共模的值不对
差分有两个参数呢,一是共模,一是差模,
P和N确实是反相的两信号,但不能将某一信号来个反相信号搞在一起就称为差分信号。

使用特权

评论回复
8
missnihao| | 2012-6-20 15:38 | 只看该作者
我是来等答案的哈哈

使用特权

评论回复
9
joker319| | 2012-6-20 16:00 | 只看该作者
期待高手给答案,好好学习.

使用特权

评论回复
10
zhushouxi|  楼主 | 2012-6-20 16:27 | 只看该作者
只用OBUFDS是不行的,编译报错,错误内容如下
/////////////////////////////////////////////////////////////////////////////////////////
ERROR:Place:1205 - This design contains a global buffer instance,
   <OUT20_40M/clkout2_buf>, driving the net, <CLK_OUT40M>, that is driving the
   following (first 30) non-clock load pins off chip.
   < PIN: MyPrimitive/ADCLK400M_P.O; >
   This design practice, in Spartan-6, can lead to an unroutable situation due
   to limitations in the global routing. If the design does route there may be
   excessive delay or skew on this net. It is recommended to use a Clock
   Forwarding technique to create a reliable and repeatable low skew solution:
   instantiate an ODDR2 component; tie the .D0 pin to Logic1; tie the .D1 pin to
   Logic0; tie the clock net to be forwarded to .C0; tie the inverted clock to
   .C1. If you wish to override this recommendation, you may use the
   CLOCK_DEDICATED_ROUTE constraint (given below) in the .ucf file to demote
   this message to a WARNING and allow your design to continue. Although the net
   may still not route, you will be able to analyze the failure in FPGA_EditERROR
/////////////////////////////////////////////////////////////////////////////////////////
上面大致内容是:时钟驱动片外非时钟端口,在Spartan-6中会导致全局网络布线受限,即使布线
后,会导致过大的延迟和抖动,两种改进方法:1.在OBUFDS前使用ODDR2。 2.在UCF中使用专
用约束语句, < PIN "OUT20_40M/clkout2_buf.O" CLOCK_DEDICATED_ROUTE = FALSE; >
忽略错误,但会给出警告。
    本次采用方法一,编译通过,结果还待测试。

使用特权

评论回复
11
hawksabre| | 2012-6-22 18:58 | 只看该作者
当时钟频率很高时,常采用差分时钟对的输入形式.Xilinx、Altera对差分时钟输入的处理是不同的。Altera仅仅需要一个Pin就可以实现,但必须在管脚约束时指定管脚的电平类型。Xilinx需要两个时钟输入端。具体使用细节可以参照Xilinx的相关文档。

Xilinx:
需要在程序中显性的表示出有2个时钟输入端,在程序内部将这两个差分成对的时钟送入一个IBUFGDS(在ISE 的language assistant中有模板)。

Altera:
从程序中,与一般的单时钟输入完全相同,看不出时钟是否是差分输入,仅在约束文件中,指定管脚的电平类型时,选择lvds,而不是一般的lvttl.由于工程师的习惯,可以通过两种途径实现,一种是直接修改xx.qsf文件,一种是在GUI界面下直接对Pin 属性进行约束.两者的效果一致.

使用特权

评论回复
12
zhushouxi|  楼主 | 2012-6-22 19:54 | 只看该作者
12# hawksabre
你说的是差分时钟输,这个xilinx IP中就可以设置,而此次要得到的是差分时钟输出,用来 输出给外部芯片

使用特权

评论回复
13
yzm520xilinx| | 2012-6-24 09:53 | 只看该作者
Spartan6只能使用ODDR2来产生差分输出。

使用特权

评论回复
14
ping2010| | 2013-2-24 11:13 | 只看该作者
我也遇到这个问题,谢谢分享。
另外搜到一篇稍详细的解决方法,可参考
http://www.**blog/html/04/869304-26543.html

使用特权

评论回复
15
bestray| | 2014-9-1 11:36 | 只看该作者
OBUFDS

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

51

帖子

0

粉丝