當前位置:首頁 > 電源 > 數字電源
[導讀]針對DSP TMS320DM6437,為了實現(xiàn)FPGA和DSP間的串口通信,采用了其同步多通道緩沖串行口(McBSP)和增強型直接存儲器存取(EDM-A)。軟件程序設計未使用傳統(tǒng)的芯片支持庫,而是采用MeBSP Driver和EDMA LLD,實現(xiàn)了FPGA和DSP數據的連續(xù)雙向傳輸,并且DSP作為接收方時采用乒乓緩存,防止數據丟失,同時利用DSP/BIOS實現(xiàn)了EDMA中斷,可對收到的數據進行處理,保證了實時性和數據傳輸效率。

TMS320DM6437是專為高性能、低成本視頻應用開發(fā)的,主頻600 MHz,32位定點,采用達芬奇(DaVinci(TM))技術。該器件采用TI第3代超長指令集結構(VelociTI.3)的TMS320C64x+DSP內核,主頻可達600 MHz,支持8個8位或4個16位并行MAC運算,峰值處理能力高達4 800MIPS?;赥MS320DM6437諸多特點,這里提出一種實現(xiàn)DSP與FPGA的雙向數據交換設計方案,采用TMS320DM6437的McBSP和EDMA實現(xiàn)異步串口通信。  McBSP接口是全雙工串行接口,提供收發(fā)數據雙緩沖以處理連續(xù)的數據流,并可獨立配置收發(fā)部分,接收和發(fā)送都可使用獨立的幀信號和時鐘源。TMS320DM6437有2個獨立的McBSP接口(McBSP0和McBSPl)。EDMA可處理該處理器上所有內存單元和外設的數據傳輸,且不占用DSP時鐘周期,EDMA還提供針對McBSP的同步事件,可方便控制數據傳輸。接收數據時,F(xiàn)PGA的數據通過McBSP傳到DSP的DRR寄存器中,觸發(fā)McBSP接收同步事件,EDMA將數據搬入DSP內存。發(fā)送數據時,當EDMA從DSP內存中將數據搬入DSP的DXR寄存器時,利用McBSP發(fā)送同步事件,將數據傳輸給FPGA。

1 硬件接口電路設計
    McBsP接口的硬件連接如圖1所示。DSP的McBSP接口可由內部時鐘發(fā)生器或外部器件提供收/發(fā)時鐘信號(CLKR/CLKX)及收/發(fā)幀同步信號(FSR/FSX)。為了簡化FPGA內部時序,以上信號均由FPGA提供。圖1中的EN_IN、EN_OUT為DSP控制FPGA中McBSP接口的使能信號,它們均與DSP的GPIO相連。當EN_IN為高時,F(xiàn)PGA接收DSP的數據;當EN_OUT為高時,F(xiàn)PGA開始向DSP發(fā)送數據。



2 軟件程序設計
   
傳統(tǒng)的C6000型DSP對McBSP和EDMA進行操作時,多使用TI公司提供的CSL(Chip Support Library)進行編程操作,由于TMS320DM6437不支持CSL,而是改用PSP(Proeessor Support Package),所以對TMS320DM6437 McBSP接口采用PSP提供的McBSP Driver,主要用McBSP Driver提供的LLC層API進行編程。LLC層提供基于不同平臺的驅動核心抽象。在該層可進行寄存器操作,宏定義,并且底層API可直接與硬件通信。
    對應的EDMA程序開發(fā)則采用EDMA LLD(EDMA low Level Driver)提供的各種庫進行編程。LLD實際上包含2個庫用于管理EDMA外設:一個是EDMA RM(EDMA Resource Manager),管理所有的EDMA硬件資源以及中斷;另一個是EDMA DRV(EDMA Driver),完成所有EDMA相關配置,并且通過RM滿足資源需求。當調用DRV層API進行操作時,實際上是通過DRV層API調用RM層API來對EDMA外設寄存器進行直接操作來配置EDMA硬件。
    本例中實現(xiàn)DSP和FPGA通信時,McBSP所需的幀同步信號以及時鐘信號均由FPGA產生,McBSP發(fā)送過來32 bit的數據,DSP內部采用EDMA方式接收數據,McBSP接收同步事件觸發(fā)EDMA傳輸。將數據放入DSP片內二級存儲器的緩沖區(qū),等待DSP處理。為了保證后寫入的數據不會覆蓋先寫入的還沒來得及被DSP處理的數據,片內二級存儲器緩沖區(qū)采用乒乓緩沖結構。同樣,DSP發(fā)送32bit數據給FPGA時,也是通過EDMA方式,由McBSP發(fā)送同步事件觸發(fā)EDMA傳輸。

