• / 29
  • 下載費用:30 金幣  

一種基于增強型外設互連協議總線的數據傳輸方法及裝置.pdf

摘要
申請專利號:

CN201510334406.8

申請日:

2015.06.16

公開號:

CN106257434A

公開日:

2016.12.28

當前法律狀態:

實審

有效性:

審中

法律詳情: 實質審查的生效IPC(主分類):G06F 13/14申請日:20150616|||公開
IPC分類號: G06F13/14 主分類號: G06F13/14
申請人: 深圳市中興微電子技術有限公司
發明人: 戴仁林; 婁本剛; 王平
地址: 518085 廣東省深圳市鹽田區大梅沙1號廠房
優先權:
專利代理機構: 北京派特恩知識產權代理有限公司 11270 代理人: 張穎玲;蔣雅潔
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN201510334406.8

授權公告號:

|||

法律狀態公告日:

2017.01.25|||2016.12.28

法律狀態類型:

實質審查的生效|||公開

摘要

本發明實施例公開了一種基于增強型外設互連(PCIe)協議總線的數據傳輸方法,所述方法應用于控制器,所述控制器中包括第一工作模塊、第二工作模塊、第三工作模塊和第四工作模塊,所述方法包括:接收對端設備發送的數據包,根據數據包的內容,由所述第一工作模塊處理讀操作命令,所述第二工作模塊處理寫操作命令;所述第三工作模塊處理直接存儲訪問(DMA)讀操作命令;所述第四工作模塊處理DMA寫操作命令。

權利要求書

1.一種基于增強型外設互連PCIe協議總線的數據傳輸方法,其特征在于,
所述方法應用于控制器,所述控制器中包括第一工作模塊、第二工作模塊、第
三工作模塊和第四工作模塊,所述方法包括:
接收對端設備發送的數據包,所述數據包上攜帶有工作類型標志位;
在工作類型標志位表示為讀操作時,將所述數據包分配給第一工作模塊,
所述第一工作模塊解析所述數據包獲得讀操作命令,將所述讀操作命令發送給
目標設備,接收目標設備返回的讀數據,并將所述讀數據發送給所述對端設備;
在工作類型標志位表示為寫操作時,將所述數據包分配給第二工作模塊,
所述第二工作模塊解析所述數據包獲得寫操作命令時,將所述數據包中的寫操
作命令發送給目標設備,接收目標設備返回的寫操作完成信號;
所述第二工作模塊解析所述數據包獲得直接存儲訪問DMA讀操作命令時,
啟動所述第三工作模塊,將所述DMA讀操作命令發送給所述第三工作模塊,
所述第三工作模塊根據所述DMA讀操作命令獲得所述對端設備中的發送報文,
將所述發送報文發送給目標設備;
所述第二工作模塊解析所述數據包獲得DMA寫操作命令時,啟動所述第
四工作模塊,將所述DMA寫操作命令發送給所述第四工作模塊,所述第四工
作模塊根據所述DMA寫操作命令將目標設備發送的接收報文,發送給對端設
備。
2.根據權利要求1所述的方法,其特征在于,所述第一工作模塊解析所述
數據包獲得讀操作命令,將所述讀操作命令發送給目標設備,接收目標設備返
回的讀數據,并將所述讀數據發送給所述對端設備,包括:
所述第一工作模塊解析數據包獲得CPU讀操作命令,然后將所述CPU讀
操作命令轉換為一個或多個通用寄存器讀操作訪問命令;其中,所述CPU讀操
作命令中包括讀使能、讀初始地址、讀數據個數,所述通用寄存器讀操作訪問
命令包括讀使能、讀地址;
第一工作模塊將所述一個或多個通用寄存器讀操作訪問命令緩存到第一異
步先入先出緩存器FIFO中;
所述第一工作模塊中的第一異步FIFO將所述一個或多個通用寄存器讀操
作訪問命令的時序轉換為符合目標設備的時序,并在轉換后將所述一個或多個
通用寄存器讀操作訪問命令通過配置通道發送給所述目標設備;通用寄存器讀
操作訪問命令用于所述目標設備進行讀操作獲得讀數據;
所述第一工作模塊中的第二異步FIFO通過配置通道接收所述讀數據,并
將所述讀數據轉換為符合PCIe協議要求的TLP包結構形式和時序;并將轉換
后的讀數據發送給對端設備。
3.根據權利要求2所述的方法,其特征在于,所述第一工作模塊的第二異
步FIFO在第一預設時間內未接收到所述目標設備發送的讀數據時,自行生成
無效讀數據。
4.根據權利要求1所述的方法,其特征在于,所述第二工作模塊解析所述
數據包獲得寫操作命令時,將所述數據包中的寫操作命令發送給目標設備,接
收目標設備返回的寫操作完成信號,包括:
所述第二工作模塊解析數據包獲得CPU寫操作命令,然后將所述CPU寫
操作命令轉換為一個或多個通用寄存器寫操作訪問命令;其中,所述CPU寫操
作命令中包括寫使能、寫數據、寫初始地址、寫數據個數,所述通用寄存器寫
操作訪問命令包括寫使能、寫地址、所述寫地址對應的單個寫數據;
第二工作模塊將所述一個或多個通用寄存器寫操作訪問命令緩存到第三異
步FIFO中;
所述第二工作模塊中的第三異步FIFO將所述一個或多個通用寄存器寫操
作訪問命令的時序轉換為符合目標設備的時序,并在轉換后將所述一個或多個
通用寄存器寫操作訪問命令通過配置通道發送給所述目標設備;通用寄存器寫
操作訪問命令用于所述目標設備在寫地址寫入所述寫地址對應的單個寫數據;
所述第二工作模塊通過配置通道接收所述目標設備發送的寫操作完成信號。
5.根據權利要求4所述的方法,其特征在于,所述第二工作模塊在第二預
設時間內未接收到所述目標設備發送的寫操作完成信號時,所述第二工作模塊
自行生成所述寫操作完成信號。
6.根據權利要求1所述的方法,其特征在于,所述DMA讀操作命令中包
括報文發送指示信息的初始地址和地址空間大小;所述第三工作模塊根據所述
DMA讀操作命令獲得所述對端設備中的發送報文,將所述發送報文發送給目標
設備,包括:
在第i次時,所述第三工作模塊根據所述DMA讀操作命令將報文發送指
示信息的地址發送給對端設備;其中,所述報文發送指示信息的地址為報文發
送指示信息的初始地址+i-1,i為大于等于1的整數;
所述第三工作模塊接收對端設備發送的所述報文發送指示信息的地址中的
報文發送指示信息內容;其中,所述報文發送指示信息內容包括報文發送有效
指示信息、報文大小和報文初始緩存的地址;
所述第三工作模塊在所述報文發送有效指示信息為有效時,將所述報文大
小和報文初始緩存地址發送給對端設備;
所述第三工作模塊接收所述對端設備發送的所述報文大小和報文初始緩存
地址對應的發送報文;
所述第三工作模塊將所述發送報文緩存到第四異步FIFO中,經過時序轉
換、數據位寬轉換后,轉換為通用包結構形式報文,通過DMA通道發送給目
標設備;
所述第三工作模塊向對端設備發送報文發送完成命令,所述報文發送完成
命令用于所述對端設備將所述發送報文對應的報文發送有效指示信息更改為無
效;
依次循環進行上述步驟,直至所述報文發送指示信息的地址超出所述報文
發送指示信息的初始地址和地址空間大小限定的地址范圍。
7.根據權利要求1所述的方法,其特征在于,所述DMA寫操作命令中包
括報文接收指示信息的初始地址和地址空間大小;所述第四工作模塊根據所述
DMA寫操作命令將目標設備發送的接收報文,發送給對端設備,包括:
在第j次時,所述第四工作模塊根據所述DMA寫操作命令將報文接收指
示信息的地址發送給對端設備;其中,所述報文接收指示信息的地址為報文接
收指示信息的初始地址+j-1,j為大于等于1的整數;
所述第四工作模塊接收對端設備發送的所述報文接收指示信息的地址中的
報文接收指示信息內容;其中,所述報文接收指示信息內容包括報文接收有效
指示信息、接收報文的初始緩存地址;
所述第四工作模塊的第五異步FIFO將目標設備發送的通用包結構形式的
接收報文進行緩存、時序轉換和數據位寬轉換后,轉換為符合PCIe協議要求的
TLP包結構形式和時序的報文數據包;
在所述報文接收有效指示信息為有效時,所述第四工作模塊將所述接收報
文的初始緩存地址以及從第五異步FIFO輸出的報文數據包發送給對端設備;
所述接收報文的初始緩存地址用于所述對端設備從所述接收報文的初始緩存地
址處緩存報文數據包;
所述第四工作模塊對端設備發送報文接收完成命令,所述報文接收完成命
令用于所述對端設備將所述報文數據包初始緩存地址對應的報文接收有效指示
信息更改為無效;
依次循環進行上述步驟,直至所述報文接收指示信息的地址超出所述報文
接收指示信息的初始地址和地址空間大小限定的地址范圍。
8.一種基于增強型外設互連PCIe協議總線的數據傳輸裝置,其特征在于,
所述裝置包括:接收模塊,分配模塊,第一工作模塊、第二工作模塊、第三工
作模塊和第四工作模塊,其中,
接收模塊,用于接收對端設備發送的數據包,所述數據包上攜帶有工作類
型標志位;
分配模塊,用于在所述接收模塊接收到的工作類型標志位表示為讀操作時,
將所述數據包分配給第一工作模塊;
所述第一工作模塊,用于在解析出所述分配模塊分配的數據包獲得讀操作
命令時,將所述讀操作命令發送給目標設備,接收目標設備返回的讀數據,并
將所述讀數據發送給所述對端設備;
分配模塊,還用于在所述接收模塊接收到的工作類型標志位表示為寫操作
時,將所述數據包分配給第二工作模塊;
所述第二工作模塊,用于在解析出所述分配模塊分配的所述數據包獲得寫
操作命令時,將所述數據包中的寫操作命令發送給目標設備,接收目標設備返
回的寫操作完成信號;
所述第二工作模塊,還用于在解析所述數據包獲得直接存儲訪問DMA讀
操作命令時,啟動所述第三工作模塊,并將所述DMA讀操作命令發送給所述
第三工作模塊;
所述第三工作模塊,用于根據所述第二工作模塊發送的所述DMA讀操作
命令獲得所述對端設備中的發送報文,并將所述發送報文發送給目標設備;
所述第二工作模塊,還用于在解析出所述數據包獲得DMA寫操作命令時,
啟動所述第四工作模塊,將所述DMA寫操作命令發送給所述第四工作模塊;
所述第四工作模塊,用于根據所述第二工作模塊發送的所述DMA寫操作
命令將目標設備發送的接收報文,發送給對端設備。
9.根據權利要求8所述的裝置,其特征在于,所述第一工作模塊中包括:
第一處理模塊,第一異步先入先出緩存器FIFO模塊和第二異步FIFO模塊;其
中,
所述第一處理模塊,用于解析數據包獲得CPU讀操作命令,然后將所述
CPU讀操作命令轉換為一個或多個通用寄存器讀操作訪問命令;其中,所述
CPU讀操作命令中包括讀使能、讀初始地址、讀數據個數,所述通用寄存器讀
操作訪問命令包括讀使能、讀地址;
所述第一處理模塊,還用于將所述一個或多個通用寄存器讀操作訪問命令
緩存到第一異步先入先出緩存器FIFO模塊中;
所述第一異步FIFO模塊,用于將所述第一處理模塊緩存的一個或多個通
用寄存器讀操作訪問命令的時序轉換為符合目標設備的時序,并在轉換后將所
述一個或多個通用寄存器讀操作訪問命令通過配置通道發送給所述目標設備;
通用寄存器讀操作訪問命令用于所述目標設備進行讀操作獲得讀數據;
所述第二異步FIFO模塊,用于通過配置通道接收所述讀數據,并將所述
讀數據轉換為符合PCIe協議要求的TLP包結構形式和時序;并將轉換后的讀
數據發送給對端設備。
10.根據權利要求9所述的裝置,其特征在于,所述第一異步FIFO模塊,
還用于在第一預設時間內未接收到所述目標設備發送的讀數據時,自行生成無
效讀數據。
11.根據權利要求8所述的裝置,其特征在于,所述第二工作模塊中包括:
第二處理模塊,第三異步FIFO模塊;其中,
所述第二處理模塊,用于解析數據包獲得CPU寫操作命令,然后將所述
CPU寫操作命令轉換為一個或多個通用寄存器寫操作訪問命令;其中,所述
CPU寫操作命令中包括寫使能、寫數據、寫初始地址、寫數據個數,所述通用
寄存器寫操作訪問命令包括寫使能、寫地址、所述寫地址對應的單個寫數據;
所述第二處理模塊,還用于將所述一個或多個通用寄存器寫操作訪問命令
緩存到第三異步FIFO模塊中;
所述第三異步FIFO模塊,用于將所述第二處理模塊緩存的所述一個或多
個通用寄存器寫操作訪問命令的時序轉換為符合目標設備的時序,并在轉換后
將所述一個或多個通用寄存器寫操作訪問命令通過配置通道發送給所述目標設
備;通用寄存器寫操作訪問命令用于所述目標設備在寫地址寫入所述寫地址對
應的單個寫數據;
所述第二處理模塊,還用于通過配置通道接收所述目標設備發送的寫操作
完成信號。
12.根據權利要求11所述的裝置,其特征在于,所述第二處理模塊,還用
于在第二預設時間內未接收到所述目標設備發送的寫操作完成信號時,生成所
述寫操作完成信號。
13.根據權利要求8所述的裝置,其特征在于,所述DMA讀操作命令中
包括報文發送指示信息的初始地址和地址空間大小;所述第三工作模塊包括第
三處理模塊和第四異步FIFO模塊;其中,
第三處理模塊,用于在第i次時,根據所述DMA讀操作命令將報文發送
指示信息的地址發送給對端設備;其中,所述報文發送指示信息的地址為報文
發送指示信息的初始地址+i-1,i為大于等于1的整數;所述報文發送指示信息
的地址不超出所述報文發送指示信息的初始地址和地址空間大小限定的地址范

