DSP(號,董純勇)_第1頁
DSP(號,董純勇)_第2頁
DSP(號,董純勇)_第3頁
DSP(號,董純勇)_第4頁
DSP(號,董純勇)_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、信息工程系課程設(shè)計(論文)邵 陽 學(xué) 院信息工程系DSP課程設(shè)計報告書題目: 基于TMS320VC5502的語音信號采集系統(tǒng)設(shè)計專 業(yè): 電子信息工程 班 級: 10電信 學(xué) 號: 1041301006 學(xué)生姓名: 董純勇 指導(dǎo)教師: 李菲 2013年 6月 7 日 摘 要為了研究數(shù)字信號處理,提出了一個基于DSP TMS320VC5502和A/D轉(zhuǎn)換芯片TLC320AD50的語音信號采集系統(tǒng)的設(shè)計。給出了該系統(tǒng)的總體設(shè)計方案,具體硬件電路,包括系統(tǒng)電源設(shè)計、復(fù)位電路設(shè)計、時鐘電路設(shè)計、存儲器設(shè)計、A/D接口電路設(shè)計、JTAG接口設(shè)計、DSP與A/D芯片的連接等,以及軟件流程圖。通過MATLA

2、B得到語音信號的波形和頻譜圖。實驗表明: 所設(shè)計的基于DSP的硬件和軟件系統(tǒng)是一個很好的語音信號采集系統(tǒng),該系統(tǒng)結(jié)構(gòu)清晰,電路簡潔,易于實現(xiàn)。關(guān)鍵詞:語音信號;數(shù)據(jù)采集;DSP;TLC320AD50AbstractIn the study based on digital signal processing, proposed a design based on DSP TMS320VC5502 and A / D converter chip TLC320AD50 speech signal acquisition system. Gives the overall design schem

3、e of the system, the hardware circuit including the system power supply design, the reset circuit design, clock circuits, memory design, A / D interface circuit, JTAG interface design, the connections of DSP and A / D chip and so on, and software flow chart. We get speech signal waveform and spectru

4、m diagram by MATLAB. Experiments show that: the design based on DSP hardware and software systems is an excellent voice signal acquisition system, the system structure is clear, the circuit is simple and easy to achieve.Key words: Voice signal; Data Acquisition; DSP;TLC320AD50- 18 - -目 錄1 任務(wù)提出與方案論證6

5、1.1TMS320VC55x介紹62 總體設(shè)計82.1 DSP核心模塊的設(shè)計82.2 AD轉(zhuǎn)換模塊93 詳細設(shè)計103.1 硬件設(shè)計103.1.1 DSP芯片103.1.2 電源設(shè)計103.1.3 復(fù)位電路設(shè)計113.1.4 時鐘電路設(shè)計113.1.5 程序存儲器擴展設(shè)計123.1.6數(shù)據(jù)存儲器擴展設(shè)計123.1.7 JTAG接口設(shè)計133.1.8 A/D接口電路設(shè)計133.2 軟件設(shè)計153.2.1 MATLAB 環(huán)境中的語音信號采集和處理仿真153.2.2系統(tǒng)軟件設(shè)計164 總結(jié)22參考文獻23 1 任務(wù)提出與方案論證20世紀(jì)50年代以來,隨著數(shù)字信號處理各項技術(shù)的發(fā)展,語音信號處理技術(shù)得

6、到不斷提高, 語音合成、語音識別、語音記錄與語音控制等技術(shù)已開始逐步成熟并得到應(yīng)用。在語音信號處理過程中, 要實現(xiàn)語音信號處理技術(shù)的精確性、實時性目的,語音信號采集和無誤差存儲成為語音信號處理中的前提。TMS320VC5502是德州儀器公司公司在2002年基于TMS320VC5502推出的定點數(shù)字信號處理器,它采用修正的哈佛結(jié)構(gòu),包括1個程序存儲總線、3個數(shù)據(jù)存儲總線和4個地址總線,這種結(jié)構(gòu)允許同時執(zhí)行程序指令和對數(shù)據(jù)操作, 運行速度快,單周期定點指令執(zhí)行時間為5ns,遠高于語音信號采集和處理的要求。在語音信號采集中, 模擬信號向數(shù)字信號轉(zhuǎn)換(ADC)的精度和實時性對后續(xù)信號處理過程起到了重要

