打印

xilinx的普通IO引脚能否有类似于altera的PLLout?

[复制链接]
7118|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
钻研的鱼|  楼主 | 2011-2-27 08:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
dianzirobot| | 2011-2-27 11:41 | 只看该作者
一起学习,关注ING

使用特权

评论回复
板凳
coco11| | 2011-2-27 16:52 | 只看该作者
坛子里好像有个关于时钟的贴子,楼主找一下。

使用特权

评论回复
地板
老大的幸福| | 2011-2-27 17:42 | 只看该作者
有吗?没注意到

使用特权

评论回复
5
SuperX-man| | 2011-2-28 12:35 | 只看该作者
在ISE中用的是全局时钟配置,对齐或者有额外要求的可以通过约束来控制

使用特权

评论回复
6
奔腾2.0| | 2011-2-28 13:08 | 只看该作者
看看

使用特权

评论回复
7
钻研的鱼|  楼主 | 2011-3-1 08:35 | 只看该作者
小版能不给个例子?通过加约束,调整PLL的相位严格对齐,我觉得有点难。在从dcm输出到外部引脚输出,这中间是长度可变的线,altera的pllout已经考虑了这部分延迟,xilinx的dcm好像从来没有考虑

使用特权

评论回复
8
atua| | 2011-3-1 08:46 | 只看该作者
是指在外部管脚上输出的时钟信号和输入的时钟信号对齐吗?没看懂啊

使用特权

评论回复
9
SuperX-man| | 2011-3-1 12:34 | 只看该作者
小版觉得DCM的作用是专门处理时钟信号,在FPGA内部达成一个可靠有效的时钟依托. 可能并没有想直接作为一个外部次级时钟信号.
小版的建议如下
1.在ISE中有Timing Constraints.可以看ug612中的Output Timing Constraints. 26页
2.在IO端加ODDR和BUFG,虽然多加了一个component,但是可以比较好的达到你的预期效果.ODDR的描述在我传的附件中的62页.

Spartan-6 FPGA selectIO ug.pdf

3.23 MB

使用特权

评论回复
10
dan_xb| | 2011-3-1 16:34 | 只看该作者
这个问题其实很奇怪,这个你是用Altera的思维来思考这个问题。其实这根本就不应该是一个问题。
我们抛开什么Altera、Xilinx还有神马的公司,你觉得源同步的设计时钟和数据应该怎么同步?
他们不应该是输出的时候就是同步的吗?还需要我们来搞东搞西的。

其实解决方式很简单,你输出数据的时候,应该要经过一个FF,无论ASIC或者FPGA都应该这样。
你为了同步,时钟经过一个同样的FF就可以了

对于Xilinx的器件,这个是这样实现的:
  (* IOB = "FORCE" *)
  always @(posedge clk)
    dataout<=data;
       
  ODDR #(
      .DDR_CLK_EDGE("OPPOSITE_EDGE"), // "OPPOSITE_EDGE" or "SAME_EDGE"
      .INIT(1'b0),    // Initial value of Q: 1'b0 or 1'b1
      .SRTYPE("SYNC") // Set/Reset type: "SYNC" or "ASYNC"
   ) ODDR_d (
      .Q(clkout),   // 1-bit DDR output
      .C(clk),   // 1-bit clock input
      .CE(1), // 1-bit clock enable input
      .D1(0), // 1-bit data input (positive edge)
      .D2(1), // 1-bit data input (negative edge)
      .R(0),   // 1-bit reset
      .S(0)    // 1-bit set
   );
dataout和clkout接到端口上

使用特权

评论回复
11
钻研的鱼|  楼主 | 2011-3-2 08:23 | 只看该作者
很多时候,譬如ADC数据采集,当不是高速ADC芯片,它一般不输出时钟。但它的数据需要送到fpga内部,这样的话,fpga的时钟和ADC的时钟就需要同步。解决方法,一个晶振出来时钟分两路,一路给fpga,一路给ADC,时钟频率不高还可以,如果是100M或者200M的差分,就不是很好办了。还有一个方法,加时钟分配器,但多了一个器件,增加成本。altera的方法就很有优势。
   10楼的方法是输出数据和时钟同步,如果我的数据是双向的,如何处理?一个典型的应用是sdram和fpga的接口,sdr sdram的时钟和fpga时钟在xilinx是如何处理?(不考虑ddr)

使用特权

评论回复
12
bnyuli| | 2011-3-2 11:24 | 只看该作者
楼上的分析很不错 啊

使用特权

评论回复
13
dan_xb| | 2011-3-3 10:07 | 只看该作者
对于SDR SDRAM,标准做法是有一段时钟走线,这段走线从FPGA到RAM,然后中途折回到FPGA的一个管脚。
这样一来,从FPGA的发送管脚到接收管脚的距离等于FPGA到RAM的距离。
然后使能DCM的外部环回,这样就可以实现相位同步。

其实这个办法是好老的办法了,新的V5之类芯片,在IO端口上可以对发送和接收设置不同的延时,实时切换。

对于那个ADC的例子,高级的ADC是LVDS传输的,源同步设计,自己发时钟和数据
100M差分时钟的ADC,应该就是这样的了吧?能不能举个例子?
差分晶振出来分两路?什么电平标准的?LVDS或者LVPECL都点对点传输的,很难再分一个点出来的,否则会影响信号质量。LVDS_BUS可以,但是我没有见到使用这种标准的晶振。
如果是低速的ADC,一般是由FPGA的PLL送出时钟的,实际情况中当然会有Jitter的一些考虑,但是一般都可以满足。PLL出几个相位不同的时钟。一路送IO口输出,一路留作自己采样数据用。
有很大一部分ADC的IO口是双向复用的,FPGA的IO口也可以收发由不同的时钟驱动。不过这样的ADC一般都不快吧。

使用特权

评论回复
评分
参与人数 2威望 +3 收起 理由
zch_genius + 1 我很赞同
SuperX-man + 2
14
钻研的鱼|  楼主 | 2011-3-4 17:17 | 只看该作者
sdr sdram的时钟走线,其实ls的做法和时钟芯片出时钟先到sdram然后到fpga全局时钟引脚做法是一样的,这个主要考虑阻抗匹配的问题
  好像是美信的adc芯片,250M采样率,他并没有随数据输出随路时钟。但输入时钟是差分的。
  差分晶振,我是笼统的说,一般都是VCO,输出差分时钟电平,后面一般加个差分的多路分配器,这种分配器很多,通道之间的skew很小。

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
SuperX-man + 2
15
bairan168| | 2011-3-6 15:40 | 只看该作者
学习了

使用特权

评论回复
16
nongfuxu| | 2011-11-20 18:49 | 只看该作者
XILLINX FPGA 学习标记!
Spartan-3A
Up to eight Digital Clock Managers (DCMs)
• Clock skew elimination (delay locked loop)
• Frequency synthesis, multiplication, division
• High-resolution phase shifting
• Wide frequency range (5 MHz to over 320 MHz)

使用特权

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

本版积分规则

64

主题

967

帖子

4

粉丝