1. PLL简介:
PLL(Phase Locked Loop):为锁相回路或锁相环,用来统一整合时脉讯号,使内存能正确的存取资料。PLL用于振荡器中的反馈技术。
锁相环是一种反馈电路,其作用是使得电路上的时钟和某一外部时钟的相位同步。PLL通过比较外部信号的相位和由压控晶振(VCXO)的相位来实现同步的,在比较的过程中,锁相环电路会不断根据外部信号的相位来调整本地晶振的时钟相位,直到两个信号的相位同步。
2. PLL规格:
输出
100M
20M
80M
3个时钟频率
3. 实现原理
使用ALTERA PLL例化得到。
4. Verilog HDL源代码
Verilog HDL代码为:
modulePLL_Inst (
//input
sys_clk ,
sys_rst_n ,
//output
clk_100M ,
clk_20M ,
clk_80M
// data_out
);
//inputports
input sys_clk ; //system clock;
input sys_rst_n ; //system reset, low is active;
//outputports
output clk_100M ; //output clock 100M;
output clk_20M ; //output clock 20M;
output clk_80M ; //output clock 80M;
//output clock_enbale ;
//regdefine
//wiredefine
wire clk_100M_tmp ; //wire clock 100M;
wire clk_80M_tmp ; //wire clock 20M;
wire clk_20M_tmp ; //wire clock 80M;
wire clk_100M ; //wire clock 100M;
wire clk_80M ; //wire clock 20M;
wire clk_20M ; //wire clock 80M;
//parameterdefine
parameterWIDTH = 8;
parameterSIZE = 8;
/*******************************************************************************************************
** Main Program
**
********************************************************************************************************/
//instancethe PLL
PLL PLL_U0 (
.areset (sys_rst_n ) ,
.inclk0 (sys_clk ) ,
.c0 (clk_100M_tmp ) ,
.c1 (clk_20M_tmp ) ,
.c2 (clk_80M_tmp ) ,
.locked (clock_enbale )
);
//enbalethe clock when the pll is locked
assignclk_100M = (clock_enbale == 1'b1)? clk_100M_tmp : 1'b0;
assignclk_80M = (clock_enbale == 1'b1)?clk_80M_tmp : 1'b0;
assignclk_20M = (clock_enbale == 1'b1)?clk_20M_tmp : 1'b0;
endmodule
//endof RTL code