第三處理模塊,還用于接收對端設備發送的所述報文發送指示信息的地址
中的報文發送指示信息內容;其中,所述報文發送指示信息內容包括報文發送
有效指示信息、報文大小和報文初始緩存的地址;
第三處理模塊,還用于在所述報文發送有效指示信息為有效時,將所述報
文大小和報文初始緩存地址發送給對端設備;
第三處理模塊,還用于接收所述對端設備發送的所述報文大小和報文初始
緩存地址對應的發送報文,并將所述發送報文緩存到第四異步FIFO模塊中
所述第四異步FIFO模塊,用于在將所述第三處理模塊緩存的發送報文經
過時序轉換、數據位寬轉換后,轉換為通用包結構形式報文,通過DMA通道
發送給目標設備;
第三處理模塊,還用于在所述第四異步FIFO模塊將所述發送報文發送給
目標設備后,向對端設備發送報文發送完成命令,所述報文發送完成命令用于
所述對端設備將所述發送報文對應的報文發送有效指示信息更改為無效。
14.根據權利要求8所述的裝置,其特征在于,所述DMA寫操作命令中
包括報文接收指示信息的初始地址和地址空間大小;所述第四工作模塊包括:
第四處理模塊和第五異步FIFO模塊,其中,
所述第四處理模塊,用于在第j次時,根據所述DMA寫操作命令將報文
接收指示信息的地址發送給對端設備;其中,所述報文接收指示信息的地址為
報文接收指示信息的初始地址+j-1,j為大于等于1的整數;所述報文接收指示
信息的地址未超出所述報文接收指示信息的初始地址和地址空間大小限定的地
址范圍;
所述第四處理模塊,還用于接收對端設備發送的所述報文接收指示信息的
地址中的報文接收指示信息內容;其中,所述報文接收指示信息內容包括報文
接收有效指示信息、接收報文的初始緩存地址;
所述第五異步FIFO模塊,用于將目標設備發送的通用包結構形式的接收
報文進行緩存、時序轉換和數據位寬轉換后,轉換為符合PCIe協議要求的TLP
包結構形式和時序的報文數據包;
所述第四處理模塊,還用于在所述報文接收有效指示信息為有效時,將所
述接收報文的初始緩存地址以及所述第五異步FIFO模塊輸出的報文數據包發
送給對端設備;所述接收報文的初始緩存地址用于所述對端設備從所述接收報
文的初始緩存地址處緩存報文數據包;
所述第四處理模塊,還用于向對端設備發送報文接收完成命令,所述報文
接收完成命令用于所述對端設備將所述報文數據包初始緩存地址對應的報文接
收有效指示信息更改為無效。

說明書

一種基于增強型外設互連協議總線的數據傳輸方法及裝置

技術領域

本發明涉及數據傳輸領域,尤其涉及一種基于增強型外設互連(PCIe,
Peripheral Component Interconnect express)協議總線的數據傳輸方法及裝置。

背景技術

PCIe協議總線是第三代高性能接口總線,屬于一種基于數據包的串行連接
協議,它提供高速的、高帶寬的、高性能的、高擴展性的、可熱插拔的、點到
點的、雙單工的、串行差分信號鏈路來互聯設備。并且,已經被廣泛應用于計
算機和電子通信領域的外圍設備互連上。

