SRIO IP 數據發送時代碼復位的問題

    SRIO 調試期間,抓取送入IP核的數據,沒有錯誤,但是對端收到的數據,感覺第一包數據和第二包數據不連續,一包數據16KB。具體記不清了,大致就是,第二包最開始收到的數據不是數據幀頭,最後查驗,是第一包數據的一部分,然後纔是第二包數據的幀頭。

   最後查找問題,是發送端數據復位的問題。比如,一次SRIO 發送256字節的數據,下面assign     是SRIO NWRITE包,定義了一次srio包的長度,可以看到,一次發送256字節,也就是32個64bit數據。

assign    export_head = {8'h00,4'h5,4'h4,1'b0,2'b10,1'b0,8'hff,2'b00,srio_addr}; 

但是,如果,一次完整的srio發送過程中遇到了中斷,也就是邏輯代碼正好遇到復位信號,正常情況下是把代碼所有狀態機和邏輯復位。SRIO 發送中斷。這樣導致SRIO IP核中沒有完整拼接256字節的數據,SRIO 端口不發送數據,一直等到下一次數據送入的時候,湊夠256字節了再發送,但是新一次的nwrite包感覺沒有被正常處理,這就導致,中間會有一部分數據丟失。

   正確的做法是,邏輯復位一定要保證在一次完整的SRIO 包發送完畢後再清零所有數據。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章