ZYNQ初识6(zynq_7010)clock时钟IP核

发布于:2025-02-11 ⋅ 阅读:(30) ⋅ 点赞:(0)

基于板子的PL端无时钟晶振,需要从PS端借用clock1(50M)晶振

接下去是自定义clock的IP核封装,为后续的simulation可以正常仿真波形,需要注意顶层文件的设置,需要将自定义的IP核对应的.v文件设置为顶层文件,否则仿真波形会均为高阻态。

将代码和对应的tb激励文件,ip核的一些流程和simulation的仿真波形放在下方:

对应一个时钟输入(50Mhz),5个时钟输出,分别改变了时钟频率、相位和占空比。

仿真后的波形如下:(simulation的仿真并不需要系统的时钟,只是根据程序要求形成波形图)

 代码和tb激励文件程序如下:

`timescale 1ns / 1ps
// Create Date: 2024/12/30 16:11:18
// Design Name: 
// Module Name: test_025_PLL_Time
//需要将之设为顶层文件
module test_025_PLL_Time(
    input   sys_clk,
    input   sys_rst_n,
    
    output  clk_out1_100M,
    output  clk_out2_100M_180deg,
    output  clk_out3_50M,
    output  clk_out4_25M,
    output  clk_out5_duty25

    );
 wire  locked;
 
 //例化
   clk_design1 instance_name
   (
    // Clock out ports
    .clk_out1_100M(clk_out1_100M),     // output clk_out1_100M
    .clk_out2_100M_180deg(clk_out2_100M_180deg),     // output clk_out2_100M_180deg
    .clk_out3_50M(clk_out3_50M),     // output clk_out3_50M
    .clk_out4_25M(clk_out4_25M),     // output clk_out4_25M
    .clk_out5_duty25(clk_out5_duty25),     // output clk_out5_duty25
    // Status and control signals
    .reset(~sys_rst_n), // input reset低电平有效
    .locked(locked),       // output locked
   // Clock in ports
    .clk_in1(sys_clk));      // input clk_in1
  
endmodule
`timescale 1ns / 1ps
// Module Name: tb_PLL_Time
module tb_PLL_Time();
    reg  sys_clk          ;             
    reg  sys_rst_n        ;           
                          
    wire clk_out1_100M         ;        
    wire clk_out2_100M_180deg  ;
    wire clk_out3_50M          ;         
    wire clk_out4_25M          ;         
    wire clk_out5_duty25       ;
//--------
always #10 sys_clk = ~sys_clk;  //20ns一个周期对应50Mhz时钟

initial  
  begin
    sys_clk = 1'b0;
    sys_rst_n = 1'b0;
    #100
    sys_rst_n = 1'b1; 
  end
//--------
//实现信号的连接:
test_025_PLL_Time  u_test_025_PLL_Time(
  .sys_clk                (sys_clk             ),
  .sys_rst_n              (sys_rst_n           ),
                                                 
  .clk_out1_100M          (clk_out1_100M       ),
  .clk_out2_100M_180deg   (clk_out2_100M_180deg),
  .clk_out3_50M           (clk_out3_50M        ),
  .clk_out4_25M           (clk_out4_25M        ),
  .clk_out5_duty25        (clk_out5_duty25     )

);

endmodule

     但由于此时PL因无时钟晶振,需要借用PS端的晶振的设置而出现的顶层文件的问题,以及在创建IP核初始选择的是自定义,而不是适应Block Design的,所以在Block Design中无法添加对应.v文件的module(会报错),因此只能在simulation中仿真查看波形,无法进行接下去的管脚分配和程序下载的过程。


网站公告

今日签到

点亮在社区的每一天
去签到