基于PCIe協議總線在通信領域的應用,已出現了很多不同的類型,比如:
基于PCIe協議總線的高級可擴展接口(AXI);主機適配接口(HAL);專利《基
于PCIE協議的中央處理器(CPU)訪問本地總線的裝置及方法》(專利號:
CN201310528347.9)闡述的一種通過PCIe實現CPU訪問寄存器的方法;專利
《在PCIE總線上傳輸報文的方法、設備和系統》(專利號:CN201110032172.3)
闡述的一種以標識(ID)路由的方式從PCIe起始設備傳輸協議報文到目的設備
的方法;等等,但這些已有技術都是基于某一個特定應用如單一實現CPU訪問
寄存器或者傳輸協議報文。

發明內容

有鑒于此,本發明實施例期望提供一種基于增強型外設互連協議總線的數
據傳輸方法及裝置,可以基于一條PCIe總線同時實現CPU讀寫訪問寄存器和
數據報文以直接存儲訪問(DMA,Direct Memory Access)方式進行雙向傳輸。

為達到上述目的,本發明的技術方案是這樣實現的:

本發明實施例提供了一種基于增強型外設互連PCIe協議總線的數據傳輸
方法,所述方法應用于控制器,所述控制器中包括第一工作模塊、第二工作模
塊、第三工作模塊和第四工作模塊,所述方法包括:

接收對端設備發送的數據包,所述數據包上攜帶有工作類型標志位;

在工作類型標志位表示為讀操作時,將所述數據包分配給第一工作模塊,
所述第一工作模塊解析所述數據包獲得讀操作命令,將所述讀操作命令發送給
目標設備,接收目標設備返回的讀數據,并將所述讀數據發送給所述對端設備;

在工作類型標志位表示為寫操作時,將所述數據包分配給第二工作模塊,
所述第二工作模塊解析所述數據包獲得寫操作命令時,將所述數據包中的寫操
作命令發送給目標設備,接收目標設備返回的寫操作完成信號;

所述第二工作模塊解析所述數據包獲得直接存儲訪問DMA讀操作命令時,
啟動所述第三工作模塊,將所述DMA讀操作命令發送給所述第三工作模塊,
所述第三工作模塊根據所述DMA讀操作命令獲得所述對端設備中的發送報文,
將所述發送報文發送給目標設備;

所述第二工作模塊解析所述數據包獲得DMA寫操作命令時,啟動所述第
四工作模塊,將所述DMA寫操作命令發送給所述第四工作模塊,所述第四工
作模塊根據所述DMA寫操作命令將目標設備發送的接收報文,發送給對端設
備。

上述方案中,所述第一工作模塊解析所述數據包獲得讀操作命令,將所述
讀操作命令發送給目標設備,接收目標設備返回的讀數據,并將所述讀數據發
送給所述對端設備,包括:

所述第一工作模塊解析數據包獲得CPU讀操作命令,然后將所述CPU讀
操作命令轉換為一個或多個通用寄存器讀操作訪問命令;其中,所述CPU讀操
作命令中包括讀使能、讀初始地址、讀數據個數,所述通用寄存器讀操作訪問
命令包括讀使能、讀地址;

第一工作模塊將所述一個或多個通用寄存器讀操作訪問命令緩存到第一異
步先入先出緩存器FIFO中;

所述第一工作模塊中的第一異步FIFO將所述一個或多個通用寄存器讀操
作訪問命令的時序轉換為符合目標設備的時序,并在轉換后將所述一個或多個
通用寄存器讀操作訪問命令通過配置通道發送給所述目標設備;通用寄存器讀
操作訪問命令用于所述目標設備進行讀操作獲得讀數據;

所述第一工作模塊中的第二異步FIFO通過配置通道接收所述讀數據,并
將所述讀數據轉換為符合PCIe協議要求的TLP包結構形式和時序;并將轉換
后的讀數據發送給對端設備。

上述方案中,所述第一工作模塊的第二異步FIFO在第一預設時間內未接
收到所述目標設備發送的讀數據時,自行生成無效讀數據。

上述方案中,所述第二工作模塊解析所述數據包獲得寫操作命令時,將所
述數據包中的寫操作命令發送給目標設備,接收目標設備返回的寫操作完成信
號,包括:

所述第二工作模塊解析數據包獲得CPU寫操作命令,然后將所述CPU寫
操作命令轉換為一個或多個通用寄存器寫操作訪問命令;其中,所述CPU寫操
作命令中包括寫使能、寫數據、寫初始地址、寫數據個數,所述通用寄存器寫
操作訪問命令包括寫使能、寫地址、所述寫地址對應的單個寫數據;

第二工作模塊將所述一個或多個通用寄存器寫操作訪問命令緩存到第三異
步FIFO中;

所述第二工作模塊中的第三異步FIFO將所述一個或多個通用寄存器寫操
作訪問命令的時序轉換為符合目標設備的時序,并在轉換后將所述一個或多個
通用寄存器寫操作訪問命令通過配置通道發送給所述目標設備;通用寄存器寫
操作訪問命令用于所述目標設備在寫地址寫入所述寫地址對應的單個寫數據;

所述第二工作模塊通過配置通道接收所述目標設備發送的寫操作完成信號。

上述方案中,所述第二工作模塊在第二預設時間內未接收到所述目標設備
發送的寫操作完成信號時,所述第二工作模塊自行生成所述寫操作完成信號。

上述方案中,所述DMA讀操作命令中包括報文發送指示信息的初始地址
和地址空間大小;所述第三工作模塊根據所述DMA讀操作命令獲得所述對端
設備中的發送報文,將所述發送報文發送給目標設備,包括:

在第i次時,所述第三工作模塊根據所述DMA讀操作命令將報文發送指
示信息的地址發送給對端設備;其中,所述報文發送指示信息的地址為報文發
送指示信息的初始地址+i-1,i為大于等于1的整數;

所述第三工作模塊接收對端設備發送的所述報文發送指示信息的地址中的
報文發送指示信息內容;其中,所述報文發送指示信息內容包括報文發送有效
指示信息、報文大小和報文初始緩存的地址;

所述第三工作模塊在所述報文發送有效指示信息為有效時,將所述報文大
小和報文初始緩存地址發送給對端設備;

所述第三工作模塊接收所述對端設備發送的所述報文大小和報文初始緩存
地址對應的發送報文;

所述第三工作模塊將所述發送報文緩存到第四異步FIFO中,經過時序轉
換、數據位寬轉換后,轉換為通用包結構形式報文,通過DMA通道發送給目
標設備;

所述第三工作模塊向對端設備發送報文發送完成命令,所述報文發送完成
命令用于所述對端設備將所述發送報文對應的報文發送有效指示信息更改為無
效;

依次循環進行上述步驟,直至所述報文發送指示信息的地址超出所述報文
發送指示信息的初始地址和地址空間大小限定的地址范圍。

上述方案中,所述DMA寫操作命令中包括報文接收指示信息的初始地址
和地址空間大小;所述第四工作模塊根據所述DMA寫操作命令將目標設備發
送的接收報文,發送給對端設備,包括:

在第j次時,所述第四工作模塊根據所述DMA寫操作命令將報文接收指
示信息的地址發送給對端設備;其中,所述報文接收指示信息的地址為報文接
收指示信息的初始地址+j-1,j為大于等于1的整數;

所述第四工作模塊接收對端設備發送的所述報文接收指示信息的地址中的
報文接收指示信息內容;其中,所述報文接收指示信息內容包括報文接收有效
指示信息、接收報文的初始緩存地址;

所述第四工作模塊的第五異步FIFO將目標設備發送的通用包結構形式的
接收報文進行緩存、時序轉換和數據位寬轉換后,轉換為符合PCIe協議要求的
TLP包結構形式和時序的報文數據包;

在所述報文接收有效指示信息為有效時,所述第四工作模塊將所述接收報
文的初始緩存地址以及從第五異步FIFO輸出的報文數據包發送給對端設備;
所述接收報文的初始緩存地址用于所述對端設備從所述接收報文的初始緩存地
址處緩存報文數據包;

所述第四工作模塊對端設備發送報文接收完成命令,所述報文接收完成命
令用于所述對端設備將所述報文數據包初始緩存地址對應的報文接收有效指示
信息更改為無效;

依次循環進行上述步驟,直至所述報文接收指示信息的地址超出所述報文
接收指示信息的初始地址和地址空間大小限定的地址范圍。

本發明實施例還提供了一種基于增強型外設互連PCIe協議總線的數據傳
輸裝置,所述裝置包括:接收模塊,分配模塊,第一工作模塊、第二工作模塊、
第三工作模塊和第四工作模塊,其中,

接收模塊,用于接收對端設備發送的數據包,所述數據包上攜帶有工作類
型標志位;

分配模塊,用于在所述接收模塊接收到的工作類型標志位表示為讀操作時,
將所述數據包分配給第一工作模塊;

