陳術(shù)濤,俞鵬先,沈志,王春聯(lián),金敏
?。ㄖ袊教炜乒ぜ瘓F(tuán)第九總體設(shè)計(jì)部,湖北 武漢 430040)
摘要:詳細(xì)介紹了TI公司TMS320C6678多核DSP高速外設(shè)模塊EMIF16(外部存儲(chǔ)器接口)的功能及特性,利用EMIF模塊擴(kuò)展存儲(chǔ)空間大、通信速度快、硬件接口電路簡單、性能穩(wěn)定等特點(diǎn),設(shè)計(jì)并實(shí)現(xiàn)了一種基于EMIF模塊的DSP與FPGA異步通信接口,重點(diǎn)描述了接口通信系統(tǒng)架構(gòu)設(shè)計(jì)和具體軟件實(shí)現(xiàn)。測試驗(yàn)證表明基于該接口可進(jìn)行DSP與FPGA之間多種格式數(shù)據(jù)傳輸,接口運(yùn)行穩(wěn)定可靠,擴(kuò)展了TMS320C6678多核DSP處理芯片與外部器件通信系統(tǒng)接口的設(shè)計(jì)方式。
關(guān)鍵詞:EMIF;DSP;FPGA;異步接口
中圖分類號(hào):TN911; TP39文獻(xiàn)標(biāo)識(shí)碼:ADOI: 10.19358/j.issn.1674-7720.2017.07.007
引用格式:陳術(shù)濤,俞鵬先,沈志,等.基于高速外設(shè)模塊的多核DSP與FPGA通信系統(tǒng)設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2017,36(7):22-25.
0引言
隨著信息與通信技術(shù)的快速發(fā)展和進(jìn)步,其在圖像處理、模式識(shí)別、雷達(dá)信號(hào)處理、電子對(duì)抗、無線通信、導(dǎo)航定位等領(lǐng)域得到越來越深入的應(yīng)用,隨之而來的對(duì)硬件平臺(tái)高效穩(wěn)定通信能力的需求也在同步增長。目前,信號(hào)處理系統(tǒng)的硬件平臺(tái)大多采用高度集成的嵌入式系統(tǒng),基于DSP+FPGA的硬件架構(gòu)設(shè)計(jì)憑借其超強(qiáng)的處理能力和廣泛的工程應(yīng)用等優(yōu)勢,已經(jīng)成為當(dāng)前通用數(shù)字信號(hào)處理平臺(tái)的首選。TMS320C6678多核高速DSP芯片是目前TI公司最新推出的高性能數(shù)字信號(hào)處理芯片,處理能力領(lǐng)先,基于該芯片的硬件處理平臺(tái)市場應(yīng)用前景廣泛。本文針對(duì)TMS320C6678DSP芯片和Xilinx公司Kintex7系列FPGA組成的信號(hào)處理系統(tǒng)進(jìn)行研究,設(shè)計(jì)了一種基于EMIF16模塊的DSP與FPGA通信接口。該接口充分利用EMIF接口高速、穩(wěn)定、設(shè)計(jì)簡單等特性,同時(shí)配合FPGA邏輯處理能力強(qiáng)、可編程等優(yōu)點(diǎn)進(jìn)行接口邏輯設(shè)計(jì),工作性能穩(wěn)定,數(shù)據(jù)處理能力強(qiáng),功能靈活可擴(kuò)展,可適應(yīng)多種通信需求,很好地解決了DSP與FPGA之間的通信問題。
1EMIF16接口模塊特征
1.1EMIF16接口簡介
圖1EMIF16接口模塊框圖EMIF16是DSP芯片自帶的外部存儲(chǔ)器接口模塊,其主要功能是支持內(nèi)核CPU對(duì)外部擴(kuò)展存儲(chǔ)空間的訪問,EMIF16可與ASRAM、NOR Flash、NARD Flash等類型的異步存儲(chǔ)設(shè)備連接,異步訪問地址空間最大可擴(kuò)展為256 MB,接口模塊提供4個(gè)片選信號(hào),每個(gè)片選信號(hào)可選中64 MB獨(dú)立存儲(chǔ)空間。該接口模塊具有可編程能力,通過設(shè)置模塊控制寄存器的不同參數(shù)可調(diào)節(jié)接口讀寫時(shí)序和傳輸數(shù)據(jù)寬度等傳輸特性,EMIF16模塊接口結(jié)構(gòu)如圖1所示[1]。
由圖1可見,EMIF16模塊框圖主要由一系列信號(hào)引腳組成,各接口管腳功能如下:EMIFD[15:0]表示EMIF模塊讀寫數(shù)據(jù)的16位數(shù)據(jù)總線;EMIFA[23:0]表示EMIF模塊訪問存儲(chǔ)空間的24位地址總線;EMIFCE[3:0]表示EMIF模塊片選信號(hào),低電平有效,分別對(duì)應(yīng)DSP的CE0~CE3片選區(qū)間;EMIFBE[1:0]表示EMIF模塊字節(jié)使能信號(hào);EMIFWE表示EMIF模塊寫操作使能信號(hào),低電平有效;EMIFOE表示EMIF模塊輸出使能信號(hào),低電平有效;EMIFWAIT[1:0]表示EMIF模塊等待信號(hào);EMIFRnW表示EMIF模塊的讀寫使能信號(hào)[2]。通過對(duì)上述的數(shù)據(jù)總線、地址總線及控制信號(hào)的編程設(shè)計(jì)實(shí)現(xiàn)EMIF16接口與外部存儲(chǔ)器的通信功能。
1.2EMIF16接口連接及異步讀寫時(shí)序
EMIF16模塊外接不同類型存儲(chǔ)芯片時(shí)信號(hào)管腳的接口設(shè)置也不相同,本系統(tǒng)設(shè)計(jì)的通信系統(tǒng)中多核DSP的EMIF16模塊接口直接與FPGA連接,由FPGA端設(shè)計(jì)多個(gè)FIFO空間供DSP進(jìn)行讀寫,EMIF16模塊外接時(shí)序設(shè)計(jì)采用8-bit NOR Flash接口時(shí)序,具體接口框圖如圖2所示[3]。
EMIF16接口的每個(gè)讀/寫周期分為三個(gè)階段:建立時(shí)間(Setup)、觸發(fā)時(shí)間(Strobe)和保持時(shí)間(Hold),每個(gè)階段的相應(yīng)參數(shù)都可通過對(duì)EMIF16模塊控制寄存器編程進(jìn)行設(shè)置,具體參數(shù)設(shè)置在接口驅(qū)動(dòng)程序中實(shí)現(xiàn)。接口讀寫時(shí)序參數(shù)是EMIF接口設(shè)計(jì)中較為重要的參數(shù),DSP端與FPGA端接口時(shí)序必須保持一致才能實(shí)現(xiàn)數(shù)據(jù)穩(wěn)定傳輸,EMIF異步讀時(shí)序如圖3所示,EMIF異步寫時(shí)序如圖4所示。
圖3、圖4中Setup、Strobe、Hold等參數(shù)設(shè)置皆以EMIF16時(shí)鐘周期為基準(zhǔn),本系統(tǒng)設(shè)計(jì)中EMIF16模塊默認(rèn)使用DSP系統(tǒng)輸出時(shí)鐘中的SysClk7時(shí)鐘信號(hào),該時(shí)鐘頻率為芯片主頻的1/6分頻,本系統(tǒng)中使用的TMS320C6678多核DSP主頻配置為1 GHz,所以EMIF16接口時(shí)鐘頻率可達(dá)到166.67 MHz,能夠滿足高速串行通信需求[4]。
2DSP與FPGA通信系統(tǒng)設(shè)計(jì)
本文設(shè)計(jì)的DSP與FPGA通信接口基于圖2所示的異步 8bit NOR Flash接口連接圖要求進(jìn)行硬件電路設(shè)計(jì),同時(shí),基于該硬件平臺(tái)設(shè)計(jì)一種通信應(yīng)用系統(tǒng),實(shí)現(xiàn)DSP與FPGA之間數(shù)據(jù)的穩(wěn)定快速傳輸,本系統(tǒng)所設(shè)計(jì)的通信系統(tǒng)架構(gòu)如圖5所示。
圖5描述了一種基于EMIF16接口模塊的DSP與FPGA通信系統(tǒng)應(yīng)用框圖。FPGA端提供多個(gè)8 bit寬的FIFO供DSP進(jìn)行讀寫,DSP端除了使用EMIF模塊外,同時(shí)調(diào)用了CPU中斷系統(tǒng)資源配合消息傳輸。FPGA將消息寫入FIFO后發(fā)送相應(yīng)控制信號(hào)觸發(fā)DSP中斷,DSP收到讀消息中斷后啟動(dòng)EMIF接口讀取消息;DSP端發(fā)送消息時(shí)可直接將數(shù)據(jù)寫入EMIF模塊對(duì)應(yīng)的寄存器,EMIF模塊在異步寫周期內(nèi)將數(shù)據(jù)寫入FPGA提供的存儲(chǔ)FIFO中。此框架中FPGA端的讀/寫存儲(chǔ)區(qū)分別提供多個(gè)FIFO進(jìn)行通信,從而使該系統(tǒng)可進(jìn)行多種類別或者多協(xié)議的消息通信,提高了系統(tǒng)應(yīng)用的適應(yīng)性;在DSP數(shù)據(jù)接收端使用了緩存機(jī)制設(shè)計(jì),EMIF接口模塊接收的每一條消息首先存入緩存區(qū),然后再由CPU對(duì)緩存區(qū)消息逐條進(jìn)行校驗(yàn)和處理,這樣操作不僅提高了EMIF模塊接收消息的效率,而且將接收消息和處理消息兩個(gè)CPU主要線程進(jìn)行了分離,防止消息在未處理時(shí)被覆蓋或者篡改,保證了緩沖區(qū)數(shù)據(jù)的完整性和正確性,從而提高信號(hào)處理的穩(wěn)定與可靠性。
3通信系統(tǒng)軟件設(shè)計(jì)與實(shí)現(xiàn)
3.1通信接口軟件設(shè)計(jì)
根據(jù)EMIF16模塊接口特性,系統(tǒng)可擴(kuò)展訪問地址空間最大為256 MB, 存儲(chǔ)地址范圍為0x70000000~0x7FFFFFFF,平均分為4個(gè)CE地址空間,每個(gè)CE空間支持外接NAND、NOR及SRAM存儲(chǔ)器,每個(gè)CE空間都有單獨(dú)的異步配置寄存器(ACR)對(duì)其使用配置,EMIF16模塊寄存器地址空間為0x20C00000~0x20C00FF,共256 B,該地址空間內(nèi)包括EMIF16模塊的版本及狀態(tài)寄存器(RCSR)、異步等待周期寄存器 (AWCCR)、4個(gè)異步配置寄存器(ACR)及EMIF模塊中斷相關(guān)寄存器(IRR、IMR、IMSR、IMCR)等。要實(shí)現(xiàn)本系統(tǒng)所設(shè)計(jì)的通信接口功能,首先需對(duì)DSP的EMIF16模塊進(jìn)行驅(qū)動(dòng)初始化編程,即對(duì)上述相應(yīng)寄存器進(jìn)行編程配置,寄存器編程配置時(shí)可根據(jù)需要進(jìn)行重點(diǎn)位域編碼,與系統(tǒng)功能實(shí)現(xiàn)無關(guān)的寄存器位域可選擇默認(rèn)值配置。驅(qū)動(dòng)配置完成后方可進(jìn)行上層應(yīng)用系統(tǒng)的設(shè)計(jì)及實(shí)現(xiàn),本系統(tǒng)所設(shè)計(jì)的基于EMIF16接口的DSP與FPGA異步通信系統(tǒng)軟件流程如圖6所示。
如圖6所示,基于EMIF的接口通信程序完成系統(tǒng)初始化后即可與外界進(jìn)行通信,本文所設(shè)計(jì)的通信系統(tǒng)主要完成消息的接收與發(fā)送功能:接收端采用被動(dòng)接收模式,需依靠系統(tǒng)告知EMIF模塊進(jìn)行數(shù)據(jù)接收,本系統(tǒng)設(shè)計(jì)中使用中斷輔助實(shí)現(xiàn)數(shù)據(jù)接收功能,系統(tǒng)中使用GPIO9管腳上升沿信號(hào)作為中斷事件觸發(fā)CPU中斷,當(dāng)FPGA端將數(shù)據(jù)準(zhǔn)備好后即對(duì)GPIO9管腳進(jìn)行拉高電平操作,DSP端收到GPIO9上升沿信號(hào)后觸發(fā)INT9,CPU收到中斷信號(hào)后執(zhí)行中斷服務(wù)函數(shù),在中斷服務(wù)函數(shù)中對(duì)消息接收控制寄存器(RCR)進(jìn)行判斷并執(zhí)行相應(yīng)消息接收操作;發(fā)送端采用主動(dòng)發(fā)送模式,由CPU直接操作EMIF模塊進(jìn)行數(shù)據(jù)發(fā)送,為了保證DSP與FPGA發(fā)送消息的穩(wěn)定性,每次DSP發(fā)送消息時(shí)需查詢FPGA端對(duì)應(yīng)準(zhǔn)備狀態(tài),當(dāng)消息發(fā)送控制寄存器(TCR)對(duì)應(yīng)狀態(tài)準(zhǔn)備完成時(shí)才能進(jìn)行消息發(fā)送。
3.2通信控制寄存器設(shè)計(jì)
消息接收控制寄存器(RCR)和發(fā)送控制寄存器(TCR)是通信系統(tǒng)中為保障系統(tǒng)穩(wěn)定執(zhí)行而設(shè)計(jì)的輔助寄存器,并非芯片內(nèi)部固有寄存器,輔助寄存器RCR和TCR由FPGA芯片設(shè)計(jì)提供,具體位域所表示的信息根據(jù)系統(tǒng)需求制定。DSP芯片端在進(jìn)行讀寫操作時(shí)對(duì)指定地址進(jìn)行訪問即可獲得寄存器當(dāng)前有效信息,通過輔助寄存器的實(shí)時(shí)值分析可以判定系統(tǒng)當(dāng)前通信過程中消息類型及系統(tǒng)工作狀態(tài)等信息,從而保證通信過程的可控性與穩(wěn)定性。
接收消息控制寄存器如表1所示,當(dāng)某類消息已經(jīng)準(zhǔn)備好接收時(shí),其對(duì)應(yīng)的標(biāo)志位RxTypeX會(huì)被FPGA置1,反之則置0;發(fā)送端采用主動(dòng)發(fā)送模式,由CPU直接操作EMIF模塊進(jìn)行數(shù)據(jù)發(fā)送,為了保證DSP與FPGA發(fā)送消息的穩(wěn)定性,每次DSP發(fā)送消息時(shí)需查詢FPGA端對(duì)應(yīng)準(zhǔn)備狀態(tài),當(dāng)發(fā)送控制寄存器(TCR)對(duì)應(yīng)狀態(tài)準(zhǔn)備完成時(shí)才能進(jìn)行消息發(fā)送,發(fā)送控制寄存器如表2所示,當(dāng)某類消息準(zhǔn)備好發(fā)送時(shí),其對(duì)應(yīng)的標(biāo)志位TxRdyX會(huì)被FPGA置1,反之則置0。
RC:接收消息總標(biāo)志。
RxTypeA:1:消息類型為A;0:無該類型消息。
RxTypeB:1:消息類型為B;0:無該類型消息。
RxTypeC:1:消息類型為C;0:無該類型消息。
RxTypeD:1:消息類型為D;0:無該類型消息。
RSV:保留。
TC:發(fā)送消息準(zhǔn)備狀態(tài)總標(biāo)志。
TxRdyA:1:A類消息準(zhǔn)備好;0:未準(zhǔn)備好。
TxRdyB:1:B類消息準(zhǔn)備好;0:未準(zhǔn)備好。
TxRdyC:1:C類消息準(zhǔn)備好;0:未準(zhǔn)備好。
TxRdyD:1:D類消息準(zhǔn)備好;0:未準(zhǔn)備好。
RSV:保留。
3.3接口測試與驗(yàn)證
針對(duì)上文所設(shè)計(jì)的接口和系統(tǒng)流程進(jìn)行了測試與驗(yàn)證,選取CE0空間地址設(shè)置多個(gè)8 bit寬的FIFO,其中FIFO0地址為0x71000000,用于接收DSP端發(fā)送來的數(shù)據(jù),數(shù)據(jù)流向?yàn)閺腄SP到FPGA,測試數(shù)據(jù)采用升序;FIFO1地址為0x71010000,用于向DSP端發(fā)送數(shù)據(jù),數(shù)據(jù)流向?yàn)閺腇PGA到DSP,測試數(shù)據(jù)采用降序。測試結(jié)果如圖7、圖8所示。
實(shí)驗(yàn)結(jié)果表明,本文設(shè)計(jì)的DSP與FPGA之間的通信系統(tǒng)能夠按照設(shè)計(jì)要求工作,傳輸數(shù)據(jù)長度及地址可以根據(jù)需要進(jìn)行多種配置,經(jīng)過多次測試,數(shù)據(jù)讀寫正確,接口工作穩(wěn)定,滿足系統(tǒng)設(shè)計(jì)需求。
4結(jié)束語
本系統(tǒng)實(shí)現(xiàn)了基于EMIF16模塊的DSP與FPGA異步通信接口,系統(tǒng)設(shè)計(jì)簡單、性能穩(wěn)定,實(shí)現(xiàn)了DSP與FPGA之間的雙向高速通信,擴(kuò)展了多核DSP處理芯片與外圖界的通信方式。采用DSP與FPGA聯(lián)合設(shè)計(jì)的方式,可實(shí)現(xiàn)多種格式的高速數(shù)據(jù)傳輸,同時(shí)軟件架構(gòu)設(shè)計(jì)簡潔穩(wěn)定,有利于工程實(shí)現(xiàn)及應(yīng)用。
參考文獻(xiàn)
[1] Texas Instruments. TMS320C6678 multicore fixed and floatingpoint digital signal processor[S].2014.
?。?] 卞紅雨.TMS320C6000系列DSP的CPU與外設(shè)[M].北京:清華大學(xué)出版社,2007.
?。?] Texas Instruments.External Memory Interface (EMIF16) for KeyStone devices user guide[S].2011.
?。?] Texas Instruments.KeyStone architecture external memory interface (EMIF16) user guide[S].2011.