PCIe鏈路協議使用“端到端的數據傳送方式”,發送端和接收端中都含有TX(發送邏輯)和RX(接收邏輯)。PCIe協議采用分層結構,分為事務層、數據鏈路層和物理層 。PCIe中2個互連的設備采用事務的方式通信,事務是指為實現設備間某種信息傳送。
而定制的由一個或者若干個包組成的發送序列,事務通過事務包(TLP) 具體實現。協議每層的功能如下:
1、物理層(PhysicalLayer):電氣特性,使用兩個單向的低電壓差分對信號實現數據傳輸,同時也承擔8b/10b的數據編解碼,即在PCIe鏈路上的10 bit中含有8 bit的有效數據
2、數據鏈路層(DataLink Layer):對該層傳輸的TLP進行組裝和分拆,作為中間層為上下兩層服務。
3、事務層(TransactionLayer):接受從軟件方送來的請求,并生成請求包傳輸到數據鏈路層。同時接受從數據鏈路層傳來的數據包,
傳遞給軟件,也就是對TLP進行分裝和組裝。
PCIE協議通信框圖如下:
用戶邏輯與PCI Express事務層接口直接連接,可發送或接收事務層數據包用以實現BAR(基址地址寄存器)空間訪問功能和DMA讀寫功能。計算機對板卡BAR空間的memory讀寫即為 CPU( 計算機) 發出存儲器映射地址寫寄存器的命令,該命令包括了存儲器映射地址字節使能和寄存器內容,PCIe相應的TLP 端點 接收該TLP并將寄存器內容寫到對應的本地寄存器后,事務結束。
當CPU發出存儲器映射地址讀寄存器的命令,該命令包括了存儲器映射地址字節使能,生成相應的TLP, 端點收到該TLP后會生成響應TLP( 包含數據) 完成包傳送,提取其有效載荷并賦值給指定寄存器后,事務結束。 用戶邏輯設計結構如圖2所示:
上圖中PCIe集成端點模塊核可以在FPGA中直接使用PCIe的IP核實現,我們需要在FPGA中自已實現的主要是上圖中與PCIe IP核相連接的部分幾個模塊。