所述第一工作模塊,用于在解析出所述分配模塊分配的數據包獲得讀操作
命令時,將所述讀操作命令發送給目標設備,接收目標設備返回的讀數據,并
將所述讀數據發送給所述對端設備;

分配模塊,還用于在所述接收模塊接收到的工作類型標志位表示為寫操作
時,將所述數據包分配給第二工作模塊;

所述第二工作模塊,用于在解析出所述分配模塊分配的所述數據包獲得寫
操作命令時,將所述數據包中的寫操作命令發送給目標設備,接收目標設備返
回的寫操作完成信號;

所述第二工作模塊,還用于在解析所述數據包獲得直接存儲訪問DMA讀
操作命令時,啟動所述第三工作模塊,并將所述DMA讀操作命令發送給所述
第三工作模塊;

所述第三工作模塊,用于根據所述第二工作模塊發送的所述DMA讀操作
命令獲得所述對端設備中的發送報文,并將所述發送報文發送給目標設備;

所述第二工作模塊,還用于在解析出所述數據包獲得DMA寫操作命令時,
啟動所述第四工作模塊,將所述DMA寫操作命令發送給所述第四工作模塊;

所述第四工作模塊,用于根據所述第二工作模塊發送的所述DMA寫操作
命令將目標設備發送的接收報文,發送給對端設備。

上述方案中,所述第一工作模塊中包括:第一處理模塊,第一異步先入先
出緩存器FIFO模塊和第二異步FIFO模塊;其中,

所述第一處理模塊,用于解析數據包獲得CPU讀操作命令,然后將所述
CPU讀操作命令轉換為一個或多個通用寄存器讀操作訪問命令;其中,所述
CPU讀操作命令中包括讀使能、讀初始地址、讀數據個數,所述通用寄存器讀
操作訪問命令包括讀使能、讀地址;

所述第一處理模塊,還用于將所述一個或多個通用寄存器讀操作訪問命令
緩存到第一異步先入先出緩存器FIFO模塊中;

所述第一異步FIFO模塊,用于將所述第一處理模塊緩存的一個或多個通
用寄存器讀操作訪問命令的時序轉換為符合目標設備的時序,并在轉換后將所
述一個或多個通用寄存器讀操作訪問命令通過配置通道發送給所述目標設備;
通用寄存器讀操作訪問命令用于所述目標設備進行讀操作獲得讀數據;

所述第二異步FIFO模塊,用于通過配置通道接收所述讀數據,并將所述
讀數據轉換為符合PCIe協議要求的TLP包結構形式和時序;并將轉換后的讀
數據發送給對端設備。

上述方案中,所述第一異步FIFO模塊,還用于在第一預設時間內未接收
到所述目標設備發送的讀數據時,自行生成無效讀數據。

上述方案中,所述第二工作模塊中包括:第二處理模塊,第三異步FIFO
模塊;其中,

所述第二處理模塊,用于解析數據包獲得CPU寫操作命令,然后將所述
CPU寫操作命令轉換為一個或多個通用寄存器寫操作訪問命令;其中,所述
CPU寫操作命令中包括寫使能、寫數據、寫初始地址、寫數據個數,所述通用
寄存器寫操作訪問命令包括寫使能、寫地址、所述寫地址對應的單個寫數據;

所述第二處理模塊,還用于將所述一個或多個通用寄存器寫操作訪問命令
緩存到第三異步FIFO模塊中;

所述第三異步FIFO模塊,用于將所述第二處理模塊緩存的所述一個或多
個通用寄存器寫操作訪問命令的時序轉換為符合目標設備的時序,并在轉換后
將所述一個或多個通用寄存器寫操作訪問命令通過配置通道發送給所述目標設
備;通用寄存器寫操作訪問命令用于所述目標設備在寫地址寫入所述寫地址對
應的單個寫數據;

所述第二處理模塊,還用于通過配置通道接收所述目標設備發送的寫操作
完成信號。

上述方案中,所述第二處理模塊,還用于在第二預設時間內未接收到所述
目標設備發送的寫操作完成信號時,生成所述寫操作完成信號。

上述方案中,所述DMA讀操作命令中包括報文發送指示信息的初始地址
和地址空間大小;所述第三工作模塊包括第三處理模塊和第四異步FIFO模塊;
其中,

第三處理模塊,用于在第i次時,根據所述DMA讀操作命令將報文發送
指示信息的地址發送給對端設備;其中,所述報文發送指示信息的地址為報文
發送指示信息的初始地址+i-1,i為大于等于1的整數;所述報文發送指示信息
的地址不超出所述報文發送指示信息的初始地址和地址空間大小限定的地址范

第三處理模塊,還用于接收對端設備發送的所述報文發送指示信息的地址
中的報文發送指示信息內容;其中,所述報文發送指示信息內容包括報文發送
有效指示信息、報文大小和報文初始緩存的地址;

第三處理模塊,還用于在所述報文發送有效指示信息為有效時,將所述報
文大小和報文初始緩存地址發送給對端設備;

第三處理模塊,還用于接收所述對端設備發送的所述報文大小和報文初始
緩存地址對應的發送報文,并將所述發送報文緩存到第四異步FIFO模塊中

所述第四異步FIFO模塊,用于在將所述第三處理模塊緩存的發送報文經
過時序轉換、數據位寬轉換后,轉換為通用包結構形式報文,通過DMA通道
發送給目標設備;

第三處理模塊,還用于在所述第四異步FIFO模塊將所述發送報文發送給
目標設備后,向對端設備發送報文發送完成命令,所述報文發送完成命令用于
所述對端設備將所述發送報文對應的報文發送有效指示信息更改為無效。

上述方案中,所述DMA寫操作命令中包括報文接收指示信息的初始地址
和地址空間大小;所述第四工作模塊包括:第四處理模塊和第五異步FIFO模
塊,其中,

所述第四處理模塊,用于在第j次時,根據所述DMA寫操作命令將報文
接收指示信息的地址發送給對端設備;其中,所述報文接收指示信息的地址為
報文接收指示信息的初始地址+j-1,j為大于等于1的整數;所述報文接收指示
信息的地址未超出所述報文接收指示信息的初始地址和地址空間大小限定的地
址范圍;

所述第四處理模塊,還用于接收對端設備發送的所述報文接收指示信息的
地址中的報文接收指示信息內容;其中,所述報文接收指示信息內容包括報文
接收有效指示信息、接收報文的初始緩存地址;

所述第五異步FIFO模塊,用于將目標設備發送的通用包結構形式的接收
報文進行緩存、時序轉換和數據位寬轉換后,轉換為符合PCIe協議要求的TLP
包結構形式和時序的報文數據包;

所述第四處理模塊,還用于在所述報文接收有效指示信息為有效時,將所
述接收報文的初始緩存地址以及所述第五異步FIFO模塊輸出的報文數據包發
送給對端設備;所述接收報文的初始緩存地址用于所述對端設備從所述接收報
文的初始緩存地址處緩存報文數據包;

所述第四處理模塊,還用于向對端設備發送報文接收完成命令,所述報文
接收完成命令用于所述對端設備將所述報文數據包初始緩存地址對應的報文接
收有效指示信息更改為無效。

本發明實施例提供的基于增強型外設互連協議總線的數據傳輸方法及裝置,
控制器中兩個或兩個以上的工作模塊可以同時工作,這樣,基于一條PCIe總線
鏈路,可以實現同時進行CPU讀寫訪問寄存器操作和數據報文以DMA方式進
行雙向傳輸,從而也大大簡化了PCIe總線設備或系統,具有應用靈活多樣性的
特點;另外,一個所述控制器可以同時支持一個或一個以上的目標設備,具有
非常好的擴展性。

附圖說明

圖1為本發明實施例1提供的一種基于PCIe協議總線的數據傳輸方法的流
程示意圖;

圖2為本發明實施例2提供的基于PCIe協議總線的系統架構框圖;

圖3為本發明實施例2提供的第一種數據傳輸方法的流程示意圖;

圖4為本發明實施例2提供的第二種數據傳輸方法的流程示意圖;

圖5為本發明實施例2提供的第三種數據傳輸方法的流程示意圖;

圖6為本發明實施例2提供的第四種數據傳輸方法的流程示意圖;

圖7為本發明實施例3提供的一種基于PCIe協議總線的數據傳輸裝置的結
構框圖;

圖8為本發明實施例3提供的第一工作模塊的結構框圖;

圖9為本發明實施例3提供的第二工作模塊的結構框圖;

圖10為本發明實施例3提供的第三工作模塊的結構框圖;

圖11為本發明實施例3提供的第四工作模塊的結構框圖。

具體實施方式

下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清
楚、完整地描述。

實施例1

