以50%的占空比将FPGA上的12 MHz系统时钟信号转换为1 MHz信号输出。
我知道我需要在50/50占空比上除以2,以获得6 MHz,然后再除以2,以获得3 MHz,然后再除以3,得到1 MHz。这是正确的方法吗?
此外,我将如何在RTL Verilog代码中实现这一点?
答案 0 :(得分:2)
这是正确的方法吗?
不。首先,以逻辑时钟操作通常很难进行适当的布线,尤其是在多个阶段。其次,要在没有负边沿或DDR触发器的情况下将时钟除以3并获得50%的占空比特别困难,而这两个触发器在FPGA结构中通常不可用。
正确的方法是使用FPGA的时钟资源。大多数现代FPGA将具有一个或多个可用于管理时钟信号的板载DLL或PLL。
在Xilinx部件上,这些资源被称为DCM,PLL和/或MMCM,可以使用ClockGen IP内核实例化。
在Altera / Intel部件上,可以通过PLL和其他宏功能配置这些资源。
在莱迪思的部件上,这些资源称为sysCLOCK PLL,可以使用IPexpress进行配置。