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