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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 9445|回复: 39

[求助] 请问 Verilog 高手语法与ModelSim 问题?

[复制链接]
发表于 2012-12-19 08:39:58 | 显示全部楼层 |阅读模式

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

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

x
always @(posedge clk)                                                                     
begin                                                                                    
//  c16  <= ~c16;  这样写编辑ok,但是ModelSim 仿真不了?                                                                  
  if (c16 == 1'b1)
      c16 <= 1'b0;
  else
      c16 <= 1'b1;   
end
发表于 2012-12-19 09:36:22 | 显示全部楼层
那肯定,时钟都没用进去,还是先把语法搞清楚再写吧,这是最简单的。
发表于 2012-12-19 10:09:25 | 显示全部楼层
把复位加上,初态都没有,怎么取反输出啊。。

always @(posedge clk or posedge rst)                                                                  
begin
     if (rst)
         c16   <= 1'b0;
     else                                                                                    
   c16  <= ~c16;
end
 楼主| 发表于 2012-12-19 10:09:49 | 显示全部楼层
本帖最后由 nono2000 于 2012-12-19 10:11 编辑



编辑器测试OK,实际2种方式也正常,唯独 ModelSim不允许使用 c16  <= ~c16 ?不知道ModelSim 那里可设定Verilog2005?
 楼主| 发表于 2012-12-19 10:26:46 | 显示全部楼层


把复位加上,初态都没有,怎么取反输出啊。。

always @(posedge clk or posedge rst)                   ...
catcat_2 发表于 2012-12-19 10:09



你可以使用 ISE 或是 Quartus 测试看看不用RST,工作正常,但是唯独 ModelSim 动作异常?
发表于 2012-12-19 10:40:59 | 显示全部楼层
应当是modelsim的版本或者其选择的verilog版本的问题,老版本的verilog里面,没有~操作符。
 楼主| 发表于 2012-12-19 11:17:29 | 显示全部楼层


应当是modelsim的版本或者其选择的verilog版本的问题,老版本的verilog里面,没有~操作符。
tigerjade 发表于 2012-12-19 10:40



我目前使用的是 Modelsim SE 10.1c 因该有,但是不知道怎么加载进去?
发表于 2012-12-19 14:03:15 | 显示全部楼层
本帖最后由 catcat_2 于 2012-12-19 14:05 编辑

回复 5# nono2000

     ISE或者QUARTUS II,都会有自动全局复位模式的,开始跑之前,会把所有信号没复位的信号都拉到0。这跟SOF在硬件上跑是一样的。

     MODELSIM 不会有这个过程。。 你要不加个initial语句给C16一个初值,要么加个复位。C16的初始值都没有,就是个不定态,你就让它自己对自己取反,那输出的就是不定态。。你自己稍微想想就想通了。。语法先搞清楚。。
 楼主| 发表于 2012-12-19 14:21:45 | 显示全部楼层


回复  nono2000

     ISE或者QUARTUS II,都会有自动全局复位模式的,开始跑之前,会把所有信号没复位的 ...
catcat_2 发表于 2012-12-19 14:03


但是为什么我改成这样ModelSim就可以?C16 也不用给任何值?
if (c16 == 1'b1)
      c16 <= 1'b0;
  else
      c16 <= 1'b1;   
   
发表于 2012-12-19 14:27:58 | 显示全部楼层
回复 9# nono2000


     当然了,改成if - else以后就有值了。if (c16为1)的时候,给c16拉到0;else (其他任何状态,包括不定态),给c16赋值1。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-23 05:27 , Processed in 0.021414 second(s), 7 queries , Gzip On, Redis On.

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