OpenEdv-开源电子网

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

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

[复制链接]

5

主题

7

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2019-12-20
在线时间
8 小时
发表于 2020-6-13 10:00:31 | 显示全部楼层 |阅读模式
1金钱
各位老师大家好,在使用开拓者开发版进行UART实验时遇到了一个有关if语句的疑问,请见下面两组代码:

代码1:
always@(posedge clk or negedge rst_n)begin
        if(!rst_n)begin
                rx_flag<=1'b1;
        end
        else begin
                if(start_flag)
                        rx_flag<=1'b1;
                if((rx_cnt==4'd9)&&(clk_cnt==BPS_CNT/2))
                        rx_flag<=1'b0;
                else
                        rx_flag<=rx_flag;
        end
end

同代码1相比代码2仅多一个else,
代码2:
always@(posedge clk or negedge rst_n)begin
        if(!rst_n)begin
                rx_flag<=1'b1;
        end
        else begin
                if(start_flag)
                        rx_flag<=1'b1;
                else if((rx_cnt==4'd9)&&(clk_cnt==BPS_CNT/2))
                        rx_flag<=1'b0;
                else
                        rx_flag<=rx_flag;
        end
end


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2020-6-14 01:30:11 | 显示全部楼层
回复

使用道具 举报

12

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
158
金钱
158
注册时间
2017-11-5
在线时间
31 小时
发表于 2020-6-22 16:04:41 | 显示全部楼层
代码1的这种写法是不严谨的,这几行代码的功能会综合成一个选择器来控制D触发器的输出,代码1的两个if意思是这两个条件在逻辑上可以同时存在,如果两个条件同时存在,那rx_flag信号就会被同时赋两个值,这是我的个人理解哈
回复

使用道具 举报

12

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
158
金钱
158
注册时间
2017-11-5
在线时间
31 小时
发表于 2020-6-22 16:05:56 | 显示全部楼层
在时序逻辑里面最后一个else最好不用
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 16:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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