2.1 McBSP配置
    McBSP的開啟以及參數配置均采用LLC提供的API以及數據結構完成。但是因為TMS320DM6437的引腳多采用引腳復用,并且GPIO和McBSP引腳復用到一起,由于本例中McBSP幀同步信號是由外部源產生,為了保證能監(jiān)測到第一個幀同步信號,需先在PINMUX寄存器里將復用的引腳配置成GPIO模式,等檢測到幀同步信號后,再將復用的引腳恢復成McBSP模式。
2.1.1 接收數據格式配置
    McBSP接收數據格式在數據結構LLC_RcvDataSetup中設置,該數據結構在McBSP Driver提供的頭文件llc_mcbsp Type.h中定義,在編譯工程文件的時候需包含此頭文件。接收數據為單幀數據,一個數據幀長度為4個字節(jié),采用幀同步信號檢測模式,不進行壓縮,數據傳輸延遲一個比特,采用McBSP同步事件產生中斷。McBSP發(fā)送數據格式在數據結構LLC_XmitDatasetup中設置,具體參數和接收數據格式保持一致。M-cBSP幀同步和時鐘參數在數據結構LLC_mcbspClkSetup中設置,該結構同樣在頭文件llc_mcbspType.h中定義。本例中,發(fā)送和接收的幀同步信號以及時鐘源都由外部產生,接收和發(fā)送幀同步都是高電平有效,接收時鐘上升沿有效,發(fā)送時鐘下降沿有效,幀同步脈沖寬度為1bit,脈沖周期為32 bit。
2.1.2 啟動McBSP
   
首先調用MeBSP LLC層API對McBSP接口進行設置,準備接收FPGA傳輸過來的信號。先調用函數LLC_mcbspOpen,該函數在llc_mcbsp.c中定義,函數原型為LLC_mcbspOpen(LLC_McbspObj*const pMcbspObj,Uint32InstanceId,Int32*pMcbspParam,CSL_Status*pStatus),所需參數分別為用戶定義的McBSP通道對象,McBSP通道ID,用戶定義的配置參數及狀態(tài)信息,返回參數為指向該通道的句柄hMcbsp。該句柄作為調用API的參數。
    然后設置McBSP通道0,調用函數LLC_mcbspHwSetup(LLC_McbspHandle hMcbsp,const LLC_McbspHwSetup*setup)。第1個參數即為剛才返回的指向McBSP通道0的句柄,第2個參數為一個結構體,包含了前面定義的接收和發(fā)送數據結構以及幀同步和時鐘參數結構,這樣就按照實際應用的要求完成了對McBSP0通道的設置。配置完成后,相應的McBSP寄存器的值為:SPCR=0X0000400;RCR=0x00050040;XCR=0x00050040;SRGR=0x20000001;PCR=0x00000080。
    最后利用函數LLC_mcbspHwControl使能McBSP接收和發(fā)送功能。函數原型為LLC_mcbspHwControl(LLC_McbspHandle hMcbsp,LLC_Mcbsp ControlCmd cmd,const void*arg)。第1個參數為指向McBSP通道0的句柄,第2個參數為硬件控制命令,第3個為對特定命令的補充說明。開啟McBSP接收發(fā)送功能時,硬件控制命令為LLC_MCBSP_CMD_RESET_CONTROL,使能發(fā)送功能時,命令補充說明為LLC_MCBSP_CTIRL_RX_ENABLE,使能接收功能時,命令補充說明為LLC_MCBSP_CTRL_TX_ENABLE。
