FPGA的時鐘IP核知識點

祈愿树下發表於2024-03-13

IP核在我看來就跟stm32中的一些驅動的庫函式一樣,可以呼叫快速使用。不用一步一步的自己寫底層原理。

可以加速設計,快速設計程式碼。


IP核的PLL還有一個MMCM。PLL是鎖相環,對時鐘進行管理。也是後面使用中很重要的IP核。不同器件需要不同的時鐘。

時鐘管理單元CMT=PLL+MMCM混合時鐘管理(MMCM=PLL+DCM相位調整):倍頻、分頻、相位偏移、可程式設計佔空比和最佳化抖動。

這邊實驗任務是將50MHZ的輸入時鐘,輸出四路不同的時脈頻率。分別是100M 反相100M 50M 和 25M

配置好IP核後,透過頂層模組例化

module clk_ip(
    clk,
    reset_n,
    clk_100m,
    clk_100m_180,
    clk_50m,
    clk_25m
    
    );
    
    input   clk;
    input   reset_n;
    
    output  clk_100m;
    output  clk_100m_180;
    output  clk_50m;
    output  clk_25m;
    
    wire    locked;
    wire    rst_n;
    
    assign rst_n = reset_n & locked; // 都為高電平時,就是穩定了,復位穩定。
    
    clk_wiz_0 instance_name
   (
    // Clock out ports
    .clk_out1(clk_100m),     // output clk_out1
    .clk_out2(clk_100m_180),     // output clk_out2
    .clk_out3(clk_50m),     // output clk_out3
    .clk_out4(clk_25m),     // output clk_out4
    // Status and control signals
    .reset(~reset_n), // input reset 手冊23頁高電平有效
    .locked(locked),       // output locked
   // Clock in ports
    .clk_in1(clk)
    );      // input clk_in1
    

endmodule

唯一注意的地方就是,時鐘IP核的復位訊號,是高電平有效,所以例化的時候加上了取反。手冊23頁的。

FPGA的時鐘IP核知識點

然後模擬看波形

`timescale 1ns / 1ps

module clk_ip_tb();

    reg clk;
    reg reset_n;
    
    wire    clk_100m;    
    wire    clk_100m_180;
    wire    clk_50m;     
    wire    clk_25m;      
    
    initial clk = 1;
    always #10 clk = ~ clk;
    
    initial begin
        reset_n = 0;
        #201
        reset_n = 1;
 
    end
        
    clk_ip clk_ip_inst(
    .clk(clk),         
    .reset_n(reset_n),     
    .clk_100m(clk_100m),    
    .clk_100m_180(clk_100m_180),
    .clk_50m(clk_50m),     
    .clk_25m(clk_25m)      

    );


endmodule

FPGA的時鐘IP核知識點

相關文章