特权同学SD卡代码疑问begin end 中连续出现两个 if 如何分析?

2020-02-28 18:40发布

如题:

代码中如果两个if同时都满足,是按先后顺序执行? 还是两句同时执行?



代码如下:

CMD_RES:
              begin
                   if(retry_rep == 8'hff)
                               cmd_nstate <= CMD_IDLE;        //响应超时,返回IDLE重新发起命令

                  if(spi_rx_rdy && (!spi_tx_enr & !spi_rx_enr))
                       begin                                
                           case(sdinit_cstate)
                               SD_RD_PT,SD_RD_BPB:
                                       //接收到RD命令的起始字节8'hfe,立即读取后面的512B        
                                       if(spi_rx_dbr == 8'hfe)
                                                  cmd_nstate <= CMD_RD;        
                                      else
                                                  cmd_nstate <= CMD_RES;
                                                                        
                               SDINIT_CMD0,SDINIT_CMD55,SDINIT_ACMD41,SDINIT_CMD16:
                                       if(spi_rx_dbr == 8'hff)
                                               cmd_nstate <= CMD_RES;        
                                       else        
                                               //产生正确响应,结束当前命令         
                                               cmd_nstate <= CMD_CLKE;        
                                                                        
                                default:
                                      cmd_nstate <= CMD_CLKE;
                           endcase
                     end
                        
                else
                     cmd_nstate <= CMD_RES;                        
             end
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
resxpl
1楼-- · 2020-02-29 18:24
本帖最后由 GoldSunMonkey 于 2013-5-25 23:33 编辑

是的, 就是这个意思

xjsxjtu
2楼-- · 2020-02-29 18:47
 精彩回答 2  元偷偷看……
GoldSunMonkey
3楼-- · 2020-02-29 22:54
resxpl 发表于 2013-5-24 21:41
是的, 就是这个意思

嗯,我们是一样的:)
zyj_hb
4楼-- · 2020-03-01 02:19
本帖最后由 zyj_hb 于 2013-5-24 21:58 编辑

我记得是 begin end 之间是顺序执行, fork join之间是并行执行。如果不是顺序执行的话,里面的语句是没有意义的。最后附的值有效。不能在平行语句中对同一变量进行赋值(如果只是看逻辑关系可以编译通过,如果要综合会报错)。
GoldSunMonkey
5楼-- · 2020-03-01 03:16
zyj_hb 发表于 2013-5-24 21:53
我记得是 begin end 之间是顺序执行, fork join之间是并行执行。如果不是顺序执行的话,里面的语句是没有 ...

看看我的解释就明白了
星星之火红
6楼-- · 2020-03-01 06:21
感谢,猴哥啊

一周热门 更多>