結合排查之前pio_writeReadBack_test0測試出現的問題,需要參考前人寫的相關博客,大部分都是基于BMD64,而我的示例是基于BMD128。
pio_writeReadBack_test0測試HOST發起一個MEM32寫,然后再啟動MEM32讀回,所以先要探究MEM32寫,分析BMD RX 引擎(用于接收、解析TLP)。下圖是https://blog.csdn.net/ningjinghai11/article/details/80924209博文中給出的BMD64模式下的MEM32寫時序仿真圖,可以看到存儲器寫請求TLP有2個,所以相應的bmd_64_rx_state分別有MEM_WR32_QW1和MEM_WR32_WT兩個狀態對應。
而我在仿真BMD128模式時,由于數據位寬為128bit,所以存儲器寫只有一個128bit的TLP就足夠,而bmd_rx_state只一個MEM_WR32_WT就結束并進入RST狀態,具體時序圖如下:
(注:BMD_MEM_RD32_FMT_TYPE 和BMD_MEM_WR32_FMT_TYPE 兩種標頭對應的TLP是以PIO的模式傳輸,所以只會傳輸一個DW數據,再加上3DW標頭;所以在BMD64模式下,一共兩幀數據,而在上一個狀態已經傳輸了一幀,本狀態傳輸最后一幀數據,所以需要判斷trn_reof_n 幀結束信號,同樣需要主、從設備都準備好,即trn_rsrc_rdy_n 和trn_rdst_rdy_n 同時有效才能傳輸。而在BMD128模式下,只需一幀數據就足夠了。這可以從上面兩個時序圖中可以清晰看出來。)
下面比較下BMD64和BMD128的RX引擎中對幾個狀態機的定義。
先來看看BMD64:
//接收引擎關鍵狀態機的8個狀態 `define BMD_64_RX_RST 8'b00000001//接收引擎復位狀態 `define BMD_64_RX_MEM_RD32_QW1 8'b00000010//存儲器讀狀態 `define BMD_64_RX_MEM_RD32_WT 8'b00000100//等待存儲器讀結束 `define BMD_64_RX_MEM_WR32_QW1 8'b00001000//存儲器寫狀態 `define BMD_64_RX_MEM_WR32_WT 8'b00010000//等待存儲器寫結束 `define BMD_64_RX_CPL_QW1 8'b00100000//不帶數據的完成 `define BMD_64_RX_CPLD_QW1 8'b01000000//帶數據完成 `define BMD_64_RX_CPLD_QWN 8'b10000000//帶數據完成 //接收引擎4種標頭 `define BMD_MEM_RD32_FMT_TYPE 7'b00_00000//存儲器讀請求:TLP頭大小為3個雙字,不帶數據 `define BMD_MEM_WR32_FMT_TYPE 7'b10_00000//存儲器寫請求:TLP頭大小為3個雙字,帶數據 `define BMD_CPL_FMT_TYPE 7'b00_01010//完成報文:TLP頭大小為3個雙字,不帶數據;包括存儲器、配置和I/O寫完成 `define BMD_CPLD_FMT_TYPE 7'b10_01010//帶數據完成報文:TLP頭大小為3個雙字;包括存儲器讀、配置讀、I/O讀和原子讀操作完成先來看看BMD128:
//定義了8種關鍵狀態機狀態 `define BMD_128_RX_RST 8'b00000001 `define BMD_128_RX_MEM_RD32_STRAD 8'b00000010 `define BMD_128_RX_MEM_RD32_WT 8'b00000100 `define BMD_128_RX_MEM_WR32_STRAD 8'b00001000 `define BMD_128_RX_MEM_WR32_WT 8'b00010000 `define BMD_128_RX_CPL_STRAD 8'b00100000 `define BMD_128_RX_CPLD_STRAD 8'b01000000 `define BMD_128_RX_CPLD_QWN 8'b10000000 //定義了4種標頭 `define BMD_MEM_RD32_FMT_TYPE 7'b00_00000 `define BMD_MEM_WR32_FMT_TYPE 7'b10_00000 `define BMD_CPL_FMT_TYPE 7'b00_01010 `define BMD_CPLD_FMT_TYPE 7'b10_01010
-
FPGA
+關注
關注
1630文章
21781瀏覽量
604936 -
存儲器
+關注
關注
38文章
7523瀏覽量
164130
原文標題:FPGA圖文筆記:BMD64與BMD128比較
文章出處:【微信號:gh_bee81f890fc1,微信公眾號:面包板社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論