首页->【FPGA/CPLD助学小组】

61 2

这段个5.5分频的代码:
module fenpin55 (clk_in,clr,clk_out);
input clk_in;
input clr;
output reg clk_out;
reg clk1;
wire clk2;
integer count;
xor  xor1(clk2,clk_in,clk1);
always@(posedge clk_out or negedge clr)
begin 
   if (~clr)
      begin 
            clk1<=1'b0;
      end
  else
           clk1<=~clk1;
end
always @(posedge clk2 or negedge clr )
begin
   if (~clr)
      begin 
           count<=0;
           clk_out<=0;
      end
   else if(count==5)
       begin 
           count<=0;
           clk_out<=1;
      end
        else
               begin 
           count<=count+1;
           clk_out<=0;
      end
end
endmodule

这是仿真结果:

273-6361232157146000003853595.jpg-g115

问题来了:在最后一个always语句中clk2作为敏感信号并未发生变化,但是输出信号clk_out却发生了变化。这究竟是发生了什么~~  求解答

楼主可见

  1. LVPP 2#
    @普莱斯队长  

    不知道代码是不是你写后自己仿真的的 仿真结果我出来的好像不是你这个

    是我仿真的,这是一本verilog书上的程序,我起初看到他的仿真结果不是太相信。但是后来我自己仿真了一下确实是这样。

    仿真代码:

    module FP55_TB;

    reg clk_in;

    reg clr;

    wire clk_out;

    fenpin55 uut (

    .clk_in(clk_in), 

    .clr(clr), 

    .clk_out(clk_out)

    );

     always  #10 clk_in=~clk_in;

     initial begin

    clk_in = 0;

    clr = 0;

    #105;

    clr = 1;

         end

       endmodule

    360截图20161021121915253.jpg

    书上的程序,及仿真结果:

    360截图20161021122644117.jpg


  2. 普莱斯队长 1#

    不知道代码是不是你写后自己仿真的的 仿真结果我出来的好像不是你这个