如何使用 PLL 从非 50% 占空比时钟生成 50% 占空比时钟

How to use a PLL to make a 50% duty cycle clock from a non 50% duty cycle clock

我是 Verilog 的新手,我的任务是使用 PLL(我也不是很熟悉)产生一个新的时钟信号。输入时钟是一个 21 MHz 57% 占空比时钟(时钟周期旨在与 7 个数据位同步,因此 4 位在时钟的高位部分发送,另外 3 位在低位发送)。这是一个相机 Link 时钟。

我想产生一个频率为 7 倍的时钟,以便与传入的 7 个数据位同步。由于我只想在上升沿触发我的逻辑,我想这个输出时钟的占空比并不重要。但我完全不知道如何做到这一点。

我想也许我可以创建一个时钟分频器,因为我已经知道该怎么做。因为我知道传入时钟的频率是 21MHz,所以我可以制作一个 21*7 MHz 的时钟分频器并将其与原始时钟同步。但我想知道如何使用 PLL 来做到这一点。

我从哪里开始?

我正在使用 Xilinx ML605

在 Xilinx ISE 中使用 Clocking Wizard。它将生成 HDL 代码以在您的硬件上实例化 PLL。它会提示您输入和输出频率;根据您在问题中的描述,听起来好像您拥有继续进行所需的所有信息。

PLL是FPGA上的硬宏,无法单独用Verilog描述。可以直接 实例化 一个(而不是使用时钟向导),但是找出正确的参数来这样做是很困难的,特别是如果您缺乏使用该部件的经验。