集成外設(shè)及DSP/BIOS應(yīng)用實(shí)例_第1頁(yè)
集成外設(shè)及DSP/BIOS應(yīng)用實(shí)例_第2頁(yè)
集成外設(shè)及DSP/BIOS應(yīng)用實(shí)例_第3頁(yè)
集成外設(shè)及DSP/BIOS應(yīng)用實(shí)例_第4頁(yè)
集成外設(shè)及DSP/BIOS應(yīng)用實(shí)例_第5頁(yè)
已閱讀5頁(yè),還剩32頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、集成外設(shè)及DSPBIOS應(yīng)用實(shí)例本文將主要介紹C6000系列DSP的外設(shè),分別從硬件接口特點(diǎn)、接口設(shè)計(jì)和接口設(shè)置等方面介紹了主機(jī)口HPI、多通道緩沖串口McBSP和直接存取控制器DMAEDMA等外設(shè)。另外,介紹了如何利用DSPBIOS操作系統(tǒng)提供的芯片支持庫(kù)(CSL)訪問(wèn)和控制各個(gè)外設(shè)。1  集成外設(shè)資源概述C6000系列DSP在內(nèi)部集成了豐富的外圍設(shè)備(Peripherals),方便用于控制片外的存儲(chǔ)器、主機(jī)以及串行通信設(shè)備。對(duì)于每種型號(hào)的外設(shè)資源都是不一樣的,具體的需要查詢?cè)撔酒募夹g(shù)資料。    在C6000系列DSP中集成的外設(shè)資源有: 

2、;   1DMA與EMDA控制器DMA、EDMA控制器最大的特點(diǎn)是可以在沒(méi)有CPU參與的情況下完成映射存儲(chǔ)空間中的數(shù)據(jù)搬移。這些數(shù)據(jù)搬移可以是在片內(nèi)存儲(chǔ)器、片內(nèi)外設(shè)或是外部器件之間,而且是在CPU后臺(tái)進(jìn)行的。C620xC670x內(nèi)部集成了DMA外設(shè),其特點(diǎn)如下:  (1)DMA摔制器獨(dú)立于CPU 工作,具有單周期的數(shù)據(jù)吞葉率。  (2)四個(gè)通道,外加專用的輔助通道,每一個(gè)通道對(duì)于CPU的優(yōu)先級(jí)可設(shè)置。  (3)32位尋址能力,可以對(duì)存儲(chǔ)器映射空間的任何一個(gè)區(qū)域進(jìn)行訪問(wèn)。  (4)傳送數(shù)據(jù)支持81632位字長(zhǎng)。  (5)具有靈

3、活的地址產(chǎn)生方式,有單通道分割(split-channel)操作模式。  (6)每次數(shù)據(jù)塊傳輸完畢后,可以進(jìn)行DMA通道的自動(dòng)初始化。  (7)傳輸操作可以由選擇的同步事件觸發(fā)。  (8)每個(gè)通道都可以觸發(fā)中斷事件。  C621xC671x內(nèi)部集成的是EDMA外設(shè),其特點(diǎn)如下:  (1)16個(gè)通道,EDMA可以對(duì)16個(gè)通道進(jìn)行彼此獨(dú)立的控制。  (2)連接:EDMA通道可以被連接起來(lái),構(gòu)成一個(gè)傳輸鏈。  (3)事件同步:每一個(gè)通道都有一個(gè)特定的事件來(lái)觸發(fā)。  (4)主機(jī)接口HPI。主機(jī)口(HPI)是一個(gè)1632位寬

4、度的并行端口,主機(jī)可以通過(guò)它直接訪問(wèn)CPU的整個(gè)存儲(chǔ)空間,包括C6000片內(nèi)存儲(chǔ)映射的外圍設(shè)備。C62xC67x HPI與CPU存儲(chǔ)空間的互連是通過(guò)DMA控制器實(shí)現(xiàn)的。借助專門的地址和數(shù)據(jù)寄存器,通過(guò)DMA輔助通道,完成HPI對(duì)存儲(chǔ)空間的訪問(wèn)。主機(jī)和CPU都可以對(duì)HPI控制寄存器(HPIC)進(jìn)行訪問(wèn),主機(jī)還可以訪問(wèn)HPI地址寄存器(HPIA)和HPI數(shù)據(jù)寄存器(HPID)。對(duì)于C64x器件,CPU也可以訪問(wèn)HPIA寄存器。2多通道緩沖串口McBSPC6000的多通道緩沖串口(McBSP)是存C2x和C54x的串口的基礎(chǔ)上發(fā)展起來(lái)的,McBSP的功能包括:  (1)全雙工通信。

5、0; (2)兩級(jí)緩沖數(shù)據(jù)寄存器,允許連續(xù)的數(shù)據(jù)流。  (3)收發(fā)獨(dú)立的幀信號(hào)和時(shí)鐘信號(hào)。  (4)可以與工業(yè)標(biāo)準(zhǔn)的編解碼器、AICs(模擬接口芯片)以及其他串行AD,DA接口。  (5)數(shù)據(jù)傳輸可以利用外部時(shí)鐘,或者是片內(nèi)的可編程時(shí)鐘。  (6)當(dāng)利用DMA、McBSP服務(wù)時(shí),串口數(shù)據(jù)讀寫具有自動(dòng)緩沖能力。  3外設(shè)存儲(chǔ)接口EMIF  EMIF是實(shí)現(xiàn)外設(shè)存儲(chǔ)器與DSP無(wú)縫連接的橋梁,EMIF支持的存儲(chǔ)器包括:  (1)同步突發(fā)靜態(tài)RAM(SBSRAM)。  (2)同步動(dòng)態(tài)RAM(SDRAM)。  (3)異

