基于fpga和dsp的數(shù)據(jù)傳輸系統(tǒng)的制作方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種基于FPGA和DSP的數(shù)據(jù)傳輸系統(tǒng)。其包括FPGA模塊、DSP模塊和外部存儲(chǔ)器,F(xiàn)PGA模塊包括存儲(chǔ)器讀寫(xiě)控制單元、數(shù)據(jù)處理單元、異步FIFO單元、同步FIFO單元和數(shù)據(jù)讀寫(xiě)檢測(cè)單元。存儲(chǔ)器讀寫(xiě)控制單元從外部存儲(chǔ)器讀取預(yù)定單位的數(shù)據(jù);數(shù)據(jù)處理單元對(duì)每單位的數(shù)據(jù)進(jìn)行處理;異步FIFO單元對(duì)預(yù)定單位的數(shù)據(jù)進(jìn)行時(shí)鐘域轉(zhuǎn)換;同步FIFO單元緩存預(yù)定單位的數(shù)據(jù),在數(shù)據(jù)達(dá)到預(yù)定單位時(shí)向DSP模塊發(fā)中斷信號(hào);DSP模塊根據(jù)中斷信號(hào)從同步FIFO單元讀取數(shù)據(jù);數(shù)據(jù)讀寫(xiě)檢測(cè)單元在檢測(cè)到DSP模塊每讀取完一個(gè)單位的數(shù)據(jù)時(shí),向存儲(chǔ)器讀寫(xiě)控制單元發(fā)出反饋信號(hào),以使存儲(chǔ)器讀寫(xiě)控制單元從外部存儲(chǔ)器讀取下一單位的數(shù)據(jù)。本發(fā)明能保證在EMIF傳輸方式下,F(xiàn)PGA與DSP之間的數(shù)據(jù)傳輸連續(xù)性。
【專(zhuān)利說(shuō)明】基于FPGA和DSP的數(shù)據(jù)傳輸系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理【技術(shù)領(lǐng)域】,尤其是一種基于FPGA和DSP的數(shù)據(jù)傳輸系統(tǒng)。
【背景技術(shù)】
[0002]FPGA(Field Programmable Gate Array,現(xiàn)場(chǎng)可編程門(mén)陣列)+DSP(digitalsignal processing,數(shù)字信號(hào)處理)的架構(gòu)是最常用的數(shù)字信號(hào)處理解決方案。FPGA用于完成大數(shù)據(jù)高速處理,DSP用于完成后期復(fù)雜處理。在大多數(shù)應(yīng)用中,F(xiàn)PGA用于實(shí)現(xiàn)對(duì)大量數(shù)據(jù)的高速實(shí)時(shí)處理,然而FPGA內(nèi)部存儲(chǔ)空間比較小,所以一般采用外部存儲(chǔ)器來(lái)存儲(chǔ)數(shù)據(jù),F(xiàn)PGA從外部存儲(chǔ)器讀取數(shù)據(jù)經(jīng)過(guò)處理后向DSP發(fā)中斷信號(hào),DSP在收到中斷信號(hào)后主動(dòng)從FPGA讀取數(shù)據(jù)進(jìn)行下一步處理。
[0003]然而,在面對(duì)大數(shù)據(jù)傳輸時(shí),由于FPGA內(nèi)可設(shè)置的緩沖區(qū)是很小的。因此,目前采取的方式是僅僅將FPGA作為布線通道,由DSP主動(dòng)訪問(wèn)FPGA連接的外部存儲(chǔ)器。但是,如果僅僅將FPGA作為布線通道,則一些應(yīng)用中的運(yùn)算(例如雷達(dá)信號(hào)處理中的求模運(yùn)算)只能在DSP里面進(jìn)行,從而會(huì)壓縮DSP的處理時(shí)間,增加DSP的實(shí)時(shí)性設(shè)計(jì)難度,因而難以保證FPGA和DSP之間的數(shù)據(jù)傳輸連續(xù)性。
【發(fā)明內(nèi)容】
[0004]本發(fā)明所要解決的技術(shù)問(wèn)題是:提供一種基于FPGA和DSP的數(shù)據(jù)傳輸系統(tǒng),能夠保證在EMIF(External Memory Interface,外部存儲(chǔ)器接口 )傳輸方式下,F(xiàn)PGA與DSP之間的數(shù)據(jù)傳輸連續(xù)性。
[0005]本發(fā)明采用的技術(shù)方案是:提供一種基于FPGA和DSP的數(shù)據(jù)傳輸系統(tǒng)。所述數(shù)據(jù)傳輸系統(tǒng)包括FPGA模塊、DSP模塊和外部存儲(chǔ)器,所述FPGA模塊包括存儲(chǔ)器讀寫(xiě)控制單元、數(shù)據(jù)處理單元、異步FIFO單元、同步FIFO單元和數(shù)據(jù)讀寫(xiě)檢測(cè)單元,所述存儲(chǔ)器讀寫(xiě)控制單元用于從所述外部存儲(chǔ)器讀取預(yù)定單位的數(shù)據(jù),并將每單位的數(shù)據(jù)依次送入所述數(shù)據(jù)處理單元;所述數(shù)據(jù)處理單元用于對(duì)每單位的數(shù)據(jù)進(jìn)行處理后送入所述異步FIFO單元;所述異步FIFO單元用于對(duì)所述預(yù)定單位的數(shù)據(jù)進(jìn)行時(shí)鐘域轉(zhuǎn)換后送入所述同步FIFO單元;所述同步FIFO單元用于緩存所述異步FIFO單元送入的數(shù)據(jù),并在所緩存的數(shù)據(jù)達(dá)到所述預(yù)定單位時(shí),向所述DSP模塊發(fā)出中斷信號(hào);所述DSP模塊用于根據(jù)所述中斷信號(hào)從所述同步FIFO單元讀取數(shù)據(jù);所述數(shù)據(jù)讀寫(xiě)檢測(cè)單元用于在檢測(cè)到所述DSP模塊每讀取完一個(gè)單位的數(shù)據(jù)時(shí),向所述存儲(chǔ)器讀寫(xiě)控制單元發(fā)出反饋信號(hào),以使得所述存儲(chǔ)器讀寫(xiě)控制單元根據(jù)所述反饋信號(hào)從所述外部存儲(chǔ)器讀取下一單位的數(shù)據(jù)。
[0006]優(yōu)選地,所述DSP模塊從所述同步FIFO單元讀取所述預(yù)定單位的數(shù)據(jù)的時(shí)間大于所述存儲(chǔ)器讀寫(xiě)控制單元與所述同步FIFO單元之間的群延時(shí),以保證所述同步FIFO單元不會(huì)被讀空。
[0007]優(yōu)選地,所述存儲(chǔ)器讀寫(xiě)控制單元讀取一個(gè)單位的數(shù)據(jù)的時(shí)間小于所述DSP模塊讀取一個(gè)單位的數(shù)據(jù)的時(shí)間。
[0008]優(yōu)選地,所述存儲(chǔ)器讀寫(xiě)控制單元在讀取完一個(gè)單位的數(shù)據(jù)的時(shí)間后處于空閑狀態(tài),直至接收到所述反饋信號(hào)。
[0009]優(yōu)選地,所述DSP模塊具體用于根據(jù)所述中斷信號(hào)向所述同步FIFO單元發(fā)送讀取控制信號(hào);所述同步FIFO單元用于根據(jù)所述讀取控制信號(hào)輸出數(shù)據(jù)至所述DSP模塊。
[0010]優(yōu)選地,所述DSP模塊用于將所述讀取控制信號(hào)的脈沖寬度設(shè)置為兩個(gè)時(shí)鐘周期;所述同步FIFO單元用于在檢測(cè)到讀取控制信號(hào)的第一個(gè)時(shí)鐘周期時(shí)輸出數(shù)據(jù)至所述DSP模塊,在檢測(cè)到讀取控制信號(hào)的第二個(gè)時(shí)鐘周期時(shí)不作處理。
[0011]綜上所述,由于采用了上述技術(shù)方案,本發(fā)明的有益效果是:通過(guò)FPGA預(yù)先緩存預(yù)定單位的數(shù)據(jù),并監(jiān)測(cè)FPGA和DSP之間的交互,在DSP從FPGA讀取完數(shù)據(jù)之前FPGA提前從外部存儲(chǔ)器讀取數(shù)據(jù)并進(jìn)行處理和緩存,從而能夠保證在EMIF傳輸方式下,F(xiàn)PGA與DSP之間的數(shù)據(jù)傳輸連續(xù)性,即使在DSP發(fā)送的讀取控制信號(hào)不連續(xù),且不連續(xù)的間斷點(diǎn)隨機(jī)出現(xiàn)時(shí),F(xiàn)PGA也能夠提前準(zhǔn)備數(shù)據(jù),保證FPGA到DSP的數(shù)據(jù)的正確、可靠傳輸,并且FPGA不再簡(jiǎn)單作為布線通道,可以將部分在DSP內(nèi)進(jìn)行的運(yùn)算移植到FPGA中,為DSP預(yù)留更多的處理時(shí)間,以降低DSP的實(shí)時(shí)性設(shè)計(jì)難度。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0012]本發(fā)明將通過(guò)例子并參照附圖的方式說(shuō)明,其中:
[0013]圖1是本發(fā)明實(shí)施例的基于FPGA和DSP的數(shù)據(jù)傳輸系統(tǒng)的原理框圖。
【具體實(shí)施方式】
[0014]本說(shuō)明書(shū)中公開(kāi)的所有特征,或公開(kāi)的所有方法或過(guò)程中的步驟,除了互相排斥的特征和/或步驟以外,均可以以任何方式組合。
[0015]本說(shuō)明書(shū)中公開(kāi)的任一特征,除非特別敘述,均可被其他等效或具有類(lèi)似目的的替代特征加以替換。即,除非特別敘述,每個(gè)特征只是一系列等效或類(lèi)似特征中的一個(gè)例子而已。
[0016]如圖1所示,是本發(fā)明實(shí)施例的基于FPGA和DSP的數(shù)據(jù)傳輸系統(tǒng)的原理框圖。本實(shí)施例的數(shù)據(jù)傳輸系統(tǒng)包括FPGA模塊、DSP模塊和外部存儲(chǔ)器,F(xiàn)PGA模塊包括存儲(chǔ)器讀寫(xiě)控制單元、數(shù)據(jù)處理單元、異步FIFO單元、同步FIFO單元和數(shù)據(jù)讀寫(xiě)檢測(cè)單元。
[0017]存儲(chǔ)器讀寫(xiě)控制單元用于從外部存儲(chǔ)器讀取預(yù)定單位的數(shù)據(jù),并將每單位的數(shù)據(jù)依次送入數(shù)據(jù)處理單元。其中,外部存儲(chǔ)器作為大容量存儲(chǔ)器,能夠?qū)PGA模塊需要的數(shù)據(jù)重新存儲(chǔ)并進(jìn)行排列。
[0018]數(shù)據(jù)處理單元用于對(duì)每單位的數(shù)據(jù)進(jìn)行處理后送入異步FIFO單元。其中,數(shù)據(jù)處理單元主要用于執(zhí)行部分需要在DSP模塊中進(jìn)行的運(yùn)算,即將DSP中的運(yùn)算移植到FPGA模塊中。
[0019]異步FIFO單元用于對(duì)預(yù)定單位的數(shù)據(jù)進(jìn)行時(shí)鐘域轉(zhuǎn)換后送入同步FIFO單元。其中,異步FIFO單元可以對(duì)數(shù)據(jù)進(jìn)行時(shí)鐘域的轉(zhuǎn)換,以及數(shù)據(jù)格式、數(shù)據(jù)連續(xù)性的轉(zhuǎn)換。
[0020]同步FIFO單元用于緩存異步FIFO單元送入的數(shù)據(jù),并在所緩存的數(shù)據(jù)達(dá)到預(yù)定單位時(shí),向DSP模塊發(fā)出中斷信號(hào)。其中,同步FIFO單元作為和DSP模塊的交互邏輯,可以使FPGA和DSP的交互邏輯的設(shè)計(jì)更加簡(jiǎn)單、方便和可靠。同步FIFO單元和異步FIFO單元都是基于FIFO (First Input First Output,先入先出隊(duì)列)存儲(chǔ)器。同步FIFO單元的讀取和寫(xiě)入都在同一時(shí)鐘完成,而異步FIFO單元的讀取和寫(xiě)入在不同時(shí)鐘完成。
[0021 ] DSP模塊用于根據(jù)中斷信號(hào)從同步FIFO單元讀取數(shù)據(jù)。其中,同步FIFO單元緩存預(yù)定單位的數(shù)據(jù)后才向DSP模塊發(fā)送中斷信號(hào),可以保證DSP讀取過(guò)程中同步FIFO單元始終不會(huì)被讀空。
[0022]數(shù)據(jù)讀寫(xiě)檢測(cè)單元用于在檢測(cè)到DSP模塊每讀取完一個(gè)單位的數(shù)據(jù)時(shí),向存儲(chǔ)器讀寫(xiě)控制單元發(fā)出反饋信號(hào),以使得存儲(chǔ)器讀寫(xiě)控制單元根據(jù)反饋信號(hào)從外部存儲(chǔ)器讀取下一單位的數(shù)據(jù)。其中,DSP模塊每讀取一個(gè)單位的數(shù)據(jù)后,存儲(chǔ)器讀寫(xiě)控制單元就讀取下一單位的數(shù)據(jù),可以保證數(shù)據(jù)的連續(xù)性傳輸。
[0023]在本實(shí)施例中,DSP模塊從同步FIFO單元讀取預(yù)定單位的數(shù)據(jù)的時(shí)間大于存儲(chǔ)器讀寫(xiě)控制單元與同步FIFO單元之間的群延時(shí)。進(jìn)一步地,存儲(chǔ)器讀寫(xiě)控制單元讀取一個(gè)單位的數(shù)據(jù)的時(shí)間小于DSP模塊讀取一個(gè)單位的數(shù)據(jù)的時(shí)間,并且存儲(chǔ)器讀寫(xiě)控制單元在讀取完一個(gè)單位的數(shù)據(jù)的時(shí)間后處于空閑狀態(tài),直至接收到反饋信號(hào)。由于FPGA內(nèi)部存在異步邏輯,產(chǎn)生反饋信號(hào)的數(shù)據(jù)讀寫(xiě)檢測(cè)單元的運(yùn)行時(shí)鐘和存儲(chǔ)器讀寫(xiě)控制單元的運(yùn)行時(shí)鐘不同,為保證數(shù)據(jù)傳輸穩(wěn)定可靠進(jìn)行,所以在時(shí)鐘規(guī)劃上應(yīng)保證存儲(chǔ)器讀寫(xiě)控制單元讀取一個(gè)單位的數(shù)據(jù)的時(shí)間小于DSP模塊讀取一個(gè)單位的數(shù)據(jù)的時(shí)間。
[0024]DSP模塊具體用于根據(jù)中斷信號(hào)向同步FIFO單元發(fā)送讀取控制信號(hào)。同步FIFO單元用于根據(jù)讀取控制信號(hào)輸出數(shù)據(jù)至DSP模塊。具體地,DSP模塊向同步FIFO單元發(fā)送讀取控制信號(hào)后,同步FIFO單元將數(shù)據(jù)發(fā)送到與DSP模塊之間的總線上,DSP模塊從總線上讀取該數(shù)據(jù)。應(yīng)當(dāng)注意,本實(shí)施例中提及的一個(gè)單位的數(shù)據(jù)包括至少兩個(gè)數(shù)據(jù)。
[0025]進(jìn)一步,可選地,DSP模塊用于將讀取控制信號(hào)的脈沖寬度設(shè)置為兩個(gè)時(shí)鐘周期;同步FIFO單元用于在檢測(cè)到讀取控制信號(hào)的第一個(gè)時(shí)鐘周期時(shí)輸出數(shù)據(jù)至DSP模塊,在檢測(cè)到讀取控制信號(hào)的第二個(gè)時(shí)鐘周期時(shí)不作處理。其中,本申請(qǐng)的發(fā)明人通過(guò)大量的實(shí)驗(yàn)驗(yàn)證,當(dāng)DSP模塊向FPGA模塊發(fā)送讀取控制信號(hào)時(shí)會(huì)同步反饋一個(gè)時(shí)鐘,該時(shí)鐘達(dá)到較高的速度后該時(shí)鐘本身的驅(qū)動(dòng)能力減弱,往往不能穩(wěn)定驅(qū)動(dòng)FPGA內(nèi)部的接口邏輯,而將讀取控制信號(hào)的脈沖寬度設(shè)置為兩個(gè)時(shí)鐘周期,通過(guò)監(jiān)測(cè)DSP模塊發(fā)送的讀取控制信號(hào)的電平變化,從而在FPGA模塊內(nèi)部產(chǎn)生一個(gè)讀同步FIFO單元的使能信號(hào),以此解決FPGA模塊內(nèi)部時(shí)鐘與DSP模塊所發(fā)送讀取控制信號(hào)相位不同步的問(wèn)題以及因DSP模塊反饋的時(shí)鐘的驅(qū)動(dòng)能力減弱的問(wèn)題。
[0026]本發(fā)明實(shí)施例的基于FPGA和DSP的數(shù)據(jù)傳輸系統(tǒng)通過(guò)FPGA預(yù)先緩存預(yù)定單位的數(shù)據(jù),并監(jiān)測(cè)FPGA和DSP之間的交互,在DSP從FPGA讀取完數(shù)據(jù)之前FPGA提前從外部存儲(chǔ)器讀取數(shù)據(jù)并進(jìn)行處理和緩存,從而在EMIF傳輸方式下,F(xiàn)PGA與DSP之間的數(shù)據(jù)傳輸連續(xù)性,并且數(shù)據(jù)傳輸?shù)目煽啃砸草^高,即使在DSP發(fā)送的讀取控制信號(hào)不連續(xù),且不連續(xù)的間斷點(diǎn)隨機(jī)出現(xiàn)時(shí),F(xiàn)PGA也能夠提前準(zhǔn)備數(shù)據(jù),保證FPGA到DSP的數(shù)據(jù)的正確、可靠傳輸。進(jìn)一步地,由于FPGA不再簡(jiǎn)單作為布線通道,可以將部分在DSP內(nèi)進(jìn)行的運(yùn)算移植到FPGA中,為DSP預(yù)留更多的處理時(shí)間,以降低DSP的實(shí)時(shí)性設(shè)計(jì)難度,使整個(gè)信號(hào)處理系統(tǒng)實(shí)時(shí)性的設(shè)計(jì)難度大大降低。例如在雷達(dá)信號(hào)處理的應(yīng)用中,能夠?qū)FAR(ConstantFalse-Alarm Rate,恒虛警率)的求平方根的運(yùn)算移植到FPGA模塊中,從而在DSP模塊內(nèi)實(shí)現(xiàn)CFAR處理時(shí)可以將現(xiàn)行的計(jì)算均方根的算法改為最貼近理論的計(jì)算平方根的平均值,提聞目標(biāo)檢測(cè)性能。
[0027]本發(fā)明并不局限于前述的【具體實(shí)施方式】。本發(fā)明擴(kuò)展到任何在本說(shuō)明書(shū)中披露的新特征或任何新的組合,以及披露的任一新的方法或過(guò)程的步驟或任何新的組合。
【權(quán)利要求】
1.一種基于FPGA和DSP的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述數(shù)據(jù)傳輸系統(tǒng)包括FPGA模塊、DSP模塊和外部存儲(chǔ)器,所述FPGA模塊包括存儲(chǔ)器讀寫(xiě)控制單元、數(shù)據(jù)處理單元、異步FIFO單元、同步FIFO單元和數(shù)據(jù)讀寫(xiě)檢測(cè)單元, 所述存儲(chǔ)器讀寫(xiě)控制單元用于從所述外部存儲(chǔ)器讀取預(yù)定單位的數(shù)據(jù),并將每單位的數(shù)據(jù)依次送入所述數(shù)據(jù)處理單元; 所述數(shù)據(jù)處理單元用于對(duì)每單位的數(shù)據(jù)進(jìn)行處理后送入所述異步FIFO單元; 所述異步FIFO單元用于對(duì)所述預(yù)定單位的數(shù)據(jù)進(jìn)行時(shí)鐘域轉(zhuǎn)換后送入所述同步FIFO單元; 所述同步FIFO單元用于緩存所述異步FIFO單元送入的數(shù)據(jù),并在所緩存的數(shù)據(jù)達(dá)到所述預(yù)定單位時(shí),向所述DSP模塊發(fā)出中斷信號(hào); 所述DSP模塊用于根據(jù)所述中斷信號(hào)從所述同步FIFO單元讀取數(shù)據(jù); 所述數(shù)據(jù)讀寫(xiě)檢測(cè)單元用于在檢測(cè)到所述DSP模塊每讀取完一個(gè)單位的數(shù)據(jù)時(shí),向所述存儲(chǔ)器讀寫(xiě)控制單元發(fā)出反饋信號(hào),以使得所述存儲(chǔ)器讀寫(xiě)控制單元根據(jù)所述反饋信號(hào)從所述外部存儲(chǔ)器讀取下一單位的數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述DSP模塊從所述同步FIFO單元讀取所述預(yù)定單位的數(shù)據(jù)的時(shí)間大于所述存儲(chǔ)器讀寫(xiě)控制單元與所述同步FIFO單元之間的群延時(shí),以保證所述同步FIFO單元不會(huì)被讀空。
3.根據(jù)權(quán)利要求1或2所述的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述存儲(chǔ)器讀寫(xiě)控制單元讀取一個(gè)單位的數(shù)據(jù)的時(shí)間小于所述DSP模塊讀取一個(gè)單位的數(shù)據(jù)的時(shí)間。
4.根據(jù)權(quán)利要求3所述的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述存儲(chǔ)器讀寫(xiě)控制單元在讀取完一個(gè)單位的數(shù)據(jù)的時(shí)間后處于空閑狀態(tài),直至接收到所述反饋信號(hào)。
5.根據(jù)權(quán)利要求1所述的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述DSP模塊具體用于根據(jù)所述中斷信號(hào)向所述同步FIFO單元發(fā)送讀取控制信號(hào); 所述同步FIFO單元用于根據(jù)所述讀取控制信號(hào)輸出數(shù)據(jù)至所述DSP模塊。
6.根據(jù)權(quán)利要求5所述的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述DSP模塊用于將所述讀取控制信號(hào)的脈沖寬度設(shè)置為兩個(gè)時(shí)鐘周期; 所述同步FIFO單元用于在檢測(cè)到讀取控制信號(hào)的第一個(gè)時(shí)鐘周期時(shí)輸出數(shù)據(jù)至所述DSP模塊,在檢測(cè)到讀取控制信號(hào)的第二個(gè)時(shí)鐘周期時(shí)不作處理。
【文檔編號(hào)】G06F13/38GK104298634SQ201410494048
【公開(kāi)日】2015年1月21日 申請(qǐng)日期:2014年9月24日 優(yōu)先權(quán)日:2014年9月24日
【發(fā)明者】羅大鑫, 許剛 申請(qǐng)人:四川九洲電器集團(tuán)有限責(zé)任公司