系列文章目錄:FPGA原理與結(jié)構(gòu)(0)——目錄與傳送門
一、前言
? ? ? ? 本文介紹xilinx的時鐘IP核 Clocking Wizard v6.0的具體使用與測試過程,在學(xué)習(xí)一個IP核的使用之前,首先需要對于IP核的具體參數(shù)和原理有一個基本的了解,具體可以參考:
FPGA原理與結(jié)構(gòu)——時鐘IP核原理學(xué)習(xí)https://blog.csdn.net/apple_53311083/article/details/132497850
二、時鐘 IP核定制
1、 Clocking Wizard IP核
step1 打開vivado工程,點擊左側(cè)欄中的IP Catalog
step2 在搜索欄搜索clock,找到Clocking Wizard IP核
2、 IP核定制
step3 Clocking Options 界面定制
① Component Name” :用于設(shè)置該IP 核的名稱?
②?“Clock Monitor” :用來監(jiān)控時鐘是否停止、故障和頻率變化。一般不用;
③ “Primitive” :用于選擇是使用MMCM 還是PLL 來完成時鐘需求,一般來說,MMCM 和PLL 都可以完成,這里保持默認選擇MMCM。
④ “Clocking Features” :
- Frequency Synthesis : 表示頻率綜合,只有勾上才能修改想要的時鐘頻率。
- Phase Alignment : 相位對齊,勾選后輸出時鐘與輸入時鐘的相位是一致的
- Dynamic Reconfig : 可以通過AXI接口對時鐘IP核進行動態(tài)配置,這里不適用
- Safe Clock Startup : 安全啟動,在時鐘穩(wěn)定之前不會有輸出
- Minimize Power :最小化功率,缺點是可能會影響性能
- Spread Specturm : 頻譜擴展
- Dynamic Phase Shift : 動態(tài)可調(diào)相位
"Jitter Optimization " :
- Balanced : 平衡模式(默認選項),性能和功耗處于平衡狀態(tài)
- Minimize Output Jitter : 輸出時鐘抖動最小化模式,功耗會增大,相位可能惡化
- Maximize Input Jitter filtering : 最大化輸入時鐘過濾,適用于輸入時鐘的抖動較大的情況,但是可能會導(dǎo)致輸出時鐘的抖動過大
⑤?“Input Clock Information”:選項中,把“Primary”時鐘的輸入頻率修改為開發(fā)板的核心板上的晶振頻率,source根據(jù)時鐘源類型選擇,單端時鐘或者差分時鐘,這里我們進行的是仿真測試,設(shè)置的輸入時鐘頻率為100MHZ 。
step4 Output Clocks 界面定制
?
① : 這里我們就可以設(shè)置我們所需要的輸出時鐘頻率和相位了,這里我們設(shè)置了4個輸出時鐘,clk_out1_100m:100MHZ時鐘,clk_out2_100m_180:100MHZ時鐘,與clk_out1_100m不同的是,其有著180°的相位差,clk_out3_50m:50MHZ時鐘,clk_out3_25m:25MHZ時鐘。
② : 勾選不同信號的輸出順序,使用的前提是要在之前的界面勾選上Safe Clock Startup,這里就不適用
③ :Clocking Feedback :時鐘反饋,只有在之前的界面勾選了Phase?Alignment才可以使用
④ : 一些額外的引腳可選項,這里著重介紹一下locked :置位時表示PLL輸出信號有效,平常使用PLL一定要等該信號有效
step5 Port Renaming 界面定制
? ? ? ? 輸出端口信號重命名,一般不用修改。
step6 MMCM Settings 界面定制
????????“MMCM Setting”選項卡展示了對整個MMCM/PLL 的最終配置參數(shù),這些參數(shù)都是根據(jù)之前用戶輸入的時鐘需求由Vivado 來自動配置的,Vivado 已經(jīng)對參數(shù)進行了最優(yōu)的配置,在絕大多數(shù)情況下都不需要用戶對它們進行更改,也不建議更改,所以這一步保持默認即可,如下圖所示。?
step7 Summary
????????最后的“Summary”選項卡是對前面所有配置的一個總結(jié),在這里直接點擊“OK”按鈕即可。
3、IP核測試
? ? ? ? 首先編寫頂層文件,完成對于IP核的例化
module clk_top(
input sys_clk,
input rst,
output clk_100m,
output clk_100m_180,
output clk_50m,
output clk_25m,
output locked);
clk_gen clk_gen_u1
(
// Clock out ports
.clk_out1_100m(clk_100m), // output clk_out1_100m
.clk_out2_100m_180(clk_100m_180), // output clk_out2_100m_180
.clk_out3_50m(clk_50m), // output clk_out3_50m
.clk_out4_25m(clk_25m), // output clk_out4_25m
// Status and control signals
.reset(rst), // input reset
.locked(locked), // output locked
// Clock in ports
.clk_in1(sys_clk)); // input clk_in1
endmodule
? ? ? ? 接下來進行測試文件編寫:
`timescale 1ns / 1ps
module tb_clk_top();
reg sys_clk;
reg rst;
wire locked;
wire clk_100m,clk_100m_180,clk_50m,clk_25m;
always #5 sys_clk = ~sys_clk;
initial begin
sys_clk <= 1'b0;
rst = 0;
#15
rst = 1;
#10
rst = 0;
end
clk_top clk_top_u1(
.sys_clk (sys_clk),
.rst (rst),
.clk_100m(clk_100m),
.clk_100m_180(clk_100m_180),
.clk_50m(clk_50m),
.clk_25m(clk_25m),
.locked(locked)
);
endmodule
?4、測試結(jié)果
? ? ? ? ?可以看到,經(jīng)過一段時間后,時鐘輸出趨于穩(wěn)定,實現(xiàn)穩(wěn)定的分頻時鐘輸出,與我們預(yù)期的結(jié)果是一致的。文章來源:http://www.zghlxwxcb.cn/news/detail-713372.html
三、總結(jié)
? ? ? ? ?時鐘IP核在我們的FPGA設(shè)計過程中是非常常用的,一般也是我們推薦使用的一種設(shè)計方式,它可以給我們提供不同頻率,不同相位的時鐘輸出。文章來源地址http://www.zghlxwxcb.cn/news/detail-713372.html
到了這里,關(guān)于FPGA原理與結(jié)構(gòu)(16)——時鐘IP核的使用與測試的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!