日韩欧美自拍在线观看-欧美精品在线看片一区二区-高清性视频一区二区播放-欧美日韩女优制服另类-国产精品久久久久久av蜜臀-成人在线黄色av网站-肥臀熟妇一区二区三区-亚洲视频在线播放老色-在线成人激情自拍视频

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)

ADSP2116

ADSP2116 的PDF資料

暫且沒有下載
其他型號

ADSP2116的供應商:
聯(lián)系人:謝小姐/李小姐/楊小姐/陳先生
電話:0755-25320933/0755-25320966/0755-25320933/0755-25320966
聯(lián)系人:李先生
電話:15889695532
聯(lián)系人:寧先生/林先生
電話:0755-23900189/0755-23900189
>>更多供應商

ADSP2116中DMA的應用

查看最近90天中添加的最新產(chǎn)品 最新電子元器件資料免費下載 派睿電子TI有獎問答 - 送3D汽車鼠標 IR推出采用焊前金屬的汽車級絕緣柵雙極晶體管 全球電子連接器生產(chǎn)商—samtec 最新斷路器保護套
摘要:直接內(nèi)存存取(DMA)是DSP芯片中用于快速數(shù)據(jù)交換的重要技術,文中對AD公司的浮點系列芯片ADSP2116x中DMA的應用方法作了詳細介紹,同時重點介紹了鏈式DMA的操作方法,給出了一些實際應用中的例子。

    關鍵詞:DMA 鏈式DMA 浮點系列芯片 ADSP2116x

1。模停粮攀

直接內(nèi)存存。ǎ模停粒┦怯嬎銠C系統(tǒng)提高運行效率的一項重要技術。它可以在CPU運行指令的同時,使系統(tǒng)從外部存儲器或設備中存取數(shù)據(jù)也可以在核心處理器不參與的情況下由專用的DMA設備存取數(shù)據(jù)。

對于DSP芯片來講,DMA的作用尤為重要。眾所周知,DSP芯片主要面向?qū)崟r信號處理其核心運算部件具有很高的運算速度,常以MFLOPS(每秒百萬次浮點運算)來衡量。ADSP2116x的速度為600MFLOPS此速度是以存儲在芯片內(nèi)部存儲器中的程序和數(shù)據(jù)為前提的。在DSP內(nèi)部,一般采用多總線的哈佛結構數(shù)據(jù)總線和程序總線相互獨立,即指令的存取和數(shù)據(jù)的存取并行不悖,另外,在AD-SP2116x內(nèi)部還有各種接口總線,可用以提高數(shù)據(jù)的流通能力,而在芯片的外部,所有的總線都被合并在一起了。為了發(fā)揮DSP核心運算單元的高速運算能力,必須先把外部數(shù)據(jù)傳輸?shù)狡瑑?nèi)存儲器中。使用DMA操作可以減少核心處理器的負擔,提高運算速度。另一方面,DSP系統(tǒng)總要與各種外部信號打交道它從外部輸入數(shù)字信號,經(jīng)過各種算法處理后,還要輸出給其它外部設備。不僅如此,對于很多應用系統(tǒng)數(shù)據(jù)的輸入和輸出常常是連續(xù)不斷的。試想若用DSP的核心部件完成數(shù)據(jù)的輸入和輸出,將無法發(fā)揮DSP的高速運算能力。而AD公司的ADSP2116x系列則集成了DMA控制器,從而可用DMA來完成數(shù)據(jù)的輸入和輸出。

高效的DSP系統(tǒng)通常采用圖1所示的結構。該結構的內(nèi)部帶有輸入、輸出緩沖區(qū),而數(shù)據(jù)的獲得則依靠DMA控制器。這樣,核心運算單元就可以專門進行信號處理,而將外界數(shù)據(jù)的獲取交給 DMA來完成。

2 ADSP2116x中的DMA

2.1 ADSP2116x中DMA的數(shù)據(jù)傳輸類型

ADSP2116x中的DMA包含14條獨立通道,可完成下列類型的數(shù)據(jù)傳輸操作:

●片內(nèi)存儲器與片外存儲器或片外設備之間的傳輸操作;

●片內(nèi)存儲器與其它ADSP2116x的片內(nèi)存儲器之間的傳輸操作;

●片內(nèi)存儲器與主處理器之間的傳輸操作;

●片內(nèi)存儲器與串行口之間的傳輸操作;

●片內(nèi)存儲器與Link口之間的傳輸操作;

