Error handling 我写了一个verilog代码,但出现了一些错误,比如不是常量或未知类型

Error handling 我写了一个verilog代码,但出现了一些错误,比如不是常量或未知类型,error-handling,verilog,fpga,system-verilog,Error Handling,Verilog,Fpga,System Verilog,如何删除标题中提到的错误 reg [3:0]count; reg [6:0]seg; always @ (posedge clock) begin if (reset) count = 0; else count = count+1'b0; //starting A counter end begin // this seems to need an "always @*" just before "begin" cas

如何删除标题中提到的错误

  reg [3:0]count;
  reg [6:0]seg;

  always @ (posedge clock) begin
    if (reset)
      count = 0;
    else
      count = count+1'b0;   //starting A counter
  end

  begin // this seems to need an "always @*" just before "begin"
    case(count)
      4'b0000: seg = 7'b0000001;
    endcase
  end

  assign {a,b,c,d,e,f,g} = seg;

endmodule  // where is "module"?
它显示错误44,即计数不是常数 错误1059,即seg类型未知。请帮忙。
无法确定下一步要做什么这似乎是一个7段计数器,它根据正在运行的4位计数器的值显示十六进制值

首先,您需要声明模块的输入和输出,这可以在Verilog 2001中完成,如下所示:

module counter7seg (
  input wire clock,
  input wire reset,
  output wire a,
  output wire b,
  output wire c,
  output wire d,
  output wire e,
  output wire f,
  output wire g
  );

您描述的这一部分看起来很好:一个4位计数器。但正如Morgan所指出的,你需要解决两件事:在一个有时间限制的时间内的任务必须是非阻塞的。这个网站是用来问一些其他人可能也会从中获益的具体问题,而不是为你做工作。这看起来有点像你应该首先学习如何使用verilog;可能会遵循一些教程。在示例中,时钟、重置和a、b、c、d、e、f、g未定义。Ups,是的!我会解决的谢谢你的回复。我确实做了你建议的更正。但它仍然显示了我前面提到的两个错误。你能发布完整的模块吗?
  always @ (posedge clock) begin
    if (reset)
      count <= 0;
    else
      count <= count+1'b1;   //starting A counter
  end
  always @* begin
    case(count)  // 16 cases here + default
      4'b0000: seg = 7'b0000001; // 0
      4'b0001: seg = 7'b1001111; // 1
      4'b0010: seg = 7'b0110110; // 2
      //......
      //......
      4'b1000: seg = 7'b0000000; // 8
      //......
      //......
      4'b1111: seg = 7'b0110000; // a nice capital F
      default: seg = 7'b1111111; // a default case with all segments off
    endcase
  end