實現(xiàn)PCIe接口轉(zhuǎn)CF卡接口的FPGA芯片及方法
【技術(shù)領(lǐng)域】
[0001 ] 本發(fā)明涉及PCIe接口轉(zhuǎn)CF卡接口領(lǐng)域,具體來講涉及實現(xiàn)PCIe接口轉(zhuǎn)CF卡接口的FPGA芯片及方法。
【背景技術(shù)】
[0002]隨著PCIe (Peripheral Component Interconnect express,外設(shè)部件互連標(biāo)準(zhǔn)接口)技術(shù)的日趨成熟和高性能特點,CPU外設(shè)接口有限,使用PCIe接口掛載外部設(shè)備的應(yīng)用越來越廣泛。CF(Compact Flash,便攜式電子設(shè)備的數(shù)據(jù)存儲設(shè)備)卡作為一種通用可靠的可移動便攜存儲器,在通信設(shè)備和工業(yè)設(shè)備中具有廣泛的需求,CF卡接口符合PATA(Parallel Advanced Technology Attachment,并行硬盤接口技術(shù))接口協(xié)議的定義。
[0003]PCIe接口轉(zhuǎn)CF卡接口的橋接功能芯片種類較少,現(xiàn)有的PCIe接口轉(zhuǎn)CF卡接口的芯片,均是統(tǒng)一生產(chǎn),而對于不同使用場景中的一些特殊需求,例如定時啟動數(shù)據(jù)傳輸,DMA模塊主動發(fā)起數(shù)據(jù)傳輸,CF卡接口時序可配置等功能,無法一一滿足要求,靈活性低,不能夠適應(yīng)多種使用場景。
【發(fā)明內(nèi)容】
[0004]針對現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明的目的在于提供一種實現(xiàn)PCIe接口轉(zhuǎn)CF卡接口的FPGA芯片及方法,能夠適用不同使用場景的不同需求,靈活性高。
[0005]為達(dá)到以上目的,本發(fā)明采取一種實現(xiàn)PCIe接口轉(zhuǎn)CF卡接口的FPGA芯片,分別連接CPU和CF卡,包括:PCIe IP核模塊,用于向CPU提供標(biāo)準(zhǔn)PCIe接口 ;適配模塊,用于PCIe IP核模塊的接口總線到本地總線的適配;直接內(nèi)存訪問模塊,與PCIe IP核模塊連接,用于發(fā)起CF卡與CPU之間的數(shù)據(jù)傳輸;CF卡接口協(xié)議模塊,與直接內(nèi)存訪問模塊連接,用于向CF卡提供滿足并行硬盤接口技術(shù)的接口 ;控制寄存器,通過適配模塊掛接在PCIe基地址空間下,用于控制直接內(nèi)存訪問模塊和CF卡接口協(xié)議控模塊。
[0006]在上述技術(shù)方案的基礎(chǔ)上,所述PCIe IP核模塊的接口總線為Avalon總線或AXI總線。
[0007]在上述技術(shù)方案的基礎(chǔ)上,所述控制寄存器包括控制直接內(nèi)存訪問模塊的直接內(nèi)存訪問控制器,以及控制CF卡接口協(xié)議控模塊的CF卡控制器。
[0008]在上述技術(shù)方案的基礎(chǔ)上,所述直接內(nèi)存訪問模塊包括發(fā)送方向控制器、接收方向控制器和先入先出隊列模塊,發(fā)送方向控制器用于控制直接內(nèi)存訪問模塊由PCIe IP核模塊讀取需要寫入CF卡的數(shù)據(jù),接收方向控制器用于控制直接內(nèi)存訪問模塊,讀取CF卡接口協(xié)議模塊從CF卡中讀取的數(shù)據(jù),先入先出隊列模塊包括兩個先入先出隊列,分別用于存儲所述需要寫入CF卡的數(shù)據(jù)和所述從CF卡中讀取的數(shù)據(jù)。
[0009]在上述技術(shù)方案的基礎(chǔ)上,在用于存儲需要寫入CF卡的數(shù)據(jù)的先入先出隊列中,當(dāng)數(shù)據(jù)量達(dá)到總線突發(fā)傳輸長度時,向CF卡接口協(xié)議模塊發(fā)起數(shù)據(jù)傳輸。
[0010]在上述技術(shù)方案的基礎(chǔ)上,在用于存儲從CF卡中讀取的數(shù)據(jù)的先入先出隊列中,當(dāng)數(shù)據(jù)量達(dá)到與PCIe IP核模塊對應(yīng)的接口總線長度時,由直接內(nèi)存訪問模塊通過PCIe IP核模塊寫入數(shù)據(jù)到CPU。
[0011]在上述技術(shù)方案的基礎(chǔ)上,所述控制寄存器中的CF卡控制器還包括模塊寄存器、指令先入先出隊列寄存器、讀先入先出隊列寄存器和與先入先出隊列寄存器,模塊控制寄存器用于配置接口時序、各個先入先出隊列深度、先入先出隊列閥值。
[0012]本發(fā)明還提供一種實現(xiàn)PCIe接口轉(zhuǎn)CF卡接口的方法,包括:
[0013]對于P1類指令,控制寄存器控制CF卡接口協(xié)議模塊,將指令內(nèi)容組成相應(yīng)的CF卡接口指令時序,若是P1讀指令,將CF卡返回的數(shù)據(jù)存放在控制寄存器中,通過讀取控制寄存器獲取數(shù)據(jù);若是P1寫指令,將該數(shù)據(jù)反映在接口時序;
[0014]對于Ultra直接內(nèi)存訪問類指令,通過控制寄存器控制直接內(nèi)存訪問模塊,設(shè)置最大總線突發(fā)傳輸長度、CPU側(cè)存儲地址和本次傳輸數(shù)據(jù)長度,直接內(nèi)存訪問模塊等待CF卡接口協(xié)議模塊給出的數(shù)據(jù)/空間準(zhǔn)備好的請求,控制寄存器控制CF卡接口協(xié)議模塊發(fā)送Ultra直接內(nèi)存訪問傳輸指令;若是向CF卡寫數(shù)據(jù)的指令,在控制寄存器存儲數(shù)據(jù)量低于閥值時,直接內(nèi)存訪問模塊從CPU側(cè)讀取數(shù)據(jù),并存儲在控制寄存器,通過CF卡接口協(xié)議模塊按照CF接口時序?qū)懭隒F卡;若是CF卡讀數(shù)據(jù)的指令,則CF卡接口協(xié)議模塊讀取CF卡中目的地址的數(shù)據(jù),并儲存在控制寄存器中,當(dāng)儲存數(shù)據(jù)量高于閥值時,內(nèi)存訪問模塊直接分次讀取目的地址的數(shù)據(jù),并寫到CPU側(cè)。
[0015]在上述技術(shù)方案的基礎(chǔ)上,所述控制寄存器包括控制CF卡接口協(xié)議控模塊的CF卡控制器,CF卡控制器包括模塊寄存器、指令先入先出隊列寄存器、讀先入先出隊列寄存器和寫先入先出隊列寄存器;若是P1讀指令,將CF卡返回的數(shù)據(jù)存放在讀先入先出隊列寄存器中;若是P1寫指令,由軟件先配置指令先入先出隊列寄存器,再配置寫先入先出隊列寄存器,最后該數(shù)據(jù)反映在接口時序。
[0016]在上述技術(shù)方案的基礎(chǔ)上,所述控制寄存器包括控制CF卡接口協(xié)議控模塊的CF卡控制器,CF卡控制器包括模塊寄存器,對于Ultra直接內(nèi)存訪問類指令,通過控制CF卡控制器配置直接內(nèi)存訪問模塊最大總線突發(fā)傳輸長度、CPU側(cè)存儲地址和本次傳輸數(shù)據(jù)長度。
[0017]本發(fā)明的有益效果在于:
[0018]1、CF Master (CF卡接口協(xié)議)模塊實現(xiàn)PATA的接口功能,在控制寄存器中的CF卡控制器控制下,組合出P10(parallel input output,并行輸入輸出)、DMA (DirectMemory Access,直接內(nèi)存訪問)等指令對應(yīng)的接口時序,實現(xiàn)標(biāo)準(zhǔn)的PATA模式,從而實現(xiàn)了對CF卡設(shè)備的控制,可用于其他ATA/ATAPI設(shè)備。
[0019]2、控制寄存器中的CF卡控制器包括模塊寄存器、指令FIF0(First Input FirstOutput,先入先出隊列)寄存器、讀FIFO寄存器和寫FIFO寄存器,模塊寄存器用于配置接口時序、各個FIFO深度、FIFO閥值,以及具有傳輸完成、異常結(jié)束傳輸?shù)葼顟B(tài)上報的功能;各個FIFO寄存器是訪問各個FIFO的接口,用來連續(xù)寫入指令,緩存?zhèn)鬏敂?shù)據(jù),提高傳輸效率。
[0020]3,DMA模塊能夠?qū)崿F(xiàn)并主動發(fā)起CF卡內(nèi)數(shù)據(jù)與CPU側(cè)內(nèi)存中數(shù)據(jù)的交互,能夠支持一段時間的空閑后,定時發(fā)起數(shù)據(jù)更新。
【附圖說明】
[0021]圖1為本發(fā)明實現(xiàn)PCIe接口轉(zhuǎn)CF卡接口的FPGA芯片使用狀態(tài)示意圖;
[0022]圖2為本發(fā)明實現(xiàn)PCIe接口轉(zhuǎn)CF卡接口的FPGA芯片的結(jié)構(gòu)示意圖;
[0023]圖3為圖2中DMA模塊的詳細(xì)結(jié)構(gòu)示意圖。
[0024]附圖標(biāo)記:
[0025]FPGA 芯片 1,CPU 2,CF 卡 3,
[0026]PCIe IP核模塊11,適配模塊12,DMA模塊13,CF Master模塊14,控制寄存器15 ;
[0027]第一接口 131,第二接口 132,發(fā)送方向控制器133,F(xiàn)IFO模塊134,接收方向控制器135,DMA控制器151,CF控制器152。
【具體實施方式】
[0028]以下結(jié)合附圖及實施例對本發(fā)明作進(jìn)一步詳細(xì)說明。
[0029]如圖1所示,本發(fā)明實現(xiàn)PCIe接口轉(zhuǎn)CF卡接口的FPGA芯片I,分別連接CPU 2和CF卡3,用于實現(xiàn)PCB板上CPU 2的PCIe接口下掛載CF卡存儲設(shè)備,或者單獨PCB小板卡實現(xiàn)PCIe接口轉(zhuǎn)CF接口功能。其中,CPU2通過PCIe接口與FPGA芯片I相連,CF卡3通過CF卡接口與FPGA芯片I相連,CF卡接口符合PATA(接口協(xié)議的定義。為了方便CF卡3的連接,CF卡接口通常采用CF卡插槽的形式,內(nèi)插CF卡3,可以連接PCB信號與CF卡3管腳信號。
[0030]如圖2所示,本發(fā)明實現(xiàn)PCIe接口轉(zhuǎn)CF卡接口的FPGA芯片I,可以采用帶有PCIeIP硬核的FPGA型號作為基礎(chǔ),如Altera、Xilinx公司的多款不同檔次的FPGA均滿足要求。所述FPGA芯片I包括PCIe IP核模塊11、適配模塊12、DMA (Direct Memory Access,直接內(nèi)存訪問)模塊13、CF Master模塊14和控制寄存器15,PCIe IP核模塊11與CPU 2連接,用于向CPU提供標(biāo)準(zhǔn)PCIe接口。其中,PCIe IP核模塊11的接口總線根據(jù)所選的基礎(chǔ)FPGA有所不同,對于Altera公司的FPGA,接口為Avalon總線;對于Xilinx公司的FPGA,接口為AXI總線,本實施例中以Altera公司的FPGA為例。所述適配模塊12掛接在PCIeBarO (PCIe基地址)空間,用于PCIe IP核模塊11的接口總線到本地總線的適配。DMA模塊13連接PCIe IP核模塊11模塊,用于發(fā)起CF卡與CPU之間的數(shù)據(jù)傳輸。CF Master模塊14分別與DMA模塊13相連,用于向CF卡提供滿足PATA的接口??刂萍拇嫫?5通過適配模塊12掛接在PCIe BarO下,用于接收適配模塊12發(fā)來的寄存器命令,還用于連接并控制DMA模塊13和CF Master模塊14。更詳細(xì)的,控制寄存器15包括控制DMA模塊13的DMA控制器151,還包括控制CF Master模塊14的CF卡控制器152。
[0031]如圖3所示,所述DMA模塊13包括與PCIe IP核模塊11對應(yīng)的第一接口131(Master 為 AXI/Avalon)、與 CF Master 模塊 14 對應(yīng)的第二接口 132 (Master 為 AHB),還包括發(fā)送方向控制器133 (TX Ctrl)、接收方向控制器135和FIF0(First Input FirstOutput,先入先出隊列)模塊134,F(xiàn)IFO模塊134包含兩個FIFO,分別是發(fā)送方