一个verilog测试文件总出现错误
时间:10-02
整理:3721RD
点击:
module MUX_2_1_3(out,D0,D1,test)
output[2:0] out;
input[2:0] D0,D1;
input test;
reg[2:0] out;
always@(D0 or D1 or test)
case(test)
1'b0: out=D0;
1'b1: out=D1;
default: out=3'XXX;
endcase
endmodule
这个是我编写的3个2选1模块,其中test的控制信号,文件名称为MUX2_1_3.v
以下是测试文件
‘timescale 10ns/1ns
’include “MUX2_1_3.v"
module mux2_1_3_test
reg[2:0] a,b;
reg s;
wire[2:0] out;
MUX2_1_3 mux(out,a,b,s);
always#5 s=~s;
initial
begin
a=3'b100;
b=3'b001;
end
endmodule;
上边的那个文件可以通过compile,可是下边的总显示有错误,错误信息为Illegal base specifier in numeric constant/
syntax error, unexpected ''base'',expecting "class"
我以前做模拟IC的,不得已做数字,现在刚开始学习verilog,求大神的指教,谢谢
output[2:0] out;
input[2:0] D0,D1;
input test;
reg[2:0] out;
always@(D0 or D1 or test)
case(test)
1'b0: out=D0;
1'b1: out=D1;
default: out=3'XXX;
endcase
endmodule
这个是我编写的3个2选1模块,其中test的控制信号,文件名称为MUX2_1_3.v
以下是测试文件
‘timescale 10ns/1ns
’include “MUX2_1_3.v"
module mux2_1_3_test
reg[2:0] a,b;
reg s;
wire[2:0] out;
MUX2_1_3 mux(out,a,b,s);
always#5 s=~s;
initial
begin
a=3'b100;
b=3'b001;
end
endmodule;
上边的那个文件可以通过compile,可是下边的总显示有错误,错误信息为Illegal base specifier in numeric constant/
syntax error, unexpected ''base'',expecting "class"
我以前做模拟IC的,不得已做数字,现在刚开始学习verilog,求大神的指教,谢谢
always#5 s=~s;
无初始化值,你可以initial s=0
你是用什么工具仿真的?如果用modelsim的话,这个不会报错。
另外,MUX2_1_3 mux(out,a,b,s);
最好还是用直接名称连接的方式,当然这个不会出错。
貌似知道了,是因为符号用错了,'和`区分错了我表示囧了
你这个代码是后来重新敲的吧?
首先,报错原因是timescale前导符不对,是`(1前面那个符号),不要用单引号,也不要用中文标点。
其他问题也不少,有些是错误,我挑了一些注释
代码不是很多,逐行仔细检查一下吧。
- module MUX_2_1_3(out,D0,D1,test) //加";"
- output[2:0] out;
- input[2:0] D0,D1;
- input test;
- reg[2:0] out;
- always@(D0 or D1 or test) // always块首尾加上begin end
- case(test)
- 1'b0: out=D0;
- 1'b1: out=D1;
- default: out=3'XXX; // 以上两行合并写为:default: out = D1;
- endcase
- endmodule
- 这个是我编写的3个2选1模块,其中test的控制信号,文件名称为MUX2_1_3.v
- 以下是测试文件
- ‘timescale 10ns/1ns
- ’include “MUX2_1_3.v" //此行删除
- module mux2_1_3_test // 加";"
- reg[2:0] a,b;
- reg s;
- wire[2:0] out;
- //1)例化名称和原module名MUX_2_1_3不同
- //2)例化端口最好能够这样写".D0(a)", 并且分行列出
- MUX2_1_3 mux(out,a,b,s);
- always#5 s=~s; // s没有赋初值,仿真肯定是不定态
- initial
- begin
- a=3'b100;
- b=3'b001;
- end
- endmodule; //此处无";"
嗯,对,是忘记初始化了,还是初学者,犯了一些低级的错误,谢谢提醒
嗯,对,这个是我后来敲上去的,您回答的很细致啊,把一些我没有发现的问题都回答了,肯定是高手啊,我还是菜鸟,谢谢您的指教。还有一个问题,您说`include "MUX2_1_3.v" 可以去掉,可是这是两个file,不过在同一个project,能删掉吗?
可以,只要编译时包含这个文件就可以了。如果引用task或者define变量定义则需要include的文件,编译时还要加上include选项。
嗯,知道了,谢谢指教