7、作用。設(shè)計中采用TLC320AD50完成語音信號的A/D轉(zhuǎn)換。TLC320AD50是TI公司提供的一款16 bit同步串口A/D和D/A轉(zhuǎn)換芯片,ADC之后有1個抽取濾波器以提高輸入信號的信噪比, 其采樣頻率最高可達22.5 Kb/s,滿足語音信號處理中關(guān)于采樣頻率的要求。1.1 TMS320VC55x介紹2002 年初,推出了TMS320C5510,TMS320C5509, TMS320C5502 等DSP 芯片,連同此前推出的TMS320C5501, TMS320C55x( 以下簡稱C55x) 作為一個系列, 共有4 種芯片。C55x 是新一代16 位定點數(shù)字信號處理器, 采用了新的C55

8、x CPU 內(nèi)核。C55x 通過CPU 結(jié)構(gòu)方面的措施來提高內(nèi)核的性能和速度; C55x 通過在功耗方面的專門處理, 其功耗達到了目前業(yè)界最低,是C54x 功耗的1/ 6。C55x 是在C54x 的基礎(chǔ)上發(fā)展而來的, 同時又吸收了在C55x 之前已推出的TMS320C6000 系列的優(yōu)點。一般地說,C55x的目標(biāo)市場是消費和通信市場,多用于語音編解碼,線路回音和噪聲消除,調(diào)制解調(diào),圖像和聲音的壓縮和解壓,語音的加密與解密,語音的識別與合成等領(lǐng)域。TMS320C55x DSP的主要性能和優(yōu)點:一個32×16bit指令緩沖隊列:緩沖可變長度指令實現(xiàn)塊重復(fù)操作。兩個17bit×1

9、7bit MAC:在單周期內(nèi)實現(xiàn)雙MAC操作。一個40bit ALU:執(zhí)行高精度算數(shù)和邏輯算數(shù)。一個40bit桶形移位寄存器:可以把40bit結(jié)果左移31位或右移32位。一個16bit ALU:和主ALU并行執(zhí)行簡單算術(shù)運算。四個40bit累加器:保持計算結(jié)果和減少所需存儲器數(shù)量12條獨立總線:并行地對不同操作單元同時提供出來指令和操作數(shù)。用戶配置的IDLE域:改善低活動性時的電源管理。TLC320AD50介紹TLC320AD50(以下簡稱AD50 )是TI生產(chǎn)的多媒體音頻編解碼器芯片,它集成了16位A/D和D/A 轉(zhuǎn)換器,采樣速率最高可達22.05KHz,其采樣速率可通過DSP編程來設(shè)置。在

10、AD50內(nèi)部ADC之后有抽樣濾波器,以提高輸入信號的信噪比,在DAC之前有插值濾波器,以保證輸出信號平滑。AD50內(nèi)部有7個數(shù)據(jù)和控制寄存器,用于編程設(shè)置它們的工作狀態(tài)。由于語音信號的頻率范圍在200Hz23400Hz之間,采樣率一般設(shè)定為8kHz,所以用AD50做AD轉(zhuǎn)換器非常合適。AD50的工作方式和采樣頻率均通過串口編程來實現(xiàn)。由于轉(zhuǎn)換的數(shù)據(jù)和控制數(shù)據(jù)是通過同一串行口進行傳輸?shù)?所以AD50中有首次通信和二次通信。首次通信專用于轉(zhuǎn)換數(shù)據(jù)的傳送,其時序如圖2所示。二次通信則用來設(shè)置和讀出寄存器的值,所有的寄存器都在二次通信時編程。啟動二次通信有兩種方法,一種是在FC上加高電平,第二種是將1

