OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7744|回复: 5
打印 上一主题 下一主题

[ALTERA] 有关开拓者UART实验的if语句问题

[复制链接]

4

主题

2097

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5884
金钱
5884
注册时间
2018-10-21
在线时间
1704 小时
楼主
发表于 2020-6-13 10:11:19 | 显示全部楼层
会飞的鸭鸭 发表于 2020-6-13 20:58
你好,在代码1 signaltap中能看到仅满足 if(start_flag),不满足if((rx_cnt==4'd9)&&(clk_cnt==BPS_CNT/2 ...

这种情况执行的是else rx_flag<=rx_flag;即rx_flag保持不变。第一条if语句始终不执行,所以这种代码的写法可读性很差。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

2097

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5884
金钱
5884
注册时间
2018-10-21
在线时间
1704 小时
2#
发表于 2020-6-13 13:31:01 | 显示全部楼层
两组代码的逻辑不一样。always中出现两个if语句对同一个变量赋值,如果两个if的条件都满足了,会按照后面一个if进行赋值,也就是后面一个if条件优先级更高。但是如果是第二种写法,即if-else if结构,那么就是我们指定了前一个优先级更高。
回复

使用道具 举报

4

主题

2097

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5884
金钱
5884
注册时间
2018-10-21
在线时间
1704 小时
3#
发表于 2020-6-15 10:02:41 | 显示全部楼层
会飞的鸭鸭 发表于 2020-6-14 10:45
是不是前面的条件无论满足与不满足,执行的都是else?为什么前面的条件已经满足了(signaltap中能看到) ...

你可以把代码1的条件分成(if)和(if else)两种,要把if else看成一个整体,既然后面的优先级高,那么就一直在执行if和else里面的内容
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-12 16:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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