6、步器件(包括異步SRAM,ROM和FIFO等)。  (4)外部共享存儲(chǔ)空間的操作。EMIF整個(gè)外部空間最大容量為64MB,分為4個(gè)空間(CE0CE3,每個(gè)CE空間彼此獨(dú)立,可以進(jìn)行不同的訪問(wèn)控制,但是某些控制信號(hào)線是復(fù)用的,使用時(shí)一定要注意。數(shù)據(jù)總線寬度32bit,同時(shí)也提供816位存儲(chǔ)器的讀寫支持。4擴(kuò)展總線XBUS擴(kuò)展總線(XBUS)是一個(gè)32位寬度的總線,支持多種異步外設(shè)、異步或同步FIFOs、PCI接口芯片和其他類型的外部主機(jī)。在主機(jī)口接口方面,擴(kuò)展總線的功能較HPI有了很大增強(qiáng)。XBUS提供了曲種模式,即同步和異步主機(jī)口模式。異步模式相當(dāng)于一個(gè)32位的HPI,同步模式支持多

7、種協(xié)議的接口。目前在C6202和C6203中具有擴(kuò)展總線XBUS功能。5自舉邏輯控制 TI C6000系列DSP芯片使用多種加載方式。根據(jù)復(fù)位前管腳的狀態(tài)執(zhí)行相應(yīng)的加載方式。目前提供的3種加載方式如下:(1)沒(méi)有BOOT處理:CPU直接從地址0處開(kāi)始運(yùn)行。(2)ROM加載模式:通過(guò)DMA控制器,把存儲(chǔ)在外部存儲(chǔ)器里的程序加載到內(nèi)部首地址0處,在加載過(guò)程中,CPU已經(jīng)脫離復(fù)位狀態(tài),但是仍處于stall狀態(tài)。對(duì)于C620xC670x DSP,要求程序代碼必須是以Little-Endian模式存儲(chǔ)在外部存儲(chǔ)器中,尤其是ROM設(shè)備。(3)主機(jī)加載模式:在主機(jī)加載模式下,外部主機(jī)可以通過(guò)HPI接口讀寫訪

8、問(wèn)CPU的存儲(chǔ)空間,包括內(nèi)部配置的寄存器,如EMIF控制寄存器或其他外設(shè)。一旦主機(jī)完成了所有的初始化工作后,必須置DSPINT為1,表示已經(jīng)完成加載過(guò)程,同時(shí)使CPU脫離stall狀態(tài),CPU開(kāi)始從地址0處運(yùn)行程序。在C6201C6701有專門的管腳BOOTMODE4:O決定DSP芯片復(fù)位后運(yùn)行的加載方式,而C6211C6711是利用主機(jī)口的HD4:0管腳復(fù)用,C6202C6203是利用擴(kuò)展總線的XD4:0管腳復(fù)用。6定時(shí)器C6000系列集成了32位的通用定時(shí)器。定時(shí)器的輸入時(shí)鐘可以由內(nèi)部產(chǎn)生,也可以是外部時(shí)鐘;可以通過(guò)輸出口TOUT輸出時(shí)鐘。TINT和TOUT兩個(gè)管腳也可以被配置為GPIO口

9、。定時(shí)器可以用于  (1)計(jì)時(shí)。  (2)事件計(jì)數(shù)。  (3)產(chǎn)生脈沖。  (4)產(chǎn)生CPU中斷信號(hào)。  (5)產(chǎn)生DMA的同步信號(hào)。2  DSPBlOSCCS(Code Composer Studio)是一個(gè)完整的DSP集成開(kāi)發(fā)環(huán)境,所有的TI DSP都可以使用該軟件進(jìn)行開(kāi)發(fā)。在CCS中,不僅集成了常規(guī)的開(kāi)發(fā)工具如源程序編輯器、代碼生成工具(編譯、連接器)以及調(diào)試環(huán)境外,還提供了DSPBIOS開(kāi)發(fā)工具。DSPBIOS是一個(gè)可裁剪的實(shí)時(shí)操作系統(tǒng),方便用戶編寫多任務(wù)應(yīng)用程序。DSPBIOS提供了類似于先占式的多線程運(yùn)行方式、硬件驅(qū)動(dòng)、實(shí)

10、時(shí)分析和配置工具。DSPBIOS已經(jīng)是DSP開(kāi)發(fā)過(guò)程中重要的工具。在本節(jié)將介紹DSPBIOS工具的使用。2.1  DSP/BIOS概述DSPBIOS是一個(gè)可裁剪的實(shí)時(shí)操作系統(tǒng),本身占用很少的CPU資源,被集成在CCS開(kāi)發(fā)環(huán)境里。該操作系統(tǒng)由TI公司免費(fèi)提供。DSPBIOS提供底層的應(yīng)用函數(shù)接口,可用于支持系統(tǒng)實(shí)時(shí)分析、線程管理、調(diào)度軟件中斷、周期函數(shù)idle函數(shù)(后臺(tái)運(yùn)行函數(shù))以及外部硬件中斷與各種外設(shè)的管理。DSPBIOS主要包括以下幾個(gè)部分:    1DSPBlOS配置工具CCS提供了DSPBIOS GUI功能,即DSPBIOS配置工具。使用該工具,

11、可以靜態(tài)創(chuàng)建和配置程序中使用的DSPBIOS對(duì)象,也可以配置存儲(chǔ)器分配、線程管理和中斷句柄。2DSPBIOS實(shí)時(shí)分析工具DSPBIOS提供的一個(gè)強(qiáng)大的實(shí)時(shí)分析工具。使用該工具可以實(shí)時(shí)觀測(cè)程序的運(yùn)行狀況,如各個(gè)線程占用CPU運(yùn)行時(shí)間、代碼執(zhí)行時(shí)間統(tǒng)計(jì)、顯示輸出信息等。    3DSPBIOS應(yīng)用程序接口(API)DSPBIOS提供了超過(guò)150個(gè)API函數(shù),其中有與C語(yǔ)言、C+語(yǔ)言和匯編語(yǔ)言接口的函數(shù)。這些API函數(shù)是為在硬件目標(biāo)的嵌入式程序工作的,包括實(shí)時(shí)統(tǒng)計(jì)、IO模塊、軟件中斷管理和時(shí)鐘管理等模塊。由于應(yīng)用程序的不同,DSPBIOS API函數(shù)的代碼長(zhǎng)度從2002

12、000B不等。程序通過(guò)調(diào)用API函數(shù)來(lái)使用DSPBIOS的資源。目前DSPBIOS中主要的API模塊有CLK模塊、HST模塊、HWI模塊、IDL模塊、LOG模塊、MEM模塊、PIP模塊、PRD模塊、RTDX模塊、STS模塊、SWI模塊、DEC模塊、SIO模塊、MXB模塊、QUE模塊和SEM模塊。2.2  DSPBIOS GUI配置在DSPBIOS的程序里,有一個(gè)DSPBIOS的配置文什,該配置文件的后綴名為.cdb。這是一個(gè)圖形界面的參數(shù)設(shè)置窗口,如圖4-1所示。主要有兩種功能:(1)確定DSPBIOS使用的各種參數(shù)。(2)可以靜態(tài)說(shuō)明需要調(diào)用的DSPBIOS模塊,包括中斷、任務(wù)和內(nèi)

13、部集成的外設(shè)等。 1系統(tǒng)設(shè)置項(xiàng)系統(tǒng)設(shè)置項(xiàng)包括全局設(shè)置、存儲(chǔ)器段管理器、系統(tǒng)設(shè)置和模塊鉤子管理器,如圖4-2所示。在全局設(shè)置的屬性窗口中可以設(shè)置正使用的DSP型號(hào)、選擇使用的片級(jí)支持庫(kù)CSL、Endian模式和Cache模式等多種參數(shù)。在存儲(chǔ)器段管理器的屬性窗口中可以進(jìn)行系統(tǒng)程序存儲(chǔ)段的管理。通過(guò)該項(xiàng)設(shè)置,系統(tǒng)將自動(dòng)生成系統(tǒng)程序連接時(shí)使用的.cmd文件。2實(shí)時(shí)分析工具實(shí)時(shí)分析工具包括LOG管理器和統(tǒng)計(jì)類管理器,如圖4-3所示。用戶可以利用LOG模塊中的事件日志來(lái)記錄實(shí)時(shí)的事件。系統(tǒng)日志記錄系統(tǒng)所有運(yùn)行事件包括系統(tǒng)出錯(cuò)等事件。用戶可以用LOG_printf或LOG_event函數(shù)在用戶日

14、志中添加消息。用戶可以利用STS模塊全面了解中斷、任務(wù)以及用戶自己定義的代碼段或函數(shù)的運(yùn)行時(shí)間。3線程管理DSPBIOS是一個(gè)類似于先占式的多任務(wù)操作系統(tǒng)。BIOS把任務(wù)稱之為線程,一個(gè)線程是一個(gè)單獨(dú)的控制點(diǎn),可能包含一個(gè)子程序、一個(gè)宏或者是一個(gè)函數(shù)調(diào)用。DSPBIOS內(nèi)核支持具有不同優(yōu)先級(jí)的多種類型線程運(yùn)行,高優(yōu)先級(jí)的線程可以中斷低優(yōu)先級(jí)的線程,因此具有類似的先占式特點(diǎn)。   DSPBIOS提供了以下幾種線程類型,優(yōu)先級(jí)從高到低。  (1)硬件中斷HWI(含CLK模塊)。   (2)軟件中斷SWI(含PRD模塊)。   (

15、3)任務(wù)TSK。   (4)后臺(tái)線程IDL。   線程管理的界面如圖4-4所示,使用GUI可以很方便地增加刪除線程。   4同步同步主要的任務(wù)就是負(fù)責(zé)線程之間的協(xié)調(diào),如同步通信、數(shù)據(jù)交換等。其中包括旗語(yǔ)、郵箱、隊(duì)列管理和資源鎖定管理等部分,如圖4-5所示。5輸入輸出    DSPBIOS內(nèi)核提供了豐富的數(shù)據(jù)交換途徑。利用BIOS可以方便地實(shí)現(xiàn)主機(jī)和DSP之間的實(shí)時(shí)數(shù)據(jù)交換(RTDX和HST)以及各種線程之間的數(shù)據(jù)交換。DSPBIOS的PIP模塊和SIO模塊將主要用于IO數(shù)據(jù)流的緩沖,這些數(shù)據(jù)流稱為線程、D

16、SP芯片和實(shí)時(shí)外圍設(shè)備提供了牢固的數(shù)據(jù)軟件結(jié)構(gòu)。輸入輸出界面如圖4-6所示。6片級(jí)支持庫(kù)片級(jí)支持庫(kù)(CSL)提供了一個(gè)C語(yǔ)言接口的配置和控制片內(nèi)外設(shè)1具。CSL集成在BIOS里,系統(tǒng)程序可以使用該功能,也可以不使用。使用片級(jí)支持庫(kù)(CSL)簡(jiǎn)化了DSP片上外設(shè)開(kāi)發(fā)時(shí)間,可以加快項(xiàng)目開(kāi)發(fā)進(jìn)度。片劑支持庫(kù)(CSL)可以預(yù)先靜態(tài)設(shè)置,也可以在程序運(yùn)行時(shí)動(dòng)態(tài)設(shè)置。2.3  DSPBIOS編程實(shí)例DSPBIOS是一個(gè)嵌入式實(shí)時(shí)操作系統(tǒng)。在BIOS基礎(chǔ)上編程與普通的編寫程序不同,下面將以TI的例了來(lái)介紹BIOS的編程特點(diǎn)。    (1)首先新建一個(gè)BIOS配置文件。

17、建立兩個(gè)軟件中斷SWl0和SWll,SWl0的優(yōu)先級(jí)設(shè)為1,SWll優(yōu)先級(jí)設(shè)為2,如圖4-7所示。保存例子,名稱為switest.cdb。(2)新建一個(gè)工程,工程名switest.pjt。把配置文件switest.cdb加入到工程文件中去,同時(shí)把switestcfg.cmd文件也加入到工程文件中。(3)新建switest.C文件。源文件如下:(4)編譯連接工程,打開(kāi)execution graph、statistics view和message log窗口,然后運(yùn)行程序。在實(shí)時(shí)分析工具中可以觀察到線程SWIO和SWll運(yùn)行一次,部分時(shí)間是其他線程和KNL-swi運(yùn)行,如圖4-8圖4-10所示。3

18、  TMS320C6000的HPl接口設(shè)計(jì)本節(jié)主要介紹主機(jī)接口外設(shè)HPI,其中介紹了主機(jī)如何通過(guò)主機(jī)接口(Host-port interface,HPI)讀寫訪問(wèn)C6000的存儲(chǔ)器資源,包括HPI的控制寄存器設(shè)置,有關(guān)信號(hào)的作用與接口等。3.1  HPI硬件介紹主機(jī)口(HPI)是一個(gè)1632位寬度的并行端口,主機(jī)可以通過(guò)它直接訪問(wèn)CPU的整個(gè)存儲(chǔ)空間,包括C6000片內(nèi)的存儲(chǔ)映射的外圍設(shè)備。HPI與CPU存儲(chǔ)空間的互連是通過(guò)DMA/EDMA控制器實(shí)現(xiàn)的。借助專門的地址和數(shù)據(jù)寄存器,通過(guò)DMA輔助通道,完成HPI對(duì)存儲(chǔ)空間的訪問(wèn)。主機(jī)和CPU都呵以對(duì)HPI控制寄存器(HPlC

19、)進(jìn)行訪問(wèn),另外主機(jī)可以訪問(wèn)HPI地址寄存器(HPIA)和HPI數(shù)據(jù)寄存器(HPID)。對(duì)于C64x器件,CPU也可以訪問(wèn)HPIA寄存器。圖4-11中的陰影部分是HPI在C620xC670x整個(gè)芯片中的位置。圖4-12是HPI在C621xC671XC64x整個(gè)芯片中的位置(陰影部分)。表4-1列出了在C6000系列芯片中HPI外設(shè)的區(qū)別。3.2 HPI接口及其應(yīng)用在這里將仔細(xì)介紹HPI接口的特點(diǎn),分析HPI接口信號(hào)和總線時(shí)序的特點(diǎn),硬件接口設(shè)計(jì)和軟件設(shè)計(jì)特點(diǎn)。    1HPI接口與信號(hào)主機(jī)可以通過(guò)HPI接口與CPU連接,HPI管腳信號(hào)功能如表4-2所示,詳細(xì)的信號(hào)

20、描述可以參照TI相關(guān)文檔。C6000 DSP不同芯片的HPI外設(shè)與主機(jī)接口有所不同,下面簡(jiǎn)要介紹其區(qū)別。對(duì)于C620xC670x芯片的HPI外設(shè),HPI是16位寬度的并行接口,CPU可以自動(dòng)地把主機(jī)連續(xù)寫入的兩個(gè)16位數(shù)據(jù)組合成一個(gè)32位數(shù)據(jù)。豐機(jī)把數(shù)據(jù)寫入HPID寄存器,DMA輔助通道可以訪問(wèn)所有的CPU地址,把寫入的數(shù)據(jù)存儲(chǔ)到指定地址的存儲(chǔ)空間中去。C620xC670x芯片的HPI外設(shè)與主機(jī)連接框圖如圖4-13所示。C621xC671x的HPI管腳接口與C620xC670x類似,但是不支持字節(jié)使能信號(hào)線HBE1:0。C621xC671x沒(méi)有提供特殊的EDMA通道來(lái)專門進(jìn)行HPI存取,而是直

21、接將HPI與片內(nèi)的地址產(chǎn)生單元相連,完全由硬件來(lái)處理硬件請(qǐng)求,如圖4-14所示。C64x芯片的HPI外設(shè)與主機(jī)連接框圖如圖4-15所示。C64x HPI外沒(méi)有32根外部數(shù)據(jù)引腳,支持1632位數(shù)據(jù)傳輸。C64x器件根據(jù)自舉加載配置和器件配置決定是16位還是32位數(shù)據(jù)通道。C64x HPll6是C621xC67lx的HPI外設(shè)增強(qiáng)版本。除了C621xC67lx的HPI外設(shè)功能外,HPll6允許DSP訪問(wèn)HPI地址寄存器HPIA。如圖4-15所示,地址寄存器HPIA分成兩個(gè)寄存器,即HPIA寫寄存器(HPIAW)和HPIA讀寄存器(HPIAR)。HPI 32和HPI16功能類似,區(qū)別在于數(shù)據(jù)總線寬

22、度不一樣,而且HPI 32不使用 HHWIL信號(hào)線。2HPI總線時(shí)序圖4-16圖4-19分別給出了HPI讀和寫操作的時(shí)序。HSTROBE是內(nèi)部選通信號(hào),由HDSl、HDS2和,HCS信號(hào)邏輯組合產(chǎn)生??刂菩盘?hào):HCNTL1:0、HRW、HHWIL和HBE1:0是輸入信號(hào),由主機(jī)驅(qū)動(dòng)。HCNTL1:0和HRW控制對(duì)兩個(gè)半字的訪問(wèn)。HRDY低電平表示HPI已經(jīng)準(zhǔn)備好收發(fā)數(shù)據(jù)。HAS信號(hào)為高電平或者沒(méi)有使用,那么HSTROBE的下降沿鎖存控制信號(hào)。如果使用了HAS信號(hào),在HAS的下降沿鎖存控制信號(hào)??梢愿鶕?jù)具體的情況來(lái)決定是否在接口中應(yīng)用選通信號(hào)HAS,因此下面的讀寫時(shí)序中部各自給出了有HAS和沒(méi)有

