- UID
- 1029342
- 性别
- 男
|
通过调节延迟链的LCELL个数可以对输出频率进行调节。虽然可以通过时序逻辑分析软件对延迟进行预估计,但准确度并不高,因此,建议采用实测调整。
上述时钟产生的方法可以获得较低频率的时钟信号,然而大多数FPGA设计需要更高的时钟,为了获得高频稳定的时钟源,需要借助FPGA内部的PLL对时钟信号进行琐相跟踪。通过MegaCore向导可以订制一个ALTPLL锁相环,在输入时钟信号频率上填写实测的自激振荡频率,在输出频率上可以自行计算。本实验对128LCELLs产生的6.84Mhz信号进行倍分频,获得512Mhz的时钟。由于高频时钟不容易测量,因此将此时钟用来更新计数器,计数器实现64分频。由于PLL需要从外部时钟输入PIN直接引入,因此需要将原先的输出dout与时钟输入端dclk在硬件上连接。从而将其作为输入时钟。
// Quartus II Verilog Template
// Unsigned Adder
module delay
#(parameter WIDTH = 128)
(
output dout,
input dclk,
output dpllout,
output dplldiv,
output lock
);
wire [WIDTH:0] gcBufChain /*synthesis syn_keep=1*/;
reg [5:0] counter;
assign gcBufChain[0] = ~gcBufChain[WIDTH];
assign dout = gcBufChain[0];
genvar j;
generate
for (j = 0; j < WIDTH; j = j + 1)
begin: dc_loop
LCELL AlteraBuf (.in(gcBufChain[j]), .out(gcBufChain[j+1]));
end
endgenerate
always @(posedge dpllout)
begin
counter <= counter + 1;
end
PLL pllclk(.inclk0(dclk), .c0(dpllout), .locked(lock));
assign dplldiv = counter[5];
endmodule
可以从示波器上观测到稳定的8Mhz的方波信号,同时也可观察到PLL锁定指示高电平(有效)。
总结:当外部晶振无法正常工作时,可以尝试采用通过组合逻辑延迟产生的自激振荡作为时钟。然而要注意的是,某些低端器件,如Cyclone II,输出的信号可能稳定性不高,Skew较大,高端器件性能较为稳定。
================================= |
|