if(!out_axis_tvalid_reg || m_axis_tready ) beginend
m_axis_tready? 是上拍下一級給的ready信號
out_axis_tvalid_reg是上一拍,本級給下級的valid信號
一共有四種組合,然后可以通過這個if語句,在接下來的begin ... end中,用來判斷本拍的valid是不是可以拉高。
out_axis_tvalid_reg=0,m_axis_tready=0
上一拍沒有拉高有效信號,說明沒有有效數據要輸出。正好上一拍也沒有拉高ready。那么我本拍是可以把valid拉高(如果有數據)或者拉低(如果沒有輸出)的。
out_axis_tvalid_reg=0,m_axis_tready=1
上一拍沒有拉高有效信號,說明沒有有效數據要輸出。雖然上一拍給了ready,但是我確實是沒有數據可以輸出的。那么我本拍是可以把valid拉高(如果有數據)或者拉低(如果沒有輸出)的。
out_axis_tvalid_reg=1,m_axis_tready=0
上一拍有拉高有效信號,說明有有效數據要輸出,但是上一拍沒有給ready。說明數據沒有輸出,這一拍自然也就沒得選,只能是保持值不變(也就是拉高)。
out_axis_tvalid_reg=1,m_axis_tready=1
上一拍有拉高有效信號,說明有有效數據要輸出,并且給到了ready。說明數據輸出了,那么我本拍是可以把valid拉高(如果有數據)或者拉低(如果沒有輸出)的。