23、HAS信號(hào)時(shí)的情況。3HPI控制寄存器HPI外設(shè)利用3個(gè)寄存器完成主機(jī)和DSP之間的數(shù)據(jù)交換。3個(gè)寄存器分別是HPI數(shù)據(jù)寄存器(HPID)、HPI地址寄存器(HPIA)和HPI控制寄存器(HPIC)。對(duì)于C64x器件,HPI地址寄存器分為地址讀寄存器(HPIAR)和地址寫寄存器(HPIAW)。HPIA中存放主機(jī)訪問(wèn)DSP存儲(chǔ)空間的地址,這是一個(gè)30位值,最低2位固定為0。對(duì)于C62xC67x,只有主機(jī)才能訪問(wèn)HPIA,DSP不可以訪問(wèn)。對(duì)于C64x,主機(jī)和DSP都可以訪問(wèn)HPIA寄存器,主機(jī)可以對(duì)DSP的不同存儲(chǔ)空問(wèn)進(jìn)行讀寫操作。HPID中存放的是主機(jī)從存儲(chǔ)空問(wèn)讀取的數(shù)據(jù),或者是主機(jī)要向DSP

24、的存儲(chǔ)空間寫入的數(shù)據(jù)。HPIC是32位寄存器,高16位和低16位對(duì)應(yīng)的是同一個(gè)物理存儲(chǔ)區(qū),因此高16位和低16位的內(nèi)容是一樣的。在寫HPIC時(shí),必須保證寫入數(shù)據(jù)的高16位和低16位的內(nèi)容一致。HPIC寄存器如圖4-20所示,其中各位意義如表4-3所示。 4主機(jī)訪問(wèn)操作順序  主機(jī)按照以下的順序完成對(duì)HPI的訪問(wèn):  (1)初始化HPIC寄存器。  (2)初始化HPIA寄存器。  (3)從HPID寄存器讀取寫入數(shù)據(jù)。對(duì)HPI任何一個(gè)寄存器的訪問(wèn),主機(jī)都需要在HPI總線上進(jìn)行兩次half-word的存取(第1個(gè)16位HHWIL為0,第2個(gè)HHWIL

25、為1)。一般主機(jī)不會(huì)打斷這樣的兩次存取,一旦打斷可能會(huì)引起整個(gè)數(shù)據(jù)的丟失或者數(shù)據(jù)被破壞。如果前一次HPI的訪問(wèn)尚未完成,那么當(dāng)前的第一個(gè)half-word的存取需要等待,此時(shí)HPI會(huì)置HRDY信號(hào)為高。但是在第2個(gè)半字存取訪問(wèn)時(shí),HRDY可以為有效狀態(tài)。C64xfPl32把兩個(gè)半字組合成一個(gè)字傳輸。在訪問(wèn)任何數(shù)據(jù)之前,必須對(duì)HPI進(jìn)行初始化,包括設(shè)置HPIC和HPIA寄存器。對(duì)C62xC67x和C64x是有所不同的。   HPI的數(shù)據(jù)傳輸模式有4種:   (1)不帶地址白增的讀操作。   (2)帶地址自增的讀操作。 