11、5位方式在首次通信的D IN的LSB位置為1。AD50完成語音信號采集后,在DSP中進行相應(yīng)的處理算法,語音信號經(jīng)處理再從AD50輸出。2 總體設(shè)計基于TMS320VC5502的語音信號采集系統(tǒng)的結(jié)構(gòu)如圖21所示,該系統(tǒng)的中央處理單元采用美國TI(德州儀器)公司的高性能定點數(shù)字信號處理芯片TMS320VC5502,TMS320VC5502是TI公司推出的定點數(shù)字信號處理器,它采用修正的哈佛結(jié)構(gòu),包括12組獨立總線,即1組程序讀總線,1組程序地址總線,3組數(shù)據(jù)讀總線,2組數(shù)據(jù)寫總線,5組數(shù)據(jù)地址總線。這種結(jié)構(gòu)允許同時執(zhí)行程序指令和對數(shù)據(jù)操作, 運行速度快,單周期定點指令執(zhí)行時間為10ns。在語音

12、信號采集中, 模擬信號向數(shù)字信號轉(zhuǎn)換(ADC)的精度和實時性對后續(xù)信號處理過程起到了重要作用。設(shè)計中采用TLC320AD50完成語音信號的A/D轉(zhuǎn)換。TLC320AD50是TI公司提供的一款32 bit同步串口A/D和D/A轉(zhuǎn)換芯片,ADC之后有1個抽取濾波器以提高輸入信號的信噪比, 其采樣頻率最高可達22.5 Kb/s,滿足語音信號處理關(guān)于采樣頻率的要求。圖2-1系統(tǒng)結(jié)構(gòu)框圖2.1 DSP核心模塊的設(shè)計TMS320VC5502是整個數(shù)據(jù)采集系統(tǒng)中,核心處理部分。把緩存器的數(shù)據(jù)轉(zhuǎn)存到海量存儲器中,并對CPLD邏輯的工作方式,工作時鐘進行控制,同時還完成與上位機的通信。TMS320VC5502有

13、2個MAC單元,4個40位累加器,能夠在單周期內(nèi)作2個17*17的乘法運算。在這里,選用TMS320VC5502的數(shù)據(jù)空間用做SRAM的擴展,選用TMS320VC5502的I/O空間用做FLASH擴展。DSP核心模塊充當(dāng)整個系統(tǒng)的CPU的功能,除了承擔(dān)對AD轉(zhuǎn)換器送來的信號做相應(yīng)的處理之外,還驅(qū)動RS-232串行通信鏈路將相應(yīng)的數(shù)據(jù)及時的傳到上位機上以備做之后的相關(guān)處理或計算,這就要求DSP芯片的處理能力相當(dāng)?shù)膹姶蠛退俣缺仨毰cADC相匹配,這一點TMS320VC5502完全有能力做到。2.2 AD轉(zhuǎn)換模塊AD轉(zhuǎn)換模塊是整個系統(tǒng)的主要部分,它接收來自外部的信號或模擬數(shù)據(jù),然后經(jīng)過處理轉(zhuǎn)換成數(shù)字信

14、號傳遞給CPU做后續(xù)的處理。設(shè)計中采用TLC320AD50完成語音信號的A/D轉(zhuǎn)換。TLC320AD50是TI公司提供的一款16 bit同步串口A/D和D/A轉(zhuǎn)換芯片,ADC之后有1個抽取濾波器以提高輸入信號的信噪比, 其采樣頻率最高可達22.5 Kb/s,滿足語音信號處理中關(guān)于采樣頻率的要求。TLC320AD50(以下簡稱AD50 )是TI生產(chǎn)的多媒體音頻編解碼器芯片,它集成了16位A/D和D/A 轉(zhuǎn)換器,采樣速率最高可達22.05KHz,其采樣速率可通過DSP編程來設(shè)置。在AD50內(nèi)部ADC之后有抽樣濾波器,以提高輸入信號的信噪比,在DAC之前有插值濾波器,以保證輸出信號平滑。AD50內(nèi)部