本發明實施例提供了一種基于PCIe協議總線的數據傳輸方法,所述方法應
用于控制器,所述控制器中包括第一工作模塊、第二工作模塊、第三工作模塊
和第四工作模塊,如圖1所示,本實施例方法的處理流程包括以下步驟:

步驟101、接收對端設備發送的數據包,所述數據包上攜帶有工作類型標
志位。

本實施例方法是對端設備與目標設備的之間的數據傳輸方法,主要傳輸類
型有CPU讀、CPU寫、DMA讀、DMA寫;對端設備發送給控制器的數據包
上攜帶有工作類型標志位,以使控制器區分工作類型,進而應用不同的模塊進
行數據處理。

步驟102、在工作類型標志位表示為讀操作時,將所述數據包分配給第一
工作模塊。

步驟103、所述第一工作模塊解析所述數據包獲得讀操作命令,將所述讀
操作命令發送給目標設備,接收目標設備返回的讀數據,并將所述讀數據發送
給所述對端設備。

這里,第一工作模塊用來處理對端設備發送來的讀操作數據包,讀操作數
據包中會攜帶有讀操作命令,讀操作命令中會指明要求目標設備進行讀操作的
地址,控制器將讀操作命令轉發給目標設備后,目標設備會根據讀操作命令在
相應地址處讀取數據獲得讀數據,然后將讀數據轉發給控制器,控制器再將該
讀數據轉發給對端設備,這就完成了一次讀操作。

需要說明的是,在上述過程中,兩個設備之間進行數據傳輸時要按照適應
的數據格式進行傳輸,可以進行格式轉換,將數據轉換為適應的格式。

步驟104、在工作類型標志位表示為寫操作時,將所述數據包分配給第二
工作模塊。

步驟105、所述第二工作模塊解析所述數據包獲得寫操作命令時,將所述
數據包中的寫操作命令發送給目標設備,接收目標設備返回的寫操作完成信號。

這里,第二工作模塊用來處理對端設備發送來的寫操作數據包,寫操作數
據包中會攜帶有寫操作命令,寫操作命令中會指明要求目標設備進行寫操作的
地址以及寫數據,第二工作模塊將寫操作命令轉發給目標設備后,目標設備會
根據寫操作命令將該寫數據寫到相應地址處,然后發送寫操作完成信號給第二
工作模塊,第二工作模塊決定接收到寫操作完成信號后決定是否可以發送下一
個寫操作命令給目標設備。

在上述過程中,兩個設備之間進行數據傳輸時要按照適應的數據格式進行
傳輸,可以進行格式轉換,將數據轉換為適應的格式。

步驟106、所述第二工作模塊解析所述數據包獲得DMA讀操作命令時,啟
動所述第三工作模塊,將所述DMA讀操作命令發送給所述第三工作模塊。

步驟107、所述第三工作模塊根據所述DMA讀操作命令獲得所述對端設備
中的發送報文,將所述發送報文發送給目標設備。

這里,在工作類型標志位表示為寫操作時,將所述數據包分配給第二工作
模塊,所述第二工作模塊解析所述數據包獲得DMA讀操作命令時,啟動所述
第三工作模塊,將所述DMA讀操作命令發送給所述第三工作模塊。所述第三
工作模塊根據所述DMA讀操作命令與對端設備進行信息交互獲得對端設備要
發送給目標設備的發送報文,然后第三工作模塊將獲得的所述發送報文發送給
目標設備。

步驟108、所述第二工作模塊解析所述數據包獲得DMA寫操作命令時,啟
動所述第四工作模塊,將所述DMA寫操作命令發送給所述第四工作模塊。

步驟109、所述第四工作模塊根據所述DMA寫操作命令將目標設備發送的
接收報文,發送給對端設備。

這里,在工作類型標志位表示為寫操作時,將所述數據包分配給第二工作
模塊,所述第二工作模塊解析所述數據包獲得DMA讀操作命令時,啟動所述
第四工作模塊,將所述DMA讀操作命令發送給所述第四工作模塊。所述第四
工作模塊根據所述DMA寫操作命令與對端設備進行信息交互獲得對端設備給
接收報文分配的緩存地址,然后第三工作模塊將獲得的所述目標設備發送的接
收報文轉發給對端設備,使對端設備在給接收報文分配的緩存地址緩存該接收
報文。

上述過程中,步驟102-103和步驟104-105沒有先后順序之分,步驟105、
步驟106-107和步驟108-109也沒有先后順序之分,控制器只是根據數據包的
內容選取工作模塊進行上述步驟。

本實施例方法中,控制器中兩個或兩個以上的工作模塊可以同時工作,這
樣基于一條PCIe總線鏈路,本實施例方法可以實現同時進行CPU讀寫訪問寄
存器操作和數據報文以DMA的方式雙向傳輸,從而也大大簡化了一個PCIe總
線設備或系統,也具有應用靈活多樣性的特點;且本實施例方法中,一個所述
控制器可以同時支持一個或一個以上所述目標設備,具有非常好的擴展性。

實施例2

本發明實施例提供了一種基于PCIe協議總線的數據傳輸方法,該方法是基
于如圖2所示的PCIe鏈路系統架構,如圖2所示,所述PCIe鏈路系統包括對
端設備201、協議層設備202、控制器203、目標設備204;其中,

所述對端設備201能產生CPU讀操作命令和CPU寫操作命令;具有報文
接收指示信息和報文發送指示信息的緩存空間;具有緩存接收報文和發送報文
的緩存空間;在整個PCIe鏈路系統中作為一個PCIe根設備、交換設備或端點
設備工作;與所述協議層設備202通過PCIe鏈路(即:高速串行總線SerDes)
進行信息的高速、多帶寬的點對點通信。

協議層設備202是為了實現PCIe協議層的功能和要求,使得本設備在整個
PCIe鏈路系統中作為一個PCIe端點設備工作。它具有一個高速串行(SerDes)
接口和一個事務層包(TLP)接口,其中SerDes接口是與所述對端設備201進
行互聯和數據交互,TLP接口是與所述控制器203進行互聯和數據交互。

控制器203中包括第一工作模塊、第二工作模塊、第三工作模塊和第四工
作模塊,控制器203通過第一工作模塊執行所述對端設備201通過協議層設備
202發送過來的CPU讀操作命令,通過第二工作模塊執行所述對端設備201通
過協議層設備202發送過來的CPU寫操作命令;通過第二工作模塊和第三工作
模塊協作執行所述對端設備201通過協議層設備202發送過來的DMA寫操作
命令,通過第二工作模塊和第四工作模塊協作執行所述對端設備201通過協議
層設備202發送過來的DMA讀操作命令。

所述控制器203上設置有配置通道接口和DMA通道接口。配置通道接口
接口用于發送和接收CPU讀寫指令,DMA通道接口用于發送和接收DMA讀
寫指令。

目標設備204包括但不限于具有符合所述控制器203的配置通道接口和
DMA通道接口中的至少一種接口。在本實施例中,所述控制器203可以與一個
或一個以上的所述目標設備204進行數據通信。控制器203與目標設備204之
間通過配置通道接口連接的通道為配置通道,控制器203與目標設備204之間
通過DMA通道接口連接的通道為DMA通道,配置通道用于傳輸CPU讀寫操
作的數據,DMA通道用于傳輸DMA讀寫操作的報文。

下述方法中,所述對端設備與協議層設備之間通過高速串行總線SerDes進
行數據交互,數據形式為PCIe協議包;協議層設備與控制器之間通過各自的
TLP接口進行數據交互,數據形式為TLP包;協議層設備可以將對端設備發送
的PCIe協議包轉換為TLP包后轉發給控制器,或者,將控制器發送的TLP包
轉換為PCIe協議包后轉發給對端設備。

如圖3所示,為對端設備從目標設備進行CPU訪問讀數據的方法,所述方
法中控制器的第一工作模塊進行工作,該方法的處理流程包括以下步驟:

步驟301、對端設備產生CPU讀操作命令,并將所述CPU讀操作命令組
成PCIe協議包通過高速串行總線SerDes發送給協議層設備。

組裝成的PCIe協議包上設置有工作類型標志位,所述工作類型標志位表示
為讀操作。

步驟302、協議層設備將PCIe協議包轉換成TLP包,并通過TLP接口發
送給控制器。

該TLP包在PCIe協議中又稱存儲(memory)讀或IO讀命令的包。所述
TLP包上設置有工作類型標志位,所述工作類型標志位表示為讀操作。

步驟303、控制器將工作類型標志位為讀操作的TLP包分配給第一工作模
塊,所述第一工作模塊解析接收到的TLP包,然后將解析出的所述CPU讀操
作命令轉換為一個或多個通用寄存器讀操作訪問命令。