2.2 EDMA配置
2.2.1 EDMA配置原理

    EDMA中傳輸的數據種類有3種:ARRAY,BLOCK,F(xiàn)RAME,分別對應3種不同類型的傳輸。首先是一維傳輸,即每一個EDMA事件觸發(fā)的傳輸只傳輸一個ARRAY,該ARRAY所包含的字節(jié)數由參數RAM里的參數ACNT決定。然后是二維傳輸,每一個EDMA事件觸發(fā)傳輸一個FRAME,每個FRAME里包含的ARRAY數由參數BCNT決定。以此類推。三維傳輸即每次傳輸一個BLOCK,每個BLOCK里包含的FRAME數由參數CCNT決定。
    TMS320DM6437的EDMA共有128個參數RAM,其中存放每個EDMA通道需要的各個傳輸控制參數,參數RAM的默認對應關系為:EDMA EVENTO對應參數RAMO,EDMAEVENT1對應參數RAM1,等。以此類推。但是也可以在DCHMAPO-63寄存器里修改相應位自行對應。參數RAM的具體結構如圖2所示。

[!--empirenews.page--]
    一個參數RAM的長度為32個字節(jié)。首先是32 bit的可選參數OPT,對于可選參數,通過對各個位置0或1設置事件優(yōu)先級,數據單元大小,源地址/目的地址變更模式,傳輸結束代碼,是否使能傳輸參數鏈接(LINK)功能,同步傳輸方式等。SRC和DST為EDMA傳輸所需的源地址和目
的地址。SRCBIDX和DSTBIDX用于二維傳輸中,表示一個ARRAY的開始到下個ARRAY的開始所跨越的字節(jié)數。SRCCIDX和DSTCIDX用于三維傳輸中,一個FRAME的開始到下個FRAME的開始所跨越的字節(jié)數。BCNTRLD:三維傳輸里需要重新加載的BCNT。LINK:傳輸完成后重新加載的參數RAM地址,默認是LINK到空參數RAM。
    在此實例中采用的雙緩沖結構,即在DSP緩沖區(qū)內開辟2塊緩沖用于并行處理FPGA通過McBSP傳過來的數據。當EDMA往PingBuffer里傳輸數據時,CPU即可處理PongBuffer里的數據,當工作完成后,彼此又交換緩沖區(qū),EDMA往PongBuffer里寫數據,CPU處理PingBuffer里的數據。為了實現(xiàn)雙緩沖結構,采用了EDMA提供的LINK功能,即將不同的EDMA傳輸參數RAM鏈接起來,組成一個傳輸鏈,在傳輸鏈中,一個傳輸的結束會導致自動從參數RAM中裝載下一個傳輸需要的事件參數。在具體程序中,只需將Ping通道的參數RAM LINK到Pong通道,同時將Pong通道的參數RAMLINK到Ping通道即可。
2.2.2 EDMA接收數據配置實現(xiàn)
   
開發(fā)環(huán)境采用CCS 3.3。通過調用LLD API實現(xiàn)對EDMA Driver的配置以及傳輸操作。
    在使用EDMA3 Driver之前必須首先對其進行初始化。EDMA3 LLD提供了2個API進行相關工作。EDMA3_DRV_create和EDMA3_DBV_open。前者用于創(chuàng)建一個EDMA3 Driver對象,后者用于開啟對應的EDMA3 Driver通道。
    創(chuàng)建并開啟EDMA3 Driver通道后,即可為此通道分配資源以及初始化其配置。首先調用EDMA3_DRV_requestChannel請求分配一個DMA通道,隨后對該通道的參數RAM進行配置,以滿足傳輸需要。EDMA3_DRV_setSrcParams用于設置該EDMA通道接收數據源地址為McBSPO的DRR寄存器,地址為0x01D00000,地址計數模式為遞增模式。EDMA3_DRV_setDestParams設置該EDMA通道接收數據目的地址為DSP片內存儲區(qū)PingBuf-fer首地址,確保第一次傳輸數據是到PingBuffer,地址計數模式同樣為遞增模式。EDMA3_DRV_setSrcIndex用于配置源地址計數索引值,由于源地址為McBSPO的DRR寄存器,固定不變,所以srcBidx=0,srcCidx=0。接著調用EDMA3_DRV_setDestIndex配置目的地址計數索引值,由于接收數據為32 bits,所以sreBidx=srcCidx=4,這是因為DSP內的最小計數單元為一個字節(jié),8bit。EDMA3_DRV_setTransferPamms配置剩余的參數RAM傳輸參數,包括設置ACNT=4,BCNT=2 048,CCNT=1,采用一維傳輸A-SYNC。
    接下來是Ping/Pong傳輸的程序實現(xiàn)。需再調用EDMA3_DRV_requestChannel兩次,替Ping/Pong各自分配一個通道,于是,一共有3個通道,對應3個參數RAM。Ping通道的參數RAM與主通道的參數RAM完全一致,Pong通道的參數RAM與主通道相比,只需將Pong通道接收數據目的地址改為PongBuffer首地址。隨后調用EDMA3_DRV_linkChannel 3次,分別將主通道和Ping通道LINK,Ping通道和Pong通道相互LINK。
