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