在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3400|回复: 8

[求助] 一个verilog测试文件总出现错误

[复制链接]
发表于 2012-8-3 17:28:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
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,求大神的指教,谢谢
发表于 2012-8-3 18:01:38 | 显示全部楼层
always#5 s=~s;
无初始化值,你可以initial s=0
你是用什么工具仿真的?如果用modelsim的话,这个不会报错。

另外,MUX2_1_3 mux(out,a,b,s);
最好还是用直接名称连接的方式,当然这个不会出错。
 楼主| 发表于 2012-8-3 18:02:04 | 显示全部楼层
貌似知道了,是因为符号用错了,'和`区分错了我表示囧了
发表于 2012-8-3 18:10:14 | 显示全部楼层
本帖最后由 rvnistelrooy 于 2012-8-3 18:20 编辑

你这个代码是后来重新敲的吧?
首先,报错原因是timescale前导符不对,是`(1前面那个符号),不要用单引号,也不要用中文标点。
其他问题也不少,有些是错误,我挑了一些注释
代码不是很多,逐行仔细检查一下吧。





  1. module MUX_2_1_3(out,D0,D1,test)  //加";"
  2. output[2:0] out;
  3. input[2:0] D0,D1;
  4. input test;
  5. reg[2:0] out;
  6. always@(D0 or D1 or test)  // always块首尾加上begin end
  7.   case(test)
  8.     1'b0: out=D0;
  9.     1'b1: out=D1;
  10.     default: out=3'XXX;  // 以上两行合并写为:default: out = D1;
  11.   endcase
  12. endmodule
  13. 这个是我编写的3个2选1模块,其中test的控制信号,文件名称为MUX2_1_3.v
  14. 以下是测试文件
  15. ‘timescale 10ns/1ns
  16. ’include “MUX2_1_3.v"  //此行删除
  17. module mux2_1_3_test  // 加";"  
  18. reg[2:0] a,b;
  19. reg s;
  20. wire[2:0] out;

  21. //1)例化名称和原module名MUX_2_1_3不同
  22. //2)例化端口最好能够这样写".D0(a)", 并且分行列出
  23. MUX2_1_3 mux(out,a,b,s);
  24. always#5 s=~s;  // s没有赋初值,仿真肯定是不定态
  25. initial
  26. begin
  27. a=3'b100;
  28. b=3'b001;
  29. end
  30. endmodule;  //此处无";"


复制代码
 楼主| 发表于 2012-8-3 19:17:38 | 显示全部楼层
回复 2# eaglelsb
嗯,对,是忘记初始化了,还是初学者,犯了一些低级的错误,谢谢提醒
 楼主| 发表于 2012-8-3 19:30:02 | 显示全部楼层
回复 4# rvnistelrooy
嗯,对,这个是我后来敲上去的,您回答的很细致啊,把一些我没有发现的问题都回答了,肯定是高手啊,我还是菜鸟,谢谢您的指教。还有一个问题,您说`include "MUX2_1_3.v" 可以去掉,可是这是两个file,不过在同一个project,能删掉吗?
发表于 2012-8-4 09:16:17 | 显示全部楼层
回复 6# kjdxll


   可以,只要编译时包含这个文件就可以了。如果引用task或者define变量定义则需要include的文件,编译时还要加上include选项。
 楼主| 发表于 2012-8-4 11:59:16 | 显示全部楼层
回复 7# rvnistelrooy
 楼主| 发表于 2012-8-4 12:00:44 | 显示全部楼层
回复 7# rvnistelrooy


    嗯,知道了,谢谢指教
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-22 17:24 , Processed in 0.027877 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表