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