MMCM/PLL VCO

输入输出时钟频率,input 322.265625Mhz, output 312.5Mhz

对于使用MMCM与PLL的不同情况,虽然输入输出频率是一样的,但是,分/倍频系数是不同的,不能使用同一套参数(M/D/O)。

原因:VCO不一致这个应该是vivado工具计算出来的输出时钟jitter最小的VCO。

 

 

根据这个VCO,由ug472中的公式,可以算出,M/D也是不一样的。

碰到的故障:

因为设计原因,MMCM不够用,因此部分模块使用了PLL。

时钟单元的代码,是纯verilog HDL代码,没有使用GUI,CBB模块调用了底层MMCM/PLL原语,使用宏控制。

考虑到输入输出频率一致,使用了同一套M/D/O参数。

测试时发现,使用PLL的channel,功能不对,FIFO有溢出。仔细定位后发现,PLL输出的频率与预期的不完全一致。

通过GUI重新生成PLL IPcore,发现verilog手动例化的PLL与IPcore的PLL代码,M/D/O不一致。

更新使用GUI生成代码中的M/D/O值,问题解决。

Takeaway:

如果确实需要手动例化MMCM/PLL代码,建议先在GUI中根据配置产生IP,然后将底层代码copy到所用的模块。切记不要想当然认为MMCM/PLL功能差不多,相同的输入输出频率,分/倍频系数也是相同的。

posted @ 2022-12-21 17:51  xmzhou  阅读(424)  评论(0编辑  收藏  举报