在接收到請求總線接口的請求事務后,當請求類型的值為0時,表示通過PCIE硬核的配置管理接口發送請求,由于請求接口的接口和時序與配置管理接口基本一致,因此此時直接將請求接口信號驅動到配置管理接口完成請求的發送,請求讀數據和響應也通過選通器連接到配置管理接口。當請求類型值不為0時,則需要將請求轉換為TLP以axis接口形式發送,這一過程通過請求狀態機實現,請求狀態機的狀態轉移圖如圖1所示。各狀態說明如下:
PCIe請求狀態轉移圖
IDLE:空閑狀態,復位后的初始狀態。當請求寫有效或請求讀有效,且請求類型值不為0時,如果請求寫有效跳轉到WR_HEAD狀態,如果請求讀有效或讀寫同時有效跳轉到RD_HEAD狀態,否則保持IDLE狀態。實際的上層設計中讀寫請求不會同時發生,這里的狀態跳轉條件增加了讀優先設計,從而避免異常情況的出現。
WR_HEAD:請求寫TLP頭發送狀態。該狀態下根據請求類型、請求地址組裝寫請求的TLP報頭,并將報頭通過axis_rq接口發送。當axis_rq接口握手時跳轉到WR_DATA狀態。
WR_DATA:請求寫TLP數據發送狀態。該狀態下將請求寫的數據通過axis_rq接口發送,當axis_rq接口握手時跳轉到DONE狀態。
RD_HEAD:請求讀TLP頭發送狀態。該狀態下組裝讀請求TLP報頭通過axis_rq接口發送,當接口握手時跳轉到RD_DATA狀態。
RD_DATA:請求讀CPLD接收狀態。該狀態下監測axis_rc接口信號,當出現數據傳輸有效時,啟動握手并接受數據,然后跳轉到DONE狀態。
DONE:請求完成狀態。該狀態下使能req_ack請求響應信號,如果是讀請求同時將RD_DATA狀態下接收的數據發送到req_rdata請求讀數據接口。一個時鐘周期后回到IDLE狀態。
B站已給出相關性能的視頻,如想進一步了解,請搜索B站用戶:專注與守望
鏈接:https://space.bilibili.com/585132944/dynamic?spm_id_from=333.1365.list.card_title.click