PFGA PLL(鎖相環)
PFGA PLL(鎖相環)
將較低頻率的片外晶片倍頻得到較高的頻率時鐘訊號。
鎖相環的一大作用就是對輸入時鐘進行分頻和倍頻,以得到更高或更低頻率的時鐘訊號,以供邏輯電路使用。還可以對同一PLL生成的多個時鐘的相位進行控制,以保證兩個時鐘域的邏輯工作時有確定的時間差。(兩個或多個時鐘的上升沿有時間差)
PLL內部電路
N:預分頻單元,產生FREF參考時鐘傳輸到頻率檢測電路PFD,PFD產生的訊號傳輸到ChargePump產生電壓訊號,控制VCO壓控振盪器產生時鐘訊號FVCO經過M倍頻傳回到PFD中。環路不斷調整達到動態平衡。
PLL模擬
使用IP核生成PLL,生成25M、75M、100MHZ時鐘訊號
`timescale 1ns/1ns
`define Clk_period 20
module pll_tb;
reg areset;
reg Clk;
wire c0;
wire c1;
wire c2;
wire locked;
pll pll0(
.areset(areset), //復位訊號 高電平處於復位狀態
.inclk0(Clk), //時鐘訊號
.c0(c0),
.c1(c1),
.c2(c2),
.locked(locked) //穩定訊號 若為1則動態平衡完成可以輸出穩定時鐘
);
initial Clk =1;
always #(`Clk_period/2) Clk =~Clk;
initial begin
areset = 1;
#(`Clk_period*100+1);
areset = 0;
#(`Clk_period*200+1);
$stop;
end
endmodule
PLL控制4路LED
PLL控制4路LED以不同頻率亮滅
count模組
module count(
Clk,
Rst_n,
high
);
input Clk;
input Rst_n;
output reg high;
reg [24:0]count;
parameter count_max = 25'd24_999_999; //50MHZ計算為500ms
always @(posedge Clk or negedge Rst_n) //計數
if(!Rst_n)
count <= 25'b0;
else if(count == count_max)
count <= 25'b0;
else count <= count + 1'b1;
always @(posedge Clk or negedge Rst_n) //計數滿輸出反轉
if(!Rst_n)
high <= 1'b0;
else if(count == count_max)
high <= ~high;
else high <= high;
endmodule
count模組模擬
`timescale 1ns/1ns
`define Clk_period 20
module count_tb;
reg Clk;
reg Rst_n;
wire back_high;
count #(
.count_max (25'd24_999)
)
count0(
.Clk(Clk),
.Rst_n(Rst_n),
.high(back_high)
);
initial Clk = 1;
always #(`Clk_period/2) Clk = ~Clk;
initial begin
Rst_n = 0;
#(`Clk_period*5);
Rst_n = 1 ;
#(`Clk_period*10000);
$stop;
end
endmodule
0.5ms反轉一次
pll_control模組
將不同頻率的時鐘傳送到count模組中。
module pll_control(
Clk,
Rst_n,
Led
);
input Clk;
input Rst_n;
output [3:0]Led;
reg areset;
wire c0;
wire c1;
wire c2;
wire locked;
pll pll0(
.areset(~Rst_n), //復位訊號 高電平處於復位狀態
.inclk0(Clk),
.c0(c0),
.c1(c1),
.c2(c2),
.locked(locked) //穩定訊號 若為1則動態平衡完成可以輸出穩定時鐘
);
count #( .count_max(25'd24_999_99)
)
count0(
.Clk(Clk),
.Rst_n(Rst_n),
.high(Led[0])
);
count #( .count_max(25'd24_999_99)
)
count1(
.Clk(c0),
.Rst_n(Rst_n),
.high(Led[1])
);
count #( .count_max(25'd24_999_99)
)
count2(
.Clk(c1),
.Rst_n(Rst_n),
.high(Led[2])
);
count #( .count_max(25'd24_999_99)
)
count3(
.Clk(c2),
.Rst_n(Rst_n),
.high(Led[3])
);
endmodule
pll_control模擬
`timescale 1ns/1ns
`define Clk_period 20
module pll_control_tb;
reg Clk;
reg Rst_n;
wire [3:0]Led;
pll_control pll_control0(
.Clk(Clk),
.Rst_n(Rst_n),
.Led(Led)
);
defparam pll_control0.count0.count_max = 249;
defparam pll_control0.count1.count_max = 249;
defparam pll_control0.count2.count_max = 249;
defparam pll_control0.count3.count_max = 249;
initial Clk =1;
always #(`Clk_period/2) Clk =~Clk;
initial begin
Rst_n=0;
#(`Clk_period*5);
Rst_n=1;
#(`Clk_period*1000);
$stop;
end
endmodule
4路led以不同時間反轉。驅動時脈頻率越高,閃爍速度越快。
相關文章
- 鎖相環學習---CD4046
- 基於simulink的模擬鎖相環和數字鎖相環建模與對比模擬
- 模擬積體電路設計系列部落格——8.1.3 鎖相環的鎖相過程
- MySQL鎖相關MySql
- EBS FORM PLL 開發入門ORM
- PostgreSQL死鎖相關SQL
- Lock鎖相關以及AQSAQS
- QuartusII呼叫 PLL_IP核方法(Mega Wizard)
- 模擬積體電路設計系列部落格——8.1.1 鎖相環基本介紹
- 基於CD74HC4046鎖相環儀器內外參考切換
- FPGA數字訊號處理(十三)鎖相環位同步技術的實現FPGA
- oracle鎖級別相關測試Oracle
- MySQL中鎖的相關問題DTQUMySql
- UOJ #919. 【UR #28】環環相扣 題解
- Java與Mysql鎖相關知識總結JavaMySql
- 簡單瞭解 MySQL 中相關的鎖MySql
- 相機+IMU+雷達環境搭建
- 可持續整合環境相關文章
- mysql鎖分析相關的幾個系統檢視MySql
- HDL/FPGA學習筆記二十五:Vivado PLL IP核的使用FPGA筆記
- BMJ:研究發現環境與肥胖相關
- 運維相關環境與工具掃盲運維
- 殺會話之查詢鎖表的物件及相關操作會話物件
- 小米手環解鎖MacOS系統筆記本MacBookProMac筆記
- linux 環境下 elasticsearch 及 python 相關庫的使用LinuxElasticsearchPython
- [20200422]瞭解相關程式的環境變數.txt變數
- IDEA 配置環境和相關工具整理(新手入門)Idea
- MySQL鎖(讀鎖、共享鎖、寫鎖、S鎖、排它鎖、獨佔鎖、X鎖、表鎖、意向鎖、自增鎖、MDL鎖、RL鎖、GL鎖、NKL鎖、插入意向鎖、間隙鎖、頁鎖、悲觀鎖、樂觀鎖、隱式鎖、顯示鎖、全域性鎖、死鎖)MySql
- Python學習系列之一: python相關環境的搭建Python
- 深入理解PHP+Redis實現分散式鎖的相關問題PHPRedis分散式
- ORACLE建庫過程中自動生成的跟鎖相關的VIEWOracleView
- Redis叢集環境下的-RedLock(真分散式鎖) 實踐Redis分散式
- 高手過招:用SQL解決環環相扣的刑偵推理問題(羅海雄版本)SQL
- 自旋鎖、阻塞鎖、可重入鎖、悲觀鎖、樂觀鎖、讀寫鎖、偏向所、輕量級鎖、重量級鎖、鎖膨脹、物件鎖和類鎖物件
- 幾何校準 和 ros環境下標定Balser相機ROS
- Docker 搭建 PHP 環境及相關軟體入門到了解DockerPHP
- mysql死鎖deadlock相關幾個系統變數innodb_lock_wait_timeoutMySql變數AI
- Java鎖?分散式鎖?樂觀鎖?行鎖?Java分散式