verilog中的case语句部分没有用

时间:2017-08-18 14:00:37

标签: verilog case-statement

我想为可乐设计一台NT15的自动售货机,我的代码如下。

让删除的“case”语句部分为图A.取消删除“case”语句部分为图B.我发现两个数字是相同的,所以我不知道“case”语句部分是不行的。我可以不明白为什么。我的程序问题?谁能告诉我为什么?plz

       `timescale 1ns/1ns
      module vendor (NT5,NT10,clk,reset,cola,change);
      input NT5 , NT10 , clk , reset;
      output  reg  cola , change;
      reg [1:0]five = 2'b00;
      reg [1:0]ten = 2'b00;
      reg [2:0] payment_state, next_state;
      parameter D_0 = 3'b000,//0 dollar
      D_5 = 3'b001,//5 dollar
      ...         
      always @(posedge clk ) 
      begin
           if(reset==1||cola==1)
         begin
          cola<=0;
          change<=0;
          five<=0;
          ten<=0;
              end 
      case (payment_state)
        D_0 : begin  
            cola <= 0;
            change <= 0;
            if (five == 1'b1)    
                next_state = D_5; 
            if (ten == 1'b1)     
                next_state = D_10;  
          end
        D_5 :  ...    
        D_10 : ...
        D_15 : begin  
                 cola <= 1; 
                 change = 0; 
                 next_state = D_0; 
               end   
        D_20 : begin  
                 cola <= 1; 
                 change = 1; 
                 next_state = D_0; 
               end

     default : begin    
                  next_state = D_0;
                  cola<= 1;
                  change<= 1;
               end
  endcase     
 if(NT5==1'b1)
   begin
   five<=five+1'b1;
   end

 if(NT10==1'b1)
   begin 
      ten<=ten+1'b1;
   end

  end   
  endmodule

1 个答案:

答案 0 :(得分:0)

我认为你应该首先在测试平台下测试这个模块。

我认为您的FSM不是一两个或三个总是阻止风格。

我认为这篇文章可以帮到你。 Coding And Scripting Techniques For FSM Designs With Synthesis-Optimized, Glitch-Free Outputs