所述CPU讀操作命令中包括讀使能,讀初始地址,讀數據個數;所述通用
寄存器讀操作訪問命令包括讀使能、讀地址;假設讀初始地址為N,讀數據個
數10,則第一工作模塊解析出所述CPU讀操作命令后,會將所述CPU讀操作
命令轉換為10個通用寄存器讀操作訪問命令:(讀使能,讀地址N)、(讀使能,
讀地址N+1)……(讀使能,讀地址N+9)。

步驟304、第一工作模塊將所述一個或多個通用寄存器讀操作訪問命令緩
存到第一異步先入先出緩存器FIFO中。

步驟305、所述第一工作模塊中的第一異步FIFO將所述一個或多個通用寄
存器讀操作訪問命令的時序轉換為符合目標設備的時序,并在轉換后將所述一
個或多個通用寄存器讀操作訪問命令通過配置通道發送給所述目標設備。

所述第一工作模塊中的第一異步FIFO會通過配置通道接口將所述一個或
多個通用寄存器讀操作訪問命令發送給所述目標設備。

步驟306、所述目標設備根據所述一個或多個通用寄存器讀操作訪問命令
進行讀操作,獲得讀數據,并將所述讀數據通過配置通道發送給第一工作模塊。

步驟307、所述第一工作模塊中的第二異步FIFO通過配置通道接收所述讀
數據,并將所述讀數據轉換為符合PCIe協議要求的TLP包結構形式和時序;
并將轉換后的讀數據通過所述協議層設備發送到所述對端設備。

所述第一工作模塊中的第二異步FIFO將所述讀數據轉換為符合PCIe協議
要求的包結構形式(TLP包)和時序后,就可以通過TLP接口將轉換后的讀數
據發送給所述協議層設備,所述協議層設備將該讀數據通過高速串行總線
SerDes發送給對端設備,這樣就完成了所述對端設備從目標設備讀數據的操作。

如果所述第一工作模塊中的第二異步FIFO在第一預設時間內(這個第一
預設時間可根據實際情況人為配置)未從配置通道上接收到目標設備返回的所
述讀地址對應的讀數據,則表明是配置通道出現故障或目標設備出現故障等,
這時一個自檢測的過程。此時所述第一工作模塊中的第二異步FIFO會自動產
生一個無效讀數據,并將該無效讀數據轉換為符合PCIe協議要求的TLP包結
構形式和時序后,通過所述協議層設備發送到所述對端設備。所述對端設備接
收到該無效讀數據后,自主決定是再次進行讀操作讀該地址對應的數據,還是
不再讀該地址對應的數據。

如圖4所示,為對端設備向目標設備寫數據的方法,所述方法中控制器的
第二工作模塊進行工作,該方法的處理流程包括以下步驟:

步驟401、對端設備產生CPU寫操作命令,并將所述CPU寫操作命令組
成PCIe協議包通過高速串行總線SerDes發送給協議層設備。

組裝成的PCIe協議包上設置有工作類型標志位,所述工作類型標志位表示
為寫操作。

步驟402、協議層設備將所述PCIe協議包轉換成TLP包,并通過TLP接
口發送給控制器。

該TLP包在PCIe協議中又稱存儲(memory)寫或IO寫命令的包。轉換
成TLP包上設置有工作類型標志位,所述工作類型標志位表示為寫操作。

步驟403、控制器將工作類型標志位為寫操作的TLP包分配給第二工作模
塊,所述第二工作模塊解析接收到的TLP包,然后將解析出的所述CPU寫操
作命令轉換為一個或多個通用寄存器寫操作訪問命令。

所述CPU寫操作命令中包括寫使能,寫數據,寫初始地址,寫數據個數;
所述通用寄存器寫操作訪問命令包括寫使能、寫地址、所述寫地址對應的單個
寫數據。假設寫初始地址為N,寫數據個數10,則控制器解析出所述CPU寫
操作命令后,會將所述CPU寫操作命令轉換為10個通用寄存器寫操作訪問命
令:(寫使能,寫地址N,寫數據1)、(寫使能,寫地址N+1,寫數據2)……
(寫使能,寫地址N+9,寫數據10)。

步驟404、第二工作模塊將所述一個或多個通用寄存器寫操作訪問命令緩
存到第三異步FIFO中。

步驟405、所述第二工作模塊中的第三異步FIFO將所述一個或多個通用寄
存器寫操作訪問命令的時序轉換為符合目標設備的時序,并在轉換后將所述一
個或多個通用寄存器寫操作訪問命令通過配置通道發送給所述目標設備。

所述第二工作模塊中的第三異步FIFO會通過配置通道接口將所述一個或
多個通用寄存器寫操作訪問命令發送給所述目標設備。

步驟406、所述目標設備根據所述一個或多個通用寄存器寫操作訪問命令
進行寫操作,并在寫操作完成后給第二工作模塊發送寫操作完成信號。

步驟407、所述第二工作模塊接收所述寫操作完成信號。

如果所述第二工作模塊在第二預設時間內(這個第二預設時間內可根據實
際情況人為配置)未從配置通道上接收到目標設備返回的寫操作完成信號,則
表明是配置通道出現故障或目標設備出現故障等,這時一個自檢測的過程。此
時所述第二工作模塊會自動產生一個寫操作完成信號,以便第二工作模塊發送
下一個寫操作命令給目標設備。

如圖5所示,為對端設備中存儲的報文以DMA讀的方式傳輸到目標設備
的方法,本方法中控制器的第二工作模塊和第三工作模塊進行工作,該方法的
處理流程包括以下步驟:

步驟501、對端設備產生CPU寫操作命令,并將所述CPU寫操作命令組
成PCIe協議包通過高速串行總線SerDes發送給協議層設備。

組裝成的PCIe協議包上設置有工作類型標志位,所述工作類型標志位表示
為寫操作。

步驟502、協議層設備將所述PCIe協議包轉換成TLP包,并通過TLP接
口發送給控制器。

該TLP包在PCIe協議中又稱存儲(memory)寫或IO寫命令的包。轉換
成的TLP包上設置有工作類型標志位,所述工作類型標志位表示為寫操作。

步驟503、控制器將工作類型標志位為寫操作的TLP包分配給第二工作模
塊,所述第二工作模塊解析接收到的TLP包獲得DMA讀操作命令,然后啟動
所述第三工作模塊,將所述DMA讀操作命令發送給所述第三工作模塊。

所述CPU寫操作命令中包括DMA讀操作命令,所述DMA讀操作命令中
包括報文發送指示信息的初始地址和地址空間大小;其中,DMA讀操作命令用
于指示控制器開啟第三工作模塊。所述報文發送指示信息的初始地址和地址空
間大小用于指示報文發送指示信息在緩存空間中的地址。

步驟504、所述第三工作模塊將報文發送指示信息的地址通過協議層設備
發送給對端設備。

在傳輸過程中,控制器將報文發送指示信息的地址組裝成TLP包通過TLP
接口發送給協議層設備,再由協議層設備將該TLP包轉換成PCIe協議包通過
高速串行總線發送給對端設備。

所述對端設備中具有報文發送指示信息的緩存空間以及發送報文的緩存空
間,所述報文發送指示信息的初始地址和地址空間大小用于指示報文發送指示
信息在緩存空間中的地址。啟動第三工作模塊時,所述第三工作模塊首次發送
的報文發送指示信息的地址為報文發送指示信息的初始地址。

步驟505、所述對端設備將所述報文發送指示信息的地址中的報文發送指
示信息內容,通過協議層設備發送給第三工作模塊。

所述對端設備接收到報文發送指示信息的地址后,會在緩存報文發送指示
信息的緩存空間中將該地址對應的報文發送指示信息內容發送給第三工作模塊。
所述報文發送指示信息內容包括報文發送有效指示信息、報文大小和報文初始
緩存的地址。

步驟506、在所述報文發送有效指示信息為有效時,第三工作模塊將所述
報文大小和報文初始緩存地址通過協議層設備發送給對端設備。

報文大小和報文初始緩存的地址可以確定報文的地址;在所述報文發送有
效指示信息為有效時表明該地址內有發送報文需要發送,此時控制器將所述報
文大小和報文初始緩存的地址通過協議層設備發送給對端設備,在此傳輸過程
中數據形式的轉換參考上文描述。

若所述報文發送有效指示信息為無效或不正確時,則所述控制器會反復重
復上述過程,直到所述對端設備發送的所述發送指示信息為有效為止。

步驟507、對端設備根據所述報文大小和報文初始緩存地址獲取發送報文,
并將獲取到的發送報文通過協議層設備發送給第三工作模塊。

步驟508、第三工作模塊將所述發送報文緩存到第四異步FIFO中,經過時
序轉換、數據位寬轉換后,轉換為通用包結構形式報文,通過DMA通道發送
給目標設備。