26、0; (3)不帶地址自增的寫操作。       (4)帶地址自增的寫操作。這些模式由HPI的HCNTL1:O信號(hào)以及HHWIL進(jìn)行控制,具體如表4-4所示。其中的地址自增功能使主機(jī)可以很便捷地訪問(wèn)一個(gè)線性存儲(chǔ)區(qū)域,而無(wú)需反復(fù)地向HPIA中寫入需要的地址。5HP的自舉加載操作通過(guò)HPI接口也提供了相應(yīng)的HPI加載方式。當(dāng)CPU復(fù)位時(shí),根據(jù)相應(yīng)的加載配置,CPU進(jìn)入HPI加載處理方式。在HPI加載處理方式中,DSP處在復(fù)位狀念,而其他部分脫離復(fù)位狀態(tài)。通過(guò)HPI接口,主機(jī)可以訪問(wèn)DSP的全部存儲(chǔ)空間,包括片內(nèi)外設(shè)寄存器、片內(nèi)存儲(chǔ)器和片外存儲(chǔ)器。主機(jī)

27、完成初始化DSP后,需要向HPI控制寄存器HPIC的DSPHlNT位寫1,這樣才可以使DSP脫離復(fù)位狀態(tài)開(kāi)始從地址0處執(zhí)行程序。HPI加載處理過(guò)程如圖4-21所示。3.3 BlOS中HPI設(shè)置實(shí)例HPI模塊提供了訪問(wèn)HPI寄存器的API函數(shù),其中用于訪問(wèn)HPI狀態(tài)位和設(shè)置中斷事件。對(duì)于C64x,還包括讀寫HPlA寄存器。在CCS中沒(méi)有提供HPI設(shè)置圖形用戶接口。     HPI模塊提供的API函數(shù)如表4-5所示。4  TMS320C6000的McBSP接口設(shè)計(jì)本節(jié)對(duì)多通道緩沖串口McBSP(Multi-channel Buffered Seri

28、al Port)的硬件及其操作進(jìn)行介紹,包括有關(guān)的控制寄存器設(shè)置和時(shí)序圖。此外,還介紹在BIOS中McBSP模塊的特點(diǎn)和應(yīng)用。4.1  McBSP硬件介紹C6000的多通道緩沖串口(McBSP)是在TMS320C2xC3xC5x和TMS320C54x串口的基礎(chǔ)上發(fā)展起來(lái)的,McBSP的功能包括:   (1)全雙工通信。   (2)雙緩沖數(shù)據(jù)寄存器,允許連續(xù)的數(shù)據(jù)流。   (3)收發(fā)獨(dú)立的幀信號(hào)和時(shí)鐘信號(hào)。   (4)可以與工業(yè)標(biāo)準(zhǔn)的編解碼器、AICs(模擬接口芯片)以及其他串行AD,DA接口。 

29、  (5)數(shù)據(jù)傳輸可以利用外部時(shí)鐘,或者是片內(nèi)的可編程時(shí)鐘。   (6)通過(guò)5通道的DMA控制器,串口數(shù)據(jù)讀寫具有自動(dòng)緩沖能力。   另外,McBSP有以下特點(diǎn):   (1)支持以下方式的傳輸接口:   TIE1幀協(xié)議   MVIP兼容的交換方式以及STBUS兼容設(shè)備,包括:MVIP幀方式、H.100幀方   式和SCSA幀方式   IOM-2兼容設(shè)備   AC97兼容設(shè)備   IIS兼容設(shè)備 &

30、#160; SPI設(shè)備  (2)可與多達(dá)128個(gè)通道進(jìn)行收發(fā)。  (3)傳輸?shù)臄?shù)據(jù)字長(zhǎng)可以是8位、12位、16位、20位、24位和32位。  (4)-律/A-律壓擴(kuò)硬件。  (5)對(duì)8位數(shù)據(jù)的傳輸,可選擇LSB先傳還是MSB先傳。  (6)可設(shè)置幀同步信號(hào)和數(shù)據(jù)時(shí)鐘信號(hào)的極性。  (7)內(nèi)部傳輸時(shí)鐘和幀同步信號(hào)可編程程度高。所有的C6000器件有著同樣的McBSP接口,但是C621xC671x和C64x器件的McBSP接口卻有所不同,增加了新的特色和增強(qiáng)功能。4.2  McBSP接口及應(yīng)用McBSP外設(shè)具有很多強(qiáng)大功能,在這

31、里將要介紹外設(shè)的信號(hào)接口、控制寄存器、時(shí)序特點(diǎn)以及初始化工作;同時(shí)介紹了作為SPI接口和通用IO口使用的原理和方法。對(duì)于McBSP的多通道工作模式和-律A-律壓擴(kuò)硬件功能沒(méi)有介紹,有興趣的讀者可以參照TI相關(guān)文檔。    1信號(hào)接口和寄存器McBSP包括一個(gè)數(shù)據(jù)通道和一個(gè)控制通道,連接到外部器件。數(shù)據(jù)通過(guò)發(fā)送(DX)和接收(DR)引腳與外部器件通信,而其他的4個(gè)引腳起時(shí)鐘和幀同步信號(hào)作用。C6000通過(guò)片內(nèi)的外設(shè)總線訪問(wèn)串口的32位控制寄存器,進(jìn)而實(shí)現(xiàn)與McBSP間的通信與控制。McBSP結(jié)構(gòu)如圖4-23所示。外部引腳含義如表4-6所示。數(shù)據(jù)通道完成數(shù)據(jù)的發(fā)送和接

