赛灵思 调用PLL 原语
时间: 2023-08-03 09:05:43 浏览: 59
在赛灵思FPGA中,可以使用PLL(Phase Locked Loop)原语来实现时钟频率的锁定和倍频。下面是一个简单的示例代码:
```
(* use_dsp48 = "no" *) // 禁用DSP48原语,可选
module pll_example (
input clk_in,
output clk_out
);
wire locked;
wire bypass;
// 实例化PLL原语
// 这里使用了一个名为PLL_ADV的原语
// 参数说明:
// - CLKIN1_PERIOD:输入时钟周期,单位ps
// - CLKFBOUT_MULT_F:反馈时钟倍频因子,范围为2~64
// - CLKOUT0_DIVIDE_F:输出时钟分频因子,范围为1~128
// - CLKOUT0_DUTY_CYCLE:输出时钟占空比,范围为0.01~0.99
// - CLKOUT0_PHASE:输出时钟相位偏移,单位度
// - CLKFBOUT_PHASE:反馈时钟相位偏移,单位度
// - CLKINSEL:输入时钟选择,0表示使用外部输入时钟,1表示使用反馈时钟
// - CLKFBIN:反馈时钟输入
// - CLKOUT0:输出时钟
// - LOCKED:输出时钟锁定信号
// - BYPASS:旁路控制信号
PLL_ADV my_pll (
.CLKIN1 (clk_in),
.CLKFBIN (clk_out),
.CLKOUT0 (clk_out),
.CLKFBOUT (),
.LOCKED (locked),
.BYPASS (bypass),
.CLKINSEL (1'b0),
.CLKFBOUT_MULT_F(4),
.CLKOUT0_DIVIDE_F(2),
.CLKOUT0_DUTY_CYCLE(0.5),
.CLKOUT0_PHASE (0),
.CLKFBOUT_PHASE (0)
);
endmodule
```
在这个例子中,我们实例化了一个名为`my_pll`的PLL_ADV原语。我们使用了一个外部输入时钟`clk_in`,并将输出时钟`clk_out`的倍频因子设置为4,分频因子设置为2,占空比设置为50%。最后,我们可以通过`locked`信号判断输出时钟是否已经锁定,通过`bypass`信号来控制是否旁路。