FPGA专用时钟管脚问题

转自:http://www.eefocus.com/liu1teng/blog/12-02/237897_4533d.html

  前一段时间画了一块千兆扩展板,板子上有千兆网口和千兆光纤接口,两种介质可以通过跳线来转换,板子做好之后进行回环测试时,发现网口会有随机的丢帧现象,而光口是正常的,一直没有找到问题根源,后来在做另一个项目里,需要写MAC的时序约束,发现Xilinx提供的MAC硬对‘RX_CLK’的时序约束要求很高,建立时间只有2.5ns,保持时间0.5ns,无论怎么反复修改这个约束值都无法达到约束要求,最后仔细研究了一下,发现评估板上的PHY芯片,‘RX_CLK‘这个信号连接在GC_CLK,而我的硬件设计只连接在普通IO口上,在时序约束时,用CLOCK_DEDICETED_ROUTE=FLASE绕过PAR的检查,这样就只是将本该接入专用时钟管脚(或者叫做全局时钟管脚)的信号,接到了普通IO口上,但并没有做好如何用普通IO口来引入全局时钟,Xilinx官方论坛上更是有老外直接指出这只是把一个error变成了warning,并没有解决真正的问题。作为初学者的我并没有意识到,什么是‘真正的问题’,直到出现这种丢帧现象之后,才慢慢意识到FPGA并不是我之前想象的那么‘简单顺手’。

现在说说专用时钟引脚,它的出现具体原因可以说是FPGA自身的实现结构引起的,FPGA实现时,具体的时钟大概有外部供给FPGA的工作时钟,由DCM或者PLL产生的时钟,和FPGA输入输出数据的随路时钟;再说说FPGA的实现,由于是基于触发器的设计实现,这就造成了,在布局布线时,同一时钟域但是布局相隔较远的同步器件再被相同时钟触发时,会有延时,这反映在时钟的skew(相位倾斜),为了解决这个问题,时钟树就出现了,将时钟的布线成树形结构,使得到达每一个逻辑单元的时钟信号同相,这样就可以实现同步,这就是全局时钟网络,GC_CLK。也就是说GC_CLK在FPGA内部是固定的位置,与其对应的引脚也就固定了,这样的引脚称为全局时钟引脚GC_CLK PIN。实际上,综合器会将扇出的较大的信号当做全局信号,并自动在引脚上加入IBUFG,但是只有全局引脚之后才有IBUFG,所以如果UCF中的时钟管脚不是用的GC_CLKPIN,PAR就会报错,反之,当一个信号分配的是GC_CLK PIN,无论是否扇出足够大,都会加入IBUFG,这也其实是FPGA内部结构造成的,只有全局管脚上有IBUFG,所以只要该信号用了全局管脚,无论是,或不是全局信号,IBUFG都在那里。

再说说GC_CLK和CC_CLK的区别,由于GC_CLK PIN是最好用的时钟管脚,正常来说,凡是时钟信号,硬件连接上都应该用GC_CLK PIN,但是这样的PIN太少了,高端的FPGA也就十几个而已,V5系列最大的的200T也只有24个,所以很多时候满足不了实际应用对时钟的需求,这时就出现了代替品CC_CLK,CC_CLK只能保证同一BANK或者相邻BANK的时钟信号同相,并且无法用BUFER驱动,(这一点我不是很理解,以后用到了会补充上来。)简单地说,就是有GC_CLK就要用GC_CLK,没了,就用CC_CLK,如果用普通的IO口,就会有一些问题要注意。

回到之前所说的FPGA内的时钟,工作时钟的管脚是固定的,没啥说的,一定最全局的时钟管脚,内部由DCM或PLL产生的时钟,DCM的输出会自动接入全局时钟网络,最后一个其实是我曾忽略过的,输入输出的随路时钟,如果硬件上接到了普通IO上,这就有点悲剧了,尽管可以用BUFG接进全局时钟网,但是,从PAD到BUFG的输出有10ns的固有延时。这10ns无法消除,所以如果时钟频率超过20M左右时,skew会比较大。一些处理办法:用两个DCM级联来调相BUFG+DCM+DCM。千兆网口要跑125Mbps,时钟周期是8ns,如果固有延时是10ns,那么就有1/4周期的延时,我打算用前一级调相90°,后一级调相180°,这样就可以达到同相了吧。但随之而来的问题就是10ns的固有延时是否是稳定的(这个延时量也是官方论坛里的一大牛说的,没查到可靠的出处),两级DCM调相是否能保证无偏差。这都是要看实际的程序在板子跑的结果来下结论了。

板子回来后,在实际中的使用,出现了以下现象:按固定的最小帧间隔发以太网帧,以千兆标准96ns,出现错帧现象,如果以十兆标准9600ns,就没有任何丢帧现象,我想接口板还是没有完美的达到高速通信的要求,原因最可能是上述专用管脚的使用或者接口板经过插针无法支持高速传输,这只能再一一排除了。

时间: 2024-10-13 06:58:13

FPGA专用时钟管脚问题的相关文章

Xilinx FPGA全局时钟和全局时钟资源的使用方法

