`timescale 1ns / 1ps
module Fre_Division(CPi,CLR_,SW_Fre,SW_Duty,CP_out);
input CPi;
input CLR_;
input [2:0]SW_Fre;
input [1:0]SW_Duty;
output reg CP_out;
reg[7:0]Division;
always@(*)
begin
case(SW_Fre)
3'b001:Division=8'd8;
3'b010:Division=8'd16;
3'b011:Division=8'd32;
3'b100:Division=8'd64;
3'b101:Division=8'd128;
default:Division=8'd4;
endcase
end
reg[6:0]Pulse;
always@(*)
begin
case(SW_Duty)
2'b01:Pulse=Division*3/4;
2'b10:Pulse=Division/4;
2'b11:Pulse=Division/8;
default:Pulse=Division/2;
endcase
end
reg[6:0]Count;
always@(posedge CPi or negedge CLR_)
begin
if(!CLR_)
begin Count<=0;CP_out<=0;
end
else
begin
if(Count==Division-1)
Count<=0;
else Count<=Count+1'b1;
if((Count>=0)&&(Count<Pulse))
CP_out<=1;
else CP_out<=0;
end
end
endmodule
当SW_Duty=01或10时波形符合程序
检查了上一块分频部分的代码发现可以正常绘出波形,所以目前无法进一步找出解决问题的办法,如果还有细节需要查看麻烦联系我
后面4张图可以不用贴
前面的图中缺少Pulse,Division 这2个信号。
你把这俩信号的波形整出来估计你自己就能解决问题。