IP核之PLL实验

本文介绍了使用XilinxFPGA进行时钟管理,包括CMT和MMCMPLL的特性,详细描述了创建时钟IP核的步骤,如使用Vivado工具进行工程配置、编写顶层例化代码和仿真验证的过程,最后展示了下载到开发板后的实际测试结果。
摘要由CSDN通过智能技术生成

一、简介

IP(Intellectual Property),即知识产权,是ASIC或FPGA中的预先设计好的电路功能模块。

Xilinx FPGA的时钟管理:CMT(Clock Management Tiles):时钟管理单元,可以对时钟进行管理,具有时钟倍频、分频、相位偏移、可编程占空比和优化抖动等功能。

MMCM和PLL:MMCM(混合模式的时钟管理,数字电路)是在PLL(锁相环,模拟电路)基础上加入的DCM(数字时钟管理单元)的一部分以进行精细的相移,即MMCM在PLL基础上加上了相位动态调整功能,MMCM相对PLL的优势就是相位可动态调整,但PLL占用的面积更小。

PLL是一种时钟反馈控制电路,其特点是利用外部输入的参考信号控制环路内部震荡信号的频率和相位。

二、实验任务

本节的实验任务是使用开发板输出4路不同频率或相位的时钟,时钟分别为100Mhz,100Mhz(相位偏移180度)、50Mhz和25Mhz。将四路时钟分别输出至扩展口的端口,并通过示波器来测量输出结果是否准确。

三、创建时钟IP核

1.波形图

 

2.在vivado中创建工程

在ip目录找到clock下的clocking wizard 

配置好后点击ok

 

 3.编写顶层例化代码

module ip_clk_wiz(
    input        sys_clk,
    input        sys_rst_n,   //低电平有效
    output       clk_100m,
    output       clk_100m_180deg,
    output       clk_50m,
    output       clk_25m
    );

wire           locked;
wire           rst_n;

assign rst_n = sys_rst_n & locked;
    
clk_wiz_0 instance_name
(
  // Clock out ports
     .clk_out1      (clk_100m),            // output clk_out1
     .clk_out2      (clk_100m_180deg),     // output clk_out2
     .clk_out3      (clk_50m),             // output clk_out3
     .clk_out4      (clk_25m),             // output clk_out4
  // 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

4.vivado仿真

编写tb文件

'timescale  1ns/1ns  //仿真单位/仿真精度

module tb_ip_clk_wiz();

parameter CLK_PERIOD = 20;

reg        sys_clk;   //周期20ns
reg        sys_rst_n;

wire       clk_100m       ;
wire       clk_100m_180deg;
wire       clk_50m        ;
wire       clk_25m        ;
    
initial begin
    sys_clk <= 1'b0;
    sys_rst_n <= 1'b0;   
    #200
    sys_rst_n <= 1'b1;   
end

always #(CLK_PERIOD/2) sys_clk = ~sys_clk;

ip_clk_wiz u_ip_clk_wiz(
    .sys_clk         (sys_clk  ),
    .sys_rst_n       (sys_rst_n),
    .clk_100m        (clk_100m),
    .clk_100m_180deg (clk_100m_180deg),
    .clk_50m         (clk_50m),
    .clk_25m         (clk_25m)
    );

endmodule

在design sources中添加例化代码和tb文件

运行功能仿真后

 

5.联合仿真

vivado编译仿真库

配置完成后编译

在ip项目中设置对应

在vivado中运行仿真之后自动同步到modulesim中 

输出波形与预计波形相同。

 四、下载验证

生成约束文件。

编译之后下载到开发板。

通过示波器测试25Mhz引脚可以看出实现该功能。

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值