15、有7個數(shù)據(jù)和控制寄存器,用于編程設(shè)置它們的工作狀態(tài)。由于語音信號的頻率范圍在200Hz23400Hz之間,采樣率一般設(shè)定為8kHz,所以用AD50做AD轉(zhuǎn)換器非常合適。AD50的工作方式和采樣頻率均通過串口編程來實現(xiàn)。由于轉(zhuǎn)換的數(shù)據(jù)和控制數(shù)據(jù)是通過同一串行口進行傳輸?shù)?所以AD50中有首次通信和二次通信。首次通信專用于轉(zhuǎn)換數(shù)據(jù)的傳送,其時序如圖2所示。二次通信則用來設(shè)置和讀出寄存器的值,所有的寄存器都在二次通信時編程。啟動二次通信有兩種方法,一種是在FC上加高電平,第二種是將15位方式在首次通信的D IN的LSB位置為1。AD50完成語音信號采集后,在DSP中進行相應(yīng)的處理算法,語音信號經(jīng)處理

16、再從AD50輸出。圖2-2 TMS320VC5502芯片3 詳細設(shè)計由系統(tǒng)結(jié)構(gòu)框圖可知,系統(tǒng)主要包括實現(xiàn)模/數(shù)轉(zhuǎn)換的A/D模塊、掉電時存放程序的Flash模塊、為DSP提供電源的外部電源模塊、時鐘模塊,復(fù)位電路模塊、實現(xiàn)程序下載的JTAG接口模塊以及外接擴展存儲器等幾個部分.系統(tǒng)結(jié)構(gòu)框圖如圖2-1所示。本章將詳細介紹各模塊的硬件設(shè)計以及軟件設(shè)計。3.1 硬件設(shè)計3.1.1 DSP芯片作為DSP家庭高性價比代表的16位定點DSP芯片,C5402適用于語音通信等實時嵌入應(yīng)用場合。與其它C54X芯片一樣,C5402具有高度靈活的可操作性和高速的處理能力。其性能特點如下:操作速率可達100MIPS;具

17、有先進的多總線結(jié)構(gòu),三條16位數(shù)據(jù)存儲器總線和一條程序存儲器總線;40位算術(shù)邏輯單元(ALU),包括一個40位桶形移位器和兩個40位累加器;一個17×17乘法器和一個40位專用加法器,允許16位帶/不帶符號的乘法;整合維特比加速器,用于提高維特比編譯碼的速度;單周期正規(guī)化及指數(shù)譯碼;8個輔助寄存器及一個軟件棧,允許使用業(yè)界最先進的定點DSP C語言編譯器;數(shù)據(jù)/程序?qū)ぶ房臻g為1M×16bit,內(nèi)置4K×16bit ROM和16K×16bit RAM;內(nèi)置可編程等待狀態(tài)發(fā)生器、鎖相環(huán)(PLL)時鐘產(chǎn)生器、兩個多通道緩沖串口、一個與外部處理器通信的8位并行H

18、PI口、兩個16位定時器以及6通道DMA控制器且低功耗。與C54X系列的其它芯片相比,C5402具有高性能、低功耗和低價格等特點。它采用6級流水線,且當(dāng)RPT(重復(fù)指令)時,一些多周期的指令就變成了單周期的指令;芯片內(nèi)部RAM和ROM可根據(jù)PMST寄存器中的OVLY和DROM位靈活設(shè)置。這些都有利于算法的優(yōu)化。3.1.2 電源設(shè)計為了降低芯片功耗,C54x系列芯片大部分都采用低電壓設(shè)計,并且采用雙電源供電,即內(nèi)核電源CVDD:采用1.8V,主要為芯片的內(nèi)部邏輯提供電壓,包括CPU、時鐘電路和所有的外設(shè)邏輯;I/O電源DVDD:采用3.3V,主要供I/O接口使用??芍苯优c外部低壓器件接口,而無需