●片內(nèi)存儲器與SPI口之間的傳輸操作;

●片外存儲器與片外設備之間的傳輸操作。

2.2 ADSP2116x中與DMA有關的寄存器

DMA的編程實際上是通過內(nèi)部核心處理單元或外部主機對片內(nèi)有關的I/O寄存器設置來完成的,與DMA有關的I/O寄存器如表1所列?刂萍拇嫫髦饕脕碓O置數(shù)據(jù)傳輸?shù)姆较、?shù)據(jù)格式、是否鏈式等操作;參數(shù)寄存器用來設置數(shù)據(jù)傳輸?shù)牡刂、?shù)目等信息;數(shù)據(jù)緩存器則主要用來緩存?zhèn)鬏數(shù)臄?shù)據(jù),以提高數(shù)據(jù)的傳輸率。這些I/O寄存器都被映射到片內(nèi)存儲器的前256個地址上。

表1 ADSP2116x中的DMA緩存器

DMA通道號 控制寄存器 參數(shù)寄存器 數(shù)據(jù)緩存器 說  明
0 SPCTL0 II0A,IM0A,CP0A,GP0A RX0A,TX0A 串口0A
1 II0B,IM0B,C0B,CP0B,GP0B RX0B,TX0B 串口0B
2 SPCTL1 II1A,IM1A,C1A,CP1A,GP1A RX1A,TX1A 串口1A
3 II1B,IM1B,C1B,CP1B,GP1B RX1B,TX1B 串口1B
4 SPCTL2 II2A,IM2A,C2A,CP2A,GP2A RX2A,TX2A 串口2A
5 II2B,IM2B,C2B,CP2B,GP2B RX2B,TX2B 串口2B
6 SPCTL3 II3A,IM3A,C3A,CP3A,GP3A RX3A,TX3A 串口3A
7 II3B,IM3B,C3B,CP3B,GP3B RX3B,TX3B 串口3B
8 LCTLSPICTL IILB1,IMLB1,CLB1,CPLB1,GPLB1 IISTX,IMSRX,CSRX,GPSRX LUBF0 SPIRX Link0口SPI發(fā)送口
9 IILB1,IMLB1,CLB1,CPLB1,GPLB1 IISTX,IMSTX,CSTX,GPSTX LUBF1 SPITX Link1口SPI發(fā)送口
10 DMAC10 IIEP0,IMEP0,CEP0,CPEP0,GPEP0,EIEP0,EMEP0,ECEP0 EPB0 外部接口0
11 DMAC11 IIEP1,IMEP1,CEP1,CPEP1,GPEP1,EIEP1,EMEP1,ECEP1 EPB1 外部接口1
12 DMAC12 IIEP2,IMEP2,CEP2,CPEP2,GPEP2,EIEP2,EMEP2,ECEP2 EPB2 外部接口2
13 DMAC13 GPEP3,EIEP3,CEP3,CPEP3,GPEP3,EIEP3,EMEP3,ECEP3 EPB3 外部接口3

2.3 ADSP2116x中DMA一般傳輸過程的設置

DMA一般傳輸過程的設置步驟如下:

(1)設置對應通道的參數(shù)寄存器

(2)設置對應通道的DMA控制寄存器,并將其中的DMA使能位設為有效

(3)開始DMA數(shù)據(jù)傳輸

(4)DMA傳輸結束后,產(chǎn)生對應的中斷,并通過程序?qū)χ袛噙M行處理。

2.4 ADSP2116x中的鏈式DMA

為了減少由DMA引起的中斷,ADSP2116x中的DMA控制器提供了鏈式DMA功能。所謂鏈式DMA,是指在當前的DMA結束時,I/O處理器能夠自動加載DMA參數(shù)并開始下一個DMA傳輸。利用這種特性,程序能夠設置多個具有不同屬性的DMA傳輸。在鏈式DMA過程中,通常先把每次DMA傳輸?shù)挠嘘P參數(shù)寫成一個傳輸控制塊(TCB),并把它們存儲在片內(nèi)。傳輸過程中,在當前的DMA結束時,I/O處理器將對鏈式指針寄存器(CPx)進行控制以使其指向存儲在片內(nèi)的下一個TCB。

表2 TCB中各相關參數(shù)寄存器的排列順序

