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