32、收。CPU或DMA控制器將待發(fā)送的數(shù)據(jù)寫入發(fā)送寄仔器(DXR)中,從接收寄存器(DRR)讀取接收到的數(shù)據(jù)。寫入DXR的數(shù)據(jù)通過(guò)發(fā)送移化寄存器(XSR)移位,從DX管腳輸出。同樣,DR管腳上接收到的數(shù)據(jù)先移位到接收移位寄存器(RSR)中,然后被復(fù)制到接收緩沖寄存器(RBR)中,RBR再將數(shù)據(jù)復(fù)制到DRR中,最后等候CPU或DMA控制器將數(shù)據(jù)讀走。這種多級(jí)緩沖方式使得片內(nèi)的數(shù)據(jù)搬移和外部數(shù)據(jù)的通信可以同時(shí)進(jìn)行。McBSP可以觸發(fā)多種中斷事件,中斷事件可以中斷CPU執(zhí)行中斷服務(wù)子程序:也可以產(chǎn)生同步事件告知DMA控制器,見(jiàn)表4-7。2數(shù)據(jù)的收發(fā)如圖4-23所示,McBSP的接收操作采用三級(jí)緩沖方式,

33、發(fā)送操作采用兩級(jí)緩沖方式。接收數(shù)據(jù)到達(dá)DR管腳后移位進(jìn)入RSR,一旦整個(gè)數(shù)據(jù)單元(8位,12位,16位,20位,24位或32位)接收完畢,如果RBR寄存器末滿,則RSR將數(shù)據(jù)復(fù)制到RBR中。如果DRR中舊的數(shù)據(jù)已經(jīng)被CPU或DMAEDMA控制器讀走,則RBR將新的數(shù)據(jù)復(fù)制到DRR中。發(fā)送數(shù)據(jù)被CPU或DMAEDMA控制器寫到DXR。如果XSR寄存器沒(méi)有數(shù)據(jù),則DXR中的值被復(fù)制到XSR中:否則,DXR會(huì)等待XSR中舊數(shù)據(jù)完全發(fā)送完,才將數(shù)據(jù)復(fù)制到XSR中。McBSP的復(fù)位有兩種方式:(1)一種是芯片復(fù)位,那么McBSP中發(fā)送、接收和采樣時(shí)鐘都同時(shí)被復(fù)位。(2)另一種是通過(guò)設(shè)置串口控制寄存器SP

34、CR中的相應(yīng)位,單獨(dú)使McBSP復(fù)位。設(shè)置XRST使得發(fā)送復(fù)位。RRST=0將分別使接收復(fù)位,GRST=0將使采樣速率發(fā)生器復(fù)位。復(fù)位后,整個(gè)串口初始化為默認(rèn)狀態(tài)。所有計(jì)數(shù)器及狀態(tài)標(biāo)志均被復(fù)位,這包括接受狀態(tài)標(biāo)志RFULL、RRDY及RSYNCERR,發(fā)送狀態(tài)標(biāo)志XEMPTFY、XRDY及XSYNCERR。器件復(fù)位和McBSP控制器復(fù)位對(duì)寄存器標(biāo)志位和管腳將產(chǎn)生不同的影響。RRDY和XRDY分別是McBSP接收和發(fā)送狀態(tài)準(zhǔn)備標(biāo)志位。讀山DRR數(shù)據(jù)和寫入DXR數(shù)據(jù)都將分別對(duì)RRDY和XRDY狀態(tài)位產(chǎn)生影響。讀寫串口數(shù)據(jù)有多種方式進(jìn)行同步:    ·輪詢RR

35、DY和XRDY狀態(tài)位;    ·DMAEDMA控制器產(chǎn)生的同步事件(REVT和XEVT);    ·CPU事件(RINT和XINT)產(chǎn)生的中斷。McBSP的控制信號(hào),如時(shí)鐘、幀同步和時(shí)鐘源都是可以設(shè)置的。圖4-24是McBSP時(shí)鐘和幀同步信號(hào)的一個(gè)典型時(shí)序。時(shí)鐘CLKR和CLKX對(duì)數(shù)據(jù)的接收發(fā)送進(jìn)行同步,而幀同步信號(hào)17SR和FSX則與一個(gè)數(shù)據(jù)單元傳輸同步。McBSP允許對(duì)數(shù)據(jù)時(shí)鐘以及幀同步信號(hào)設(shè)置參數(shù),如下:·FSR、FSX、CLKX、CLKR的極性·選擇單相幀或二相幀·定義每相中數(shù)

36、據(jù)單元的個(gè)數(shù)·定義每相中,一個(gè)數(shù)據(jù)單元的位數(shù)·是選擇幀同步信號(hào)觸發(fā)新的串行數(shù)據(jù)發(fā)送流,還是被忽略·選擇幀同步與第一個(gè)數(shù)據(jù)位之間的延遲時(shí)間,可以是0位,l位,2位延遲·接收數(shù)據(jù)的左右調(diào)整,進(jìn)行符號(hào)擴(kuò)展或是填充0對(duì)McBSP的收發(fā)部分可以各自獨(dú)立地選擇時(shí)鐘以及幀同步配置。接收和發(fā)送的幀同步信號(hào)和時(shí)鐘可以由內(nèi)部或是外部產(chǎn)生,根據(jù)寄存器PCR、SRGR中相應(yīng)位的設(shè)置而定。     3SPl協(xié)議下的接口     McBSP中的傳輸時(shí)鐘具有停止模式,與SPI協(xié)議的兼容。McBSP支持兩種

37、SPI傳輸格式,在SPCR寄存器的CLKSTP位中設(shè)置。表4-9列出了CLKSTP與CLKXP相配合,對(duì)串口時(shí)鐘工作模式的控制。圖4-25和圖4-26分別給出了在兩種SPI格式下,時(shí)鐘傳輸接口的時(shí)序情況。McBSP既可以作為SPI主設(shè)備又可以作為SPI從設(shè)備。作為SPI主設(shè)備時(shí),由McBSP內(nèi)部的采樣率發(fā)生器產(chǎn)生時(shí)鐘CLKX和從設(shè)備使能信號(hào)FSX.CLKX定義為輸出口(CLKXM=1),F(xiàn)SX定義為輸出口,與從設(shè)備的使能端(SS)連接。SPI協(xié)議要求:McBSP在移位輸出數(shù)據(jù)之前,F(xiàn)SX信號(hào)就必須有效,所以XCR寄存器中XDATDLY位必須設(shè)置為1。XDATDLY=0或2時(shí)將導(dǎo)致非法操作。用戶

38、需要設(shè)置SRGR寄存器中的CLKSM位來(lái)選擇采樣率發(fā)生器的時(shí)鐘源,以及利用CLKGDV位設(shè)置需要的SPI數(shù)據(jù)傳輸速率。在McBSP內(nèi)部會(huì)產(chǎn)生一個(gè)連續(xù)的CLKX時(shí)鐘,在完成傳輸后時(shí)鐘禁止輸出,從而實(shí)現(xiàn)傳輸接口所需要的時(shí)鐘停止模式。因此在McBSP-端,對(duì)于發(fā)送和接收的內(nèi)部操作而言,時(shí)鐘信號(hào)實(shí)際上是連續(xù)的。選擇時(shí)鐘停止模式時(shí),SRGR寄存器中的幀設(shè)置位(FPER和FWID)無(wú)意義。McBSP作為主設(shè)備時(shí)的接口框圖如圖4-27所示。當(dāng)McBSP作為SPI從設(shè)備時(shí),由外部的主設(shè)備產(chǎn)生所需的時(shí)鐘信號(hào)和從設(shè)備使能信號(hào)。串口按照時(shí)鐘進(jìn)行數(shù)據(jù)同步傳輸。輸入的CLKX和FSX信號(hào)同時(shí)也分別作為McBSP內(nèi)部接收

39、端的CLKR信號(hào)和FSR信號(hào)。McBSP的FSX引腳信號(hào)同從設(shè)備SPI的使能信號(hào)SS要求一樣,在進(jìn)行數(shù)據(jù)傳輸之前,外部主設(shè)備必須先將FSX信號(hào)置為有效(低電平)。圖4-28是McBSP作為SPI從設(shè)備的接口框圖。作為SPI從設(shè)備時(shí),McBSP的CLKX管腳和FSX管腳配置為輸入管腳(CLKXM=FSXM=0)。McBSP的RCRXCR寄存器中的(RX)DATDLY位必須置為0,以保證發(fā)送的第一個(gè)數(shù)據(jù)能夠出現(xiàn)在DX管腳上,一旦檢測(cè)到串行時(shí)鐘CLKX有效,就可以立刻接收數(shù)據(jù)。雖然CLKX信號(hào)是由外部主設(shè)備產(chǎn)牛,但是McBSP內(nèi)部的采樣率發(fā)生器仍必須被使能,并被設(shè)置為相應(yīng)的SPI模式。內(nèi)部采樣時(shí)鐘對(duì)