19、額外的電平變換電路。DSP芯片采用的供電方式,主要取決于應(yīng)用系統(tǒng)中提供什么樣的電源。在實際中,大部分?jǐn)?shù)字系統(tǒng)所使用的電源可工作于5V或3.3V,本設(shè)計采用TI公司提供的雙電源芯片: TPS73HD318電源的最大輸出電流為750mA,并且提供兩個寬度為200ms的低電平復(fù)位脈沖。電路圖如圖3.1-1所示。圖3.1-1由TPS7301 芯片組成的電源電路3.1.3 復(fù)位電路設(shè)計TMS320VC5502的復(fù)位輸入引腳RS為處理器提供了一種硬件初始化的方法,它是一種不可屏蔽的外中斷,可在任何時候?qū)MS320VC5502進行復(fù)位。當(dāng)系統(tǒng)上電后,RS引腳應(yīng)至少保持5個時鐘周期穩(wěn)定的低電平,以確保數(shù)據(jù)、

20、地址和控制線的正確配置。復(fù)位后(RS回到高電平),CPU從程序存儲器的FF80H單元取指,并開始執(zhí)行程序。本設(shè)計采用手動復(fù)位電路(如圖3.1-2)。圖3.1-2 手動復(fù)位電路3.1.4 時鐘電路設(shè)計時鐘電路用來為C54x芯片提供時鐘信號,由一個內(nèi)部振蕩器和一個鎖相環(huán)PLL組成,可通過芯片內(nèi)部的晶體振蕩器或外部的時鐘電路驅(qū)動。利用DSP芯片內(nèi)部提供的晶振電路,在DSP芯片的X1、X2之間連接晶體振蕩器。使用芯片內(nèi)部的振蕩器在芯片的X1和X2/CLKIN引腳之間接入一個晶體,用于啟動內(nèi)部振蕩器。時鐘電路圖如圖3.1-3。 C1=C2=20pF圖3.1-3時鐘模塊電路3.1.5 程序存儲器擴展設(shè)計F

21、LASH存儲器用以擴展程序存儲器 AT29LV1024是1M位的FLASH存儲器FLASH存儲器與EPROM相比,具有更高的性能價格比,而且體積小、功耗低、可電擦寫、使用方便,并且3.3V的FLASH可以直接與DSP芯片連接。地址線:A0A15;數(shù)據(jù)線:I/O0I/O15;控制線:片選信號;編程寫信號;輸出使能信號。擴展連接圖如圖3.1-4。圖3.1-4程序存儲器擴展電路3.1.6數(shù)據(jù)存儲器擴展設(shè)計要實現(xiàn)語音數(shù)據(jù)和系統(tǒng)程序的存儲,TMS320VC5502必須有外接擴展存儲器。TMS320VC5502 的速度為100 MI/s,為保證DSP運行速度,需要外部存儲器的速度接近10ns。系統(tǒng)選擇IC

22、SI64LV16作為外部存儲器,其容量64K字×16 bit。其硬件連接圖如圖3.1-5所示。圖3.1-5數(shù)據(jù)存儲器擴展電路3.1.7 JTAG接口設(shè)計在系統(tǒng)中,通過JTAG測試口訪問和調(diào)試DSP芯片。JTAG是一種國際標(biāo)準(zhǔn)測試協(xié)議(IEEE 1149.1兼容),針對現(xiàn)代超大規(guī)模集成電路測試、檢驗困難而提出的基于邊界掃描機制和標(biāo)準(zhǔn)測試存取口的國際標(biāo)準(zhǔn)。標(biāo)準(zhǔn)JTAG測試端口包括4個必選引腳和一個可選的異步JTAG的復(fù)位引腳TRST,分別是工作模式選擇引腳TMS,串行數(shù)據(jù)輸入引腳TDI,串行數(shù)據(jù)輸出引腳TDO,端口工作時鐘引腳TCK。JTAG接口引腳連接如圖3.1-6所示。圖3.1-6

