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