RTL Verilog(FPGA)可综合代码的时钟转换

时间:2018-07-19 21:46:43

标签: verilog fpga clock register-transfer-level

以50%的占空比将FPGA上的12 MHz系统时钟信号转换为1 MHz信号输出。

我知道我需要在50/50占空比上除以2,以获得6 MHz,然后再除以2,以获得3 MHz,然后再除以3,得到1 MHz。这是正确的方法吗?

此外,我将如何在RTL Verilog代码中实现这一点?

1 个答案:

答案 0 :(得分:2)

  

这是正确的方法吗?

不。首先,以逻辑时钟操作通常很难进行适当的布线,尤其是在多个阶段。其次,要在没有负边沿或DDR触发器的情况下将时钟除以3并获得50%的占空比特别困难,而这两个触发器在FPGA结构中通常不可用。

正确的方法是使用FPGA的时钟资源。大多数现代FPGA将具有一个或多个可用于管理时钟信号的板载DLL或PLL。

在Xilinx部件上,这些资源被称为DCM,PLL和/或MMCM,可以使用ClockGen IP内核实例化。

在Altera / Intel部件上,可以通过PLL和其他宏功能配置这些资源。

在莱迪思的部件上,这些资源称为sysCLOCK PLL,可以使用IPexpress进行配置。