23、JTAG接口引腳連接圖3.1.8 A/D接口電路設(shè)計A/D轉(zhuǎn)換模塊是整個系統(tǒng)的主要部分,它接收來自外部的信號或模擬數(shù)據(jù),然后經(jīng)過處理轉(zhuǎn)換成數(shù)字信號傳遞給CPU做后續(xù)的處理。TLC320AD50是一款SIGMA- DELTA 型單片音頻接口芯片, 通過串行口與DSP 或其它設(shè)備通信。它內(nèi)部集成了16 位的D/A 和A/D 轉(zhuǎn)換器, 采樣速率最高可達22.05 Kb/s, 其采樣速率可通過DSP 編程來設(shè)置。設(shè)置AD50時,串行通信數(shù)據(jù)最低為高電平。在DAC 之前有一個插值濾波器以保證輸出信號平滑, ADC 之后有一個抽取濾波器以提高輸入信號的信噪比。AD50 的發(fā)送和接收可以同時進行。參考AD5

24、0 的產(chǎn)品手冊文獻, 得出TMS320VC5502與TLC320AD50的連接方法如圖3.1-7所示圖3.1-7 TLC320AD50與 TMS320VC5502 串行口的連接3.1.9總體電路圖3.2 軟件設(shè)計3.2.1 MATLAB 環(huán)境中的語音信號采集和處理仿真MATLAB 是美國Math Works 公司推出的一種面向工程和科學(xué)計算的交互式計算軟件,在MATLAB 環(huán)境中,可以通過多種編程方法驅(qū)動聲卡實現(xiàn)對語音信號的采集和播放,它的信號處理與分析工具箱為語音信號分析提供了十分豐富的功能函數(shù),利用這些功能函數(shù)可以快捷而又方便地完成語音信號的處理和分析使用MATLAB 語言編程可以將聲音文

25、件變換為離散的數(shù)據(jù)文件,然后利用其強大的矩陣運算能力處理數(shù)據(jù),如數(shù)字濾波、傅里葉變換、時域和頻域分析、聲音回放以及各種分析圖的呈現(xiàn)等等下面給出一個MATLAB 程序,讀入一個采樣頻率為 22.050 kHz、16 位單聲道的WAV 文件,然后播放并做語音信號的波形圖、頻譜圖和倒譜圖(見圖3.2-1),具體程序如下:y,fs,bits=wavread('C:Documents and SettingsAdministrator桌面zz.wav');%讀一個已保存的WAV 語音文件wavplay(y,fs); %播放語音文件t=(0:length(y)-1)/fs; %計算語音播放

