如何在Verilog中使用计数器显示一系列数字

时间:2014-04-07 17:13:03

标签: counter verilog

例如,必须显示0,2,4,0,2,4 ..我使用8段的输出 - 不太重要。

 output reg [7:0] data
 always @ (*) begin             
 case                                
 1:data= 8'b00000011; //number 0                        
 2:data= 8'b00100101; //number 2                     
 3:data= 8'b10011001; //number 4 
 default:data=8'b00000011;
 endcase
 end

柜台:

input clock,
input reset,
output [7:0] out
reg [31:0] counter;
always @ (posedge clock) begin
if(reset==1)  counter <= 0;
else counter <= counter + 1;
end

我的问题是我可以增加案例值而不是计数器吗? 喜欢:

always @ (posedge clock) begin
if(reset==1)  case <= 1;
else case <= case + 1;
if(case==3) reset<=1;
end

如果没有,那我该怎么做?

1 个答案:

答案 0 :(得分:3)

您的个案陈述错误。它应该根据计数器值进行选择:

always @ (*) begin             
 case(counter)
  1: data= 8'b00000011; //number 0                        
  2: data= 8'b00100101; //number 2                     
  3: data= 8'b10011001; //number 4 
  default:data=8'b00000011;
 endcase
 end

你的柜台应该是:

always @ (posedge clock) begin
  if(reset==1 || counter == 3)  counter <= 1;
  else counter <= counter + 1;
end

请注意,case是一个关键字。你不能在表达式中使用它。