网站建设安全架构,鲜花网站开发,民宿网站建设问卷调查,可以做头像的网站有哪些一、前言 本文介绍xilinx的时钟IP核 Clocking Wizard v6.0的具体使用与测试过程#xff0c;在学习一个IP核的使用之前#xff0c;首先需要对于IP核的具体参数和原理有一个基本的了解#xff0c;具体可以参考#xff1a;
FPGA原理与结构——时钟IP核原理学习https://blog.c…一、前言 本文介绍xilinx的时钟IP核 Clocking Wizard v6.0的具体使用与测试过程在学习一个IP核的使用之前首先需要对于IP核的具体参数和原理有一个基本的了解具体可以参考
FPGA原理与结构——时钟IP核原理学习https://blog.csdn.net/apple_53311083/article/details/132497850
二、时钟 IP核定制
1、 Clocking Wizard IP核
step1 打开vivado工程点击左侧栏中的IP Catalog step2 在搜索栏搜索clock,找到Clocking Wizard IP核 2、 IP核定制
step3 Clocking Options 界面定制 ① 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 界面定制 ① 这里我们就可以设置我们所需要的输出时钟频率和相位了这里我们设置了4个输出时钟clk_out1_100m100MHZ时钟clk_out2_100m_180100MHZ时钟与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 界面定制 输出端口信号重命名一般不用修改。
step6 MMCM Settings 界面定制 “MMCM Setting”选项卡展示了对整个MMCM/PLL 的最终配置参数这些参数都是根据之前用户输入的时钟需求由Vivado 来自动配置的Vivado 已经对参数进行了最优的配置在绝大多数情况下都不需要用户对它们进行更改也不建议更改所以这一步保持默认即可如下图所示。
step7 Summary 最后的“Summary”选项卡是对前面所有配置的一个总结在这里直接点击“OK”按钮即可。
3、IP核测试 首先编写顶层文件完成对于IP核的例化
module clk_top(input sys_clk,input rst,output clk_100m,output clk_100m_180,output clk_50m,output clk_25m,output locked);clk_gen clk_gen_u1(// Clock out ports.clk_out1_100m(clk_100m), // output clk_out1_100m.clk_out2_100m_180(clk_100m_180), // output clk_out2_100m_180.clk_out3_50m(clk_50m), // output clk_out3_50m.clk_out4_25m(clk_25m), // output clk_out4_25m// Status and control signals.reset(rst), // input reset.locked(locked), // output locked// Clock in ports.clk_in1(sys_clk)); // input clk_in1endmodule 接下来进行测试文件编写
timescale 1ns / 1ps
module tb_clk_top();reg sys_clk;reg rst;wire locked;wire clk_100m,clk_100m_180,clk_50m,clk_25m;always #5 sys_clk ~sys_clk;initial beginsys_clk 1b0;rst 0;#15 rst 1;#10 rst 0;endclk_top clk_top_u1(.sys_clk (sys_clk),.rst (rst),.clk_100m(clk_100m),.clk_100m_180(clk_100m_180),.clk_50m(clk_50m),.clk_25m(clk_25m),.locked(locked));endmodule4、测试结果 可以看到经过一段时间后时钟输出趋于稳定实现稳定的分频时钟输出与我们预期的结果是一致的。
三、总结 时钟IP核在我们的FPGA设计过程中是非常常用的一般也是我们推荐使用的一种设计方式它可以给我们提供不同频率不同相位的时钟输出。