如何在Verilog中解决这些解析错误?
出于学术目的,我试图用Verilog编写一个并行进位加法器,但由于几个我不理解的错误,代码无法编译。代码如下:如何在Verilog中解决这些解析错误?,verilog,Verilog,出于学术目的,我试图用Verilog编写一个并行进位加法器,但由于几个我不理解的错误,代码无法编译。代码如下: 1 module full_adder(a,b,c_in,s,c); 2 input a,b,c_in; 3 output s,c; 4 assign s = a ^ (b ^ c_in); 5 assign c = (a & b) | (c_in & (a | b)); 6 endmodule 8 module rc_ad
1 module full_adder(a,b,c_in,s,c);
2 input a,b,c_in;
3 output s,c;
4 assign s = a ^ (b ^ c_in);
5 assign c = (a & b) | (c_in & (a | b));
6 endmodule
8 module rc_adder(a,b,cin,s,cout);
9 input a,b,cin;
10 output s,cout;
11 parameter N = 32; // bits
12 wire[N-1:0] a;
13 wire[N-1:0] b;
14 wire[N-1:0] s;
15 wire cin;
16 wire cout;
17 wire[N-1:0] _c;
18 assign cout = _c[N-1];
20 full_adder add0(.a(a[0]),.b(b[0]),.c_in(cin),.s(s[0]),.c(_c[0]));
21 genvar i;
22 generate
23 for (i = 1; i < N; i = i + 1) begin:gen_adder
24 full_adder addN(.a(a[i]),.b(b[i]),.c_in(_c[i-1]),.s(s[i]),.c(_c[i]));
25 end
26 endgenerate
26 endmodule
1模全加器(a、b、c、in、s、c);
2输入a、b、c_;
3输出s,c;
4分配s=a^(b^c_in);
5分配c=(a&b)|(c|u in&(a&b));
6端模块
8模块rc_加法器(a、b、cin、s、cout);
9输入a、b、cin;
10输出s,cout;
11参数N=32;//位
12线[N-1:0]a;
13导线[N-1:0]b;
14线[N-1:0]s;
15线cin;
16线槽;
17线[N-1:0]\u c;
18分配系数=_c[N-1];
20全加器add0(.a(a[0]),.b(b[0]),.c_in(cin),.s(s[0]),.c(_c[0]);
21 genvar i;
22生成
23对于(i=1;i
从21日到25日,我得到了thees的错误:
- (21):分析错误,应为“(”
- (23):分析错误,应为“error”或“(或“IDENTIFIER”)
- (23):分析错误,应为“错误”或“)”
- (23):分析错误,应为“错误”或“)”
- (23):分析错误,应为“错误”或“)”
- (23):分析错误,应为“错误”或“
- (25):解析错误
请帮助…最好的猜测是您的模拟器只支持或默认为IEEE1364-1995(又名Verilog-95)。IEEE1364-2001(又称Verilog-2001或v2k)中添加了
generate
功能
首先确保您的模拟器支持Verilog-2001。然后确保启用了2001功能。大多数现代模拟器默认为Verilog-2001或Verilog-2005,并具有回滚到Verilog-95的标志
当我强制模拟器在Verilog-95模式下运行时,我能够在上重新创建类似的错误消息
我看到了很多关于你的模块头代码和各种模拟器的警告。有些模拟器会抛出错误。当我把它改成bellow时,它更干净,运行正常
module rc_adder(a,b,cin,s,cout);
parameter N = 32; // bits
input [N-1:0] a;
input [N-1:0] b;
input cin;
output [N-1:0] s;
output cout;
wire [N-1:0] _c;
Verilog-2001及更高版本还支持ANSI样式的模块头,该模块头更简单、更干净。如果您将模块头更改为ANSI样式,并且出现更多错误,则意味着您的模拟器不支持Verilog-2001或未启用
module rc_adder #(parameter N = 32) (
input [N-1:0] a, b
input cin,
output [N-1:0] s,
output cout );
wire [N-1:0] _c;
你有没有不给我们看的代码?代码里没有行号,是吗?不,这就是所有的代码。至于数字,我已经明确地编写了它们,以便更容易地找到给出问题的行