40、輸入的CLKX和FSX:信號(hào)進(jìn)行同步化處理。寄存器SRGR中的CLKSM=I,指定內(nèi)部采樣時(shí)鐘由內(nèi)部CPU時(shí)鐘產(chǎn)生。必須保證內(nèi)部的CLKG信號(hào)頻率至少是SPI數(shù)據(jù)傳輸率的8倍,比如,可以令CLKGDV=l,將采樣率發(fā)生器設(shè)置為最大的速率。設(shè)定McBSP工作在SPI模式下,需要按照以下步驟初始化寄存器:(1)復(fù)位收發(fā)端口,將SPCR寄存器中XRST和RRST置為0;(2)McBSP保持復(fù)位的狀態(tài)下,設(shè)置有關(guān)的寄存器為需要的值,先設(shè)置CLKSTP=1xb;(3)置SPCR寄存器中GRST=l,采樣率發(fā)生器退出復(fù)位態(tài),開(kāi)始工作:(4)等待兩個(gè)時(shí)鐘周期,以確保McBSP重新初始化;(5)根據(jù)由CPU還

41、是由DMA來(lái)訪問(wèn)McBSP,分別進(jìn)行下面的設(shè)置:·如果是由CPU進(jìn)行訪問(wèn),置XRST=RRST=1,使能串口,注意SPCR寄存器中其他    的設(shè)置值不變。·如果是由DMA進(jìn)行訪問(wèn),先對(duì)DMA進(jìn)行初始化,啟動(dòng)DMA,使之等候同步事件,    然后再將XRST=/RRST=1,使串口退出復(fù)位態(tài)。(6)兩個(gè)數(shù)據(jù)時(shí)鐘周期后,發(fā)送端和接收端進(jìn)入有效狀態(tài)。4通用IO口在兩種情況下,串口的管腳(CLKX,F(xiàn)SX,DX,CLKR,F(xiàn)SR,DR以及CLKS)可以作為通用IO口使用:·接收或發(fā)送處于復(fù)位狀態(tài),SPCR寄存器

42、中(RX) RST=0。·串口使能為通用IO狀態(tài),PCR寄存器中(RX)IOEN=1。在表4-10中詳細(xì)描述了這些管腳作為通用IO口的用法,其中有幾個(gè)引腳只能定義為單向IO口,這一點(diǎn)一定要注意。  4.3 BIOS中McBSP設(shè)置實(shí)例在TMS320C6x系列器件里都集成了McBSP外設(shè)。不同類型的DSP芯片集成的McBSP外設(shè)個(gè)數(shù)不一樣。BIOS為McBSP提供了對(duì)應(yīng)的API模塊。    1BlOS中McBSP控制器API函數(shù)同樣McBSP模塊基于句枘模式,完成對(duì)DSP器件McBSP外設(shè)的控制,進(jìn)行串行收發(fā)數(shù)據(jù)操作。API模塊包括結(jié)構(gòu)定義、函數(shù)

43、和宏。McBSP只有一個(gè)結(jié)構(gòu),定義如下:McBSP配置管理器創(chuàng)建配置對(duì)象,通過(guò)設(shè)置屬性頁(yè)的內(nèi)容可以設(shè)置McBSP的工作方式。屬性頁(yè)的設(shè)置界面如圖4-30所示,屬性頁(yè)主要包括以下幾個(gè)部分:·發(fā)送模式:中斷方式、幀同步方式和時(shí)鐘控制;·發(fā)送幀和數(shù)據(jù)單元格式:相位、數(shù)據(jù)單元個(gè)數(shù);·接收模式:中斷模式、幀同步、時(shí)鐘摔制;·接收幀和數(shù)據(jù)單元格式:相位、數(shù)據(jù)單元個(gè)數(shù);·采樣頻率發(fā)生器:采樣頻率發(fā)生器;·多通道操作:數(shù)據(jù)單元和塊分割:·通用IO口:使能GPIO功能;McBSP資源管理器中顯示器件內(nèi)部集成的McBSP外設(shè)個(gè)數(shù),并對(duì)每個(gè)外設(shè)定

44、義一個(gè)初始化的句柄名。C6202和C6203芯片支持第3個(gè)外設(shè)MCBSP_Prot2,端口和句柄對(duì)應(yīng)方式如下:  ·McBSP_Prot0:句柄名hMcbspO;  ·McBSP_Protl:  句柄名 hMcbspl:  ·McBSP_Prot2:  句柄名hMcbsp2;通過(guò)屬性頁(yè)可以使能打開(kāi)串口操作和用配置對(duì)象初始化串口。屬性頁(yè)如圖4-31所示:通過(guò)CSL GUI設(shè)置好McBSP端口后,將會(huì)分別在頭文件和源文件中生成相應(yīng)代碼,詳細(xì)可以參照附帶光盤里的例子。在csl_mcbsp.h頭文件中有如下代代碼:5

45、60;  TMS320C6000的DMA控制器設(shè)計(jì)本節(jié)主要介紹C6000系列的直接存儲(chǔ)器訪問(wèn)(DMA,Direct Memory Access)控制器其中介紹硬件特點(diǎn)、DMA通道與寄存器。5.1   DMA硬件介紹DMA控制器最大的特點(diǎn)是可以在沒(méi)有CPU參與的情況下完成映射存儲(chǔ)空間中的數(shù)據(jù)搬移。這些數(shù)據(jù)搬移可以是在片內(nèi)存儲(chǔ)器、片內(nèi)外設(shè)或是外部器件之間,而且是在CPU后臺(tái)進(jìn)行的。DMA控制器具有4個(gè)相互獨(dú)立編程的傳輸通道,允許進(jìn)行4個(gè)不同內(nèi)容的DMA傳輸。另外,還有一個(gè)輔助通道用來(lái)服務(wù)于主機(jī)口接口讀寫訪問(wèn)。在討論DMA操作時(shí),需要了解C6000的DMA傳輸中的幾個(gè)概

46、念:(1)數(shù)據(jù)的讀傳輸(read transfer):DMA控制器從源地址存儲(chǔ)器中讀取數(shù)據(jù)。(2)數(shù)據(jù)的寫傳輸(write transfer):DMA控制器將讀取的數(shù)據(jù)寫入目標(biāo)地址存儲(chǔ)器中。(3)數(shù)據(jù)單元傳輸(element transfer):一個(gè)數(shù)據(jù)單元的讀傳輸和寫傳輸?shù)慕Y(jié)合。(4)幀傳輸( transfer):幀的大小可編程設(shè)置。完成一個(gè)幀傳輸即傳輸一定數(shù)量的數(shù)據(jù)單元。(5)塊傳輸(block transfer):每個(gè)DMlA通道也可以獨(dú)立定義每塊中幀的數(shù)量。完成一個(gè)塊傳輸即傳輸一定數(shù)量的幀。(6)發(fā)送數(shù)據(jù)單元的傳輸(transmit element transfer):在通道分割模式下

47、,數(shù)據(jù)單元從源   地址中讀出并寫入分割目的地址。(7)接受數(shù)據(jù)單元的傳輸(receive element transfer):在通道分割模式下,數(shù)據(jù)單元從分割源地址中讀出并寫入目的地址。DMA控制器有如下主要特點(diǎn):(1)后臺(tái)操作:DMA控制器可以獨(dú)立于CPU工作。(2)高吞吐率:可以以CPU時(shí)鐘的速度進(jìn)行數(shù)據(jù)傳輸。(3)4個(gè)通道:DMA摔制器可以控制4個(gè)獨(dú)立通道的傳輸。(4)輔助通道:主機(jī)口用輔助通道來(lái)訪問(wèn)CPU的存儲(chǔ)空間。輔助通道與其他通道間的優(yōu)先級(jí)可以設(shè)置。(5)單通道分割(split-channel)操作:利用單個(gè)通道就可以與一個(gè)外設(shè)間同時(shí)進(jìn)行數(shù)據(jù)的讀和寫傳輸,效果

