專利名稱:一種采集端啟動(dòng)pci-e總線dma上傳數(shù)據(jù)的方法
—種采集端啟動(dòng)PC1-E總線DMA上傳數(shù)據(jù)的方法技術(shù)領(lǐng)域
本發(fā)明高速串行總線互聯(lián)及數(shù)據(jù)采集技術(shù)領(lǐng)域。具體涉及一種采集端啟動(dòng)PC1-E 總線DMA上傳數(shù)據(jù)的方法。
背景技術(shù):
隨著科學(xué)的發(fā)展和技術(shù)的進(jìn)步,目前的PCI總線和PC1-X總線在許多情況下已經(jīng) 不能滿足數(shù)據(jù)傳輸速度的要求,特別是在高速數(shù)據(jù)采集系統(tǒng)中數(shù)據(jù)上傳給上位機(jī)的技術(shù)需 求,因此PC1-E總線逐步代替PCI總線,并在各個(gè)場合得到廣泛的應(yīng)用。在高速數(shù)據(jù)采集 中,數(shù)據(jù)的上傳通常要用PC1-E總線的DMA傳輸模式才能數(shù)據(jù)傳輸?shù)囊?。在一般的傳?過程中,都是一臺(tái)PC機(jī)作為上位機(jī)設(shè)備,利用FPGA作為數(shù)據(jù)采集的終端設(shè)備,負(fù)責(zé)數(shù)據(jù)采 集的控制、數(shù)據(jù)整理、數(shù)據(jù)預(yù)處理、數(shù)據(jù)上傳等操作,上位機(jī)需要讀取數(shù)據(jù)時(shí),都是上位機(jī)通 過PC1-E總線主動(dòng)發(fā)送命令給FPGA,即給采集端,然后FPGA送數(shù)據(jù),在高速數(shù)據(jù)采集中,要 及時(shí)的把采集的數(shù)據(jù)進(jìn)行上傳,也是采用該方法,上位機(jī)先寫命令給FPGA,然后再讀取上傳 的數(shù)據(jù)。這樣做存在許多的缺點(diǎn)由于PC1-E總線的特殊性,不能準(zhǔn)確的判斷數(shù)據(jù)采集系統(tǒng) 中采集端中的存儲(chǔ)器中是否有數(shù)據(jù)或者數(shù)據(jù)是否具備讀取的條件,經(jīng)常讀不到數(shù)據(jù)或者讀 取的數(shù)據(jù)一直是同一個(gè),造成空讀以及誤讀;操作復(fù)雜,不方便;對(duì)上位機(jī)及數(shù)據(jù)采集系統(tǒng) 中采集端的資源不能很好的利用,造成資源浪費(fèi)。針對(duì)上述缺點(diǎn),本發(fā)明提出并設(shè)計(jì)了一種 采集端啟動(dòng)PC1-E總線DMA上傳數(shù)據(jù)的方法。
中國專利文獻(xiàn)庫公布了一種名稱為《一種基于PC1-E接口的LTE基帶終端模擬系 統(tǒng)》(專利申請?zhí)?01010619073. O)的發(fā)明專利申請技術(shù),該發(fā)明專利申請技術(shù)公開了一種 基于PC1-E接口的LTE基帶終端模擬系統(tǒng),該模擬系統(tǒng)包括PC主機(jī),用于根據(jù)測試模式和 配置參數(shù)來控制基帶終端仿真器,并轉(zhuǎn)發(fā)上行和下行數(shù)據(jù);基帶終端仿真器,用于對(duì)模擬系 統(tǒng)的物理層進(jìn)行測試,包括數(shù)字信號(hào)處理器,用于處理LTE基帶終端通信協(xié)議和相關(guān)的應(yīng) 用協(xié)議;現(xiàn)場可編程門陣列,用于并行處理高速數(shù)字信號(hào)和高重復(fù)性的數(shù)據(jù)運(yùn)算;PCI_E接 口,用于連接PC主機(jī)和基帶終端仿真器;eN0deB板,用于將下行數(shù)據(jù)發(fā)送至基帶終端仿真 器,并接收來自基帶終端仿真器的數(shù)據(jù)和性能反饋統(tǒng)計(jì)。與現(xiàn)有技術(shù)相比,本發(fā)明的模擬系 統(tǒng)既保證eNodeB設(shè)備的各項(xiàng)測試指標(biāo),提高測試的效率,又可節(jié)約測試成本和占用空間。 其不足之處在于該發(fā)明專利沒有解決數(shù)據(jù)高速上傳的時(shí)候的PC機(jī)負(fù)荷過重、資源浪費(fèi)、數(shù) 據(jù)的空讀與誤讀等問題,PC1-E總線通信操作復(fù)雜,同時(shí)在PC主機(jī)通過PC1-E總線讀取數(shù) 據(jù)的時(shí)候還得發(fā)送相應(yīng)指令,造成傳輸效率的降低。發(fā)明內(nèi)容
為了解決高速數(shù)據(jù)采集系統(tǒng)中通過PC1-E總線實(shí)現(xiàn)大量數(shù)據(jù)上傳給PC機(jī)需要PC 機(jī)啟動(dòng)而造成的空讀、誤讀,操作復(fù)雜,資源浪費(fèi),使得PC機(jī)負(fù)載增加等缺點(diǎn),提升高速數(shù) 據(jù)采集系統(tǒng)中數(shù)據(jù)上傳的效率,避免空讀與誤讀,提升FPGA及PC機(jī)的資源利用率,減輕PC 機(jī)的負(fù)載,使采集的數(shù)據(jù)上傳簡單易用,本發(fā)明提供一種采集端啟動(dòng)PC1-E總線DMA上傳數(shù)據(jù)的方法。
本發(fā)明的采集端啟動(dòng)PC1-E總線DMA上傳數(shù)據(jù)的方法包括硬件部分和控制軟件, 硬件部分中的FPGA、DDR對(duì)、數(shù)據(jù)采集接口、高速A/D轉(zhuǎn)換器組成了數(shù)據(jù)采集系統(tǒng)的采集端; PC機(jī)通過PC1-E接口與FPGA相連,F(xiàn)PGA通過IO 口分別與DDR對(duì)、數(shù)據(jù)采集接口相連,高速 A/D轉(zhuǎn)換器把采集到的信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),并通過數(shù)據(jù)采集接口送給FPGA,在FPGA里預(yù) 處理后,這些數(shù)據(jù)存儲(chǔ)到DDR對(duì)或FPGA內(nèi)部存儲(chǔ)空間里,存儲(chǔ)到一定數(shù)量后上傳給PC機(jī); 控制軟件由FPGA內(nèi)部軟件及PC機(jī)中的上位機(jī)組成,F(xiàn)PGA內(nèi)部軟件中的PC1-E硬核執(zhí)行代 碼實(shí)現(xiàn)PC1-E通信,把采集到的數(shù)據(jù)上傳給PC機(jī)中的上位機(jī)或把上位機(jī)傳遞的指令及數(shù)據(jù) 下發(fā)給FPGA ;DMA寫模塊分別與PC1-E內(nèi)部存儲(chǔ)空間和DMA控制寄存器連接,PC1-E內(nèi)部存 儲(chǔ)空間與DDR對(duì)狀態(tài)接口模塊分別與PC1-E內(nèi)部存儲(chǔ)空間或DDR對(duì)的狀態(tài)寄存器、DMA控 制寄存器連接,PC1-E內(nèi)部存儲(chǔ)空間與DDR對(duì)狀態(tài)接口模塊讀取PC1-E內(nèi)部存儲(chǔ)空間和DDR 對(duì)狀態(tài)寄存器的值,并把這個(gè)值送給PC1-E終端控制模塊,PC1-E終端控制模塊由這個(gè)值來 控制DMA控制寄存器,利用DMA控制寄存器控制DMA寫模塊,從而控制PC1-E內(nèi)部存儲(chǔ)空間 或DDR對(duì)把數(shù)據(jù)通過PC1-E總線上傳給PC機(jī)中的內(nèi)存空間。
所述的采集端啟動(dòng)DMA上傳數(shù)據(jù)的過程有如下步驟a)先利用上位機(jī)對(duì)高速數(shù)據(jù)采集系統(tǒng)中采集端的控制值進(jìn)行寫配置;b)上位機(jī)啟動(dòng)高速數(shù)據(jù)采集系統(tǒng)進(jìn)行數(shù)據(jù)采集;c)在數(shù)據(jù)采集的過程中,利用PC1-E內(nèi)部存儲(chǔ)空間與DDR對(duì)狀態(tài)接口模塊對(duì)PC1-E內(nèi) 部存儲(chǔ)空間或者DDR對(duì)的狀態(tài)進(jìn)行監(jiān)控,并讀取狀態(tài)值;d)PC1-E內(nèi)部存儲(chǔ)空間與DDR對(duì)狀態(tài)接口模塊把該實(shí)時(shí)讀取的狀態(tài)信息傳遞給PC1-E 終端控制模塊,PC1-E終端控制模塊判斷該狀態(tài)是否是達(dá)到DMA模式上傳數(shù)據(jù)的狀態(tài),若是 則寫相應(yīng)的DMA模式上傳的寄存器值給DMA控制寄存器,DMA控制寄存器控制DMA寫模塊進(jìn) 而實(shí)現(xiàn)PC1-E內(nèi)部存儲(chǔ)空間或者給DDR對(duì)中的某個(gè)DDR數(shù)據(jù)利用DMA模式上傳給PC機(jī);e)此次DMA模式數(shù)據(jù)上傳完畢后,上傳一個(gè)結(jié)束標(biāo)志給PC機(jī)中上位機(jī)任意指定的內(nèi)存 地址位置,該結(jié)束標(biāo)志是一個(gè)32bit數(shù)據(jù);f)上位機(jī)(8)獲取該標(biāo)志后對(duì)內(nèi)存中的數(shù)據(jù)進(jìn)行讀??;g)如果上位機(jī)沒有給出結(jié)束命令則返回C),如果要從新設(shè)置狀態(tài)則返回a)。
所述的PC1-E內(nèi)部存儲(chǔ)空間或DDR對(duì)的狀態(tài)寄存器可以選擇設(shè)置,其設(shè)置值可以 根據(jù)存入PC1-E內(nèi)部存儲(chǔ)空間或DDR對(duì)的個(gè)數(shù)進(jìn)行判定,判斷該狀態(tài)寄存器的狀態(tài)與上位 機(jī)給出的狀態(tài)一樣,則開始上傳,不同則保持當(dāng)前狀態(tài)。
所述的DDR對(duì)主要用來掛在FPGA上,為二個(gè)或者四個(gè)或八個(gè),PC機(jī)中的上位機(jī)讀 取DDR對(duì)中的數(shù)據(jù)時(shí)采用乒乓操作。
所述的PC1-E的硬核執(zhí)行代碼形成FPGA內(nèi)部符合PC1-E技術(shù)指標(biāo)的接口邏輯與 協(xié)議,實(shí)現(xiàn)PC1-E的通信。
本發(fā)明中的FPGA是指Xilinx公司或者Altera公司產(chǎn)品中具有PC1-E總線IP核 的FPGA,主要對(duì)PC1-E接口、DDR對(duì)、數(shù)據(jù)采集接口、高速A/D轉(zhuǎn)換器進(jìn)行控制。
本發(fā)明中的PC機(jī)一般是指X86架構(gòu)、具有存儲(chǔ)器、內(nèi)存等單元的主控系統(tǒng),可以在 該系統(tǒng)中對(duì)高速數(shù)據(jù)采集系統(tǒng)進(jìn)行操作與處理。
本發(fā)明中的PC1-E接口還包括電氣相同而物理結(jié)構(gòu)不同的CPC1-E接口,一般是四通道或八通道,目前特指PC1-E1. O和PC1-E2. O,總線頻率為1. 25GHz或者2. 5GHz。
本發(fā)明中的DDR對(duì)主要用來掛在FPGA上,為二個(gè)或者四個(gè)或八個(gè),對(duì)高速數(shù)據(jù)采 集系統(tǒng)多采集的數(shù)據(jù)進(jìn)行快速存取,中快速存取的過程中,F(xiàn)PGA中任意設(shè)置一個(gè)內(nèi)部狀態(tài) 寄存器,針對(duì)DDR對(duì)中的DDR的狀態(tài)進(jìn)行描述,描述的實(shí)現(xiàn)方法可以對(duì)存儲(chǔ)的數(shù)據(jù)個(gè)數(shù)進(jìn)行 計(jì)數(shù),其狀態(tài)為空、半滿、滿。PC機(jī)中的上位機(jī)讀取DDR對(duì)中的數(shù)據(jù)時(shí)可以進(jìn)行乒乓操作, 來避免丟數(shù)等問題的出現(xiàn)。
本發(fā)明中所述的PC1-E內(nèi)部存儲(chǔ)空間或DDR對(duì)的狀態(tài)寄存器可以隨便設(shè)置,其值 可以根據(jù)存入PC1-E內(nèi)部存儲(chǔ)空間或DDR對(duì)個(gè)數(shù)進(jìn)行判定,舉例gPC1-E內(nèi)部存儲(chǔ)空間或 DDR對(duì)存儲(chǔ)空間為1024個(gè)16bit寬,此處狀態(tài)寄存器可以設(shè)置成3bit,則存儲(chǔ)數(shù)據(jù)為O時(shí) 為空,狀態(tài)寄存器可以為001,數(shù)據(jù)為512時(shí)為半滿,狀態(tài)寄存器可以為010,為1023時(shí)為滿 狀態(tài),狀態(tài)寄存器可以為100,此處的狀態(tài)寄存器可以根據(jù)實(shí)際的存儲(chǔ)空間設(shè)置成任意模式 的寄存器,只要能表達(dá)出各個(gè)狀態(tài)不一樣即可,在PC1-E終端控制模塊進(jìn)行狀態(tài)判定時(shí),只 需要把上位機(jī)首先給的狀態(tài)進(jìn)行解析,最后解析成與此處狀態(tài)寄存器的格式一樣即可,判 斷時(shí)狀態(tài)寄存器的狀態(tài)與上位機(jī)給出并解析過的狀態(tài)一樣,則開始上傳,不同則默認(rèn)。
本發(fā)明中的數(shù)據(jù)采集接口主要指高速并行A/D接口,用來連接一個(gè)或者多個(gè)并行 接口的高速A/D轉(zhuǎn)換器。
本發(fā)明中的PC機(jī)中的上位機(jī)中VC平臺(tái)上編寫,采用C語言編寫而成。
本發(fā)明中的PC1-E的硬核執(zhí)行代碼是用來編譯產(chǎn)生FPGA與PC機(jī)進(jìn)行數(shù)據(jù)交換的 PC1-E總線的。
本發(fā)明中的PC1-E內(nèi)部存儲(chǔ)空間是指FPGA中為少數(shù)數(shù)據(jù)DMA傳輸所用的FIFO, 該FIFO的狀態(tài)接口對(duì)外接出,如半滿、空、滿等狀態(tài)都能讀出,用來作為采集數(shù)據(jù)的緩存, 等FIFO有一定數(shù)據(jù)后,再進(jìn)行上傳。
本發(fā)明中的DMA寫模塊主要是利用該模塊控制PC1-E內(nèi)部存儲(chǔ)空間或者DDR對(duì)中 的某個(gè)DDR,控制其讀出時(shí)序,使其數(shù)據(jù)通過PC1-E輸出,送給PC機(jī)中的內(nèi)存中。
本發(fā)明中的DMA控制寄存器主要是用來驅(qū)動(dòng)DMA寫模塊的,從而產(chǎn)生進(jìn)行整個(gè)DMA 傳輸。
本發(fā)明中的PC1-E內(nèi)部存儲(chǔ)空間與DDR對(duì)狀態(tài)接口模塊主要對(duì)PC1-E內(nèi)部存儲(chǔ)空 間、DDR對(duì)、高速A/D轉(zhuǎn)換器的狀態(tài)進(jìn)行讀取,并把這些狀態(tài)送給PC1-E終端控制模塊,從而 對(duì)DMA控制寄存器進(jìn)行控制。
本發(fā)明的一種采集端啟動(dòng)PC1-E總線DMA上傳數(shù)據(jù)的方法,能夠?qū)崿F(xiàn)從高速數(shù)據(jù) 采集系統(tǒng)中采集端自動(dòng)上傳數(shù)據(jù),不用上位機(jī)每次都進(jìn)行命令操作,中設(shè)計(jì)過程中PC1-E 內(nèi)部存儲(chǔ)空間或DDR對(duì)可以二選其一,也可以兩者都選擇,然后實(shí)現(xiàn)的時(shí)候根據(jù)實(shí)際情況 進(jìn)行設(shè)置狀態(tài),本發(fā)明操作性強(qiáng)、避免了數(shù)據(jù)的空讀與誤讀、減輕了 PC機(jī)的負(fù)載、減少了 FPGA資源的利用。
圖1為本發(fā)明的采集端啟動(dòng)PC1-E總線DMA上傳數(shù)據(jù)的方法硬件結(jié)構(gòu)框圖;圖2為本發(fā)明的采集端啟動(dòng)PC1-E總線DMA上傳數(shù)據(jù)的方法軟件結(jié)構(gòu)框圖;圖3為本發(fā)明的采集端啟動(dòng)PC1-E總線DMA上傳數(shù)據(jù)的方法程序流程框圖;圖中,1. PC 機(jī) 2. PC1-E 接口 3.采集端 4. FPGA 5. DDR 對(duì) 6. 數(shù)據(jù)采集接口 7.高速A/D轉(zhuǎn)換器 8.上位機(jī) 9. PC1-E的硬核執(zhí)行代碼 10. PC1-E內(nèi)部存儲(chǔ)空間 11. DMA寫模塊 12. DMA控制寄存器 13. PC1-E 終端控制模塊 14. PC1-E內(nèi)部存儲(chǔ)空間與DDR對(duì)狀態(tài)接口模塊。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步描述。
圖1為本發(fā)明的一種采集端啟動(dòng)PC1-E總線DMA上傳數(shù)據(jù)的方法硬件結(jié)構(gòu)框圖, 圖2為本發(fā)明的一種采集端啟動(dòng)PC1-E總線DMA上傳數(shù)據(jù)的方法軟件結(jié)構(gòu)框圖。
本發(fā)明的采集端啟動(dòng)PC1-E總線DMA上傳數(shù)據(jù)的方法包括硬件部分和軟件部分, 硬件部分含有PC機(jī)1、PC1-E接口 2、FPGA4、DDR對(duì)5、數(shù)據(jù)采集接口 6、高速A/D轉(zhuǎn)換器7,其 中FPGA4、DDR對(duì)5、數(shù)據(jù)采集接口 6、高速A/D轉(zhuǎn)換器7組成了數(shù)據(jù)采集系統(tǒng)的采集端3,PC 機(jī)I通過PC1-E接口 2與FPGA4相連,DDR對(duì)5通過FPGA4的IO 口與FPGA4相連,數(shù)據(jù)采集 接口 6通過IO 口與FPGA4相連,高速A/D轉(zhuǎn)換器7與數(shù)據(jù)采集接口 6連接,高速A/D轉(zhuǎn)換器 7采集輸入的信號(hào),把這些采集的信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)通過數(shù)據(jù)采集接口 6送給FPGA4,然 后FPGA4把這些數(shù)據(jù)經(jīng)過預(yù)處理等操作后送給DDR對(duì)5或FPGA內(nèi)部存儲(chǔ)空間10,然后又將 這些數(shù)據(jù)讀出送給PC機(jī)I ;軟件部分含有FPGA4內(nèi)部的軟件及PC機(jī)I中的上位機(jī)8,F(xiàn)PGA4 內(nèi)部的軟件包含PC1-E的硬核執(zhí)行代碼9、PC1-E內(nèi)部存儲(chǔ)空間10、DMA寫模塊11、DMA控制 寄存器12、PC1-E終端控制模塊13、PC1-E內(nèi)部存儲(chǔ)空間與DDR對(duì)狀態(tài)接口模塊14,PC1-E 的硬核執(zhí)行代碼9形成FPGA4內(nèi)部符合PC1-E總線技術(shù)指標(biāo)的接口邏輯與協(xié)議,實(shí)現(xiàn)PC1-E 的通信,把采集到的數(shù)據(jù)利用PC1-E總線上傳給PC機(jī)I中的上位機(jī)8或把上位機(jī)8傳遞的 指令及數(shù)據(jù)發(fā)給FPGA4內(nèi)部的各個(gè)模塊,DMA寫模塊11連接著PC1-E內(nèi)部存儲(chǔ)空間10與 DMA控制寄存器12,PC1-E內(nèi)部存儲(chǔ)空間與DDR對(duì)狀態(tài)接口模塊14連接PC1-E內(nèi)部存儲(chǔ)空 間10或DDR對(duì)5的狀態(tài)寄存器,還連接到DMA控制寄存器12,從而PC1-E內(nèi)部存儲(chǔ)空間與 DDR對(duì)狀態(tài)接口模塊14讀取PC1-E內(nèi)部存儲(chǔ)空間10與DDR對(duì)5狀態(tài)寄存器的值,并把這個(gè) 值送給PC1-E終端控制模塊13,PC1-E終端控制模塊13根據(jù)PC1-E內(nèi)部存儲(chǔ)空間與DDR對(duì) 狀態(tài)接口模塊14的所送的值來控制DMA控制寄存器12,利用DMA控制寄存器12控制DMA 寫模塊11,從而控制PC1-E內(nèi)部存儲(chǔ)空間10或DDR對(duì)5把數(shù)據(jù)通過PC1-E總線上傳給PC 機(jī)I中的內(nèi)存空間,需要的時(shí)候直接讀取即可。
如圖3所示,圖3為本發(fā)明的高速數(shù)據(jù)采集系統(tǒng)中采集端啟動(dòng)PC1-E總線DMA上 傳數(shù)據(jù)的實(shí)現(xiàn)方法程序流程框圖,本發(fā)明所提供的高速數(shù)據(jù)采集系統(tǒng)中采集端啟動(dòng)PC1-E 總線DMA上傳數(shù)據(jù)的實(shí)現(xiàn)方法包含如下幾步O先利用上位機(jī)8對(duì)高速數(shù)據(jù)采集系統(tǒng)中采集端3的控制值進(jìn)行寫配置,即由上位 機(jī)8確定數(shù)據(jù)采集系統(tǒng)中采集的狀態(tài)并把這個(gè)狀態(tài)值送給PC1-E終端控制模塊13,確定對(duì) PC1-E內(nèi)部存儲(chǔ)空間10還是對(duì)DDR對(duì)5進(jìn)行狀態(tài)監(jiān)控(即讀取哪個(gè)存儲(chǔ)器的狀態(tài)值),確定 這些存儲(chǔ)空間是滿狀態(tài)進(jìn)行上傳還是半滿上傳;2)上位機(jī)8啟動(dòng)高速數(shù)據(jù)采集系統(tǒng)進(jìn)行數(shù)據(jù)采集;3)在數(shù)據(jù)采集的過程中,利用PC1-E內(nèi)部存儲(chǔ)空間與DDR對(duì)狀態(tài)接口模塊14對(duì)PC1-E 內(nèi)部存儲(chǔ)空間10或者DDR對(duì)5的狀態(tài)進(jìn)行監(jiān)控,并讀取狀態(tài)值;4)PC1-E內(nèi)部存儲(chǔ)空間與DDR對(duì)狀態(tài)接口模塊14把該實(shí)時(shí)讀取的狀態(tài)信息傳遞給 PC1-E終端控制模塊13,PC1-E終端控制模塊13判斷該狀態(tài)是否是達(dá)到DMA模式上傳數(shù)據(jù) 的狀態(tài),若是則寫相應(yīng)的DMA模式上傳的寄存器值給DMA控制寄存器12,DMA控制寄存器12 控制DMA寫模塊11進(jìn)而實(shí)現(xiàn)PC1-E內(nèi)部存儲(chǔ)空間10或者給DDR對(duì)5中的某個(gè)DDR數(shù)據(jù)利 用DMA模式上傳給PC機(jī);5)此次DMA模式數(shù)據(jù)上傳完畢后,上傳一個(gè)結(jié)束標(biāo)志給PC機(jī)I中上位機(jī)8任意指定的 內(nèi)存地址位置,該結(jié)束標(biāo)志是一個(gè)32bit數(shù)據(jù);6)上位機(jī)8獲取該標(biāo)志后對(duì)內(nèi)存中的數(shù)據(jù)進(jìn)行讀取;7)如果上位機(jī)沒有給出結(jié)束命令則返回3),如果要從新設(shè)置狀態(tài)則返回I)。
本發(fā)明中的FPGA4是指Xilinx公司或者Altera公司產(chǎn)品中具有PC1-E總線IP 核的FPGA,主要對(duì)PC1-E接口 2、DDR對(duì)5、數(shù)據(jù)采集接口 6、高速A/D轉(zhuǎn)換器7進(jìn)行控制,同 時(shí)接收上位機(jī)8給出的命令。
本發(fā)明中的PC機(jī)I 一般是指X86架構(gòu)、具有存儲(chǔ)器、內(nèi)存等單元的主控系統(tǒng),可以 在該系統(tǒng)中對(duì)高速數(shù)據(jù)采集系統(tǒng)進(jìn)行操作與處理。
本發(fā)明中的PC1-E接口 2還包括電氣相同而物理結(jié)構(gòu)不同的CPC1-E接口,一般是 四通道或者八通道,目前特指PC1-E1.0和PC1-E2. 0,總線頻率為1. 25GHz或者2. 5GHz。
本發(fā)明中的DDR對(duì)5主要用來掛在FPGA4上,為二個(gè)或者四個(gè)或八個(gè),對(duì)高速數(shù)據(jù) 采集系統(tǒng)多采集的數(shù)據(jù)進(jìn)行快速存取,首先FPGA4要把采集的數(shù)據(jù)放入DDR對(duì)5或者PC1-E 內(nèi)部存儲(chǔ)空間10中進(jìn)行緩存,然后再快速上傳,在快速存取的過程中,F(xiàn)PGA4中任意設(shè)置一 個(gè)內(nèi)部狀態(tài)寄存器,針對(duì)DDR對(duì)中的DDR的狀態(tài)進(jìn)行描述,描述的實(shí)現(xiàn)方法可以對(duì)存儲(chǔ)的數(shù) 據(jù)個(gè)數(shù)進(jìn)行計(jì)數(shù),根據(jù)計(jì)數(shù)個(gè)數(shù)來表示其狀態(tài)為空、半滿、滿。PC機(jī)I中的上位機(jī)8讀取 DDR對(duì)5中的數(shù)據(jù)時(shí)可以進(jìn)行乒乓操作,來避免丟數(shù)等問題的出現(xiàn)。
本發(fā)明中的數(shù)據(jù)采集接口 6主要指高速并行A/D接口,用來連接一個(gè)或者多個(gè)并 行接口的高速A/D轉(zhuǎn)換器7。
本發(fā)明中的PC機(jī)I中的上位機(jī)8在VC平臺(tái)上采用C語言編寫而成。
本發(fā)明中的PC1-E的硬核執(zhí)行代碼9是用來編譯產(chǎn)生FPGA與PC機(jī)進(jìn)行數(shù)據(jù)交換 的PC1-E總線的,可以直接用FPGA中的IP Core產(chǎn)生。
本發(fā)明中的PC1-E內(nèi)部存儲(chǔ)空間10是指FPGA4中為少數(shù)數(shù)據(jù)DMA傳輸所用的 FIFO,該FIFO的狀態(tài)接口對(duì)外接出,如半滿、空、滿等狀態(tài)都能讀出,用來作為采集數(shù)據(jù)的 緩存,等FIFO有一定數(shù)據(jù)后,再進(jìn)行上傳。
本發(fā)明中所述的PC1-E內(nèi)部存儲(chǔ)空間10或DDR對(duì)5的狀態(tài)寄存器可以隨便設(shè)置, 其值可以根據(jù)存入PC1-E內(nèi)部存儲(chǔ)空間10或DDR對(duì)5個(gè)數(shù)進(jìn)行判定,舉例若PC1-E內(nèi)部 存儲(chǔ)空間10或DDR對(duì)5存儲(chǔ)空間為1024個(gè)16bit寬,此處狀態(tài)寄存器可以設(shè)置成3bit, 則存儲(chǔ)數(shù)據(jù)為O時(shí)為空,狀態(tài)寄存器可以為001,數(shù)據(jù)為512時(shí)為半滿,狀態(tài)寄存器可以為 010,為1023時(shí)為滿狀態(tài),狀態(tài)寄存器可以為100,此處的狀態(tài)寄存器可以根據(jù)實(shí)際的存儲(chǔ) 空間設(shè)置成任意模式的寄存器,只要能表達(dá)出各個(gè)狀態(tài)不一樣即可,在PC1-E終端控制模 塊13進(jìn)行狀態(tài)判定時(shí),只需要把上位機(jī)8首先給的狀態(tài)進(jìn)行解析,最后解析成與此處狀態(tài) 寄存器的格式一樣即可,判斷時(shí)狀態(tài)寄存器的狀態(tài)與上位機(jī)8給出并解析過的狀態(tài)一樣, 則開始上傳,不同則默認(rèn)。
本發(fā)明中的DMA寫模塊11主要是利用該模塊控制PC1-E內(nèi)部存儲(chǔ)空間10或者 DDR對(duì)5中的某個(gè)DDR,控制其讀出時(shí)序,使其數(shù)據(jù)通過PC1-E輸出,送給PC機(jī)中的內(nèi)存中。
本發(fā)明中的DMA控制寄存器12主要是用來驅(qū)動(dòng)DMA寫模塊11的,從而產(chǎn)生進(jìn)行 整個(gè)DMA傳輸,實(shí)現(xiàn)過程中只需要在DMA控制寄存器12填入PC1-E的IP Core需要的寄存 器值,然后DMA控制寄存器12啟動(dòng)DMA寫模塊11,從而控制PC1-E內(nèi)部存儲(chǔ)空間10或者 DDR對(duì)5的讀信號(hào)控制有效。
本發(fā)明中的PC1-E內(nèi)部存儲(chǔ)空間與DDR對(duì)狀態(tài)接口模塊14主要對(duì)PC1-E內(nèi)部存儲(chǔ) 空間10、DDR對(duì)5的狀態(tài)寄存器的值進(jìn)行讀取,并把這些狀態(tài)送給PC1-E終端控制模塊13, 從而對(duì)DMA控制寄存器12進(jìn)行控制。
權(quán)利要求
1.一種采集端啟動(dòng)PC1-E總線DMA上傳數(shù)據(jù)的方法,包括硬件部分和控制軟件,硬件部分中的FPGA (4 )、DDR對(duì)(5 )、數(shù)據(jù)采集接口( 6 )、高速A/D轉(zhuǎn)換器(7 )組成了數(shù)據(jù)采集系統(tǒng)的采集端(3);PC機(jī)(I)通過PC1-E接口(2)與FPGA (4)相連,F(xiàn)PGA (4)通過IO 口分別與DDR對(duì)(5)、數(shù)據(jù)采集接口(6)相連,高速A/D轉(zhuǎn)換器(7)把采集到的信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),并通過數(shù)據(jù)采集接口(6)送給FPGA (4),在FPGA (4)里預(yù)處理后,這些數(shù)據(jù)存儲(chǔ)到DDR 對(duì)(5)或FPGA內(nèi)部存儲(chǔ)空間(10)里,存儲(chǔ)到一定數(shù)量后上傳給PC機(jī)(I);控制軟件含有FPGA (4)內(nèi)部軟件及PC機(jī)(I)中的上位機(jī)(8),F(xiàn)PGA (4)內(nèi)部軟件中的PC1-E硬核執(zhí)行代碼(9)實(shí)現(xiàn)PC1-E通信,把采集到的數(shù)據(jù)上傳給PC機(jī)(I)中的上位機(jī)(8)或把上位機(jī)⑶傳遞的指令及數(shù)據(jù)下發(fā)給FPGA (4);DMA寫模塊(11)分別與PC1-E內(nèi)部存儲(chǔ)空間(10)和DMA控制寄存器(12)連接,PC1-E內(nèi)部存儲(chǔ)空間與DDR對(duì)狀態(tài)接口模塊 (14)分別與PC1-E內(nèi)部存儲(chǔ)空間(10)或DDR對(duì)(5)的狀態(tài)寄存器、DMA控制寄存器(12) 連接,PC1-E內(nèi)部存儲(chǔ)空間與DDR對(duì)狀態(tài)接口模塊(14)讀取PC1-E內(nèi)部存儲(chǔ)空間(10)和 DDR對(duì)(5)狀態(tài)寄存器的值,并把這個(gè)值送給PC1-E終端控制模塊(13),PC1-E終端控制模塊(13)由這個(gè)值來控制DMA控制寄存器(12),利用DMA控制寄存器(12)控制DMA寫模塊(11),從而控制PC1-E內(nèi)部存儲(chǔ)空間(10)或DDR對(duì)(5)把數(shù)據(jù)通過PC1-E總線上傳給PC機(jī) (O中的內(nèi)存空間。
2.根據(jù)權(quán)利要求1所述的一種采集端啟動(dòng)PC1-E總線DMA上傳數(shù)據(jù)的方法,其特征在于所述的采集端啟動(dòng)DMA上傳數(shù)據(jù)的過程有如下步驟a)先利用上位機(jī)(8)對(duì)高速數(shù)據(jù)采集系統(tǒng)中采集端(3)的控制值進(jìn)行寫配置;b)上位機(jī)(8)啟動(dòng)高速數(shù)據(jù)采集系統(tǒng)進(jìn)行數(shù)據(jù)采集;c)在數(shù)據(jù)采集的過程中,利用PC1-E內(nèi)部存儲(chǔ)空間與DDR對(duì)狀態(tài)接口模塊(14)對(duì) PC1-E內(nèi)部存儲(chǔ)空間(10)或者DDR對(duì)(5)的狀態(tài)進(jìn)行監(jiān)控,并讀取狀態(tài)值;d)PC1-E內(nèi)部存儲(chǔ)空間與DDR對(duì)狀態(tài)接口模塊(14)把該實(shí)時(shí)讀取的狀態(tài)信息傳遞給 PC1-E終端控制模塊(13),PC1-E終端控制模塊(13)判斷該狀態(tài)是否是達(dá)到DMA模式上傳數(shù)據(jù)的狀態(tài),若是則寫相應(yīng)的DMA模式上傳的寄存器值給DMA控制寄存器(12),DMA控制寄存器(12)控制DMA寫模塊(11)進(jìn)而實(shí)現(xiàn)PC1-E內(nèi)部存儲(chǔ)空間(10)或者給DDR對(duì)(5)中的某個(gè)DDR數(shù)據(jù)利用DMA模式上傳給PC機(jī);e)此次DMA模式數(shù)據(jù)上傳完畢后,上傳一個(gè)結(jié)束標(biāo)志給PC機(jī)(I)中上位機(jī)(8)任意指定的內(nèi)存地址位置,該結(jié)束標(biāo)志是一個(gè)32bit數(shù)據(jù);f)上位機(jī)(8)獲取該標(biāo)志后對(duì)內(nèi)存中的數(shù)據(jù)進(jìn)行讀??;g)如果上位機(jī)沒有給出結(jié)束命令則返回C),如果要從新設(shè)置狀態(tài)則返回a)。
3.根據(jù)權(quán)利要求1所述的一種采集端啟動(dòng)PC1-E總線DMA上傳數(shù)據(jù)的方法,其特征在于所述的PC1-E內(nèi)部存儲(chǔ)空間(10)或DDR對(duì)(5)的狀態(tài)寄存器可以選擇設(shè)置,其設(shè)置值可以根據(jù)存入PC1-E內(nèi)部存儲(chǔ)空間(10)或DDR對(duì)(5)的個(gè)數(shù)進(jìn)行判定,判斷該狀態(tài)寄存器的狀態(tài)與上位機(jī)(8)給出的狀態(tài)一樣,則開始上傳,不同則保持當(dāng)前狀態(tài)。
4.根據(jù)權(quán)利要求1所述的一種采集端啟動(dòng)PC1-E總線DMA上傳數(shù)據(jù)的方法,其特征在于所述的DDR對(duì)(5)主要用來掛在FPGA (4)上,數(shù)量為兩個(gè)、四個(gè)或八個(gè),PC機(jī)(I)中的上位機(jī)(8)讀取DDR對(duì)(5)中的數(shù)據(jù)時(shí)采用乒乓操作。
全文摘要
本發(fā)明提供了一種采集端啟動(dòng)PCI-E總線DMA上傳數(shù)據(jù)的方法,包含硬件部分和軟件部分,硬件部分含有PC機(jī)、PCI-E接口,及由FPGA、DDR對(duì)、數(shù)據(jù)采集接口、高速A/D轉(zhuǎn)換器組成的采集端,采集端通過PCI-E接口與PC機(jī)相連,而采集端內(nèi)部各個(gè)組成部分協(xié)同工作進(jìn)行數(shù)據(jù)的高速采集并完成數(shù)據(jù)的DMA高速上傳;軟件部分含有FPGA內(nèi)部的軟件及PC機(jī)中的上位機(jī),F(xiàn)PGA內(nèi)部的軟件完成PCI-E總線的協(xié)議控制、時(shí)序控制,并設(shè)計(jì)了數(shù)據(jù)存儲(chǔ)的狀態(tài)監(jiān)控機(jī)制與采集端啟動(dòng)DMA模式上傳數(shù)據(jù)的機(jī)制,通過對(duì)數(shù)據(jù)存儲(chǔ)狀態(tài)的監(jiān)控判斷是否滿足DMA上傳條件,若滿足則進(jìn)行DMA上傳。本發(fā)明操作性強(qiáng)、避免了數(shù)據(jù)的空讀與誤讀、減輕了PC機(jī)的負(fù)載、減少了FPGA資源的利用。
文檔編號(hào)G06F13/40GK103019990SQ20121040782
公開日2013年4月3日 申請日期2012年10月24日 優(yōu)先權(quán)日2012年10月24日
發(fā)明者嚴(yán)發(fā)寶, 陳剛, 張京, 陳先玉, 陳航, 周勇 申請人:綿陽市維博電子有限責(zé)任公司