PLL锁相环的作用
根据给定的频率的信号进行多种的不同的其他的频率的时钟信号的生成,用于不同等级的时钟的生成
使用方法
通过vivado 自带的时钟管理的ip core 进行pll 的使用
打开clock wizard
修改配置
(1)修改输入的时钟的频率是200MHz
(2) 修改其几路的输出的时钟的频率
生成ip core 并编写顶层文件
如下所示为顶层文件:
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2020/07/30 22:26:39
// Design Name:
// Module Name: pll_top
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//
module pll_top(
input sys_clk_p,
input sys_clk_n,
input rst_n,
input locked,
output clk_out1,
output clk_out2,
output clk_out3,
output clk_out4
);
// wire locked;
wire pll_clk_o;
wire sys_clk;
IBUFDS sys_clk_ibufgds(
.O(sys_clk),
.I(sys_clk_p),
.IB(sys_clk_n)
);
clk_wiz_0 pll_test(
.clk_in1(sys_clk),
//output
.clk_out1(clk_out1),
.clk_out2(clk_out2),
.clk_out3(clk_out3),
.clk_out4(clk_out4),
//status and output
.reset(~rst),
.locked(locked)
);
// ODDR #(
// .DDR_CLK_EDGE("SAME_EDGE")
// ) ODDR_inst(
// .Q(clk_out1),
// .C(pll_clk_o),
// .CE(1'b1),
// .D1(1'b1),
// .D2(1'b0),
// .R(1'b0),
// .S(1'b0)
// );
endmodule
编写仿真文件
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2020/07/31 10:50:47
// Design Name:
// Module Name: vtf_pll_test
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//
module vtf_pll_test;
reg sys_clk_p;
wire sys_clk_n;
reg rst_n;
wire clk_out1;
wire clk_out2;
wire clk_out3;
wire clk_out4;
reg locked;
pll_top pll_sim(
.sys_clk_p(sys_clk_p),
.sys_clk_n(sys_clk_n),
.rst_n(rst_n),
.locked(locked),
.clk_out1(clk_out1),
.clk_out2(clk_out2),
.clk_out3(clk_out3),
.clk_out4(clk_out4)
);
initial begin
sys_clk_p=0;
locked = 1;
#100;
rst_n = 0;
locked = 0;
#100
rst_n = 1;
end
always #1 sys_clk_p = ~sys_clk_p;
assign sys_clk_n = ~sys_clk_p;
endmodule