orange-208 发表于 2013-5-22 21:57:23

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

本帖最后由 orange-208 于 2013-5-23 09:30 编辑

如题:

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



代码如下:
                        CMD_RES:
                                begin
                                        if(retry_rep == 8'hff)
                                                //响应超时,返回IDLE重新发起命令
                                                cmd_nstate <= CMD_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

aammoo 发表于 2013-5-22 22:43:52

begin-end 是顺序的,fork-join 是并发的

lr120363092 发表于 2013-5-23 09:07:07

begin
是那一门语言的??????

orange-208 发表于 2013-5-23 09:54:04

今天分析了下,发现当两个if条件都满足时,不管是顺序的还是并行的, cmd_nstate 都会出现竞争。

YFM 发表于 2013-5-24 17:56:23

自己要看RTL视图的
页: [1]
查看完整版本: 特权同学SD卡代码疑问begin end 中连续出现两个 if 如何分析?