2.2.3 EDMA中斷實現(xiàn)
   
結合DSP/BIOS設置了EDMA中斷,以便在一個接收Buffer被填滿時,產生的EDMA中斷可通知DSP處理該Buffer的數據。
    TMS320DM6437中,EDMA的128個通道只產生一種中斷,當一個通道傳輸完成后,IPR(Interrupt Pending Register)寄存器里的相應位會被置1,EDMA中斷處理器通過查詢IPR寄存器確定是哪個通道完成了傳輸,并調用相應的中斷服務程序。
    EDMA LLD中中斷的設置通過調用EDMA3_DRV_requestChannel實現(xiàn)。該函數的參數中跟中斷有關的為eventQ(與通道優(yōu)先級相關),tceCb(回調函數,即通道傳輸完成后所調用的中斷服務程序)。本例中,設置eventQ=0,保證最高優(yōu)先級,tceCb=edma_isr,該函數的作用是在通道傳輸完成后發(fā)送一個旗語信號給信號處理程序,通知其對收到的數據進行處理。此外,還需調用EDMA3_DRV_setOptField將參數RAMOPT參數中TCINTEN位置1,以使能EDMA中斷。隨后,利用DSP/BIOS將EDMA中斷源和DSP的可屏蔽中斷5連接起來,具體參數在DSP/BIOS配置文件中的HWI模塊設置,如圖3所示。


    最后,由于選用了TMS320DM6437的可屏蔽中斷5,還需使能IER寄存器里的對應位,C64_enableIER(C64_EINT5)。
2.2.4 EDMA發(fā)送數據配置實現(xiàn)
    EDMA發(fā)送數據程序流程和接收數據程序流程大略一致,但較為簡單。只需請求一個EDMA傳輸通道,配置其源地址為DSP內部存放FPGA所需數據內存首地址,目的地址為McBSP的DXR寄存器。其余參數和EDMA接收數據通道參數相同。

3 實現(xiàn)結果
   
配置好MeBSP和EDMA后,啟動FPGA傳輸數據,DSP做好接收和發(fā)送數據的準備,實驗中,F(xiàn)PGA連續(xù)不斷地發(fā)送自加地數給DSP,而DSP只發(fā)送2048個32 bit的從0開始的自加數據給FPGA。實驗結果表明,DSP內部的PingBuffer區(qū)和PongBuffer區(qū)能連續(xù)不斷的收到FPGA傳輸過來的數
據。某一時刻的PingBuffer區(qū)和PongBuffer區(qū)內部數據如圖4所示,能看出實驗實現(xiàn)了上述功能。

[!--empirenews.page--]
     在FPGA端監(jiān)測到DSP發(fā)送過去的數據如圖5所示,可以看出是從0開始的連續(xù)自加數據。


    本例中設置傳完2 048個數據后EDMA發(fā)送事件觸發(fā)一次中斷,調用的中斷服務程序主要作用是發(fā)送一個旗語信號給信號處理程序,并打印出“GOT INTO RCV ISR”,進入中斷服務程序,隨后已被阻塞的信號處理程序線程收到旗語信號后,開始運行,并打印信息“receive rcv int”,中斷測試結果如圖6所示,可以看出中斷在連續(xù)不斷的被觸發(fā)。



4 結論
   
通過TMS320DM6437的McBSP和EDMA實現(xiàn)了異步串口通信,并已經通過軟硬件調試,該部分已被實際運用于實時數據處理中。該方法硬件部分較容易實現(xiàn),并且簡單可靠,且采用EDMA方式,大大節(jié)約了CPU資源,取得了較好的效果,具有一定的應用價值。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數據產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數據產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