请选择 进入手机版 | 继续访问电脑版

集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 2101|回复: 8

verilog ,为什么我做这样的改动就可以

[复制链接]
zhixin2016 发表于 2017-3-5 10:07:45 | 显示全部楼层 |阅读模式
if(cnt < 5'd18)
cnt <= cnt + 1;
else cnt<=0;

if(cnt == 1)
init  <= 1;  //改为 init  =1 也不对  ,编译显示这个位置是错的

上面这个代码,怎么编译都不过,显示错误为
Error (10200): Verilog HDL Conditional Statement error at LEDa.v(65): cannot match operand(s) in the condition to the corresponding edges in the enclosing event control of the always construct

但是我改成下面这样就编译通过了,
if(cnt < 5'd18)
begin
        cnt <= cnt + 1;
        if(cnt == 1)
                init  <= 1;
end
else cnt<=0;

就是将错误的那句插入到上面那个if语句里   (插入到其他位置都会报错,只有插入到上面的if语句里才不报错)

请问各位知道这是什么原因吗?
奋斗的小孩 发表于 2017-3-6 14:57:13 | 显示全部楼层
你给出所有的代码看看
大鹏 发表于 2017-3-6 15:20:28 | 显示全部楼层
支持楼上!加油
FPGA_one 发表于 2017-6-15 09:30:49 | 显示全部楼层
只能说明c的基础不好   简单的if...else 套用
陈飞龙 发表于 2017-6-22 09:46:41 | 显示全部楼层
一个begin end之间的所有的if语句都是同时执行的,你cnt值为1的时候同时满足2个条件,你说到底执行那一句话???
fpga_feixiang 发表于 2017-6-23 12:28:56 | 显示全部楼层
很好,很不错
fpga_feixiang 发表于 2017-6-24 09:07:34 | 显示全部楼层
verilog ,为什么我做这样的改动就可以
fpga_feixiang 发表于 2017-6-25 16:38:06 | 显示全部楼层
很基础的帖子,顶贴
asd2258882538 发表于 2017-7-30 14:12:01 | 显示全部楼层
确实是,begin。。。end相当于c语言里面的{}
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

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

QQ|小黑屋|手机版|Archiver|集成电路技术分享 ( 京ICP备20003123号-1 )

GMT+8, 2024-3-29 03:58 , Processed in 0.072115 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表