FPGA中时钟问题
0赞1.FPGA的全局时钟是什么?
FPGA的全局时钟应该是从晶振分出来的,最原始的频率。其他需要的各种频率都是在这个基础上利用PLL或者其他分频手段得到的。
2.全局时钟和BUFG:
BUFG,输入为固定管脚,输出为H型全铜全局高速网络,这样抖动和到任意触发器的延时差最小,这个也就是FPGA做同步设计可以不需要做后仿真的原因。
全局时钟:今天我们从另一个角度来看一下时钟的概念:时钟是D触发器的重要组成部分,一个有效边沿使得D触发器进行一次工作。而更多的时候,D触发器保持住上次的值。对于D触发器来说,可以将输入信号和时钟作比较。也许你会问,这么比较有什么意义。首先看我们比较得出什么东西:
翻转率:R=Dr/Crx100%
就是D触发器改变一次值与时钟有效沿个数的比值。
举例:你写了一个来一个时钟有效沿就取一次反的电路,那么他的翻转率就是100%,翻转率和你的FPGA的功率有很大关系,翻转率越高,FPGA功率越高。
3.全局时钟不够用是什么意思?
因为全局时钟需要驱动很多模块,所以全局时钟引脚需要有很大的驱动能力,FPGA一般都有一些专门的引脚用于作为全局时钟用,他们的驱动能力比较强。但是如果这些引脚用完了,就只能用一般的引脚了,而他们的驱动能力不强,有可能不能满足你的时序要求。(驱动能力小的,产生的延迟会大一些)
理论上,FPGA的任意一个管脚都可以作为时钟输入端口,但是FPGA专门设计了全局时钟,全局时钟总线是一条专用总线,到达片内各部分触发器的时间最短,所以用全局时钟芯片工作最可靠,但是如果你设计的时候时钟太多,FPGA上的全局时钟管脚用完了就出现不够用的情况。
4.什么是第二全局时钟?
比如我有一个同步使能信号,连接到FPGA内部80%的资源(但不是时钟),这个时候,你的信号走线到达各个D触发器的延迟差很大,或者翻转率比较大的时候(>40%),这个时候你就需要使用第二全局时钟资源。
第二全局时钟资源的驱动能力和时钟抖动延迟等指标仅次于全局时钟信号。第二全局时钟资源其实是通过片内的高速行列总线来实现的,而不像全局时钟总线是一条专用总线。第二全局时钟总线是通过软件布线得到的,所以硬指标肯定是拼不过全局时钟总线。特别是当你在已经有80%以上的布线率的情况下,可能会出现约束第二全局时钟资源失败的情况。
5.CCLK:
CCLK:FPGA同步配置时钟。如果配置模式为主模式,则该时钟由FPGA器件生成,并输出;如果配置模式为从模式,则该时钟由外部提供;
当所配置的数据存放在PROM中,即通过PROM来配置器件时,必须选择CCLK时钟;
USER CLOCK:用户定义的配置时钟信号,该配置时钟目前很少采用;
JTAG CLOCK:JTAG模式的配置时钟,该时钟提供给内部的JTAG控制逻辑。
默认值为:CCLK
6.CCLK是怎么产生的:
CCLK的产生根据配置模式不同而不同,如果设置为Master模式,则由内部的震荡电路产生,作为外部ROM的工作时钟,默认为6MHZ,可通过配置选项设置;如果设置为Slave模式,则由计算机(或其他下载设备)提供,作为芯片内部下载电路的工作时钟;在JTAG模式情况下,CCLK不输出,此时芯片内部下载电路时钟由内部震荡电路提供,TCK仅用作边界扫描相关电路时钟。
补充:FPGA的主配置模式中,CCLK信号是如何产生的?
CCLK是由FPGA内部一个晶振电路产生的,同时ISE的软件在生成BIT流文件时,有个CCLK CONFIG选项,这个选项只有在时钟为CCLK时才可以起作用,可以在4-60MHz选择,可以控制CCLK的频率。
在主从模式配置,配置数据的前60个字节导入FPGA之前,CCLK一直是2.5MHz,接下来由于前60个配置字节的作用,CCLK改为CONFIG设定的频率,直到结束,一般CONFIG默认的频率是4MHz.
7.FPGA中全局时钟怎么用啊?是把时钟接到FPGA的全局时钟输入引脚后,就起到全局时钟的作用了,还是在编译时需要制定某个时钟为全局时钟阿?
其实全局时钟的使用关键在你的代码…如果你的代码中只用了一个时钟作为所有的或者大部分触发器的时钟,编译器自然会把它编译为全局时钟。当然硬件连接上还是用全局时钟引脚较好,尤其是带PLL的,不是所有的全局时钟脚都能用PLL。