1、设计定义
使用高云内置IP核实现多路不同时钟输出
输入时钟50M由晶振提供
软件开发环境高云V1.99版本
硬件开发环境采用小梅哥ACG525(主芯片GW5A-LV25-UG324C2)
2、设计输入
创建好工程后我们点击IP核配置,然后搜索PLL,这里我们可以使用的模块是PLL_ADV
配置我们的输入时钟以及IP核心文件名字以及模块名字
然后依次在上方tab栏中设置需要输出的时钟频率
最后点击计算然后点击OK
添加到工程,然后在我们的顶层文件中实例化我们的IP核并连接输入输出信号
module clock_test( input clk_in_50m, output clk_out_10m, output clk_out_25m, output clk_out_75m, output clk_out_100m ); myclock myclock_test( .clkout0(clk_out_10m), //output clkout0 .clkout1(clk_out_25m), //output clkout1 .clkout2(clk_out_75m), //output clkout2 .clkout3(clk_out_100m), //output clkout3 .clkin(clk_in_50m) //input clkin ); endmodule
3、分析和综合
当逻辑输入设计完成后需要对其进行验证,该部分由软件部分进行验证,如果逻辑输入有问题需要检查语法错误或则重新设计设计输入
4、功能仿真
当分析和综合通过后应该进行功能性验证,针对项目设计定义的功能使用设计的逻辑输入验证其功能能否实现,一般的做法都是通过功能仿真的方式进行验证,比如软件逻辑分析仪,modelsim、vivado等软件自带的仿真工具进行仿真验证
功能仿真也称为行为仿真,主旨在于验证电路的功能是否符合设计要求,其特点是不考虑电路门延迟与线延迟,主要是验证电路与理想情况是否一致。也可以叫做RTL仿真(test bench)
首先编写我们的仿真时序文件
`timescale 1ns / 1ps module clock_test_tb(); reg sys_clk; wire clk_out_10; wire clk_out_25; wire clk_out_75; wire clk_out_100; // 对pll_test_ds进行例化操作 clock_test Myclock( .clk_in_50m(sys_clk), // 模拟50MHZ .clk_out_10m(clk_out_10), // 模拟输出10MHZ .clk_out_25m(clk_out_25), // 模拟输出25MHZ .clk_out_75m(clk_out_75), // 模拟输出75MHZ .clk_out_100m(clk_out_100) // 模拟输出100MHZ ); initial begin sys_clk = 1'b0; // 初始化 end always #10 sys_clk = ~sys_clk;//10ns之后将时钟进行翻转(即说明20ns为一个周期) 1/20ns = 1/2*10^(-8) = 5*10^7 = 50MHz 产生50MHz的时钟 endmodule
【FPGA】高云FPGA之IP核的使用->PLL锁相环(二)https://developer.aliyun.com/article/1472634