地   址 外部口 Link口和串口
CPx+0x00040000 IIEPx IIx
CPx-1+0x00040000 IMEPx IMx
CPx-2+0x00040000 CEPx Cx
CPx-3+0x00040000 CPEPx CPx
CPx-4+0x00040000 GPEPx GPx
CPx-5+0x00040000 EIEPx  
CPx-6+0x00040000 EMEPx  
CPx-7+0x00040000 ECEPx  
CPx-8+0x00040000 -  

CPx在鏈式DMA中具有非常重要的作用,它是一個19位的寄存器,其中低18位是偏移地址,在ADSP2116x中,這組偏移地址加上0x00040000后才是片內(nèi)存儲器中的實際地址,其中最高一位為中斷控制位。該位在被設置的情況下,I/O處理器將在鏈式DMA結束時產(chǎn)生一個中斷,實際上CPx指向的是TCB的最大地址,在TCB中,各有關DMA參數(shù)寄存器的排列順序如表2所列。表中的“x”代表所用到的DMA通道。鏈式DMA傳輸過程的設置步驟如下:

(1)在片內(nèi)存儲器中設置好所有的TCB

(2)設置對應通道的控制寄存器,并將其中的DMA使能位和鏈式使能位設為有效

(3)將第一個TCB的最大地址寫到CPx中,并開始鏈式DMA的傳輸

(4)傳輸結束后,產(chǎn)生對應的中斷。

有兩點要特別注意:第一是鏈式DMA只能發(fā)生在同一DMA通道內(nèi);二是SPI口不支持鏈式DMA。

3 幾種常用的DMA操作

在基于ADSP2116x的DSP系統(tǒng)開發(fā)過程中,最常用的操作是片內(nèi)存儲器和片外存儲器之間的DMA、link口之間的DMA、串口之間的DMA以及SPI之間的DMA等幾種。限于篇幅,本文只介紹前面兩種。

3.1 片內(nèi)存儲器和片外存儲器之間的DMA

片內(nèi)存儲器與片外存儲器之間的DMA傳輸可用通道10~13這四個通道中的任意一個來進行。下面通過一個例子來說明這種傳輸。假定要把片內(nèi)存儲器地址0x50000~0x5001f中的32個數(shù)據(jù)利用DMA通道10傳送到片外存儲器0x2000000~0x200001f中,則可用下面的程序來實現(xiàn):

R0=0;dm(DMAC10)=R0 //清空對應通道的DMA控制寄存器

//設置片內(nèi)存儲器參烽寄存器

R0=0x50000; dm(IIEP0)=R0; //設置片內(nèi)存儲器起始地址

R0=1; dm(EMEP0)=R0; //設置片內(nèi)存儲器地址增加值

R0=32; dm(ECEP0)=R0; // 設置片內(nèi)存儲器計數(shù)寄存器

//設置片外參數(shù)寄存器

R0=0x2000000( dmEIEP0)=R0 //設置片外存儲器起始地址

R0=1; dm(IMEP0)=R0; //設置片外存儲器地址增加值

R0=32; dm(CEP0)=R0; //設置片外存儲器計數(shù)寄存器

//設置對應通道的DMA控制寄存器

Ustat1=0x00000000;

Bit set ustat1 MASTER|PMODE4|TRAN|DEN;

Dm(DMAC10)=ustat1; // 設置為master和無打包模式,并開始DMA傳輸

上面的例子是一般的DMA傳輸。而如果需要進行兩段或兩段以上的數(shù)據(jù)傳輸,則要在中斷后重新設置參數(shù)寄存器,在這種情況下,用鏈式DMA更有利于提高核心處理單元的效率。假定要把片內(nèi)存儲器地址0x50000~0x5001f中的32個數(shù)據(jù)和0x50040~0x5007f中的64個數(shù)據(jù)利用DMA通道10分別傳送到片外存儲器0x2000000~0x200001f和0x2000040~0x200007f中,可用下面的程序來實現(xiàn):

VAR tcb1[8] = 32, //ECEP0

1, //EMEP0

0x2000000, // EIEP0

0, // GPEP0

tcb2+7-0x40000, // CPEP0,保證第一次DMA結束后自動加載第二個TCB

32, // CEP0

1, // IMEP0

0x50000; // IIEP0

VAR tcb2[8]=64,1,0x2000040,

// ECEP0, EMEP0, EIEP0,0 //GPEP0

0x40000, //CPEP0,保證第二個DMA結束后產(chǎn)生DMA中斷

64,1,0x50040;//CEP0, IMEP0, IIEP0

r0=0,

dm(DMAC10)=r0; //清空對應通道的DMA控制器

ustat0=0x00000000;

