IP核之PLL

IP核之PLL

Xilinx FPGA的时钟管理

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

MMCM和PLL

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

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

ref_clk:参考时钟源输入

PFD:将ref_clk的频率、相位和pll_out相比较

实验任务

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

系统框图
波形图
IP核配置


IP核例化代码

复制代码
module  ip_clk_wiz(
    input               sys_clk        ,  //系统时钟
    input               sys_rst_n      ,  //系统复位,低电平有效
    //输出时钟
    output              clk_100m       ,  //100Mhz时钟频率
    output              clk_100m_180deg,  //100Mhz时钟频率,相位偏移180度
    output              clk_50m        ,  //50Mhz时钟频率
    output              clk_25m           //25Mhz时钟频率
    );

//wire define
wire        locked;

//*****************************************************
//**                    main code
//*****************************************************

//PLL IP核的例化
clk_wiz_0  clk_wiz_0
(
	// 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

FPGA激励文件(Testbench)编写,其用于验证FPGA设计功能正确性的测试脚本,通过模拟输入信号并检查输出响应,确保设计符合预期。

复制代码
`timescale 1ns / 1ps        //仿真单位/仿真精度

module tb_ip_clk_wiz();

//parameter define
parameter  CLK_PERIOD = 20; //时钟周期 20ns

//reg define
reg     sys_clk;
reg     sys_rst_n;

//wire define
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
时钟IP核的仿真

.xdc文件

复制代码
#时序约束
create_clock -period 20.000 -name sys_clk [get_ports sys_clk]
#IO引脚约束
set_property -dict {PACKAGE_PIN U18 IOSTANDARD LVCMOS33} [get_ports sys_clk]
set_property -dict {PACKAGE_PIN N16 IOSTANDARD LVCMOS33} [get_ports sys_rst_n]
set_property -dict {PACKAGE_PIN U20 IOSTANDARD LVCMOS33} [get_ports clk_100m]
set_property -dict {PACKAGE_PIN T20 IOSTANDARD LVCMOS33} [get_ports clk_100m_180deg]
set_property -dict {PACKAGE_PIN N18 IOSTANDARD LVCMOS33} [get_ports clk_50m]
set_property -dict {PACKAGE_PIN P19 IOSTANDARD LVCMOS33} [get_ports clk_25m]
相关推荐
奋斗的牛马4 小时前
硬件工程师-基础知识电阻(四)
单片机·嵌入式硬件·学习·fpga开发
amberman4 小时前
解读 PCIe Gen6 RAS
驱动开发·fpga开发·硬件工程
9527华安19 小时前
FPGA纯verilog实现 2.5G UDP协议栈,基于1G/2.5G Ethernet PCS/PMA or SGMII,提供14套工程源码和技术支持
5g·fpga开发·udp·ethernet·verilog·sgmii·2.5g udp
奋斗的牛马1 天前
硬件基础知识-电容(一)
单片机·嵌入式硬件·学习·fpga开发·信息与通信
li星野1 天前
打工人日报#20251110
fpga开发
0基础学习者2 天前
跨时钟域处理
fpga开发·verilog·数字ic
FPGA_小田老师2 天前
Xilinx FIFO Generate IP核(8):FIFO设计常见问题与解决方案
fpga开发·fifo generate·fifo常见问题·fifo异常定位·fifo丢数·fifo读数重复
范纹杉想快点毕业2 天前
100道关于STM32的问题解答共十万字回答,适用入门嵌入式软件初级工程师,筑牢基础,技术积累,校招面试。
驱动开发·单片机·嵌入式硬件·fpga开发·硬件工程
知识充实人生2 天前
时序收敛方法二:Fanout优化
fpga开发·fanout·高扇出·时序收敛