为什么这个程序仿真clk_in会出现这样的波形以及如何解决?

2019-07-15 23:42发布

程序源代码如下:
/******************************************************/
//        DATA: 2015年7月20日14:25:09
//        Project Name: verilog_fm4
//        REVERSION: V1.0
//        Description:分频计数实验----半整数分频实验
//        Editor FPGA_Lover
/*******************************************************/


module verilog_fm4(
            clk,rst,
            clk_in,
            clk_div2,
            clk_out,
            cnt

);

input clk;
input rst;

output clk_in;
output clk_div2;

output clk_out;
output [1:0] cnt;

wire clk_in;
reg clk_div2;
reg clk_out;


/******************************************************************/
//                         系统时钟二分频模块
//
//
/******************************************************************/

always @(posedge clk or posedge rst) begin
       if(rst) clk_div2 <= 1'b0;
       else clk_div2 = ~clk_div2;
end

/*******************************************************************/
//                         模3计数时钟
//
//
/*******************************************************************/

assign clk_in = clk ^ clk_div2;

/*******************************************************************/
//                          模3计数模块
//
//
/*******************************************************************/

reg [1:0] cnt;

always @(posedge clk_in or posedge rst) begin
     if(rst) begin
         cnt <= 2'd0;
         clk_out <= 1'b0;
     end
     else if(cnt == 2'd1) begin
          clk_out <= ~clk_out;
          cnt <= cnt + 1'b1;
     end
     else if (cnt == 2'd2) begin
          clk_out <= ~ clk_out;
          cnt <= 1'b0;
     end
     else
         cnt <= cnt + 1'b1;
end
endmodule


仿真疑问.png

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。