48、就好像使用兩個(gè)DMA通道一樣。(6)多幀()傳輸:傳送的每個(gè)數(shù)據(jù)塊可以含有多個(gè)數(shù)據(jù)幀。(7)優(yōu)先級(jí)可編程:每一個(gè)通道對(duì)于CPU的優(yōu)先級(jí)是可編程確定的。(8)地址產(chǎn)生方式可編程:每個(gè)通道的源地址寄存器和目標(biāo)地址寄存器對(duì)于每次讀寫都是可配置索引的。地址可以是常量、遞增、遞減,或是設(shè)定地址索引值。(9)32位地址范圍:DMA控制器可以對(duì)仟何一個(gè)地址映射區(qū)域進(jìn)行訪問(wèn),包括:·片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū)·片內(nèi)程序存儲(chǔ)區(qū)(當(dāng)其作為映射存儲(chǔ)器時(shí),而不是作為cache使用)·片內(nèi)的集成外設(shè)·通過(guò)EMIF接口的外部存儲(chǔ)器·通過(guò)擴(kuò)展總線接口的擴(kuò)展存儲(chǔ)器(10)傳送數(shù)據(jù)的字長(zhǎng)可

49、編程:每個(gè)通道都可以獨(dú)立選擇寬度為字節(jié)、半字(16位)或字(32位)。(11)自動(dòng)初始化:每傳送完一塊數(shù)據(jù),DMA通道會(huì)自動(dòng)為下一個(gè)數(shù)據(jù)塊的傳送重新初始化。(12)事件同步:讀、寫和幀操作都町以由指定的事件觸發(fā)。(13)中斷反饋:當(dāng)一幀或一塊數(shù)據(jù)傳送完牛,或是出現(xiàn)錯(cuò)誤情況時(shí),每一個(gè)通道都可以向CPU發(fā)出中斷請(qǐng)求。DMA控制器在C6000中的位置如圖4-32所示的陰影部分。5.2   DMA控制器設(shè)計(jì)及應(yīng)用     1DMA寄存器、初始化和啟動(dòng)DMA寄存器用于初始化和控制DMA操作。每一個(gè)DMA通道都有一套相關(guān)的寄存器完成傳輸控制,在啟

50、動(dòng)DMA之前,必須劉它們進(jìn)行初始化。表4-14列出了有關(guān)的控制寄存器及其在映射存儲(chǔ)器中的位置。限于篇幅,這里沒(méi)有列出寄存器各個(gè)控制位的意義。讀者可以參考TI的相關(guān)文檔。每一個(gè)DMA通道啟動(dòng)可以在程序中由CPU完成,也可以是通過(guò)自動(dòng)初始化肩動(dòng)。每一個(gè)DMA通道都可以山CPU控制獨(dú)立啟動(dòng)、暫停和停止。DMA通道豐控寄存器(PRICTL)的STATIS域指示相應(yīng)DMA通道的當(dāng)前狀態(tài)。只有在STATUS位和START位相同時(shí),才可以修改主控寄存器。啟動(dòng)操作如下所示:·手工啟動(dòng):向DMA主控制寄存器(PRICTL)的START域?qū)懭?1b將直即啟動(dòng)該通   

51、60; 道的DMA。一旦啟動(dòng),STATUS的值會(huì)變成01b。注意一旦啟動(dòng),再寫入01b將不會(huì)有任何影響。     ·暫停操作:在啟動(dòng)后,向START寫10b可以暫停DMA。暫停時(shí),如果某個(gè)數(shù)據(jù)單元傳輸?shù)淖x傳輸過(guò)程已經(jīng)完成,此時(shí)DMA通道會(huì)繼續(xù)完成其對(duì)應(yīng)的寫傳輸。STATUS在DMA完成當(dāng)前寫傳送后變?yōu)?0b。     ·停止操作:?jiǎn)?dòng)后寫入START=00b,DMA控制器將被停止。停止操作和暫停操作相     同。除非是工作在自動(dòng)初始化模式下,否則一旦DM

52、A完成數(shù)據(jù)傳輸,該通道使進(jìn)入停止?fàn)顟B(tài),STATUS的值變?yōu)?0b。在一次塊傳送任務(wù)完成后,DMA控制器可以自動(dòng)初始化。向主控制寄存器的START寫入11b將以自動(dòng)初始化方式啟動(dòng)DMA。在一次塊傳送任務(wù)完成后,DMA控制器自動(dòng)調(diào)用DMA全局?jǐn)?shù)據(jù)寄存器值預(yù)先為下一次數(shù)據(jù)塊的傳送操作初始化,因此DMA通道參數(shù)設(shè)置可以在下一次傳送操作之前完成。自動(dòng)初始化可以使DMA進(jìn)行以下幾種操作方式:·連續(xù)操作:該方式占用一定CPU時(shí)間。通常,CPU必須在一次讀寫傳送完成之后立     即重新初始化DMA。利用重載寄存器,就可以在當(dāng)前塊傳輸中的任何時(shí)間為下一次傳送初

53、始化參數(shù)。·重復(fù)操作:連續(xù)操作的一個(gè)特例。傳送完一塊后,DMA控制器將重復(fù)前一次相同的     塊傳輸。這種情況下,CPU不需要反復(fù)設(shè)置重載寄存器,只需在開(kāi)始傳輸之前設(shè)定重載寄存器的值。·使能自動(dòng)初始化:只需通道主控制寄存器的START=11b,就可以使能自動(dòng)初始化。     傳送完一塊后,DMA控制器將重載寄存器,重復(fù)前一次相同的塊傳輸。如果在暫停后重新啟動(dòng),START必須被重新設(shè)置為11b,以使自動(dòng)初始化使能。在從自動(dòng)初始化到非自動(dòng)初始化操作中,首先需要暫停DMA摔制器,即寫入10b,然后再

54、次啟動(dòng)DMA控制器,即寫入01b。2傳輸計(jì)數(shù)      DMA的通道傳輸計(jì)數(shù)寄存器(XFRCNT)包含兩個(gè)域,分別表示當(dāng)前傳輸?shù)膸?jì)數(shù)和每幀的數(shù)據(jù)單元計(jì)數(shù),如圖4-33所示。DMA的全局計(jì)數(shù)重裝載寄存器結(jié)構(gòu)與傳輸計(jì)數(shù)寄存器的結(jié)構(gòu)相同,如圖4-34所示。· COUNT:此域的16位無(wú)符號(hào)數(shù)指示當(dāng)前塊傳輸中的幀數(shù),每塊的最大幀數(shù)   為65535。當(dāng)一幀內(nèi)的最后一個(gè)讀傳輸完成后,該計(jì)數(shù)值遞減。一旦最后一幀傳送完后,整個(gè)計(jì)數(shù)器會(huì)被DMA通道主控寄存器的CNT RELOAD域所指定的DMA全局計(jì)數(shù)重載寄存器內(nèi)的高16位值重

55、載。COUNT設(shè)置為0的效果和設(shè)置為1一樣。·ELEMENT COUNT:此域內(nèi)的16位無(wú)符號(hào)數(shù)指示每幀傳輸?shù)臄?shù)據(jù)單元個(gè)數(shù)。每次數(shù)   據(jù)單元的讀傳輸完成后,該值遞減。每幀的最大數(shù)據(jù)單元數(shù)目為65535。最后一個(gè)數(shù)據(jù)單元完成傳輸后,ELBMENT會(huì)被DMA通道主控寄存器的CNT RELOAD域所選定的DMA全局計(jì)數(shù)重載寄存器內(nèi)的低16位值重載。在塊傳輸開(kāi)始前,計(jì)數(shù)器以及對(duì)應(yīng)的全局計(jì)數(shù)重載寄存器低16位必須設(shè)置相同的值,以保證每次的幀長(zhǎng)度相同。   除了在自動(dòng)初始化模式下需要這種重載以外,對(duì)于多幀數(shù)據(jù)傳送,也需要數(shù)據(jù)單元計(jì)  

