專利名稱:一種協(xié)議無關、可支持目標讀寫操作的pcie ip核用戶邏輯接口設計方法
技術領域:
本發(fā)明主要涉及PCIE總線控制器IP設計,以及PCIE IP復用領域。
背景技術:
PCIE協(xié)議復雜、其功能模塊設計費時,因此在PCIE控制器芯片的設計過程中通常會采用IP復用的形式,將PCIE這部分功能集成到設計中。目前,絕大部分面向ASIC或FPGA的PCIE IP核為用戶(邏輯電路設計者)提供的是基于PCIE事務層的事務包(TLP)接口,SPPCIE核將來自PCIE總線的TLP數(shù)據(jù)包直接提交給用戶,由設計人員對TLP的內容進行解析,提取出相關的總線命令參數(shù)。同樣,當通過PCIE事務層TLP接口對總線操作命令進行應答時,也是由用戶將數(shù)據(jù)封裝成對應格式的TLP包,再通過PCIE IP核進行發(fā)送。由此可見,在復用上述PCIE IP時,設計者必須對PCIE數(shù)據(jù)包格式以及命令應答規(guī)則等協(xié)議細節(jié)有較為深入的了解,這無形中增加了 PCIE IP核復用的工作量。為了在PCIE IP核復用過程中避開繁雜的PCIE協(xié)議規(guī)范,提高PCIE IP的易用性,本發(fā)明提出了一種協(xié)議無關的PCIE IP核用戶邏輯接口的擴展方法。具體做法是在已有PCIE IP核的TLP接口之上擴展一個目標讀寫控制轉換裝置。該裝置可對TLP進行處理以及封裝,并為用戶提供了一組協(xié)議無關的邏輯接口,設計者無需了解復雜的PCIE協(xié)議即可針對PCIE IP進行設計復用,從而減少了 PCIE設備邏輯設計的工作量,提高了 IP模塊的易用性。申請?zhí)?00810106201.4的專利申請《基于PC1-E總線的直接存取數(shù)據(jù)傳輸控制裝置》公開了一種基于PCIE總線的直接存取數(shù)據(jù)傳輸控制裝置,所述直接存取數(shù)據(jù)傳輸控制裝置內嵌在FPGA芯片中,用于完成PCIE設備自身發(fā)起的總線讀寫交易的控制;該PCIE總線的直接存取數(shù)據(jù)傳輸控制裝置由寄存器監(jiān)控單元、寄存器、解碼單元、發(fā)送單元和接收信用處理單元組成。在FPGA芯片上形成用戶邏輯控制單元和直接存取數(shù)據(jù)傳輸控制裝置,采用IP復用技術在FPGA芯片上形成緩存器和PCIE總線接口。該發(fā)明主要是面向PCIE直接存取數(shù)據(jù)傳輸操作(由設備自身發(fā)起命令請求)并設計了 一套控制裝置,而本發(fā)明則是針對PCIE目標讀寫操作(由遠端的設備發(fā)起命令請求)并設計了相應的用戶接口轉換控制裝置。申請?zhí)?00910139394.8的專利申請《一種基于PCIE的數(shù)據(jù)傳輸方法和裝置》提出一種基于PCIE的數(shù)據(jù)傳輸方法和裝置,該數(shù)據(jù)發(fā)送方法包括:將具有發(fā)送數(shù)據(jù)的第一寫請求事務包發(fā)送給數(shù)據(jù)接收端;如果在設定的時間內未收到數(shù)據(jù)接收端反饋的成功寫入的信息,重新發(fā)送所述第一寫請求事務包。數(shù)據(jù)接收方法包括:接收來自數(shù)據(jù)發(fā)送端的帶有發(fā)送數(shù)據(jù)的第一寫請求事務包;對所述第一寫請求事務包進行校驗;如果校驗無誤,則向所述數(shù)據(jù)發(fā)送端反饋成功寫入的信息。該專利主要是解決PCIE事務層數(shù)據(jù)傳輸?shù)目煽啃詥栴},而本專利則是提出了一種方法,將PCIE事務層接口轉換為協(xié)議無關的用戶邏輯接口,以提高PCIE IP的易用性。
發(fā)明內容
本發(fā)明的目的是提出了一種協(xié)議無關、可支持目標讀寫操作的PCIE IP用戶邏輯接口的擴展方法。本發(fā)明一種協(xié)議無關、可支持目標讀寫操作的PCIE IP用戶邏輯接口的擴展方法,該方法包含以下步驟:
(1)在基于TLP接口的PCIEIP核外部擴展一個目標讀寫控制轉換裝置;
(2)目標讀寫控制轉換裝置直接對PCIEIP的TLP接口進行操控,完成PCIE目標讀寫操作的協(xié)議相關處理;
(3)用戶邏輯通過目標讀寫控制轉換裝置的用戶邏輯接口,對PCIE目標讀寫操作進行響應;
其中,該目標讀寫控制轉換裝置用于實現(xiàn)PCIE IP核TLP接口到協(xié)議無關通用接口的轉換。所述的目標讀寫控制轉換裝置,該裝置包括:I)狀態(tài)機,用于實現(xiàn)目標讀寫控制轉換的控制。2)TLP解析模塊,對接收到的TLP進行解析,并保存相關PCIE命令的參數(shù)。
3)讀請求應答拆分模塊,用于對PCIE讀請求進行拆分,使其讀應答操作符合PCIE協(xié)議規(guī)范(如TLP最大包長度、地址邊界限制)。4)應答TLP封裝模塊,將需要返回的讀數(shù)據(jù)或狀態(tài)封裝成TLP包。5)命令接口控制模塊,對目標命令接口信號進行控制,并將命令信號從PCIE時鐘域同步到用戶時鐘域。6)寫數(shù)據(jù)FIFO,用于緩存、同步PCIE寫操作數(shù)據(jù)。7)讀數(shù)據(jù)FIFO,用于緩存、同步待返回的PCIE讀操作數(shù)據(jù)。所述的一套PCIE IP協(xié)議無關的用戶邏輯接口,通過該接口可以完成目標內存、I/o及擴展ROM讀寫操作的控制,其信號定義為:
目標命令接口信號,其包含目標命令請求指示(tgt_req)、目標讀寫指示(tgt_rd_wrn,高為讀/低為寫)、目標地址(tgt_addr[a:0])、目標讀寫長度(tgt_length[b:O])、首段字節(jié)使能(tgt_first_be[c:0])、末段字節(jié)使能(tgt_last_be[c:0])以及基地址寄存器(BAR)命中指示(tgt_bar_hit [6:0],第O位至第5位分別表征BARO至BAR5的命中,第6位表征擴展ROM BAR命中)。數(shù)據(jù)通路接口信號,其包含目標FIFO讀指示(tgt_fifo_rd)、目標FIFO寫指示(tgt_fifo_wr)> 目標 FIFO 輸出(tgt_fifo_dataout [m: 0])以及目標 FIFO 輸入(tgt_fifo_datain[n:0])。絕大部分現(xiàn)有的PCIE IP核為用戶提供的是TLP接口。TLP接口的使用中,需要對PCIE協(xié)議細節(jié)進行深入的了解,因此復用此類PCIE IP具有相當?shù)墓ぷ髁?,且容易出錯。本發(fā)明所述的一種協(xié)議無關、可支持目標讀寫操作的PCIE IP用戶邏輯接口的擴展方法的優(yōu)點是:在已有PCIE IP核的TLP接口之上擴展出一組協(xié)議無關的用戶邏輯接口,該接口簡單易用,使用者無需深入了解PCIE協(xié)議即可進行IP復用,完成PCIE目標讀寫控制。本發(fā)明提高了 PCIE IP的易用性,實際運用中可降低PCIE設備的開發(fā)難度,縮短開發(fā)時間。
圖1為目標讀寫控制轉換裝置整體結構示意 圖2為接口轉換裝置的狀態(tài)機示意圖; 圖3為TLP解析中對關鍵命令參數(shù)進行提取的示意 圖4為應答TLP拆分中的關鍵參數(shù)的計算算法示意 圖5為利用用戶邏輯接口完成目標讀寫操作的控制流程圖。
具體實施方式
:
本發(fā)明提出一種協(xié)議無關的PCIE IP核用戶邏輯接口的擴展方法,在基于TLP接口的PCIE IP核外部擴展一個目標讀寫控制轉換裝置。目標讀寫控制轉換裝置直接對PCIE IP的TLP接口進行操控,完成PCIE目標讀寫操作的協(xié)議相關處理。用戶邏輯則是通過目標讀寫控制轉換裝置的用戶邏輯接口,對PCIE目標讀寫操作進行響應。目標讀寫控制轉換裝置實現(xiàn)了 PCIE IP核TLP接口到協(xié)議無關的通用接口的轉換。目標讀寫控制轉換裝置的硬件結構如圖1所示,包含七個子模塊:狀態(tài)機10UTLP解析模塊102、讀請求應答拆分模塊103、應答TLP封裝模塊104、命令接口控制模塊105、寫數(shù)據(jù) FIF0106、讀數(shù)據(jù) FIF0107。狀態(tài)機101是接口轉換裝置的核心控制模塊,其狀態(tài)變遷如圖2所示。系統(tǒng)復位后,狀態(tài)機的初始狀態(tài)為IDLE。隨后,根據(jù)TLP解析模塊102解析出的命令進行跳轉:
如果檢測到內存寫請求,則進入MEM_WR狀態(tài),此狀態(tài)中內存寫操作數(shù)據(jù)被存入寫數(shù)據(jù)FIF0106中,數(shù)據(jù)全部寫入寫數(shù)據(jù)FIF0106后再進入WR_REQ狀態(tài),該狀態(tài)中命令接口控制模塊105負責控制外部接口發(fā)出寫命令。隨后再進入WAIT_BK_READ狀態(tài),由用戶邏輯將內存寫數(shù)據(jù)從寫數(shù)據(jù)FIF0106全部讀出后,返回IDLE狀態(tài);
如果檢測到I/O寫請求,則進入10_WR狀態(tài),并將I/O寫操作數(shù)據(jù)存入寫數(shù)據(jù)FIF0106。隨后進入10_WR狀態(tài),該狀態(tài)中命令接口控制模塊105負責控制外部用戶接口發(fā)出寫命令,之后進入WAIT_BK_READ狀態(tài),等待用戶邏輯將I/O寫數(shù)據(jù)從寫數(shù)據(jù)FIF0106中讀出,數(shù)據(jù)讀出后進入10_WR_CPL狀態(tài),該狀態(tài)中由應答TLP封裝模塊104封裝應答TLP并通過PCIE核將之發(fā)送,最后返回IDLE狀態(tài);
如果檢測到內存讀或I/O讀請求,則進入READ狀態(tài)。在READ狀態(tài)下讀請求應答拆分模塊103依照PCIE協(xié)議規(guī)范對讀請求應答進行拆分,得出首次應答需要返回的數(shù)據(jù)量。然后跳轉到READ_REQ狀態(tài),該狀態(tài)中命令接口控制模塊105負責控制外部接口發(fā)出讀命令。隨后再進入READ_WAIT狀態(tài),等待用戶邏輯將讀數(shù)據(jù)寫入讀數(shù)據(jù)FIF0107。根據(jù)讀請求應答拆分模塊103的拆分結果,READ_WAIT中檢測到讀數(shù)據(jù)FIF0107中如果已經存有足夠數(shù)量的數(shù)據(jù)時,狀態(tài)機跳轉到READ_CPLD狀態(tài),此時由應答TLP封裝模塊104進行應答TLP封裝,之后通過PCIE核發(fā)送應答TLP。隨后狀態(tài)機進入NEXT_RD_CPLD_CHK狀態(tài),由讀請求應答拆分模塊103進一步判斷是否已經將全部讀數(shù)據(jù)返回。如果還有數(shù)據(jù)待返回,則繼續(xù)進行應答拆分并跳轉到READ_WAIT狀態(tài),完成剩余應答TLP的發(fā)送。在NEXT_RD_CPLD_CHK狀態(tài)若檢測到讀請求應答全部完成,則轉入IDLE狀態(tài)。TLP解析模塊102負責將接收到的TLP命令包的包頭進行解析,從中提取命令參數(shù)(如命令類型、地址、數(shù)據(jù)長度等)。以3個雙字(DW)長度的內存讀寫請求TLP頭部為例,其定義如圖3所示。目標讀寫控制轉換裝置通過PCIE IP核的TLP接收接口,獲得原始的TLP信息。命令類型通過FMT和TYPE字段進行判斷,并將Address、Length、First Dff BE、Last Dff BE 這四個命令參數(shù)分別鎖存到 address_reg、length_reg、first_dw_be_reg 和last_dw_be_reg中,由命令接口控制模塊105驅動外部用戶邏輯接口上的tgt_addr、tgt_length、tgt_first_be、tgt_last_be信號。由于內存讀、I/O讀和I/O寫命令需要進行應答操作,對于這些命令,TLP包頭中的TC、Attr、Requester ID以及TAG字段也必須被鎖存,應答TLP封裝模塊104在進行應答TLP封裝時,需要用到上述四個字段的信息。讀請求應答拆分模塊103負責按照PCIE協(xié)議規(guī)范對內存讀請求應答進行拆分。PCIE內存讀請求長度最大可達4096字節(jié),然而單個讀請求應答TLP的最大有效負載一般不能達到4096字節(jié)。依據(jù)PCIE協(xié)議,應答TLP需要滿足:1)單個應答TLP負載長度不能超過規(guī)定的TLP最大負載長度(由PCIE核的MAX_PAYLOAD_SIZE參數(shù)定義,大小在128字節(jié)至4096字節(jié)之間);2)單個應答TLP無法返回全部讀數(shù)據(jù)時,可以采用多個應答TLP完成;3)多個應答TLP的負載數(shù)據(jù)必須在64或128字節(jié)對齊的地址邊界上中斷,該地址邊界由PCIE核的RCB (Read Completion Boundary)參數(shù)定義;4)單個應答TLP如果可以包含全部讀請求數(shù)據(jù),其負載數(shù)據(jù)可以跨越RCB定義的地址邊界。讀請求應答拆分模塊103計算出當前應答TLP的起始地址(this_cpld_tlp_addr)、當前應答TLP的雙字長度(this_cpld_tlp_dw_len)、當前應答TLP的字節(jié)使能(this_cpld_tlp_byte_en)、以及未應答數(shù)據(jù)的雙字長度(remaining_dW_len)這四個關鍵參數(shù)信息,并提交給應答TLP封裝模塊進行應答TLP的封裝。上述關鍵參數(shù)信息的計算方法如圖4所示,在狀態(tài)機處于READ狀態(tài)時,讀請求應答拆分模塊103計算出第一次讀應答所需的信息。其中,當前應答TLP的起始地址就是原始的讀請求地址。如果讀請求的長度小于等于規(guī)定的TLP最大負載長度(以雙字為單位),則本次讀請求只需一個應答TLP即可返回全部讀數(shù)據(jù),此時按照圖4中的M2條款計算其它三個應答參數(shù);如果讀請求的長度大于規(guī)定的TLP最大負載長度,則需要多個應答TLP才能返回全部的讀數(shù)據(jù),此時該讀請求的首個應答TLP其它參數(shù)的計算方法如圖4中M3條款所描述。當狀態(tài)機處于NEXT_RD_CPLD_CHK狀態(tài)時,上一個應答TLP已經通過PCIE IP核發(fā)送出去,此時讀請求應答拆分模塊103需要計算接下來的讀應答所需的參數(shù)信息。當前應答TLP的起始地址參數(shù)的更新算法如M4條款所示。如果未應答數(shù)據(jù)的雙字長度小于等于規(guī)定的TLP最大負載長度,表示接下來的將是本次交易中的最后一個應答TLP,其它相關參數(shù)的計算方法如M5、M7和M8條款所示;如果未應答數(shù)據(jù)的雙字長度大于規(guī)定的TLP最大負載長度,則至少還要發(fā)送兩個應答TLP才能完成本次交易,而接下來的應答TLP的參數(shù)計算方法如M6條款所示。應答TLP封裝模塊104根據(jù)讀請求應答拆分模塊103的拆分結果,結合TLP解析模塊102所鎖存的TC、Attr, Requester ID以及TAG字段,按照PCIE應答TLP格式將TLP數(shù)據(jù)包頭部設置好,TLP有效負載則是從讀數(shù)據(jù)FIF0107中獲取,通過PCIE核的TLP發(fā)送接口將讀數(shù)據(jù)返回。命令接口控制模塊105負責驅動外部用戶邏輯接口上的tgt_req、tgt_rd_wrn、tgt_addr、tgt_length、tgt_first_be、tgt_last_be 及 tgt_bar_hit 信號。由于用戶時鐘與PCIE時鐘不一定來自相同的時鐘源,因此該模塊還需要將命令接口信號從PCIE時鐘域同步到用戶時鐘域。寫數(shù)據(jù)FIF0106和讀數(shù)據(jù)FIF0107主要分別用戶緩存、同步讀數(shù)據(jù)與寫數(shù)據(jù)。對于寫數(shù)據(jù)FIF0106,其容量設定為PCIE核的最大包長度即可(單次寫請求的數(shù)據(jù)量不會超過定義的TLP最大包長)。對于讀數(shù)據(jù)FIF0107,其容量需設定為4KB (PCIE的最大讀請求長度)。
目標讀寫控制轉換裝置實現(xiàn)了PCIE IP TLP接口到通用接口的轉換。針對目標讀寫操作,該用戶邏輯接口的控制流程如圖5所示。步驟S1:用戶邏輯在用戶時鐘的每個上升沿檢測tgt_req,如果tgt_req為高,貝丨J表示有目標請求發(fā)出;
步驟S2:用戶邏輯在tgt_req為高時檢測tgt_rd_wrn,高電平表示讀請求,低電平表示寫請求;
步驟 S3 及 S5:用戶邏輯在 tgt_req 為高時讀取 tgt_addr、tgt_length、tgt_f irst_be、tgt_last_be 及 tgt_bar_hit 命令參數(shù)信息;
步驟S4:用戶邏輯控制tgt_fifo_wr和tgt_fifo_datain將全部數(shù)據(jù)寫入FIFO即可完成本次讀請求的控制,數(shù)據(jù)的FIFO寫入過程可以插入等待周期。步驟S6:用戶邏輯控制tgt_fifo_rd,將全部讀數(shù)據(jù)從tgt_fifo_dataout端口讀出,當后端邏輯將全部寫請求數(shù)據(jù)從FIFO取出后,本次寫請求完成。與S5 —樣,從FIFO讀出數(shù)據(jù)時可以插入等待周期,以滿足后端一些慢速功能模塊的時序要求。綜上所示,本發(fā)明提出的一種協(xié)議無關、可支持目標讀寫操作的PCIE IP用戶邏輯接口的擴展方法,提高了 PCIE IP模塊的易用性,該發(fā)明可以運用到PCIE控制器芯片的設計中。
權利要求
1.一種協(xié)議無關、可支持目標讀寫操作的PCIE IP用戶邏輯接口的擴展方法,其特征在于,該方法包含以下步驟: (1)在基于TLP接口的PCIEIP核外部擴展一個目標讀寫控制轉換裝置; (2)目標讀寫控制轉換裝置直接對PCIEIP的TLP接口進行操控,完成PCIE目標讀寫操作的協(xié)議相關處理; (3)用戶邏輯通過目標讀寫控制轉換裝置的用戶邏輯接口,對PCIE目標讀寫操作進行響應; 其中,該目標讀寫控制轉換裝置用于實現(xiàn)PCIE IP核TLP接口到協(xié)議無關通用接口的轉換。
2.如權利要求1所述的一種協(xié)議無關、可支持目標讀寫操作的PCIEIP用戶邏輯接口的擴展方法,其特征在于:所述的目標讀寫控制轉換裝置;包括:狀態(tài)機,TLP解析模塊,讀請求應答拆分模塊,應答TLP封裝模塊,命令接口控制模塊,寫數(shù)據(jù)FIFO,讀數(shù)據(jù)FIFO; 所述的狀態(tài)機,用于實現(xiàn)目標讀寫控制轉換的控制; 所述的TLP解析模塊,對接收的TLP進行解析,并保存相關PCIE命令的參數(shù); 所述的讀請求應答拆分模塊,用于對PCIE讀請求進行應答拆分,使讀應答符合PCIE協(xié)議規(guī)范; 所述的應答TLP封裝模塊,將需要返回的讀數(shù)據(jù)或狀態(tài)封裝成應答TLP包; 所述的命令接口控制模塊,對目標命令接口信號進行控制,并將命令信號從PCIE時鐘域同步到用戶時鐘域; 所述的寫數(shù)據(jù)FIFO,用于緩存、同步PCIE寫操作數(shù)據(jù); 所述的讀數(shù)據(jù)FIFO,用于緩存、同步待返回的PCIE讀操作數(shù)據(jù); 通過上述擴展轉換裝置,在基于TLP接口的PCIE IP之上實現(xiàn)了可支持目標讀寫操作的協(xié)議無關用戶邏輯接口。
3.如權利要求1所述的一種協(xié)議無關、可支持目標讀寫操作的PCIEIP用戶邏輯接口的擴展方法,其特征在于:所述的PCIE協(xié)議無關的用戶邏輯接口,該用戶邏輯接口的信號定義為: 目標命令接口信號,其包含目標命令請求指示(tgt_req)、目標讀寫指示(tgt_rd_wrn,高為讀/低為寫)、目標地址(tgt_addr[a:0])、目標讀寫長度(tgt_length[b:0])、首段字節(jié)使能(tgt_first_be[c:0])、末段字節(jié)使能(tgt_last_be[c:0])以及BAR命中指示(tgt_bar_hit[6:0]);當有命令發(fā)出時,目標讀寫控制轉換模塊令目標命令請求指示有效一個時鐘周期,于此同時將目標讀寫指示、地址、長度、首/末段字節(jié)使能、以及BAR命中指示信號設置好,通過上述信號,用戶邏輯可以獲得完整的PCIE讀寫命令參數(shù); 數(shù)據(jù)通路接口信號,其包含目標FIFO讀指示(tgt_fifo_rd),目標FIFO寫指示(tgt_f ifo_wr)> 目標 FIFO 輸出(tgt_fifo_dataout[m:0])以及目標 FIFO 輸入(tgt_fifo_datain[n:0]),用戶邏輯通過tgt_fifo_wr和tgt_fifo_datain,將PCIE讀操作的數(shù)據(jù)返回;通過tgt_fifo_rd與tgt_fifo_dataout將PCIE寫操作數(shù)據(jù)讀出。
4.如權利要求1所述的一種協(xié)議無關、可支持目標讀寫操作的PCIEIP用戶邏輯接口的擴展方法,其特征在于:所述的可支持目標讀寫操作的用戶邏輯接口,通過該接口,用戶可以完成PCIE內存、I/O以及擴展ROM目標讀寫操作的控制。
全文摘要
發(fā)明提出一種協(xié)議無關、可支持目標讀寫操作的PCIE IP用戶邏輯接口擴展方法,該方法是在已有PCIE IP的事務包(TLP)接口上擴展一個目標讀寫控制轉換裝置。通過上述擴展裝置,實現(xiàn)了協(xié)議無關的通用用戶邏輯接口。相比TLP用戶接口的IP而言,電路設計者無需了解復雜的PCIE協(xié)議即可針對PCIE IP進行設計復用,從而提高了IP模塊的易用性。
文檔編號G06F13/38GK103106166SQ20121056170
公開日2013年5月15日 申請日期2012年12月22日 優(yōu)先權日2012年12月22日
發(fā)明者張宇, 秦信剛, 熊庭剛 申請人:中國船舶重工集團公司第七0九研究所