芯路恒电子技术论坛

 找回密码
 立即注册
热搜: 合集
查看: 3276|回复: 0

if else语句某错误解析 else if语句前的关键字else很重要

[复制链接]
  • TA的每日心情
    开心
    2021-12-31 09:03
  • 71

    主题

    78

    帖子

    977

    积分

    高级会员

    Rank: 6Rank: 6

    积分
    977
    发表于 2021-7-16 14:35:14 | 显示全部楼层 |阅读模式
    在学习verilog语法的过程中,很多同学经常会在这样一个误区里栽跟头,如果有多个if判断,而后续的判断,没有用else对上一个if进行排他,则最终生成的逻辑有可能会和我们的设计初衷相违背。可以看下面这个例子:
    QQ截图20210716135351.png
    如果启用第一个always语句,则和我们的常规思维一致,即按下key0,led0点亮,按下key1,则led1点亮,否则都不点亮。
    A.png
    上图为启用第一个always语句后下载到AC620开发板,按下key1的实验现象。
    1B.png
    上图为启用第一个always语句后下载到AC620开发板,按下key0的实验现象。和大家设想的一个按键对应一个led灯点亮,是相符的。

    //////////////////////////////神的分割线////////////////////////////////////////////////////////

    启用后一个always语句后为:
    QQ截图20210716143156.png
    虽然两个always语句只相差一个关键字else,但是启用后一个always语句编译并下载后,如果按下按键key0,实际上第一个if语句由于没有被else排他,所以第一个if语句被忽略。程序会判断第二个if语句,第二个if语句不满足,所以,执行else,即所有led灯均熄灭。
    2B.png
    上图为使用代码第二个always语句后下载sof文件到开发板,按下key0键实验现象。实验现象说明,如果第二个if判断条件前,少了else关键字,则最终即使第一个if条件满足,也不会执行第一个if语句,而执行的是代码最后三行语句。

    if_else_test.rar (11.59 KB, 下载次数: 399)




    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|小黑屋|Archiver|芯路恒电子技术论坛 |鄂ICP备2021003648号

    GMT+8, 2025-5-1 21:40 , Processed in 0.117514 second(s), 33 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

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