Quartus II设计的分频器调整占空比时出现博错误


`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时波形符合程序

img

img


当SW_Duty=00或11时波形不符合程序

img

img


详细的参数设置

img

img

img

img

检查了上一块分频部分的代码发现可以正常绘出波形,所以目前无法进一步找出解决问题的办法,如果还有细节需要查看麻烦联系我

后面4张图可以不用贴
前面的图中缺少Pulse,Division 这2个信号。
你把这俩信号的波形整出来估计你自己就能解决问题。