FPGA原理与结构——时钟IP核的使用与测试

系列文章目录:FPGA原理与结构(0)——目录与传送门

一、前言

        本文介绍xilinx的时钟IP核 Clocking Wizard v6.0的具体使用与测试过程,在学习一个IP核的使用之前,首先需要对于IP核的具体参数和原理有一个基本的了解,具体可以参考:

FPGA原理与结构——时钟IP核原理学习icon-default.png?t=N7T8https://blog.csdn.net/apple_53311083/article/details/132497850

二、时钟 IP核定制

1、 Clocking Wizard IP核

step1 打开vivado工程,点击左侧栏中的IP Catalog

c1987bb2bcf249be8d0ca5f847744a0c.jpeg

step2 在搜索栏搜索clock,找到Clocking Wizard IP核

59d23b62704e4d3096330aab9426221f.jpeg

2、 IP核定制

step3 Clocking Options 界面定制

a4f377439f914673af7e7e2ab201908a.jpeg

① Component Name” :用于设置该IP 核的名称 

② “Clock Monitor” :用来监控时钟是否停止、故障和频率变化。一般不用;

③ “Primitive” :用于选择是使用MMCM 还是PLL 来完成时钟需求,一般来说,MMCM 和PLL 都可以完成,这里保持默认选择MMCM。

④ “Clocking Features” :

  • Frequency Synthesis : 表示频率综合,只有勾上才能修改想要的时钟频率。
  • Phase Alignment : 相位对齐,勾选后输出时钟与输入时钟的相位是一致的
  • Dynamic Reconfig : 可以通过AXI接口对时钟IP核进行动态配置,这里不适用
  • Safe Clock Startup : 安全启动,在时钟稳定之前不会有输出
  • Minimize Power :最小化功率,缺点是可能会影响性能
  • Spread Specturm : 频谱扩展
  • Dynamic Phase Shift : 动态可调相位

"Jitter Optimization " :

  • Balanced : 平衡模式(默认选项),性能和功耗处于平衡状态
  • Minimize Output Jitter : 输出时钟抖动最小化模式,功耗会增大,相位可能恶化
  • Maximize Input Jitter filtering : 最大化输入时钟过滤,适用于输入时钟的抖动较大的情况,但是可能会导致输出时钟的抖动过大

⑤ “Input Clock Information”:选项中,把“Primary”时钟的输入频率修改为开发板的核心板上的晶振频率,source根据时钟源类型选择,单端时钟或者差分时钟,这里我们进行的是仿真测试,设置的输入时钟频率为100MHZ 。

step4 Output Clocks 界面定制

9c198b8aeeff446abbb1eca29800e2d6.jpege7b700d9984f4796a6f7a531528ca6d2.jpeg 

① : 这里我们就可以设置我们所需要的输出时钟频率和相位了,这里我们设置了4个输出时钟,clk_out1_100m:100MHZ时钟,clk_out2_100m_180:100MHZ时钟,与clk_out1_100m不同的是,其有着180°的相位差,clk_out3_50m:50MHZ时钟,clk_out3_25m:25MHZ时钟。

② : 勾选不同信号的输出顺序,使用的前提是要在之前的界面勾选上Safe Clock Startup,这里就不适用

③ :Clocking Feedback :时钟反馈,只有在之前的界面勾选了Phase Alignment才可以使用

④ : 一些额外的引脚可选项,这里着重介绍一下locked :置位时表示PLL输出信号有效,平常使用PLL一定要等该信号有效

step5 Port Renaming 界面定制

4520e199a7064379940f5849a51b6421.jpeg

        输出端口信号重命名,一般不用修改。

step6 MMCM Settings 界面定制

1e0e097455c4412da9ec977d8872233b.jpeg

        “MMCM Setting”选项卡展示了对整个MMCM/PLL 的最终配置参数,这些参数都是根据之前用户输入的时钟需求由Vivado 来自动配置的,Vivado 已经对参数进行了最优的配置,在绝大多数情况下都不需要用户对它们进行更改,也不建议更改,所以这一步保持默认即可,如下图所示。 

step7 Summary

166adb2cf76741d1b44cd17b5d1a999d.jpeg

        最后的“Summary”选项卡是对前面所有配置的一个总结,在这里直接点击“OK”按钮即可。

3、IP核测试

        首先编写顶层文件,完成对于IP核的例化


   
   
  1. module clk_ top(
  2. input sys_clk,
  3. input rst,
  4. output clk_ 100m,
  5. output clk_ 100m_ 180,
  6. output clk_ 50m,
  7. output clk_ 25m,
  8. output locked);
  9. clk_gen clk_gen_u 1
  10. (
  11. / / Clock out ports
  12. .clk_out 1_ 100m(clk_ 100m), / / output clk_out 1_ 100m
  13. .clk_out 2_ 100m_ 180(clk_ 100m_ 180), / / output clk_out 2_ 100m_ 180
  14. .clk_out 3_ 50m(clk_ 50m), / / output clk_out 3_ 50m
  15. .clk_out 4_ 25m(clk_ 25m), / / output clk_out 4_ 25m
  16. / / Status and control signals
  17. . reset(rst), / / input reset
  18. .locked(locked), / / output locked
  19. / / Clock in ports
  20. .clk_ in 1(sys_clk)); / / input clk_ in 1
  21. endmodule

        接下来进行测试文件编写:


   
   
  1. `timescale 1ns / 1ps
  2. module tb_clk_ top();
  3. reg sys_clk;
  4. reg rst;
  5. wire locked;
  6. wire clk_ 100m,clk_ 100m_ 180,clk_ 50m,clk_ 25m;
  7. always # 5 sys_clk = ~sys_clk;
  8. initial begin
  9. sys_clk <= 1 'b0;
  10. rst = 0;
  11. #15
  12. rst = 1;
  13. #10
  14. rst = 0;
  15. end
  16. clk_top clk_top_u1(
  17. .sys_clk (sys_clk),
  18. .rst (rst),
  19. .clk_100m(clk_100m),
  20. .clk_100m_180(clk_100m_180),
  21. .clk_50m(clk_50m),
  22. .clk_25m(clk_25m),
  23. .locked(locked)
  24. );
  25. endmodule

 4、测试结果

68caa45801104af28592046b4394d335.jpeg

         可以看到,经过一段时间后,时钟输出趋于稳定,实现稳定的分频时钟输出,与我们预期的结果是一致的。

三、总结

         时钟IP核在我们的FPGA设计过程中是非常常用的,一般也是我们推荐使用的一种设计方式,它可以给我们提供不同频率,不同相位的时钟输出。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FPGA中调用多个DDR3 IP核的方法与调用单个IP核类似。首先,你需要明确每个IP核的配置参数,包括宽度和深度等。然后,你可以使用Xilinx提供的现成IP核来调用和修改参数。你可以通过学习如何调用和配置IP核来提高开发效率,并减少项目中的错误。在调用多个DDR3 IP核时,你需要为每个IP核分配不同的实例名,并根据需要进行参数配置。例如,你可以使用PHY to Controller Clock Ratio参数来设置每个IP核时钟比例,以确保每个IP核时钟频率正确。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [FPGA——调用DDR的IP核(MIG核)](https://blog.csdn.net/weixin_46188211/article/details/124092984)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【FPGA】七、IP核的调用](https://blog.csdn.net/weixin_62912626/article/details/128305143)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Xilinx FPGA DDR3设计(三)DDR3 IP核详解及读写测试](https://blog.csdn.net/gslscyx/article/details/130694959)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值