56、 數(shù)的重加載,必須設(shè)定重載值。如果數(shù)據(jù)單元計(jì)數(shù)初始值為零,則操作無(wú)效。      3傳輸控制:同步與地址產(chǎn)生同步機(jī)制使得用戶可以利用某些事什來(lái)觸發(fā)DMA的傳輸過(guò)程,例如外設(shè)中斷或外部引腳中斷。每一個(gè)通道有三種類型的同步方式:    讀同步:由指定的事件觸發(fā)讀傳輸。    寫同步:由指定的事件觸發(fā)寫傳輸。    幀同步:由指定的事件觸發(fā)幀傳輸。由DMA通道主控寄存器的RSYNC和WSYNC兩個(gè)域控制DMA的同步事件。如果這個(gè)寄存器內(nèi)的FS=1,那么整個(gè)幀的同

57、步事件是RSYNC選定的事件,這時(shí)WSYNC必須設(shè)置為00000b。如果該通道設(shè)置為分裂模式(SPLIT不等于OOb),那么RSYNC和WSYNC必須設(shè)為非零值。表4-15列出了兩個(gè)域和同步事件的對(duì)應(yīng)關(guān)系。DMA通道副控寄存器中的STAT和CLR位與同步事件的控制有關(guān)。當(dāng)指定事件的有關(guān)信號(hào)發(fā)生由低變高(或由高變低)變化時(shí),各個(gè)通道會(huì)鎖定事件,同時(shí)相應(yīng)的STAT位被置位。如果沒(méi)有選擇同步事件,讀SFAT位總是1。單個(gè)事件可以用來(lái)觸發(fā)多個(gè)動(dòng)作。通過(guò)清除懸掛事件可以強(qiáng)制DMA通道等待下一個(gè)事件。相反,設(shè)置事件可以觸發(fā)塊傳輸。在觸發(fā)事件的相關(guān)操作完成后,鎖定事件的STAT位標(biāo)志會(huì)被自動(dòng)清除,也可以通過(guò)

58、手動(dòng)清除。用戶可以分別向STAT和CLR寫入1,手工設(shè)置事件或是清除事件。對(duì)STAT和CLR位寫入0足無(wú)效的。手工清除與設(shè)置的優(yōu)先級(jí)總是高于任何自動(dòng)的清除與設(shè)置。DMA控制器負(fù)責(zé)對(duì)每個(gè)通道的讀寫傳輸進(jìn)行地址計(jì)算。利用不同的地址產(chǎn)生方式,DMA控制器可以支持多種結(jié)構(gòu)數(shù)據(jù)的傳輸。例如,DMA控制器可以對(duì)矩陣數(shù)據(jù)進(jìn)行轉(zhuǎn)置操作。DMA通道的源地址寄存器和目的地址寄存器都是32位,分別存放下次讀傳輸和寫傳輸?shù)牟僮鞯刂?。如圖4-35和圖4-36所示。在計(jì)算傳輸?shù)刂窌r(shí),有基本調(diào)整和使用全局索引值調(diào)整兩種計(jì)算方式。基本調(diào)整是指通過(guò)控制域SRC DIR和DST DIR來(lái)設(shè)置傳輸?shù)刂钒磾?shù)據(jù)字長(zhǎng)大小遞增、遞減、保持

59、不變。全局索引寄存器如圖4-37所示。與基本調(diào)整不同,這種模式是根據(jù)傳輸?shù)臄?shù)據(jù)元素是否是當(dāng)前幀的最后一個(gè)來(lái)進(jìn)行不同的地址調(diào)整。全局索引寄存器的LSBl6(ELEMENTINDEX)中存放普通調(diào)整值,MSBl6( INDEX)中存放幀尾調(diào)整值,兩個(gè)索引值都是16位有符號(hào)數(shù),范圍從3276832767。每幀中數(shù)據(jù)除最后一個(gè)數(shù)據(jù)傳輸之外都按ELEMENT INDEX值規(guī)定地址寄存器的增量,對(duì)于最后一個(gè)數(shù)據(jù)傳輸,按照 INDEX值調(diào)整地址寄存器的值。4單一通道的分裂操作利用通道分裂操作方式可以使一個(gè)DMA通道為一個(gè)具有固定地址的外部或是內(nèi)部外設(shè)同時(shí)提供輸入和輸出數(shù)據(jù)流。  

60、0;  分裂通道操作分為發(fā)送數(shù)據(jù)單元的傳輸和接收數(shù)據(jù)單元的傳輸,每種傳輸都依次執(zhí)行一次讀傳輸和一次寫傳輸:     ·發(fā)送數(shù)據(jù)單元的傳輸發(fā)送讀傳輸:數(shù)據(jù)從DMA通道的源地址讀出,然后源地址按照設(shè)置參數(shù)進(jìn)行調(diào)     整,傳送計(jì)數(shù)減1。沒(méi)有同步事件。發(fā)送寫傳輸:由發(fā)送讀傳輸?shù)玫降臄?shù)據(jù)被寫入分裂目標(biāo)地址。此過(guò)程有WSYNC     域所指定的同步事件。接收數(shù)據(jù)單元的傳輸     接收讀傳輸:數(shù)據(jù)從DMA通道的分裂源地址讀

61、出。此過(guò)程有RSYNC域所指定的事件同步。     接收寫傳輸:由接收讀傳輸?shù)玫降臄?shù)據(jù)被寫入目標(biāo)地址,然后目標(biāo)地址按照設(shè)置     調(diào)整。沒(méi)有同步事件。由于每個(gè)通道只有一個(gè)數(shù)據(jù)單元傳輸和幀傳輸計(jì)數(shù)器,因此接收與發(fā)送的幀數(shù)以及每幀的數(shù)據(jù)單元個(gè)數(shù)必須是相同的。為了使分裂通道正常工作,RSYNC和WSYNC控制域必須配置為非零值,同時(shí)禁止幀同步方式。所有傳輸都按照以上次序進(jìn)行。但是在以上的過(guò)程中,發(fā)送數(shù)據(jù)單元傳輸并不需要等前一次的接收數(shù)據(jù)單元傳輸完成之后才能進(jìn)行。因此發(fā)送數(shù)據(jù)有可能會(huì)發(fā)生在接收數(shù)據(jù)之前。整個(gè)相關(guān)的發(fā)送數(shù)據(jù)

62、單元傳輸完成后,源地址寄存器會(huì)被遞減或者重新初始化。只要發(fā)送數(shù)據(jù)單元傳輸?shù)拇螖?shù)不會(huì)超過(guò)接收數(shù)據(jù)單元傳輸?shù)拇螖?shù)8次,DMA通道的硬件會(huì)繼續(xù)運(yùn)行,否則發(fā)送數(shù)據(jù)單元傳輸將被停止。在DMA主控寄存器中SPLIT域選取相應(yīng)的DMA全局地址寄存器作為分裂傳輸操作中的分裂地址:     ·分裂源地址:即C6000的輸入數(shù)據(jù)流的源地址,保存在選定的DMA全局地址寄存器     里。     ·分裂目標(biāo)地址:即C6000的輸出數(shù)據(jù)流目的地址,比分裂源地址大一個(gè)字(4個(gè)字節(jié))

63、。     兩個(gè)地址的最低3位始終為0,強(qiáng)制按照字地址大小排列。從而確保分裂源地址在偶數(shù)字上,分裂目標(biāo)地址是在奇數(shù)字上。   對(duì)于外部設(shè)備,用戶在設(shè)計(jì)地址譯碼時(shí)一定要符合這個(gè)規(guī)定分裂操作要求。      5資源仲裁和優(yōu)先級(jí)設(shè)置      DMA控制器片內(nèi)仲裁機(jī)構(gòu)根據(jù)優(yōu)先級(jí)確定哪個(gè)請(qǐng)求方將先獲得資源的控制權(quán)。這些請(qǐng)求方包括:    (1)DMA通道。    (2)CPU的程序存取和數(shù)據(jù)存取。  

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論