bit set ustat0 INT32 |MASTER|PMODE4|CHEN|DEN|TRAN;

dm(DMAC10)=ustat0; //設置為master和無打包模式,鏈式DMA

r0=tcb1+7-0x40000;

dm(CPEP0) =r0; //加載第一個TCB的CPEP0

開始DMA傳輸完第一段數(shù)據(jù)

后自動開始加載第二個TCB,

直到兩段數(shù)據(jù)后產(chǎn)生中斷

bit set mode1 IRPTEN //設置全局中斷使能

bit set imask EP0I //設置DMA通道#10中斷使能

3.2 片內(nèi)存儲器與link口之間的DMA

ADSP2116x具有很強的并行工作能力,它不需另加任何外部仲裁電路,便可以直接通過link口聯(lián)接在一起并行工作以實現(xiàn)片間數(shù)據(jù)的交換,在通常情況下可采用DMA方式,以便充分發(fā)揮其優(yōu)點。下面是兩片ADSP2116x之間通過link0口進行數(shù)據(jù)傳輸?shù)睦。假定要把第一片片?nèi)存儲器0x100000~0x1001ff中的512個數(shù)據(jù)傳送到第二片的片內(nèi)存儲器0x120000~0x1201ff中。其程序如下:

//第一片

.var txtcb_source8=0000051210x100000

//設置DMA TCB

r0 = 0 dmLCTL = r0 //清空對應通道的

控制寄存器

ustat1=dmLCTL

bit clr ustat1 L0TRAN | LAB0 | L0CLKD0

bit set ustat1 L0EN | L0CLKD1 | L0DEN | L0CHEN dmLCTL=ustat1 //設置DMA控制器LCTL

//設置link0口為2x時鐘,發(fā)

送數(shù)據(jù)模式,鏈式DMA

r1 = 0x00040000

r0 = txtcb_source + 7

r0 = r1 or r0 //設置CPLB0寄存器中的PCI位

dmtxtcb_source + 4 = r0 //設置TCB中的CPLB0

dmCPLB0 = r0 //加載TCB中的CPLB0,并

開始鏈式DMA

//第二片

.var rxtcb_dest8=0000051210x120000

//設置DMA TCB

r0=0 dmLCTL=r0 //清空對應通道的控制

寄存器

ustat1=dmLCTL

bit clr ustat1 LAB0 | L0CLKD0

bit set ustat1 L0TRAN | L0EN | L0CLKD1 | L0DEN | L0CHEN 

dmLCTL=ustat1 //設置DMA控制器LCTL

//設置link0口為2x時鐘,

接收數(shù)據(jù)模式,鏈式DMA

r1 = 0x00040000

r0 = rxtcb_dest + 7

r0 = r1 or r0 //設置CPLB0中的PCI位

dmrxtcb_dest + 4 = r0 //設置TCB中的CPLB0

dmCPLB0 = r0 //加載TCB中的CPLB0

并開始鏈式DMA

4 結束語

本文簡要介紹了ADSP2116x中DMA的基本原理,給出了幾種DMA操作時的編程實例,這些例子重點突出了鏈式DMA的應用。由于ADSP2116x中DMA操作功能強大,形式多樣。因此,只有熟練掌握和應用各種DMA,才能使數(shù)據(jù)進出芯片變得更加流暢,同時也才能使其核心處理單元的運算能力發(fā)揮到極致。



  來源:零八我的愛
收藏此頁】【關閉】【返回】【打印】【推薦
分享: QQ空間 人人網(wǎng) 開心網(wǎng) 騰訊微博 新浪微博 搜狐微博 網(wǎng)易微博
本頁面信息由維庫用戶提供,如有侵犯您的知識產(chǎn)權,請致電本站,本站核實后將迅速刪除!

熱門詞條:汽車功放記憶棒合成膜電位器光電耦合器醫(yī)用燈泡可編程控制器控制箱復用器便攜式多功能強光燈單結晶體管電子分析天平更多>>
相關文章
  • 更多"ADSP2116"相關文章
  • 關于我們 | 服務項目 | 付款方式 | 聯(lián)系我們 | 友情鏈接 | 投訴 建議 合作 | 網(wǎng)站地圖 | 加入收藏 | 公司庫
    © 2026 維庫電子市場網(wǎng)(www.hbjingang.com) 版權所有 經(jīng)營許可證編號:浙B2-20050339 版權聲明
    二十一年專注打造優(yōu)質(zhì)電子元器件采購網(wǎng)、IC交易平臺。