嵌入式Linux系統(tǒng)下的EMIF與FPGA的接口驅(qū)動方法
【專利摘要】嵌入式Linux系統(tǒng)下的EMIF與FPGA的接口驅(qū)動方法,屬于數(shù)據(jù)傳輸領(lǐng)域。解決了現(xiàn)有在Linux系統(tǒng)下的DSP的EMIF與FPGA接口無法實(shí)現(xiàn)圖像數(shù)據(jù)傳輸?shù)膯栴}。該方法首先,實(shí)現(xiàn)EMIF驅(qū)動模塊對驅(qū)動設(shè)備加載函數(shù)的加載和卸載函數(shù)的卸載,其次,通過EMIF驅(qū)動模塊,實(shí)現(xiàn)發(fā)送裝置中的DSP的EMIF端口對發(fā)送裝置中的FPGA中FIFO進(jìn)行寫操作,再次,接收裝置中的DSP接收到中斷信號后,執(zhí)行中斷處理例程,喚醒讀進(jìn)程;最后,通過EMIF驅(qū)動模塊,實(shí)現(xiàn)接收裝置中的DSP的EMIF端口對接收裝置中的FPGA中FIFO進(jìn)行讀操作。用于實(shí)現(xiàn)EMIF端口與FPGA的接口之間的數(shù)據(jù)通信。
【專利說明】嵌入式Linux系統(tǒng)下的EMIF與FPGA的接口驅(qū)動方法
【技術(shù)領(lǐng)域】
[0001 ] 本發(fā)明屬于數(shù)據(jù)傳輸領(lǐng)域。
【背景技術(shù)】
[0002]隨著生活水平的提高和科技水平的發(fā)展,人們對圖像處理的要求越來越高,如視頻會議、視頻監(jiān)控、視頻通話等。但是,在達(dá)芬奇(Davinci)技術(shù)出現(xiàn)之前,針對不同的需要,開發(fā)者需要掌握不同的圖像處理芯片和軟件的開發(fā)知識,這大大增加了新產(chǎn)品開發(fā)的難度和開發(fā)周期。針對上述情況,TI公司在DSP技術(shù)的基礎(chǔ)上,結(jié)合ARM、圖像編解碼標(biāo)準(zhǔn),TI編程規(guī)范等提出了達(dá)芬奇技術(shù)架構(gòu)。Davinci技術(shù)架構(gòu)大大降低了圖像處理的復(fù)雜度,縮短了產(chǎn)品的研發(fā)周期,并且還能提高產(chǎn)品性能。
[0003]隨著DSP處理速度提高和開發(fā)工具的完善,其應(yīng)用范圍越來越廣泛。由于DSP的內(nèi)部RAM有限,所以要實(shí)現(xiàn)大量數(shù)據(jù)的采集和處理,需要對DSP的RAM進(jìn)行擴(kuò)展。
[0004]另外,在無線通信的過程中,傳輸?shù)耐谴袛?shù)據(jù),但是由于DSP本身硬件原理和指令的特點(diǎn),使得DSP不能與無線通信設(shè)備進(jìn)行無縫連接。
[0005]通過DSP的EMIF接口與FPGA進(jìn)行連接,可以使得DSP獲得較大的外部存儲空間。同時,由于FPGA具有編程靈活性的特點(diǎn),使得DSP能夠與眾多的模塊設(shè)備進(jìn)行無縫連接,這樣就大大拓展了 DSP的應(yīng)用范圍。
【發(fā)明內(nèi)容】
[0006]本發(fā)明是為了解決現(xiàn)有在Linux系統(tǒng)下的DSP的EMIF與FPGA接口無法實(shí)現(xiàn)圖像數(shù)據(jù)傳輸?shù)膯栴},本發(fā)明提供了一種嵌入式Linux系統(tǒng)下的EMIF與FPGA的接口驅(qū)動方法。
[0007]嵌入式Linux系統(tǒng)下的EMIF與FPGA的接口驅(qū)動方法,它基于下述發(fā)送裝置和接收裝置實(shí)現(xiàn)的,發(fā)送裝置的數(shù)據(jù)信號輸出端與接收裝置的數(shù)據(jù)信號輸入端連接,
[0008]發(fā)送裝置包括一個DSP和一個FPGA,其中,所述的DSP的寫使能控制信號輸出端與FPGA的寫使能信號輸入端連接,DSP的寫時鐘信號輸出端與FPGA的寫時鐘信號輸入端連接,DSP的數(shù)據(jù)信號輸出端與FPGA的數(shù)據(jù)信號輸入端連接,發(fā)送裝置中FPGA的數(shù)據(jù)信號輸出端作為發(fā)送裝置的數(shù)據(jù)信號輸出端;
[0009]接收裝置包括一個DSP和一個FPGA,其中,所述的FPGA的讀使能控制信號輸入端與DSP的讀使能信號輸出端連接,F(xiàn)PGA的讀時鐘信號輸入端與DSP的讀時鐘信號輸出端連接,F(xiàn)PGA的中斷觸發(fā)信號輸出端與DSP的中斷信號輸入端連接,F(xiàn)PGA的數(shù)據(jù)信號輸出端與DSP的數(shù)據(jù)信號輸入端連接,接收裝置中FPGA的數(shù)據(jù)信號輸入端作為接收裝置的數(shù)據(jù)信號輸入端;
[0010]發(fā)送裝置中的DSP和接收裝置中的DSP均為含有EMIF端口的DSP,
[0011]發(fā)送裝置中的DSP和接收裝置中的DSP均嵌入了 Linux操作系統(tǒng)和EMIF驅(qū)動模塊,在Linux操作系統(tǒng)下,EMIF驅(qū)動模塊用于實(shí)現(xiàn)DSP與FPGA的通信,
[0012]嵌入在發(fā)送裝置中的DSP內(nèi)部的EMIF驅(qū)動模塊實(shí)現(xiàn)對FPGA接口驅(qū)動的方法為,[0013]步驟1:實(shí)現(xiàn)EMIF驅(qū)動模塊對驅(qū)動設(shè)備加載函數(shù)的加載和該驅(qū)動設(shè)備卸載函數(shù)的卸載,
[0014]步驟2:通過EMIF驅(qū)動模塊,將FPGA的FIFO映射為DSP的一個內(nèi)存地址,將對FIFO的寫操作映射為對所述的內(nèi)存地址的寫操作,實(shí)現(xiàn)發(fā)送裝置中的DSP的EMIF端口對發(fā)送裝置中的FPGA中FIFO進(jìn)行寫操作,
[0015]步驟3:接收裝置中的DSP接收到中斷觸發(fā)信號后,執(zhí)行中斷處理例程,使接收裝置中的DSP的EMIF端口從接收裝置中的FPGA的FIFO中讀出指定數(shù)目的字節(jié),并存儲到Linux操作系統(tǒng)內(nèi)核的緩存區(qū)中,喚醒讀進(jìn)程;
[0016]步驟4:通過EMIF驅(qū)動模塊,將FPGA的FIFO映射為DSP的一個內(nèi)存地址,將對FIFO的讀操作映射為對所述的內(nèi)存地址的讀操作,實(shí)現(xiàn)接收裝置中的DSP的EMIF端口對接收裝置中的FPGA中FIFO進(jìn)行讀操作,即完成EMIF端口與FPGA的接口之間的數(shù)據(jù)通信。
[0017]所述的實(shí)現(xiàn)EMIF驅(qū)動模塊對驅(qū)動設(shè)備加載函數(shù)的加載和該驅(qū)動設(shè)備卸載函數(shù)的卸載中,EMIF驅(qū)動模塊對驅(qū)動設(shè)備加載函數(shù)的加載過程為:
[0018]在EMIF驅(qū)動模塊對驅(qū)動設(shè)備進(jìn)行驅(qū)動的過程中,首先,對設(shè)備號進(jìn)行申請,并將EMIF驅(qū)動模塊注冊到Linux操作系統(tǒng)中,Linux操作系統(tǒng)通過設(shè)備號確定該設(shè)備對應(yīng)的EMIF驅(qū)動模塊,完成EMIF驅(qū)動模塊對驅(qū)動設(shè)備加載函數(shù)的加載,
[0019]EMIF驅(qū)動模塊對驅(qū)動設(shè)備卸載函數(shù)的卸載過程為:
[0020]將設(shè)備號進(jìn)行釋放,并將驅(qū)動設(shè)備對應(yīng)的EMIF驅(qū)動模塊所占用的內(nèi)存進(jìn)行釋放,并返回I/o資源給系統(tǒng),完成EMIF驅(qū)動模塊對驅(qū)動設(shè)備卸載函數(shù)的卸載。
[0021]所述的實(shí)現(xiàn)發(fā)送裝置中的DSP的EMIF端口對發(fā)送裝置中的FPGA中FIFO進(jìn)行寫操作的具體過程為,
[0022]通過寫操作readO函數(shù)將數(shù)據(jù)從發(fā)送裝置中的DSP中復(fù)制到發(fā)送裝置中的FPGA的FIFO中。
[0023]所述的實(shí)現(xiàn)接收裝置中的DSP的EMIF端口對接收裝置中的FPGA中FIFO進(jìn)行讀操作的具體過程為,
[0024]通過讀操作writeO函數(shù)將接收裝置中DSP的內(nèi)核緩存區(qū)的數(shù)據(jù)復(fù)制到用戶空間。
[0025]所述的接收裝置中的DSP接收到中斷觸發(fā)信號后,執(zhí)行中斷處理例程的具體過程為,
[0026]步驟4-1:清除中斷標(biāo)志,執(zhí)行步驟4-2,
[0027]步驟4-2:采用1/0操作函數(shù)將接收裝置的FPGA中FIFO的數(shù)據(jù)復(fù)制到接收裝置的DSP的內(nèi)核空間的緩存區(qū),執(zhí)行步驟4-3,
[0028]步驟4-3:判斷內(nèi)核空間的緩存區(qū)是否滿一半,結(jié)果為是,執(zhí)行步驟4-4,結(jié)果為否,執(zhí)行步驟4-5,
[0029]步驟4-4:喚醒阻塞的用戶空間的讀進(jìn)程,執(zhí)行步驟4-5 ;
[0030]步驟4-5:中斷返回。
[0031]所述的通過讀操作write O函數(shù)將接收裝置中DSP的內(nèi)核緩存區(qū)的數(shù)據(jù)復(fù)制到用戶空間的具體過程為:
[0032]步驟5-1:判斷接收裝置中DSP的內(nèi)核緩存區(qū)是否為空,結(jié)果為是,執(zhí)行步驟5-2,結(jié)果為否,執(zhí)行步驟5-3,
[0033]步驟5-2:讀進(jìn)程休眠,直到緩存區(qū)不為空時,執(zhí)行步驟5-3,
[0034]步驟5-3:喚醒讀進(jìn)程,執(zhí)行步驟5-4,
[0035]步驟5-4:通過讀操作writeO函數(shù)將接收裝置中DSP的內(nèi)核緩存區(qū)的數(shù)據(jù)復(fù)制到用戶空間,執(zhí)行步驟5-5,
[0036]步驟5-5:釋放信號量。
[0037]所述的通過寫操作readO函數(shù)將數(shù)據(jù)從發(fā)送裝置中的DSP中復(fù)制到發(fā)送裝置中的FPGA的FIFO中的具體過程為:
[0038]步驟3-1:在發(fā)送裝置中DSP的內(nèi)核空間申請緩存區(qū)后,執(zhí)行步驟3-2,
[0039]步驟3-2:將用戶空間的數(shù)據(jù)復(fù)制到內(nèi)核空間的緩存區(qū),執(zhí)行步驟3-3,
[0040]步驟3-3:通過寫操作readO函數(shù)將內(nèi)核空間緩存區(qū)內(nèi)容復(fù)制到發(fā)送裝置中的FPGA的FIFO中,執(zhí)行步驟3-4 ;
[0041]步驟3-4:釋放信號量。
[0042]所述的發(fā)送裝置中的DSP和接收裝置中的DSP均采用型號為TMS320DM365的芯片實(shí)現(xiàn)。整個系統(tǒng)中,設(shè)置3個測試點(diǎn)A、B、C,進(jìn)行測試,測試點(diǎn)A、B、C在系統(tǒng)中的位置如圖4所示。
[0043]在測試過程中,首先發(fā)送裝置中TMS320DM365向該裝置中FPGA發(fā)送數(shù)據(jù),然后發(fā)送裝置中FPGA將數(shù)據(jù)發(fā)送給接收裝置中FPGA,最后接收裝置中FPGA再將數(shù)據(jù)發(fā)送給接收裝置中TMS320DM365。其中A、B和C三個測試點(diǎn)的FPGA波形分別如圖6、7和8所示,通過比較TMS320DM365發(fā)送與接收的數(shù)據(jù),證明TMS320DM365與FPGA之間的接口設(shè)計是正確的。
[0044]本發(fā)明帶來的有益效果是,實(shí)現(xiàn)了 Linux系統(tǒng)下的DSP的EMIF與FPGA接口實(shí)現(xiàn)圖像數(shù)據(jù)傳輸。
【專利附圖】
【附圖說明】
[0045]圖1為【具體實(shí)施方式】一所述的發(fā)送裝置和接收裝置的原理示意圖;
[0046]圖2為【具體實(shí)施方式】六中,通過讀操作write O函數(shù)將接收裝置中DSP的內(nèi)核緩存區(qū)的數(shù)據(jù)復(fù)制到用戶空間的流程圖;
[0047]圖3為【具體實(shí)施方式】七中,通過寫操作read O函數(shù)將數(shù)據(jù)從發(fā)送裝置中的DSP中復(fù)制到發(fā)送裝置中的FPGA的FIFO中的流程圖;
[0048]圖4為【具體實(shí)施方式】八中,測試點(diǎn)A、B、C在發(fā)送裝置和接收裝置中的位置關(guān)系示意圖;
[0049]圖5為【具體實(shí)施方式】五中,所述的接收裝置中的DSP接收到中斷觸發(fā)信號后,執(zhí)行中斷處理例程的流程圖;
[0050]圖6為測試點(diǎn)A的波形示意圖;
[0051]圖7為測試點(diǎn)B的波形示意圖;
[0052]圖8為測試點(diǎn)C的波形示意圖。
【具體實(shí)施方式】[0053]【具體實(shí)施方式】一:參見圖1說明本實(shí)施方式,本實(shí)施方式所述的嵌入式Linux系統(tǒng)下的EMIF與FPGA的接口驅(qū)動方法,它基于下述發(fā)送裝置和接收裝置實(shí)現(xiàn)的,發(fā)送裝置的數(shù)據(jù)信號輸出端與接收裝置的數(shù)據(jù)信號輸入端連接,
[0054]發(fā)送裝置包括一個DSP和一個FPGA,其中,所述的DSP的寫使能控制信號輸出端與FPGA的寫使能信號輸入端連接,DSP的寫時鐘信號輸出端與FPGA的寫時鐘信號輸入端連接,DSP的數(shù)據(jù)信號輸出端與FPGA的數(shù)據(jù)信號輸入端連接,發(fā)送裝置中FPGA的數(shù)據(jù)信號輸出端作為發(fā)送裝置的數(shù)據(jù)信號輸出端;
[0055]接收裝置包括一個DSP和一個FPGA,其中,所述的FPGA的讀使能控制信號輸入端與DSP的讀使能信號輸出端連接,F(xiàn)PGA的讀時鐘信號輸入端與DSP的讀時鐘信號輸出端連接,F(xiàn)PGA的中斷觸發(fā)信號輸出端與DSP的中斷信號輸入端連接,F(xiàn)PGA的數(shù)據(jù)信號輸出端與DSP的數(shù)據(jù)信號輸入端連接,接收裝置中FPGA的數(shù)據(jù)信號輸入端作為接收裝置的數(shù)據(jù)信號輸入端;
[0056]發(fā)送裝置中的DSP和接收裝置中的DSP均為含有EMIF端口的DSP,
[0057]發(fā)送裝置中的DSP和接收裝置中的DSP均嵌入了 Linux操作系統(tǒng)和EMIF驅(qū)動模塊,在Linux操作系統(tǒng)下,EMIF驅(qū)動模塊用于實(shí)現(xiàn)DSP與FPGA的通信,
[0058]嵌入在發(fā)送裝置中的DSP內(nèi)部的EMIF驅(qū)動模塊實(shí)現(xiàn)對FPGA接口驅(qū)動的方法為,
[0059]步驟1:實(shí)現(xiàn)EMIF驅(qū)動模塊對驅(qū)動設(shè)備加載函數(shù)的加載和該驅(qū)動設(shè)備卸載函數(shù)的卸載,
[0060]步驟2:通過EMIF驅(qū)動模塊,將FPGA的FIFO映射為DSP的一個內(nèi)存地址,將對FIFO的寫操作映射為對所述的內(nèi)存地址的寫操作,實(shí)現(xiàn)發(fā)送裝置中的DSP的EMIF端口對發(fā)送裝置中的FPGA中FIFO進(jìn)行寫操作,
[0061]步驟3:接收裝置中的DSP接收到中斷觸發(fā)信號后,執(zhí)行中斷處理例程,使接收裝置中的DSP的EMIF端口從接收裝置中的FPGA的FIFO中讀出指定數(shù)目的字節(jié),并存儲到Linux操作系統(tǒng)內(nèi)核的緩存區(qū)中,喚醒讀進(jìn)程;
[0062]步驟4:通過EMIF驅(qū)動模塊,將FPGA的FIFO映射為DSP的一個內(nèi)存地址,將對FIFO的讀操作映射為對所述的內(nèi)存地址的讀操作,實(shí)現(xiàn)接收裝置中的DSP的EMIF端口對接收裝置中的FPGA中FIFO進(jìn)行讀操作,即完成EMIF端口與FPGA的接口之間的數(shù)據(jù)通信。
[0063]【具體實(shí)施方式】二:本實(shí)施方式與【具體實(shí)施方式】一所述的嵌入式Linux系統(tǒng)下的EMIF與FPGA的接口驅(qū)動方法的區(qū)別在于,所述的實(shí)現(xiàn)EMIF驅(qū)動模塊對驅(qū)動設(shè)備加載函數(shù)的加載和該驅(qū)動設(shè)備卸載函數(shù)的卸載中,
[0064]EMIF驅(qū)動模塊對驅(qū)動設(shè)備加載函數(shù)的加載過程為:
[0065]在EMIF驅(qū)動模塊對驅(qū)動設(shè)備進(jìn)行驅(qū)動的過程中,首先,對設(shè)備號進(jìn)行申請,并將EMIF驅(qū)動模塊注冊到Linux操作系統(tǒng)中,Linux操作系統(tǒng)通過設(shè)備號確定該設(shè)備對應(yīng)的EMIF驅(qū)動模塊,完成EMIF驅(qū)動模塊對驅(qū)動設(shè)備加載函數(shù)的加載,
[0066]EMIF驅(qū)動模塊對驅(qū)動設(shè)備卸載函數(shù)的卸載過程為:
[0067]將設(shè)備號進(jìn)行釋放,并將驅(qū)動設(shè)備對應(yīng)的EMIF驅(qū)動模塊所占用的內(nèi)存進(jìn)行釋放,并返回I/o資源給系統(tǒng),完成EMIF驅(qū)動模塊對驅(qū)動設(shè)備卸載函數(shù)的卸載。【具體實(shí)施方式】三:本實(shí)施方式與【具體實(shí)施方式】一或二所述的嵌入式Linux系統(tǒng)下的EMIF與FPGA的接口驅(qū)動方法的區(qū)別在于,所述的實(shí)現(xiàn)發(fā)送裝置中的DSP的EMIF端口對發(fā)送裝置中的FPGA中FIFO進(jìn)行寫操作的具體過程為,
[0068]通過寫操作readO函數(shù)將數(shù)據(jù)從發(fā)送裝置中的DSP中復(fù)制到發(fā)送裝置中的FPGA的FIFO中。
[0069]【具體實(shí)施方式】四:本實(shí)施方式與【具體實(shí)施方式】三所述的嵌入式Linux系統(tǒng)下的EMIF與FPGA的接口驅(qū)動方法的區(qū)別在于,所述的實(shí)現(xiàn)接收裝置中的DSP的EMIF端口對接收裝置中的FPGA中FIFO進(jìn)行讀操作的具體過程為,
[0070]通過讀操作writeO函數(shù)將接收裝置中DSP的內(nèi)核緩存區(qū)的數(shù)據(jù)復(fù)制到用戶空間。
[0071]【具體實(shí)施方式】五:參見圖5說明本實(shí)施方式,本實(shí)施方式與【具體實(shí)施方式】一、二或四所述的嵌入式Linux系統(tǒng)下的EMIF與FPGA的接口驅(qū)動方法的區(qū)別在于,所述的接收裝置中的DSP接收到中斷觸發(fā)信號后,執(zhí)行中斷處理例程的具體過程為,
[0072]步驟4-1:清除中斷標(biāo)志,執(zhí)行步驟4-2,
[0073]步驟4-2:采用I/O操作函數(shù)將接收裝置的FPGA中FIFO的數(shù)據(jù)復(fù)制到接收裝置的DSP的內(nèi)核空間的緩存區(qū),執(zhí)行步驟4-3,
[0074]步驟4-3:判斷內(nèi)核空間的緩存區(qū)是否滿一半,結(jié)果為是,執(zhí)行步驟4-4,結(jié)果為否,執(zhí)行步驟4-5,
[0075]步驟4-4:喚醒阻塞的用戶空間的讀進(jìn)程,執(zhí)行步驟4-5 ;
[0076]步驟4-5:中斷返回。
[0077]【具體實(shí)施方式】六:參見圖2說明本實(shí)施方式,本實(shí)施方式與【具體實(shí)施方式】四所述的嵌入式Linux系統(tǒng)下的EMIF與FPGA的接口驅(qū)動方法的區(qū)別在于,所述的通過讀操作write O函數(shù)將接收裝置中DSP的內(nèi)核緩存區(qū)的數(shù)據(jù)復(fù)制到用戶空間的具體過程為:
[0078]步驟5-1:判斷接收裝置中DSP的內(nèi)核緩存區(qū)是否為空,結(jié)果為是,執(zhí)行步驟5-2,結(jié)果為否,執(zhí)行步驟5-3,
[0079]步驟5-2:讀進(jìn)程休眠,直到緩存區(qū)不為空時,執(zhí)行步驟5-3,
[0080]步驟5-3:喚醒讀進(jìn)程,執(zhí)行步驟5-4,
[0081]步驟5-4:通過讀操作writeO函數(shù)將接收裝置中DSP的內(nèi)核緩存區(qū)的數(shù)據(jù)復(fù)制到用戶空間,執(zhí)行步驟5-5,
[0082]步驟5-5:釋放信號量。
[0083]【具體實(shí)施方式】七:參見圖3說明本實(shí)施方式,本實(shí)施方式與【具體實(shí)施方式】三所述的嵌入式Linux系統(tǒng)下的EMIF與FPGA的接口驅(qū)動方法的區(qū)別在于,所述的通過寫操作read O函數(shù)將數(shù)據(jù)從發(fā)送裝置中的DSP中復(fù)制到發(fā)送裝置中的FPGA的FIFO中的具體過程為:
[0084]步驟3-1:在發(fā)送裝置中DSP的內(nèi)核空間申請緩存區(qū)后,執(zhí)行步驟3-2,
[0085]步驟3-2:將用戶空間的數(shù)據(jù)復(fù)制到內(nèi)核空間的緩存區(qū),執(zhí)行步驟3-3,
[0086]步驟3-3:通過寫操作readO函數(shù)將內(nèi)核空間緩存區(qū)內(nèi)容復(fù)制到發(fā)送裝置中的FPGA的FIFO中,執(zhí)行步驟3-4 ;
[0087]步驟3-4:釋放信號量。
[0088]【具體實(shí)施方式】八:本實(shí)施方式與【具體實(shí)施方式】一、二、四、六或七所述的嵌入式Linux系統(tǒng)下的EMIF與FPGA的接口驅(qū)動方法的區(qū)別在于,所述的發(fā)送裝置中的DSP和接收裝置中的DSP均采用型號為TMS320DM365的芯片實(shí)現(xiàn)。
[0089]本實(shí)施方式中,發(fā)送裝置的TMS320DM365與FPGA的硬件連接中,EM CE是TMS320DM365輸出的片選信號,作為FPGA中FIFO的寫使能,且低電平有效;EM_D是TMS320DM365的雙向數(shù)據(jù)線,此模式下為數(shù)據(jù)輸出總線,與FPGA輸入FIFO相連;1£M —Wli為TMS320DM365輸出的寫使能信號,作為FPGA中FIFO的寫時鐘,由EMIF接口的寫時序可知,數(shù)據(jù)會在EM — Wl£的上升沿被存入發(fā)送裝置的FPGA的FIFO中;
[0090]接收裝置的TMS320DM365與FPGA的硬件連接中,EM CE是TMS320DM365輸出的片選信號,作為FPGA中FIFO的讀使能,且低電平有效;EM_D是TMS320DM365的雙向數(shù)據(jù)線,此模式下為數(shù)據(jù)輸入總線,與FPGA輸出FIFO相連;EM — OE為TMS320DM365輸出的讀
使能信號,作為FPGA中FIFO的讀時鐘。由EMIF接口的讀時序可知,在EM —OE的上升沿將視頻數(shù)據(jù)通過EMIF接口由FPGA的FIFO寫入TMS320DM365中。
[0091]本實(shí)施方式中,整個系統(tǒng)中,設(shè)置3個測試點(diǎn)A、B、C,進(jìn)行測試,測試點(diǎn)A、B、C在系統(tǒng)中的位置如圖4所示。
[0092]在測 試過程中,首先發(fā)送裝置中TMS320DM365向該裝置中FPGA發(fā)送數(shù)據(jù),然后發(fā)送裝置中FPGA將數(shù)據(jù)發(fā)送給接收裝置中FPGA,最后接收裝置中FPGA再將數(shù)據(jù)發(fā)送給接收裝置中TMS320DM365。其中A、B和C三個測試點(diǎn)的FPGA波形分別如圖6、7和8所示,通過比較TMS320DM365發(fā)送與接收的數(shù)據(jù),證明TMS320DM365與FPGA之間的接口設(shè)計是正確的。
【權(quán)利要求】
1.嵌入式Linux系統(tǒng)下的EMIF與FPGA的接口驅(qū)動方法,其特征在于,它基于下述發(fā)送裝置和接收裝置實(shí)現(xiàn)的,發(fā)送裝置的數(shù)據(jù)信號輸出端與接收裝置的數(shù)據(jù)信號輸入端連接, 發(fā)送裝置包括一個DSP和一個FPGA,其中,所述的DSP的寫使能控制信號輸出端與FPGA的寫使能信號輸入端連接,DSP的寫時鐘信號輸出端與FPGA的寫時鐘信號輸入端連接,DSP的數(shù)據(jù)信號輸出端與FPGA的數(shù)據(jù)信號輸入端連接,發(fā)送裝置中FPGA的數(shù)據(jù)信號輸出端作為發(fā)送裝置的數(shù)據(jù)信號輸出端; 接收裝置包括一個DSP和一個FPGA,其中,所述的FPGA的讀使能控制信號輸入端與DSP的讀使能信號輸出端連接,F(xiàn)PGA的讀時鐘信號輸入端與DSP的讀時鐘信號輸出端連接,F(xiàn)PGA的中斷觸發(fā)信號輸出端與DSP的中斷信號輸入端連接,F(xiàn)PGA的數(shù)據(jù)信號輸出端與DSP的數(shù)據(jù)信號輸入端連接,接收裝置中FPGA的數(shù)據(jù)信號輸入端作為接收裝置的數(shù)據(jù)信號輸入端; 發(fā)送裝置中的DSP和接收裝置中的DSP均為含有EMIF端口的DSP, 發(fā)送裝置中的DSP和接收裝置中的DSP均嵌入了 Linux操作系統(tǒng)和EMIF驅(qū)動模塊,在Linux操作系統(tǒng)下,EMIF驅(qū)動模塊用于實(shí)現(xiàn)DSP與FPGA的通信, 嵌入在發(fā)送裝置中的DSP內(nèi)部的EMIF驅(qū)動模塊實(shí)現(xiàn)對FPGA接口驅(qū)動的方法為, 步驟1:實(shí)現(xiàn)EMIF驅(qū)動模塊對驅(qū)動設(shè)備加載函數(shù)的加載和該驅(qū)動設(shè)備卸載函數(shù)的卸載, 步驟2:通過EMIF驅(qū)動模塊,將FPGA的FIFO映射為DSP的一個內(nèi)存地址,將對FIFO的寫操作映射為對所述的內(nèi)存地址的寫操作,實(shí)現(xiàn)發(fā)送裝置中的DSP的EMIF端口對發(fā)送裝置中的FPGA中FIFO進(jìn)行寫操作, 步驟3:接收裝置中的DSP接收到中斷觸發(fā)信號后,執(zhí)行中斷處理例程,使接收裝置中的DSP的EMIF端口從接收裝置中的FPGA的FIFO中讀出指定數(shù)目的字節(jié),并存儲到Linux操作系統(tǒng)內(nèi)核的緩存區(qū)中,喚醒讀進(jìn)程; 步驟4:通過EMIF驅(qū)動模塊,將FPGA的FIFO映射為DSP的一個內(nèi)存地址,將對FIFO的讀操作映射為對所述的內(nèi)存地址的讀操作,實(shí)現(xiàn)接收裝置中的DSP的EMIF端口對接收裝置中的FPGA中FIFO進(jìn)行讀操作,即完成EMIF端口與FPGA的接口之間的數(shù)據(jù)通信。
2.根據(jù)權(quán)利要求1所述的嵌入式Linux系統(tǒng)下的EMIF與FPGA的接口驅(qū)動方法,其特征在于,所述的實(shí)現(xiàn)EMIF驅(qū)動模塊對驅(qū)動設(shè)備加載函數(shù)的加載和該驅(qū)動設(shè)備卸載函數(shù)的卸載中, EMIF驅(qū)動模塊對驅(qū)動設(shè)備加載函數(shù)的加載過程為: 在EMIF驅(qū)動模塊對驅(qū)動設(shè)備進(jìn)行驅(qū)動的過程中,首先,對設(shè)備號進(jìn)行申請,并將EMIF驅(qū)動模塊注冊到Linux操作系統(tǒng)中,Linux操作系統(tǒng)通過設(shè)備號確定該設(shè)備對應(yīng)的EMIF驅(qū)動模塊,完成EMIF驅(qū)動模塊對驅(qū)動設(shè)備加載函數(shù)的加載, EMIF驅(qū)動模塊對驅(qū)動設(shè)備卸載函數(shù)的卸載過程為: 將設(shè)備號進(jìn)行釋放,并將驅(qū)動設(shè)備對應(yīng)的EMIF驅(qū)動模塊所占用的內(nèi)存進(jìn)行釋放,并返回I/O資源給系統(tǒng),完成EMIF驅(qū)動模塊對驅(qū)動設(shè)備卸載函數(shù)的卸載。
3.根據(jù)權(quán)利要求1或2所述的嵌入式Linux系統(tǒng)下的EMIF與FPGA的接口驅(qū)動方法,其特征在于,所述的實(shí)現(xiàn)發(fā)送裝置中的DSP的EMIF端口對發(fā)送裝置中的FPGA中FIFO進(jìn)行寫操作的具體過程為,通過寫操作readO函數(shù)將數(shù)據(jù)從發(fā)送裝置中的DSP中復(fù)制到發(fā)送裝置中的FPGA的FIFO 中。
4.根據(jù)權(quán)利要求3所述的嵌入式Linux系統(tǒng)下的EMIF與FPGA的接口驅(qū)動方法,其特征在于,所述的實(shí)現(xiàn)接收裝置中的DSP的EMIF端口對接收裝置中的FPGA中FIFO進(jìn)行讀操作的具體過程為, 通過讀操作writeO函數(shù)將接收裝置中DSP的內(nèi)核緩存區(qū)的數(shù)據(jù)復(fù)制到用戶空間。
5.根據(jù)權(quán)利要求1、2或4所述的嵌入式Linux系統(tǒng)下的EMIF與FPGA的接口驅(qū)動方法,其特征在于,所述的接收裝置中的DSP接收到中斷觸發(fā)信號后,執(zhí)行中斷處理例程的具體過程為, 步驟4-1:清除中斷標(biāo)志,執(zhí)行步驟4-2, 步驟4-2:采用I/O操作函數(shù)將接收裝置的FPGA中FIFO的數(shù)據(jù)復(fù)制到接收裝置的DSP的內(nèi)核空間的緩存區(qū),執(zhí)行步驟4-3, 步驟4-3:判斷內(nèi)核空間的緩存區(qū)是否滿一半,結(jié)果為是,執(zhí)行步驟4-4,結(jié)果為否,執(zhí)行步驟4-5, 步驟4-4:喚醒阻塞的用戶空間的讀進(jìn)程,執(zhí)行步驟4-5 ; 步驟4-5:中斷返回。
6.根據(jù)權(quán)利要求4所述的嵌入式Linux系統(tǒng)下的EMIF與FPGA的接口驅(qū)動方法,其特征在于,所述的通過讀操作write O函數(shù)將接收裝置中DSP的內(nèi)核緩存區(qū)的數(shù)據(jù)復(fù)制到用戶空間的具體過程為: 步驟5-1:判斷接收裝置中DSP的內(nèi)核緩存區(qū)是否為空,結(jié)果為是,執(zhí)行步驟5-2,結(jié)果為否,執(zhí)行步驟5-3, 步驟5-2:讀進(jìn)程休眠,直到緩存區(qū)不為空時,執(zhí)行步驟5-3, 步驟5-3:喚醒讀進(jìn)程,執(zhí)行步驟5-4, 步驟5-4:通過讀操作write O函數(shù)將接收裝置中DSP的內(nèi)核緩存區(qū)的數(shù)據(jù)復(fù)制到用戶空間,執(zhí)行步驟5-5, 步驟5-5:釋放信號量。
7.根據(jù)權(quán)利要求3所述的嵌入式Linux系統(tǒng)下的EMIF與FPGA的接口驅(qū)動方法,其特征在于,所述的通過寫操作read O函數(shù)將數(shù)據(jù)從發(fā)送裝置中的DSP中復(fù)制到發(fā)送裝置中的FPGA的FIFO中的具體過程為: 步驟3-1:在發(fā)送裝置中DSP的內(nèi)核空間申請緩存區(qū)后,執(zhí)行步驟3-2, 步驟3-2:將用戶空間的數(shù)據(jù)復(fù)制到內(nèi)核空間的緩存區(qū),執(zhí)行步驟3-3, 步驟3-3:通過寫操作readO函數(shù)將內(nèi)核空間緩存區(qū)內(nèi)容復(fù)制到發(fā)送裝置中的FPGA的FIFO中,執(zhí)行步驟3-4; 步驟3-4:釋放信號量。
8.根據(jù)權(quán)利要求1、2、4、6或7所述的嵌入式Linux系統(tǒng)下的EMIF與FPGA的接口驅(qū)動方法,其特征在于,所述的發(fā)送裝置中的DSP和接收裝置中的DSP均采用型號為TMS320DM365的芯片實(shí)現(xiàn)。
【文檔編號】G06F9/445GK103984586SQ201410255584
【公開日】2014年8月13日 申請日期:2014年6月10日 優(yōu)先權(quán)日:2014年6月10日
【發(fā)明者】高玉龍, 張蔚, 劉佳鑫, 馬永奎, 李然, 張中兆 申請人:哈爾濱工業(yè)大學(xué)