我本来打算使用PLL和计数器实现一个128khz的时钟分频,具体的做法是先用PLL实现64mhz的倍频,然后通过计数器,每计数到499,输出一个使能信号clk_out,随即拉低,计数器计数到500清零,进行下一次循环,通过这样的方式实现128khz的分频。这是我编写的代码:
module S_CLK(
CLK,
Reset_n,
clk_out
);
input CLK;
input Reset_n;
output reg clk_out;
wire locked;
wire clk_64M;
PLL PLL(
.clk_out1(clk_64M),
.resetn(Reset_n),
.locked(locked),
.clk_in1(CLK)
);
reg [8:0]counter;
always @(posedge clk_64M or negedge Reset_n)
if(!Reset_n)
clk_out<=0;
else if(counter==499)
clk_out<=1;
else if(counter==500) begin
counter<=0;
clk_out<=0;
end
else
counter<=counter+1'b1;
endmodule
这是测试文件代码:
`timescale 1ns / 1ns
module S_CLK_tb();
reg CLK;
reg Reset_n;
wire clk_out;
S_CLK S_CLK_inst0(
.CLK(CLK),
.Reset_n(Reset_n),
.clk_out(clk_out)
);
initial CLK=1;
always #10 CLK = ~CLK;
initial begin
CLK=0;
Reset_n=0;
#100;
Reset_n=1;
#200000;
end
endmodule
这是跑出来的图:
因为是刚开始接触FPGA,所以检查不出来具体是哪里出了问题,还请各位能帮我看看,给我解答一下我的代码哪里出了问题,万分感谢!
|