对FPGA的全局时钟了解不多,遂转载一篇文档: http://xilinx.eetop.cn/?action-viewnews-itemid-42 目前,大型设计一般推荐使用同步时序电路.同步时序电路基于时钟触发沿设计,对时钟的周期.占空比.延时和抖动提出了更高的要求.为了满足同步时序设计的要求,一般在FPGA设计中采用全局时钟资源驱动设计的主时钟,以达到最低的时钟抖动和延迟. FPGA全局时钟资源一般使用全铜层工艺实现,并设计了专用时钟缓冲与驱动结构,从而使全局时钟到达芯片内部的所有可配置单元

FPGA的时钟质量对设计的影响

小梅哥编写,未经许可严禁用于任何商业用途 近期,一直在调试使用Verilog编写的以太网发送摄像头数据到电脑的工程(以下简称以太网图传).该工程基于今年设计的一款FPGA教学板AC620.AC620上有一个百兆以太网接口和一个通用CMOS摄像头接口,因此非常适合实现以太网图传功能.CMOS摄像头接口没有什么好说的,就是IO而已,这里先重点介绍下以太网接口. 以太网接口使用了一片10/100M自适应以太网收发器(PHY),型号为RTL8201.该芯片和FPGA采用标准的MII接口进行连接.什么是M

xilinx FPGA全局时钟资源的使用

1.什么是xilinx fpga全局时钟资源 时钟对于一个系统的作用不言而喻,就像人体的心脏一样,如果系统时钟的抖动.延迟.偏移过大,会导致系统的工作频率降低,严重时甚至会导致系统的时序错乱,实现不了预期的逻辑功能.xilinx fpga内的全局时钟资源可以很好的优化时钟的性能,因此在设计时要尽可能多的使用fpga内部的时钟资源.xilinx fpga内部的全局时钟采用全铜工艺实现,配合专用时钟缓冲和驱动结构,可以使进入全局时钟网络的时钟到达fpga内部各个逻辑单元的抖动和延迟最小.全局时钟资源

时钟管脚设置问题 xilinx ERROR:Place:864 - Incompatible IOB's are locked to the same bank 0

ERROR:Place:1108 - A clock IOB / BUFGMUX clock component pair have been found   that are not placed at an optimal clock IOB / BUFGMUX site pair. The clock   IOB component <Clk_125M> is placed at site <PAD99>. The corresponding BUFG   component

FPGA 异步时钟处理方

1 如果FPGA设计中包含不同频率的时钟,就会涉及异步时钟的问题.我们需要一些方法来使得时钟同步,从而保证FPGA设计的可靠性. 2 在建立和保持时间所构成的有效时间窗口内,数据输入到触发器进行转换.如果数据的到达时间不满足建立或者保持时间就会产生时序冲突.此时触发器的输出就有可能停留在非逻辑0 或1 的范围内(这个状态叫做准稳态),从而造成逻辑错误. 3 如果异步时钟的相位不能够完全对齐就有可能引起2中所述的故障,而且这种故障是不可再现的,也无法通过仿真发现. 4 解决方法,即时钟同步问题:

FPGA异步时钟设计中的同步策略

1 引言    基于FPGA的数字系统设计中大都推荐采用同步时序的设计,也就是单时钟系统.但是实际的工程中,纯粹单时钟系统设计的情况很少,特别是设计模块与外围芯片的通信中,跨时钟域的情况经常不可避免.如果对跨时钟域带来的亚稳态.采样丢失.潜在逻辑错误等等一系列问题处理不当,将导致系统无法运行.本文总结出了几种同步策略来解决跨时钟域问题. 2 异步设计中的亚稳态    触发器是FPGA设计中最常用的基本器件.触发器工作过程中存在数据的建立(setup)和保持(hold)时间.对于使用上升沿触发的触

FPGA多时钟处理应用

FPGA项目设计中,通常会遇到多时钟处理.即一个PLL输出多个时钟,根据条件选择合适的时钟用作系统时钟.方案一: 外部晶振时钟进入PLL,由PLL输出多个时钟,MUX根据外部条件选择时钟输出做为系统使用. 方案在时钟频率比较低的情况下是可行的.设计时注意MUX使用组合逻辑实现的,注意case语句中default选项必须有输出,否则会出现锁存器. 当输出时钟频率较高时,这种方案的时序约束就比较麻烦.除了使用creat_clock命令约束PLL输入时钟,使用creat_generate_clock约

【FPGA】006 【优化设计FPGA全局时钟管理模块】

1.rst_n--异步复位设计 1 `timescale 1ns/1ns 2 module FPGA_temp 3 ( 4 input clk, 5 input rst_n, 6 7 input a, 8 output reg b 9 ); 10 always@(posedge clk or negedge rst_n) 11 begin 12 if(!rst_n) 13 b <= 0; 14 else 15 b <= a; 16 end 17 endmodule  没有对复位信号进行处理,当

对FPGA的时钟资源理解(更新中)

7系列FPGA中包含了多达24个CMT(时钟管理单元),MMCM和PLL均为时钟综合器,对外部输入时钟.内部时钟进行处理,生成需要的低抖动时钟.PLL是MMCM的功能子集,也是基于MMCM的.其中MMCM包含的额外特性有: 输入多路复用器从IBUFG,BUFG,BUFR,BUFH,GTs(CLKIN only)或互连(不推荐)中选择其一 作为参考和反馈时钟,每个时钟输入都经过一个可编程的计数器(D).相位频率检测器(PFD)比较输入(参考)时钟和反馈时钟的上升边缘的相位和频率.如果最小的高/低脉