26、時間figure(1);subplot(3,1,1); %確定語音波形的顯示位置plot(t,y); %畫波形圖legend('波形圖');xlabel('時間(s)'); %X 軸的標(biāo)題ylabel('幅度'); %Y 軸的標(biāo)題x=fft(y.*hamming(length(y); %加hamming 窗快速傅立葉變換fm=10000*length(x)/fs; %限定頻率范圍f=(0:fm)*fs/length(x); %確定頻率刻度subplot(3,1,2); %確定語音波形的顯示位置plot(f,20*log10(abs(x(1:len

27、gth(f)+eps); %畫頻譜圖legend('頻譜圖');xlabel('頻率(Hz)');ylabel('頻譜幅度(dB)');c=fft(log(abs(x)+eps); % 倒頻譜計算ms1=fs/1000;ms20=fs/50;q=(ms1:ms20)/fs; %確定倒頻刻度subplot(3,1,3);plot(q,abs(c(ms1:ms20); %畫倒譜圖legend('倒譜圖');xlabel('倒頻()');ylabel('倒頻譜幅度');圖3.2-1 MATLAB 環(huán)境中做

28、出的語音信號的波形圖、頻譜圖和倒譜圖3.2.2系統(tǒng)軟件設(shè)計主程序流程圖如圖3.2-2。 圖3.2-2主程序流程圖DSP初始化程序:#include "timothy.h"#include "math.h"int sin_data256;int tri_data256;ioport int port9100;ioport int port8000;int keycode=0x0000;/the code number of the key;void main(void)int i;ST0=0x1800;ST1=0x4800;/disable all mas

29、kable interrupt;SWWSR=0x7fff;/no wait cycle;CLKMD=0x1007;IFR=0xffff;IMR=0x0007;asm(" RSBX INTM");/open the interrupt;for(i=0;i<255;i+)/generate the sin_data;sin_datai=255*sin(3.1415*i/256);129for(i=0;i<256;i+)/generat the tri_data;tri_datai=i;for(;)if(keycode=0xf410)/key F1;for(i=0;i

30、<255;i+)port9100=sin_datai;else if(keycode=0xf411)for(i=1;i<256;i+)port9100=tri_datai;interrupt void bobo_int1()keycode=port8000;數(shù)據(jù)處理程序:#define DSYNC_REVT1 0x05 /* sync to McBSP1 receive event */#define AUTOINIT_ENABLE 0x01 /* auto-initialization mode is enabled */#define DINM_ENABLE 0x01 /* D

31、MA interrupt is enabled */#define IMOD_HALFBLOCK 0x01 /* DMA Int occurs each half block*/#define CTMOD_DEC 0x00 /* Decrement counter mode*/#define INDEXMODE_NOMOD 0x00 /* No modify (Index mode)*/#define INDEXMODE_INC 0x01 /* Post increment index mode*/#define HIGH_PRIORITY 0x01 /* Highest priority f

32、or DMA channel */#define INTSEL_01 0x01 /*RINT0,XINT0,RINT2,XINT2,DMAC2,DMAC3, */* DMAC4,DMAC5 */#define DSYNC_XEVT1 0x06 /* sync to McBSP1 transmit event*/#define IMOD_BLOCK 0x00 /* DMA Int occurs at the end of the block*/#define CTMOD_DEC 0x00 /* Decrement counter mode*/#define SPACE_DATA 0x01 /*

33、DMA Data Space Select*/* Memory-Mapped Register Definitions */#define DMPREC (*(volatile unsigned int*)(0x0054u)#define DMSBA (*(volatile unsigned int*)(0x0055u)#define DMSDI (*(volatile unsigned int*)(0x0056u)#define DMSDN (*(volatile unsigned int*)(0x0057u)#define IMR (*(volatile unsigned int*)(0x

34、0000u)#define IFR (*(volatile unsigned int*)(0x0001u)#define XPC (*(volatile unsigned int*)(0x001eu)#define PMST (*(volatile unsigned int*)(0x001du)#define BSCR (*(volatile unsigned int*)(0x0029u)#define DRR1_ADDR(port) (port ? 0x41 : 0x21)#define DXR1_ADDR(port) (port ? 0x43 : 0x23)#define TCR_ADDR

35、(port) (port ? 0x32 : 0x26)#define TCR(port) (*(volatile unsigned int*)TCR_ADDR(port)#define PRD_ADDR(port) (port ? 0x31 : 0x25)#define PRD(port) (*(volatile unsigned int*)PRD_ADDR(port)/* Sub Address Register Definitions */#define DMSRC_SUBADDR 0x00#define DMDST_SUBADDR 0x01#define DMCTR_SUBADDR 0x

36、02#define DMSEFC_SUBADDR 0x03#define DMMCR_SUBADDR 0x04#define DMSRCP_SUBADDR 0x1E#define DMDSTP_SUBADDR 0x1F#define DMIDX0_SUBADDR 0x20#define DMIDX1_SUBADDR 0x21#define DMFRI0_SUBADDR 0x22#define DMFRI1_SUBADDR 0x23#define DMGSA_SUBADDR 0x24#define DMGDA_SUBADDR 0x25#define DMGCR_SUBADDR 0x26#defi

37、ne DMGFR_SUBADDR 0x27/* Channel Definitions */#define DMA_CH0 0#define DMA_CH1 1#define DMA_CH2 2#define DMA_CH3 3#define DMA_CH4 4#define DMA_CH5 5/* DMA Channel Flags for IMR/IFR */#define DMAC0 6#define DMAC1 7#define DMAC2 10#define DMAC3 11#define DMAC4 12#define DMAC5 13/* Register Bit Fields

38、*/#define TDDR 0#define TSS 4#define TRB 5/* Macro Definitions */* DMA Framecount Set */#define DMA_FRAMECOUNT(chan, value) DMSBA = (chan * 5) + DMSEFC_SUBADDR;DMSDN = (DMSDN & 0xFF00u) | value;/* DMA Channel Enable */#define DMA_ENABLE(chan) DMPREC |= (1 << chan);#define INTR_GLOBAL_ENABL

39、Easm("tRSBX INTM")#define INTR_CLR_FLAG(flag)IFR |= (0x1u << flag);#define INTR_ENABLE(flag)IMR |= (0x1u) << flag);#define TIMER_HALT(port)TCR(port) |= (0x1u << TSS)#define TIMER_START(port)TCR(port) = (TCR(port) & (0x1u) << TSS) | (0x1u << TRB)#define TIM

40、ER_RESET(port) TIMER_HALT(port);TCR(port) &= 0xFFF0u;PRD(port) = 0xffffu;TIMER_START(port); /* DMA Reset All */static inline void dma_reset_all( void )unsigned short channel;DMPREC = 0x0000u;DMSBA = DMSRC_SUBADDR;for (channel= 0;channel <= 4; channel+)DMSDI = 0x0000u; /srcDMSDI = 0x0000u; /ds

41、tDMSDI = 0x0000u; /ctrDMSDI = 0x0000u; /sefcDMSDI = 0x0000u; /mcrDMSBA = DMSRCP_SUBADDR;DMSDI = 0x0000u; /*DMSRCP*/DMSDI = 0x0000u; /*DMDSTP*/DMSDI = 0x0000u; /*DMIDX0*/DMSDI = 0x0000u; /*DMIDX1*/DMSDI = 0x0000u; /*DMFRI0*/DMSDI = 0x0000u; /*DMFRI1*/DMSDI = 0x0000u; /*DMGSA*/DMSDI = 0x0000u; /*DMGDA

42、*/DMSDI = 0x0000u; /*DMGCR*/DMSDI = 0x0000u; /*DMGRF*/* Initialize Global DMA Registers */static inline void dma_global_init(unsigned int dmpre /*IN:Value for priority and enable reg*/,unsigned int dmsrcp /*IN:Value for source page reg */,unsigned int dmdstp /*IN:Value for dest page reg */,unsigned

43、int dmidx0 /*IN:Value for element index reg 0 */,unsigned int dmidx1 /*IN:Value for element index reg 1 */,unsigned int dmfri0 /*IN:Value for frame index reg 0 */,unsigned int dmfri1 /*IN:Value for frame index reg 1 */,unsigned int dmgsa /*IN:Value for global src addr reload */,unsigned int dmgda /*

44、IN:Value for global dst addr reload */,unsigned int dmgcr /*IN:Value for global count reload reg*/,unsigned int dmgfr) /*IN:Value for global frame reload reg*/DMPREC &= 0xFF00u; /* Temporarily Disable All Channels */DMSBA = DMSRCP_SUBADDR; /* Set DMA SubBank Address Register */DMSDI = dmsrcp; /* Write to DMA src subbank register with increment */DMSDI = dmdstp;DMSDI = dmidx0;DMSDI = dmidx1;DMSDI = dmfri0;DMSDI = dmfri1;DMSDI = dmgsa;DMSDI = dmgda;DMSDI = dmgcr;DMSDI =

溫馨提示

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

最新文檔

評論

0/150

提交評論