打印

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

[复制链接]
2981|25
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhpg009|  楼主 | 2013-5-22 22:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题:

代码中如果两个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

相关帖子

沙发
qin552011373| | 2013-5-22 22:18 | 只看该作者
应该是要看是并行还是顺序执行的吧

使用特权

评论回复
板凳
GoldSunMonkey| | 2013-5-23 21:59 | 只看该作者
谁先满足,先执行谁

使用特权

评论回复
地板
resxpl| | 2013-5-23 22:58 | 只看该作者
本帖最后由 resxpl 于 2013-5-23 23:33 编辑

测试一下,就能知道了.
发现还是有人对于reg赋值没有太明白啊.

两个if都满足的话, 咳咳, 应该是最后一个生效.

使用特权

评论回复
5
GoldSunMonkey| | 2013-5-24 21:31 | 只看该作者
resxpl 发表于 2013-5-23 22:58
测试一下,就能知道了.
发现还是有人对于reg赋值没有太明白啊.

你这个说法是两个if平行的,
如果是分级就是谁先执行谁。
另外平行语句,是不能对同一个值赋值的。

使用特权

评论回复
评分
参与人数 1威望 +5 收起 理由
星星之火红 + 5
6
GoldSunMonkey| | 2013-5-24 21:35 | 只看该作者
resxpl 发表于 2013-5-23 22:58
测试一下,就能知道了.
发现还是有人对于reg赋值没有太明白啊.

咳咳,我觉得
平行:(假设这个语法都是正确的)
   if a>3
      b=5
   if a>5
      b=6.
那么在a=6的条件下,肯定是b=6(但是这个语法肯定是错的)

但是
   if a>3
      b=5
   else if a>5
      b=6.
如果出现a=6的情况下,b=5

使用特权

评论回复
评分
参与人数 3威望 +12 收起 理由
Tianya283 + 3
星星之火红 + 5
xjsxjtu + 4
7
GoldSunMonkey| | 2013-5-24 21:40 | 只看该作者
咳咳,所以我不说了

使用特权

评论回复
评分
参与人数 2威望 +8 收起 理由
Tianya283 + 3
星星之火红 + 5
8
resxpl| | 2013-5-24 21:41 | 只看该作者
本帖最后由 GoldSunMonkey 于 2013-5-25 23:33 编辑

是的, 就是这个意思

使用特权

评论回复
9
xjsxjtu| | 2013-5-24 21:42 | 只看该作者
嗯,学习啦

使用特权

评论回复
10
GoldSunMonkey| | 2013-5-24 21:43 | 只看该作者
resxpl 发表于 2013-5-24 21:41
是的, 就是这个意思

嗯,我们是一样的:)

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
Tianya283 + 3
11
zyj_hb| | 2013-5-24 21:53 | 只看该作者
本帖最后由 zyj_hb 于 2013-5-24 21:58 编辑

我记得是 begin end 之间是顺序执行, fork join之间是并行执行。如果不是顺序执行的话,里面的语句是没有意义的。最后附的值有效。不能在平行语句中对同一变量进行赋值(如果只是看逻辑关系可以编译通过,如果要综合会报错)。

使用特权

评论回复
12
GoldSunMonkey| | 2013-5-25 23:32 | 只看该作者
zyj_hb 发表于 2013-5-24 21:53
我记得是 begin end 之间是顺序执行, fork join之间是并行执行。如果不是顺序执行的话,里面的语句是没有 ...

看看我的解释就明白了

使用特权

评论回复
13
星星之火红| | 2013-5-25 23:39 | 只看该作者
感谢,猴哥啊

使用特权

评论回复
14
yghanwuji| | 2013-5-27 17:01 | 只看该作者
学习了

使用特权

评论回复
15
habc987| | 2013-5-27 22:15 | 只看该作者
begin   end是顺序执行的

使用特权

评论回复
16
GoldSunMonkey| | 2013-5-27 23:53 | 只看该作者
星星之火红 发表于 2013-5-25 23:39
感谢,猴哥啊

不客气啊

使用特权

评论回复
17
GoldSunMonkey| | 2013-5-27 23:53 | 只看该作者
habc987 发表于 2013-5-27 22:15
begin   end是顺序执行的

是的啊

使用特权

评论回复
18
GoldSunMonkey| | 2013-5-27 23:54 | 只看该作者
yghanwuji 发表于 2013-5-27 17:01
学习了

欢迎常来

使用特权

评论回复
评论
28182900 2013-5-28 09:03 回复TA
您真热情 
评分
参与人数 1威望 +3 收起 理由
Tianya283 + 3
19
LongChip| | 2013-5-28 23:18 | 只看该作者
厉害啊

使用特权

评论回复
20
Tianya283| | 2013-5-28 23:18 | 只看该作者
不错啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:进取

16

主题

139

帖子

0

粉丝