報文的通用包結構形式,主要包含了包頭(SOP)、包尾(EOP)、包內容
(DATA)、包指示符(有效指示符VALID、錯誤指示符ERROR和最后一拍
DATA字節數MOD),以及反壓狀態(FC)等信息。而所述DATA最小位寬為
8比特,還可具有8的整數倍的其他位寬,可以根據目標設備中報文的位寬進
行數據位寬轉換,轉換成合適的數據位寬后再發送給目標設備。

步驟509、所述第三工作模塊通過協議層設備向對端設備發送報文發送完
成命令,所述報文發送完成命令用于將所述發送報文對應的報文發送有效指示
信息更改為無效。

所述第三工作模塊將所述發送報文發送給目標設備后,由于對端設備中該
發送報文不需要再被發送給目標設備,而該發送報文對應的報文接收有效指示
信息還是有效的,此時第三工作模塊就需要向對端設備發送報文發送完成命令,
該報文發送完成命令用于指示對端設備將所述發送報文對應的報文發送有效指
示信息更改為無效。

所述報文發送指示信息的地址是從初始地址開始,按照上述步驟504-509
將該初始地址對應的報文發送給目標地址后,所述控制器會將報文發送指示信
息的初始地址自動加1,繼續進行步驟504-509,完成后再加1,以此循環進行
步驟504-509,直至超過了步驟503解析出的報文發送指示信息的初始地址和地
址空間大小限定的報文發送指示信息的地址。

如圖6所示,為目標設備中的報文以DMA寫的方式傳輸到對端設備的緩
存中的方法,本方法中控制器的第二工作模塊和第三工作模塊進行工作,該方
法的處理流程包括以下步驟:

步驟601、對端設備產生CPU寫操作命令,并將所述CPU寫操作命令組
成PCIe協議包通過高速串行總線SerDes發送給協議層設備。

組裝成的PCIe協議包上設置有工作類型標志位,所述工作類型標志位表示
為寫操作。

步驟602、協議層設備將所述PCIe協議包轉換成TLP包,并通過TLP接
口發送給控制器。

該TLP包在PCIe協議中又稱存儲(memory)寫或IO寫命令的包。轉換
成的TLP包上設置有工作類型標志位,所述工作類型標志位表示為寫操作。

步驟603、控制器將工作類型標志位為寫操作的TLP包分配給第二工作模
塊,所述第二工作模塊解析接收到的TLP包獲得DMA寫操作命令,然后啟動
所述第四工作模塊,將所述DMA寫操作命令發送給所述第四工作模塊。

所述CPU寫操作命令中包括DMA寫啟動指令,報文接收指示信息的初始
地址和地址空間大小;其中,DMA寫操作命令用于指示控制器開啟第四工作模
塊。所述報文接收指示信息的初始地址和地址空間大小用于指示報文接收指示
信息在緩存空間中的地址。

步驟604、第四工作模塊將報文接收指示信息的地址通過協議層設備發送
給對端設備。

在傳輸過程中,第四工作模塊將報文接收指示信息的地址組裝成TLP包通
過TLP接口發送給協議層設備,再由協議層設備將該TLP包轉換成PCIe協議
包通過高速串行總線發送給對端設備。

所述對端設備中具有報文接收指示信息的緩存空間以及接收報文的緩存空
間,所述報文接收指示信息的初始地址和地址空間大小用于指示報文接收指示
信息在緩存空間中的地址。啟動第四工作模塊時,第四工作模塊首次發送的報
文接收指示信息的地址為報文接收指示信息的初始地址。

步驟605、所述對端設備將所述報文接收指示信息的地址中的報文接收指
示信息內容,通過協議層設備發送給第四工作模塊。

所述對端設備接收到報文接收指示信息的地址后,會在緩存報文接收指示
信息的緩存空間中將該地址對應的報文接收指示信息內容發送給控制器。所述
報文接收指示信息內容包括報文接收有效指示信息、接收報文的初始緩存地址。

步驟606、所述第四工作模塊的第五異步FIFO將目標設備發送的通用包結
構形式的接收報文進行緩存、時序轉換和數據位寬轉換后,轉換為符合PCIe
協議要求的TLP包結構形式和時序的報文數據包。

目標設備可以將接收報文通過DMA通道發送給控制器的第四模塊,第四
工作模塊的第五異步FIFO可以將目標設備發送的通用包結構形式的報文進行
緩存、時序轉換和數據位寬轉換后,轉換為符合PCIe協議要求的TLP包結構
形式和時序的報文數據包。在這里需要說明的是,當第四工作模塊的第五異步
FIFO中的緩存存滿的時,第四工作模塊可以通知目標設備不再發送接收報文過
來。

步驟607、在所述報文接收有效指示信息為有效時,控制器將所述接收報
文的初始緩存地址以及從第五異步FIFO輸出的TLP包形式的報文數據包通過
協議層設備發送給對端設備。

接收報文的初始緩存地址為對端設備將接收到的報文進行緩存的初始地址;
在所述報文接收有效指示信息為有效時表明該地址為空可以緩存接收到的報文,
此時第四工作模塊將所述接收報文的初始緩存地址以及從第五異步FIFO輸出
的TLP包形式的報文數據包通過協議層設備發送給對端設備,在此傳輸過程中
數據形式的轉換參考上文描述。

若所述報文接收有效指示信息為無效或不正確時,則所述控制器會反復重
復上述過程,直到所述對端設備發送的所述接收指示信息為有效。

步驟608、所述對端設備從所述接收報文的初始緩存地址處緩存報文數據
包。

步驟609、所述第四工作模塊通過協議層設備向對端設備發送報文接收完
成命令,所述報文接收完成命令用于所述對端設備將所述報文數據包初始緩存
地址對應的報文接收有效指示信息更改為無效。

所述第四工作模塊將所述接收報文的報文數據包發送給對端設備后,由于
對端設備會將從所述接收報文的初始緩存地址處緩存報文數據包,所述報文數
據包初始緩存地址對應的緩存地址處就會被占用,而該地址對應的報文接收有
效指示信息還是有效的,此時第四工作模塊就需要向對端設備發送報文接收完
成命令,該報文接收完成命令用于指示對端設備將所述報文數據包初始緩存地
址對應的報文接收有效指示信息更改為無效。

所述報文接收指示信息的地址是從初始地址開始,按照上述步驟604-609
將接收到的報文緩存到該初始地址后,所述第四工作模塊會將報文接收指示信
息的初始地址自動加1,繼續進行步驟604-609,完成后再加1,以此循環進行
步驟604-609,直至所述報文接收指示信息的地址超出了步驟603解析出的報文
接收指示信息的初始地址和地址空間大小限定的報文發送接收信息的地址范圍。

本實施例方法中,控制器中兩個或兩個以上的工作模塊可以同時工作,這
樣基于一條PCIe總線鏈路,本實施例方法可以實現同時進行CPU讀寫訪問寄
存器操作和數據報文的雙向傳輸,從而也大大簡化了一個PCIe總線設備或系統,
也具有應用靈活多樣性的特點;且本實施例方法中,一個所述控制器可以同時
支持一個或一個以上所述目標設備,具有非常好的擴展性。數據報文的雙向傳
輸以DMA方式進行,且該DMA方式需通過所述CPU寫操作來控制其開關使
能和確定數據緩存空間大小、數據初始地址。特別是,通過所述報文收發指示
信息實現了查詢和控制DMA操作,以及實現了數據傳輸的自查詢、自控制、
錯誤或失敗重傳、所述報文發送指示信息空間的自輪詢等特點,并兼具有數據
位寬轉換、異步時鐘域轉換、統計等功能;且一個所述控制器可以同時支持一
個或一個以上所述目標設備,具有非常好的擴展性。

實施例3

本發明實施例提供了一種基于增強型外設互連PCIe協議總線的數據傳輸
裝置,如圖7所示,所述裝置包括:接收模塊701,分配模塊702,第一工作模
塊703、第二工作模塊704、第三工作模塊705和第四工作模塊706,其中,

接收模塊701,用于接收對端設備發送的數據包,所述數據包上攜帶有工
作類型標志位;

分配模塊702,用于在所述接收模塊701接收到的工作類型標志位表示為
讀操作時,將所述數據包分配給第一工作模塊;

所述第一工作模塊703,用于在解析出所述分配模塊702分配的數據包獲
得讀操作命令時,將所述讀操作命令發送給目標設備,接收目標設備返回的讀
數據,并將所述讀數據發送給所述對端設備;

分配模塊702,還用于在所述接收模塊701接收到的工作類型標志位表示
為寫操作時,將所述數據包分配給第二工作模塊;

所述第二工作模塊704,用于在解析出所述分配模塊702分配的所述數據
包獲得寫操作命令時,將所述數據包中的寫操作命令發送給目標設備,接收目
標設備返回的寫操作完成信號;

所述第二工作模塊704,還用于在解析所述數據包獲得DMA讀操作命令時,
啟動所述第三工作模塊705,并將所述DMA讀操作命令發送給所述第三工作模
塊705;

