FPGA的倍频用代码来实现比较复杂,简单的方法就是使用PLL核。
PLL全称是Phase Locked Loop,即锁相环,是一种反馈控制电路。PLL对时钟网络进行系统级的时钟管理和偏移控制,具有时钟倍频、分频、相位偏移和可编程占空比等功能。
打开工程FreDivDou,
使用IP核点击PROJECT MANAGER中的IP Catalog,
IP Catalog在IP Catalog的Search中输入clock,双击下面出现的FPGA Feathers and
Design——Clocking——Clocking Wizard,
Clocking Options在Clocking Options界面内,Primitive中选择PLL,Input Clock Information中将Primary的Input Frequency改为50MHz,点击OK,
Output Clocks在Output Clocks界面中,将clk_out1的Output Freq改为100MHz(50Mhz的2倍频),将clk_out2的Output
Freq改为150MHz(50Mhz的3倍频),点击OK,
Create Directory点击OK,
Generate Output Products点击Generate,生成PLL的ip核clk_wiz_0,
生产IP核双击Sources——IP Sources——clk_wiz_0——Instantiation Template——clk_wiz_0.veo,在clk_wiz_0.veo中
显示该IP核的实例化模板。
IP核的实例化模板在FreDivDou.v中继续添加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
网友评论