OpenEdv-开源电子网

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

[ALTERA] 一个always里面同时2次对同一reg类似赋值的问题

[复制链接]

8

主题

12

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2016-12-9
在线时间
6 小时
发表于 2020-3-6 12:21:41 | 显示全部楼层 |阅读模式
在以太网通信实验中,ip_receive模块中有以下段程序,当时钟上升沿到来,如果 if((rx_byte_val == 1'b1) && (rx_data == 8'h55)) 条件不满足,那么无疑问,skip_en <= 1'b0会被执行,但如果if((rx_byte_val == 1'b1) && (rx_data == 8'h55)) 条件满足,那不是执行了skip_en <= 1'b0后,也会执行skip_en <= 1'b1吗?这就有疑问了,这样 同时skip_en <= 1'b0和skip_en <= 1'b1,会是一个什么样的结果啊?
//解析以太网数据
always @(posedge clk or negedge rst_n) begin
    if(!rst_n) begin
        skip_en <= 1'b0;         
        error_en <= 1'b0;
        cnt <= 5'd0;
        des_mac <= 48'd0;
        eth_type <= 16'd0;
        des_ip <= 32'd0;
        ip_head_byte_num <= 6'd0;
        udp_byte_num <= 16'd0;
        data_byte_num <= 16'd0;
        data_cnt <= 16'd0;
        rec_en_cnt <= 2'd0;
        rec_en <= 1'b0;
        rec_data <= 32'd0;
        rec_pkt_done <= 1'b0;
        rec_byte_num <= 16'd0;
    end
    else begin
        skip_en <= 1'b0;                             --第1次对skip_en reg非阻塞赋值
        error_en <= 1'b0;  
        rec_en <= 1'b0;
        rec_pkt_done <= 1'b0;
        case(cur_state)
            st_idle : begin
                if((rx_byte_val == 1'b1) && (rx_data == 8'h55))
                    skip_en <= 1'b1;                --第2次对skip_en reg非阻塞赋值
            end
            st_preamble : begin
                if(rx_byte_val) begin                       //解析前导码
                    cnt <= cnt + 5'd1;
                    if((cnt < 5'd6) && (rx_data != 8'h55))  //7个8'h55  
                        error_en <= 1'b1;
                    else if(cnt==5'd6) begin
                        cnt <= 5'd0;
                        if(rx_data==8'hd5)                  //1个8'hd5
                            skip_en <= 1'b1;
                        else
                            error_en <= 1'b1;   
                    end  
                end  
            end

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

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2020-3-18
在线时间
0 小时
发表于 2020-3-18 10:12:19 | 显示全部楼层
条件不满足时,执行第一个。条件满足时,执行第二个。等效于if/else结构,第一个位于最后一个else.
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 12:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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