FPGA分频,仿真与实际结果不同
时间:10-02
整理:3721RD
点击:
系统时钟为40MHZ,40分频为1MHZ,仿真结果正确,但是实际结果占空比为6.25%。
换成50Mhz的时钟,结果就对了,换回40M还是不对。
怀疑时钟坏了,但是用示波器测试时钟,又是正确的。
百思不得其解啊,忘各位大神指教,谢谢!
附代码:
reg[4:0] sck_cnt; //系统时钟计数器
reg[4:0] sck_cnt_n; //sck_cnt的下一个状态
parameter FINISHED_P =5'd9
parameter FINISHED_X =5'd19;
always@(posedge SYSCLK or negedge RST_B)
begin
if(!RST_B)
sck_cnt <= 5'h0;
else
sck_cnt <= sck_cnt_n;
end
always@(posedge SYSCLK)
begin
if(sck_cnt == FINISHED_X)
sck_cnt_n <= 5'h0;
else
sck_cnt_n <= sck_cnt + 5'h1;
end
always@(posedge SYSCLK or negedge RST_B)
begin
if(!RST_B)
begin
IO3 <= 1'h0;
end
else
IO3 <= IO3_N;
end
always@(*)
begin
if(!RST_B)
IO3_N <= 1'h0;
else if(sck_cnt == FINISHED_P)
IO3_N <= 1'h0;
else if(sck_cnt == FINISHED_X)
IO3_N <= 1'h1;
end
换成50Mhz的时钟,结果就对了,换回40M还是不对。
怀疑时钟坏了,但是用示波器测试时钟,又是正确的。
百思不得其解啊,忘各位大神指教,谢谢!
附代码:
reg[4:0] sck_cnt; //系统时钟计数器
reg[4:0] sck_cnt_n; //sck_cnt的下一个状态
parameter FINISHED_P =5'd9
parameter FINISHED_X =5'd19;
always@(posedge SYSCLK or negedge RST_B)
begin
if(!RST_B)
sck_cnt <= 5'h0;
else
sck_cnt <= sck_cnt_n;
end
always@(posedge SYSCLK)
begin
if(sck_cnt == FINISHED_X)
sck_cnt_n <= 5'h0;
else
sck_cnt_n <= sck_cnt + 5'h1;
end
always@(posedge SYSCLK or negedge RST_B)
begin
if(!RST_B)
begin
IO3 <= 1'h0;
end
else
IO3 <= IO3_N;
end
always@(*)
begin
if(!RST_B)
IO3_N <= 1'h0;
else if(sck_cnt == FINISHED_P)
IO3_N <= 1'h0;
else if(sck_cnt == FINISHED_X)
IO3_N <= 1'h1;
end
来帮顶