所述第三工作模塊705,用于根據所述第二工作模塊704發送的所述DMA
讀操作命令獲得所述對端設備中的發送報文,并將所述發送報文發送給目標設
備;

所述第二工作模塊704,還用于在解析出所述數據包獲得DMA寫操作命令
時,啟動所述第四工作模塊706,將所述DMA寫操作命令發送給所述第四工作
模塊706;

所述第四工作模塊706,還用于根據所述第二工作模塊704發送的所述
DMA寫操作命令將目標設備發送的接收報文,發送給對端設備。

可選的,如圖8所示,所述第一工作模塊703中包括:第一處理模塊7031,
第一異步先入先出緩存器FIFO模塊7032和第二異步FIFO模塊7033;其中,

所述第一處理模塊7031,用于解析數據包獲得CPU讀操作命令,然后將
所述CPU讀操作命令轉換為一個或多個通用寄存器讀操作訪問命令;其中,所
述CPU讀操作命令中包括讀使能、讀初始地址、讀數據個數,所述通用寄存器
讀操作訪問命令包括讀使能、讀地址;

所述第一處理模塊7031,還用于將所述一個或多個通用寄存器讀操作訪問
命令緩存到第一異步先入先出緩存器FIFO模塊7032中;

所述第一異步FIFO模塊7032,用于將所述第一處理模塊7031緩存的一個
或多個通用寄存器讀操作訪問命令的時序轉換為符合目標設備的時序;

所述第一處理模塊7031,還用于將所述第一異步FIFO模塊7032轉換后
的所述一個或多個通用寄存器讀操作訪問命令通過配置通道發送給所述目標設
備;通用寄存器讀操作訪問命令用于所述目標設備進行讀操作獲得讀數據;

所述第二異步FIFO,用于通過配置通道接收所述讀數據,并將所述讀數據
轉換為符合PCIe協議要求的TLP包結構形式和時序;

所述第一處理模7031,用于將所述第二異步FIFO模塊7033轉換后的讀數
據發送給對端設備。

所述第一異步FIFO模塊,還用于在第一預設時間內未接收到所述目標設
備發送的讀數據時,自行生成無效讀數據。

可選的,如圖9所示,所述第二工作模塊704中包括:第二處理模塊7041,
第三異步FIFO模塊7042;其中,

所述第二處理模塊7041,用于解析數據包獲得CPU寫操作命令,然后將
所述CPU寫操作命令轉換為一個或多個通用寄存器寫操作訪問命令;其中,所
述CPU寫操作命令中包括寫使能、寫數據、寫初始地址、寫數據個數,所述通
用寄存器寫操作訪問命令包括寫使能、寫地址、所述寫地址對應的單個寫數據;

所述第二處理模塊7041,還用于將所述一個或多個通用寄存器寫操作訪問
命令緩存到第三異步FIFO模塊7042中;

所述第三異步FIFO模塊7042,用于將所述第二處理模塊7041緩存的所述
一個或多個通用寄存器寫操作訪問命令的時序轉換為符合目標設備的時序;

所述第二處理模塊7041,還用于將所述第三異步FIFO模塊7042轉換后的
所述一個或多個通用寄存器寫操作訪問命令通過配置通道發送給所述目標設備;
通用寄存器寫操作訪問命令用于所述目標設備在寫地址寫入所述寫地址對應的
單個寫數據;

所述第二處理模塊7041,還用于通過配置通道接收所述目標設備發送的寫
操作完成信號。

所述第二處理模塊,還用于在第二預設時間內未接收到所述目標設備發送
的寫操作完成信號時,生成所述寫操作完成信號。

可選的,所述DMA讀操作命令中包括報文發送指示信息的初始地址和地
址空間大小;如圖10所示,所述第三工作模塊705包括第三處理模塊7051和
第四異步FIFO模塊7052;其中,

第三處理模塊7051,用于在第i次時,根據所述DMA讀操作命令將報文
發送指示信息的地址發送給對端設備;其中,所述報文發送指示信息的地址為
報文發送指示信息的初始地址+i-1,i為大于等于1的整數;所述報文發送指示
信息的地址不超出所述報文發送指示信息的初始地址和地址空間大小限定的地
址范圍

第三處理模塊7051,還用于接收對端設備發送的所述報文發送指示信息的
地址中的報文發送指示信息內容;其中,所述報文發送指示信息內容包括報文
發送有效指示信息、報文大小和報文初始緩存的地址;

第三處理模塊7051,還用于在所述報文發送有效指示信息為有效時,將所
述報文大小和報文初始緩存地址發送給對端設備;

第三處理模塊7051,還用于接收所述對端設備發送的所述報文大小和報文
初始緩存地址對應的發送報文,并將所述發送報文緩存到第四異步FIFO模塊
7052中;

所述第四異步FIFO模塊7052,用于在將所述第三處理模塊7051緩存的發
送報文經過時序轉換、數據位寬轉換后,轉換為通用包結構形式報文,通過DMA
通道發送給目標設備;

第三處理模塊7051,還用于在所述第四異步FIFO模塊7052將所述發送報
文發送給目標設備后,向對端設備發送報文發送完成命令,所述報文發送完成
命令用于所述對端設備將所述發送報文對應的報文發送有效指示信息更改為無
效。

可選的,所述DMA寫操作命令中包括報文接收指示信息的初始地址和地
址空間大小;如圖11所示,所述第四工作模塊706包括:第四處理模塊7061
和第五異步FIFO模塊7062,其中,

所述第四處理模塊7061,用于在第j次時,根據所述DMA寫操作命令將
報文接收指示信息的地址發送給對端設備;其中,所述報文接收指示信息的地
址為報文接收指示信息的初始地址+j-1,j為大于等于1的整數;所述報文接收
指示信息的地址未超出所述報文接收指示信息的初始地址和地址空間大小限定
的地址范圍;

所述第四處理模塊7061,還用于接收對端設備發送的所述報文接收指示信
息的地址中的報文接收指示信息內容;其中,所述報文接收指示信息內容包括
報文接收有效指示信息、接收報文的初始緩存地址;

所述第五異步FIFO模塊7062,用于將目標設備發送的通用包結構形式的
接收報文進行緩存、時序轉換和數據位寬轉換后,轉換為符合PCIe協議要求的
TLP包結構形式和時序的報文數據包;

所述第四處理模塊7061,還用于在所述報文接收有效指示信息為有效時,
將所述接收報文的初始緩存地址以及所述第五異步FIFO模塊7062輸出的報文
數據包發送給對端設備;所述接收報文的初始緩存地址用于所述對端設備從所
述接收報文的初始緩存地址處緩存報文數據包;

所述第四處理模塊7061,還用于向對端設備發送報文接收完成命令,所述
報文接收完成命令用于所述對端設備將所述報文數據包初始緩存地址對應的報
文接收有效指示信息更改為無效。

在實際應用中,接收模塊701,分配模塊702,第一工作模塊703、第二工
作模塊704、第三工作模塊705和第四工作模塊706可以由位于控制器上的中
央處理器(CPU)、微處理器(MPU)、數字信號處理器(DSP)或現場可編程
門陣列(FPGA)等器件實現。

本領域內的技術人員應明白,本發明的實施例可提供為方法、系統、或計
算機程序產品。因此,本發明可采用硬件實施例、軟件實施例、或結合軟件和
硬件方面的實施例的形式。而且,本發明可采用在一個或多個其中包含有計算
機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器和光學存儲
器等)上實施的計算機程序產品的形式。

本發明是參照根據本發明實施例的方法、設備(系統)、和計算機程序產品
的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現流程圖和/或方
框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結
合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或
其他可編程數據處理設備的處理器以產生一個機器,使得通過計算機或其他可
編程數據處理設備的處理器執行的指令產生用于實現在流程圖一個流程或多個
流程和/或方框圖一個方框或多個方框中指定的功能的裝置。

這些計算機程序指令也可存儲在能引導計算機或其他可編程數據處理設備
以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的
指令產生包括指令裝置的制造品,該指令裝置實現在流程圖一個流程或多個流
程和/或方框圖一個方框或多個方框中指定的功能。

這些計算機程序指令也可裝載到計算機或其他可編程數據處理設備上,使
得在計算機或其他可編程設備上執行一系列操作步驟以產生計算機實現的處理,
從而在計算機或其他可編程設備上執行的指令提供用于實現在流程圖一個流程
或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。

以上所述,僅為本發明的較佳實施例而已,并非用于限定本發明的保護范
圍。

關 鍵 詞:
一種 基于 增強 外設 互連 協議 總線 數據傳輸 方法 裝置
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:一種基于增強型外設互連協議總線的數據傳輸方法及裝置.pdf
鏈接地址:http://www.rgyfuv.icu/p-6100770.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
山东11选5中奖结果走势图