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