FPGA的倍頻用代碼來實現(xiàn)比較復雜,簡單的方法就是使用PLL核。
PLL全稱是Phase Locked Loop,即鎖相環(huán),是一種反饋控制電路。PLL對時鐘網(wǎng)絡(luò)進行系統(tǒng)級的時鐘管理和偏移控制,具有時鐘倍頻、分頻、相位偏移和可編程占空比等功能。
打開工程FreDivDou,

點擊PROJECT MANAGER中的IP Catalog,

在IP Catalog的Search中輸入clock,雙擊下面出現(xiàn)的FPGA Feathers and
Design——Clocking——Clocking Wizard,

在Clocking Options界面內(nèi),Primitive中選擇PLL,Input Clock Information中將Primary的Input Frequency改為50MHz,點擊OK,

在Output Clocks界面中,將clk_out1的Output Freq改為100MHz(50Mhz的2倍頻),將clk_out2的Output
Freq改為150MHz(50Mhz的3倍頻),點擊OK,

點擊OK,

點擊Generate,生成PLL的ip核clk_wiz_0,

雙擊Sources——IP Sources——clk_wiz_0——Instantiation Template——clk_wiz_0.veo,在clk_wiz_0.veo中
顯示該IP核的實例化模板。

在FreDivDou.v中繼續(xù)添加verilog代碼,
moduleFreDivDou(
input? clk_i,
input? rst_n_i,
outputdiv2_o,
outputdiv3_o,
outputdiv4_o,
outputdou2_o,
outputdou3_o
);
?wire?locked;
? clk_wiz_0 instance_name
?? (
??? // Clock out ports
??? .clk_out1(dou2_o),???? // output clk_out1
??? .clk_out2(dou3_o),???? // output clk_out2
??? // Status and control signals
??? .reset(~rst_n_i), // input reset,這里要加上取反負號,是因為生成PLL時,默//認選擇的是高電平有效,而在本電路中,初始上電時rst_n_i為低電平,之后一直保持
//低電平
??? .locked(locked),?????? // output locked
?? // Clock in ports
??? .clk_in1(clk_i));????? // input clk_in1
Endmodule