如何正确使用FPGA的时钟资源
答案:2 悬赏:70
解决时间 2021-03-07 15:53
- 提问者网友:不懂我就别说我变
- 2021-03-07 02:20
如何正确使用FPGA的时钟资源
最佳答案
- 二级知识专家网友:一池湖水
- 2021-03-07 03:27
always @ (posedge R_lbus_clk or posedge I_reset_n) begin
if(I_reset_n) begin
R_tx_cnt <= 32'd0 ;
end
这种语句见过吧,可以默认一点,凡是进了 always 那行的时钟,都需要经过全局时钟,或者局域时钟驱动过。
如果是系统时钟,就是主要用该时钟,则用全局时钟驱动。如果只有点个灯的那点儿代码,那么可以用局域时钟。
另外,现在 FPGA 的全局时钟 基本 16 个起,所以大多设计都可以直接用全局时钟进行驱动。
if(I_reset_n) begin
R_tx_cnt <= 32'd0 ;
end
这种语句见过吧,可以默认一点,凡是进了 always 那行的时钟,都需要经过全局时钟,或者局域时钟驱动过。
如果是系统时钟,就是主要用该时钟,则用全局时钟驱动。如果只有点个灯的那点儿代码,那么可以用局域时钟。
另外,现在 FPGA 的全局时钟 基本 16 个起,所以大多设计都可以直接用全局时钟进行驱动。
全部回答
- 1楼网友:不服输就别哭
- 2021-03-07 05:00
锁相环(pll)和混合模式时钟管理器(mmcm)处理的工作有许多是相同的,比如频率综合、内外部时钟抖动滤波、时钟去歪斜等。这两种资源也可用于镜像、发送或再缓冲时钟信号。
在深思设计实现细节时,把这些通常用法记在心里,有助于理清时钟选择的思路。对于长期产品发展规划而言,在制定合适的时钟策略时,应考虑各个器件系列之间的兼容性。下面让我们深入了解一下这些时钟资源。
您可以使用dcm将时钟源的输入时钟信号相乘,生成高频率时钟信号。与此类似,可以将来自高频率时钟源的输入时钟信号相除,生成低频率时钟信号。
数字时钟管理器
顾名思义,数字时钟管理器(dcm)是一种用于管理时钟架构并有助于时钟信号成形和操控的模块。dcm内含一个延迟锁相环(dll),可根据输入时钟信号,去除dcm输出时钟信号的歪斜,从而避免时钟分配延迟。
dll 内含一个延迟元件和控制逻辑链路。延迟元件的输出是输入时钟延迟所得。延迟时间取决于延迟元件在延迟链路中的位置。这种延迟体现为针对原始时钟的相位改变或相移,这就是所谓的“数字相移”。图1所示的即为virtex-4器件中的典型dcm模块。根据virtex-4fpga用户指南(ug070,2.6 版本)的介绍,virtex-4中有三种不同的dcm原语。
一般来说,dll与pll类似。但与pll不同的是dll不含压控振荡器(vco)。pll会一直存储相位和频率信息,而dll只存储相位信息。因此,dll略比pll稳定。dll和pll这两种类型都可以使用模拟和数字技术设计,或者混合两种技术设计。但赛灵思器件中的dcm采用全数字化设计。
由于dcm可以在时钟路径上引入延迟,比如您就可使用dcm可以精确地为dram生成行和列访问选通信号的时序。与此类似,数据总线上的各个数据位可以在不同的时间到达。为了正确对数据位采样,接收端的时钟信号必须适当地与所有数据位的到达保持同步。如果接收器使用发射时钟,可能会要求延迟从发送端到接收端的时钟信号。
有时设计可能需要一个更高的时钟频率来运行fpga上的逻辑。但是,只有低频率输出的时钟源可以用。此时可以使用dcm将时钟源的输入时钟信号相乘,生成高频率时钟信号。与此类似,可以将来自高频率时钟源的输入时钟信号相除,生成低频率时钟信号。这种技术称为“数字频率综合”。
设计人员使用扩频时钟并通过调制时钟信号来降低时钟信号的峰值电磁辐射。未经调制的时钟信号的峰值会产生高电磁辐射。但经调制后,电磁辐射被扩展到一系列时钟频率上,从而降低了所有频点的辐射。一般来说,如果需要满足一定的最大电磁辐射要求和在fpga上执行高速处理的时候(比如说通信系统中接收器使用的解串器),就需要使用扩频时钟。因此,fpga中的dcm将乘以输入扩频时钟信号,在内部生成高频时钟信号。 dcm的输出必须准确地跟随扩频时钟,以保持相位和频率对齐并更新去歪斜和相移。dcm相位和频率对齐的恶化会降低接收器的歪斜裕量。
建立时钟的镜像需要将时钟信号送出fpga器件,然后又将它接收回来。可以使用这种方法为多种器件的板级时钟信号去歪斜。dcm能够把时钟信号从fpga发送到另一个器件。这是因为fpga的输入时钟信号不能直接路由到输出引脚,没有这样的路由路径可用。如果仅需要发送时钟信号,那么使用dcm将时钟信号发送到输出引脚,可以确保信号的保真度。另外也可选择在时钟信号发送之前,将dcm输出连接到oddr触发器。当然也可以选择不使用dcm,仅使用oddr 来发送时钟信号。往往时钟驱动器需要将时钟信号驱动到设计的多个组件。这会增大时钟驱动器的负荷,导致出现时钟歪斜及其它问题。在这种情况下,需要采用时钟缓冲来平衡负载。
时钟可以连接到fpga上的一系列逻辑块上。为确保时钟信号在远离时钟源的寄存器上有合适的上升和下降时间(从而将输入输出时延控制在允许的范围内),需要在时钟驱动器和负载之间插入时钟缓冲器。dcm可用作时钟输入引脚和逻辑块之间的时钟缓冲器。
最后,还可以使用dcm将输入时钟信号转换为差分i/o标准信号。例如,dcm可以将输入的lvttl时钟信号转换为lvds时钟信号发送出去。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