

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 音頻信號頻譜分析</b></p><p><b> 摘要</b></p><p> 在當(dāng)今的數(shù)字化時代背景下,DSP已成為通信、計算機(jī)、消費類電子產(chǎn)品等領(lǐng)域的基礎(chǔ)器件,是集成電路中發(fā)展最快的電子產(chǎn)品,并成為電子產(chǎn)品更新?lián)Q代的決定因素。DSP芯片已經(jīng)被廣泛地應(yīng)用于當(dāng)今技術(shù)革命的各個領(lǐng)域,而且DSP技術(shù)也正以極快的速
2、度被應(yīng)用在通信、電子系統(tǒng)、信號處理系統(tǒng)等許多領(lǐng)域中。</p><p> 本次課程設(shè)計介紹了音頻信號頻譜分析的原理以及其所涉及的硬件結(jié)構(gòu)和軟件設(shè)計,該設(shè)計是基于TMS320C5416DSP芯片的音頻信號頻譜分析的設(shè)計系統(tǒng)的主要功能對語音信號進(jìn)行采樣濾波后FFT變換,并用采集的音頻信號進(jìn)行頻譜分析,F(xiàn)FT算法采用TLC320AIC23編寫DSP程序?qū)崿F(xiàn)。然后通過LCD觀察其頻譜分布。 </p><
3、;p> 關(guān)鍵詞:DSP;音頻信號;頻譜分析;FFT;LCD</p><p><b> 目錄</b></p><p><b> 1 緒論1</b></p><p> 1.1 選題背景1</p><p> 1.2 設(shè)計要求1</p><p> 2 系統(tǒng)總硬
4、件設(shè)計方案2</p><p> 2.1 硬件系統(tǒng)框圖2</p><p> 2.2 TLV320AIC23芯片簡介2</p><p> 2.3 TMS320C5416DSP芯片3</p><p> 2.4 12864 LCD3</p><p> 3 系統(tǒng)模塊設(shè)計4</p><p&
5、gt; 3.1 語音信號采集模塊4</p><p> 3.2 語音信號處理模塊8</p><p> 3.3 LCD顯示模塊9</p><p> 4 設(shè)計結(jié)果顯示9</p><p><b> 5 設(shè)計心得11</b></p><p><b> 參考文獻(xiàn)12</
6、b></p><p> 附錄 設(shè)計程序13</p><p><b> 1 緒論</b></p><p><b> 1.1 選題背景</b></p><p> 目前,在微電子技術(shù)發(fā)展的帶動下,DSP芯片的發(fā)展日新月異,DSP的功能日益強(qiáng)大,性能價格比不斷上升,開發(fā)手段不斷改進(jìn)。DSP芯
7、片已經(jīng)完全走下了“貴族”的圣壇。DSP芯片已經(jīng)在通信與電子系統(tǒng)、信號處理系統(tǒng)、自動控制、雷達(dá)、軍事、航空航天、醫(yī)療、家用電器、電力系統(tǒng)等許多領(lǐng)域中得到了廣泛的應(yīng)用,而且新的應(yīng)用領(lǐng)域在不斷地被發(fā)掘。</p><p> DSP處理速度快,功耗低,性能好,基于TMS320C5416DSP芯片的語音存儲容量大,具有很好的通信音質(zhì)等特點,因此被廣泛應(yīng)用于很多領(lǐng)域中。 </p><p> 本設(shè)計實
8、現(xiàn)的語音分析系統(tǒng)具有如下優(yōu)點:</p><p> 1.音頻數(shù)據(jù)占用資源少</p><p><b> 2.音質(zhì)通信級</b></p><p><b> 3.開發(fā)難度低</b></p><p> 4.語音芯片與DSP接口電路簡單</p><p><b> 5.
9、體積小</b></p><p> 該語音分析系統(tǒng)的設(shè)計能夠完成語音采集,播放,存儲,頻譜分析,基本實現(xiàn)了語音分析功能。隨著技術(shù)的進(jìn)步,TMS320C5416DSP與TLV320AIC23的結(jié)合的語音編碼方案將會有更好的應(yīng)用前景。</p><p><b> 1.2 設(shè)計要求</b></p><p> DSP課程設(shè)計是對《數(shù)字信號
10、處理》、《DSP原理及應(yīng)用》等課程的較全面練習(xí)和訓(xùn)練,是實踐教學(xué)中的一個重要環(huán)節(jié)。</p><p> 通過本次課程設(shè)計,綜合運(yùn)用數(shù)字信號處理、DSP技術(shù)課程以及其他有關(guān)先修課程的理論和生產(chǎn)實際知識去分析和解決具體問題,并使所學(xué)知識得到進(jìn)一步鞏固、深化和發(fā)展。初步培養(yǎng)學(xué)生對工程設(shè)計的獨立工作能力,掌握電子系統(tǒng)設(shè)計的一般方法。通過課程設(shè)計完成基本技能的訓(xùn)練,如查閱設(shè)計資料和手冊、程序的設(shè)計、調(diào)試等,提高學(xué)生分析問題
11、、解決問題的能力。</p><p> 本題目通過TLC320AIC23采集音頻信號(f.max<10kHz),編寫DSP的FFT處理程序(自定頻譜分辨力),獲得幅頻特性之后,在點陣液晶中大致顯示出幅頻圖。并在液晶中用文字顯示頻率幅值前三的頻率值。</p><p> DSP與TLC320AIC23接口電路的原理圖繪制;</p><p> DSP控制TLC3
12、20AIC23的程序編寫與調(diào)試;</p><p> TLC320AIC23進(jìn)行語音模擬量到數(shù)字信號的轉(zhuǎn)換,實現(xiàn)聲音的采集,在CCS軟件中分析信號的幅頻特性;</p><p> 編寫DSP的FFT處理程序;</p><p> 控制點陣液晶,實現(xiàn)繪圖功能,將幅頻圖顯示出來;</p><p> 按要求編寫課程設(shè)計報告書,正確、完整的闡述設(shè)計
13、和實驗結(jié)果;</p><p> 在報告中繪制程序的流程圖,并文字說明。</p><p> 2 系統(tǒng)總硬件設(shè)計方案</p><p> 2.1 硬件系統(tǒng)框圖</p><p> 本系統(tǒng)用DSP芯片TMS320C5416與音頻編解碼芯片TLV320AIC23 實現(xiàn)硬件接口和軟件設(shè)計, 并在此硬件基礎(chǔ)上實現(xiàn)語音信號的采集、頻譜分析并用LCD顯示
14、語音信號的幅頻特性曲線。本系統(tǒng)包括音頻采集、DSP對語音信號的處理、LCD顯示三部分。系統(tǒng)結(jié)構(gòu)如圖2-1所示:</p><p><b> 圖 2-1</b></p><p> 2.2 TLV320AIC23芯片簡介</p><p> TLV320AIC23(以下簡稱AIC23)是TI推出的一款高性能的立體聲音頻Codec芯片,內(nèi)置耳機(jī)輸出
15、放大器,支持MIC和LINE IN兩種輸入方式(二選一),且對輸入和輸出都具有可編程增益調(diào)節(jié)。AIC23的模數(shù)轉(zhuǎn)換(ADCs)和數(shù)模轉(zhuǎn)換(DACs)部件高度集成在芯片內(nèi)部,采用了先進(jìn)的Sigma-delta過采樣技術(shù),可以在8K到96K的頻率范圍內(nèi)提供16bit、20bit、24bit和32bit的采樣,ADC和DAC的輸出信噪比分別可以達(dá)到90dB和100dB。與此同時,AIC23還具有很低的能耗,回放模式下功率僅為23mW,省電模式
16、下更是小于15uW。由于具有上述優(yōu)點,使得AIC23是一款非常理想的音頻模擬I/O器件,可以很好的應(yīng)用在隨聲聽(如CD,MP3……)、錄音機(jī)等數(shù)字音頻領(lǐng)域。 </p><p> 2.3 TMS320C5416DSP芯片</p><p> 系統(tǒng)采用的主芯片是TI 公司的一款16位定點DSP:TMS320C5416(以下簡稱C5416),主要是考慮到C5416片內(nèi)具有128K*16位的內(nèi)部
17、RAM,這對提高系統(tǒng)總體性能和集成度有很大的幫助。另外C5416還具有3個MCBSP多通道緩沖串口,該串口與SPI器件兼容,提供多達(dá)128個發(fā)送和接收通道。與其他C54xDSP芯片一樣C5416具有功耗低、運(yùn)算速率高、性價比高的優(yōu)點。另外C5416具有如下特點:當(dāng)核電壓為1.6伏特時的工作頻率可達(dá)到160MIPS;能訪問64K數(shù)據(jù)存儲空間、64K I/O空間、以及192K程序存儲空間。</p><p> TMS
18、320C5416作為主芯片實現(xiàn)語音信號采集、存儲和各模塊之間的通信等控制,其主要功能有:上電自舉,讀取鍵盤值并初始化音頻編碼芯片和液晶屏,控制TLV320AIC23并通過液晶屏顯示TLV320AIC23 的工作狀態(tài),TMS320C5416通過以下引腳與TLV320AIC23連接。BCLKX0/BCLKX1:緩沖串口0和1的發(fā)送時鐘,用于對來自緩沖串行口發(fā)送移位 寄存器和傳送至數(shù)據(jù)發(fā)送引腳的數(shù)據(jù)進(jìn)行定時;BDX0/BDX1:緩沖串行口數(shù)據(jù)
19、發(fā)送端,來自緩沖串行口發(fā)送移位寄存器中的數(shù)據(jù)經(jīng)該引腳串行發(fā)送;BFSX0/BFSX1:用于發(fā)送輸出的幀同步脈沖;BDR0: 緩沖串行口數(shù)據(jù)接收端;BFSR0: 用于接收輸入的幀同步脈沖;X2/CLKIN:由晶振接到內(nèi)部振蕩器的輸入引腳。</p><p> 2.4 12864 LCD</p><p> 帶中文字庫的128X64是一種具有4位/8位并行、2線或3線串行多種接口方式,內(nèi)部含有
20、國標(biāo)一級、二級簡體中文字庫的點陣圖形液晶顯示模塊;其顯示分辨率為128×64, 內(nèi)置8192個16*16點漢字,和128個16*8點ASCII字符集.利用該模塊靈活的接口方式和簡單、方便的操作指令,可構(gòu)成全中文人機(jī)交互圖形界面??梢燥@示8×4行16×16點陣的漢字. 也可完成圖形顯示.低電壓低功耗是其又一顯著特點。由該模塊構(gòu)成的液晶顯示方案與同類型的圖形點陣液晶顯示模塊相比,不論硬件電路結(jié)構(gòu)或顯示程序都要簡
21、潔得多,且該模塊的價格也略低于相同點陣的圖形液晶模塊。 </p><p><b> 3 系統(tǒng)模塊設(shè)計</b></p><p> 3.1 語音信號采集模塊</p><p> 從適應(yīng)語音信號頻率、滿足實時性、降低成本、簡化設(shè)計的要求出發(fā),本系統(tǒng)選擇TLV320AIC23。TLV320AIC23是一種高性能的立體聲音頻Code
22、c芯片作為從設(shè)備,主要完成輸入語音信號的A/D轉(zhuǎn)換,語音采樣編解碼及濾波處理,該芯片構(gòu)成簡單,功能強(qiáng)大。</p><p> AIC23的管腳和內(nèi)部結(jié)構(gòu)框圖如下: </p><p> 從上圖可以看出,AIC23主要的外圍接口分為以下幾個部分: </p><p> 一. 數(shù)字音頻接口:主要管腳為 BCLK-數(shù)字音頻接口時鐘信號(bit時鐘),當(dāng)AIC23為從模
23、式時(通常情況),該時鐘由DSP產(chǎn)生;AIC23為主模式時,該時鐘由AIC23產(chǎn)生; LRCIN-數(shù)字音頻接口DAC方向的幀信號(I2S模式下word時鐘) LRCOUT-數(shù)字音頻接口ADC方向的幀信號 DIN-數(shù)字音頻接口DAC方向的數(shù)據(jù)輸入 DOUT-數(shù)字音頻接口ADC方向的數(shù)據(jù)輸出 這部分可以和DSP的McBSP(Multi-channel buffered serial port,多通道緩存串口)無縫連接,唯一要注意
24、的地方是McBSP的接收時鐘和AIC23的BCLK都由McBSP的發(fā)送時鐘提供。 </p><p> 二. 麥克風(fēng)輸入接口:主要管腳為 MICBIAS-提供麥克風(fēng)偏壓,通常是3/4 AVDD MICIN-麥克風(fēng)輸入,由AIC結(jié)構(gòu)框圖可以看出放大器默認(rèn)是5倍增益 連接示意圖如下: </p><p> 三. LINE IN輸入接口:主要管腳為 LLINEIN-左聲道LINE IN
25、輸入 RLINEIN-右聲道LINE IN輸入 連接示意圖如下: </p><p> 四. 耳機(jī)輸出接口:主要管腳為 LHPOUT-左聲道耳機(jī)放大輸出 RHPOUT-右聲道耳機(jī)放大輸出 LOUT-左聲道輸出 ROUT-右聲道輸出 從框圖可以看出,LOUT和ROUT沒有經(jīng)過內(nèi)部放大器,所以設(shè)計中常用LHPOUT和RHPOUT,連接示意圖如下: </p><p> 五.
26、 配置接口:主要管腳為 SDIN-配置數(shù)據(jù)輸入 SCLK-配置時鐘 DSP通過該部分配置AIC23的內(nèi)部寄存器,每個word的前7bit為寄存器地址,后9bit為寄存器內(nèi)容。 </p><p> 六. 其他:主要管腳為 MCLK-芯片時鐘輸入(12.288M、11.2896M、18.432M、16.9344M) VMID-半壓輸入,通常由一個10U和一個0.1U電容并聯(lián)接地 MODE-芯片工作模式
27、選擇,Master或者Slave CS-片選信號(配置時有效) CLKOUT-時鐘輸出,可以為MCLK或者M(jìn)CLK/2(詳見寄存器配置)</p><p> TLV320AIC23通過以下引腳與TMS320C5416連接。BCLK:I2S(一種TLV320AIC23的數(shù)字音頻接口支持的通用的音頻格式)串行數(shù)據(jù)傳輸時鐘,當(dāng)TLV320AIC23為主模式時BCLK由TLV320AIC23產(chǎn)生并提供給DSP,頻率為
28、主時鐘的1/4,當(dāng)從模式時由DSP產(chǎn)生;DIN: I2S格式串行數(shù)據(jù)輸入端,送入立體聲DAC;DOUT: I2S格式串行數(shù)據(jù)輸出端,由立體聲ADC產(chǎn)生;LRCIN/LRCOUT: I2S格式數(shù)據(jù)輸入/出幀同步信號;SCLK:控制端口移位時鐘;SDIN:控制端口串行數(shù)據(jù)輸入,用來傳輸配置TLV320AIC23內(nèi)部寄存器數(shù)據(jù);/CS:控制端口輸入和地址鎖存選擇端,在SPI控制模式下,作為數(shù)據(jù)鎖存控制端,在I2C模式下,定義外設(shè)的7位地址;X
29、TI/MCLK:晶體或外部時鐘輸入端,TLV320AIC23內(nèi)部時鐘由它產(chǎn)生。</p><p> TLV320AIC23的工作時鐘由外接的一個11.2896M的晶振提供,TLV320AIC23從電路模塊電路如圖3-1所示。</p><p> 圖3-1 TLV320AIC23從電路模塊電路</p><p> 3.2 語音信號處理模塊</p><
30、;p> 有語音信號采集模塊所采集的模塊經(jīng)過A/D轉(zhuǎn)換輸入TMS320C5416DSP芯片對其進(jìn)行FFT運(yùn)算,得其幅頻特性曲線。</p><p> FFT 算法的實現(xiàn)主要分為三個步驟:</p><p> 1. 實現(xiàn)輸入數(shù)據(jù)的比特反轉(zhuǎn),輸入數(shù)據(jù)的比特翻轉(zhuǎn)實際上就是將輸入數(shù)據(jù)進(jìn)行位碼倒置,以便在整個運(yùn)算后的輸出序列是一個自然序列。</p><p> 2. 實
31、現(xiàn)N點復(fù)數(shù)FFT,這一過程的實現(xiàn)分為三個功能塊,即第一級蝶形運(yùn)算、第二級蝶形運(yùn)算、第三級蝶形運(yùn)算乃至log2N級蝶形運(yùn)算。對于任何一個2的整數(shù)冪N=2m,總可以通過M次分解到2點的DFT計算。通過這樣的M次分解,可構(gòu)成M(log2N)級迭代計算,每級由N/2個蝶形運(yùn)算組成。</p><p> 3. 功率譜計算,即計算X(k)=X(n) WNnk ,X(k)一般是由實部和虛部組成。?因此計算功率普時,只需將FF
32、T變換好的數(shù)據(jù),按照實部和虛部求它們的平方和即可。設(shè)計的子程序流圖如圖3-2所示;</p><p> 圖3-2 FFT運(yùn)算子程序流圖</p><p> 3.3 LCD顯示模塊</p><p> 本設(shè)計中,采用并行8位數(shù)據(jù)接口輸入方式,把LCD映射到DSP芯片的I/O空間,通過讀寫I/O地址來控制液晶,TMS320C5416DSP芯片對該地址輸出數(shù)據(jù),實現(xiàn)LCD
33、的顯示控制。LCD顯示子程序流程圖如圖3-3所示。</p><p> 圖3-3 LCD顯示子程序流圖</p><p><b> 4 設(shè)計結(jié)果顯示</b></p><p> 運(yùn)用C語言編寫設(shè)計所需要的程序(見附錄),把程序下載到的實驗箱中,觀察LCD上所顯示的幅頻特性曲線如圖4-1,圖4-2所示。</p><p>
34、 圖4-1 基波幅頻特性曲線</p><p> 圖4-2 混頻信號幅頻特性曲線</p><p> 上圖中所顯示的分別是基波和基波三次諧波以及五次諧波所疊加而得信號的幅頻特性曲線,并且所給信號是一定的,LCD的只進(jìn)行一次掃描,并且是點狀圖。對程序稍作修改可以實現(xiàn)動態(tài)顯示,也可以實現(xiàn)用柱形圖來表示頻譜,如圖4-3所示。</p><p> 圖4-3 幅頻特性柱狀圖&
35、lt;/p><p><b> 5 設(shè)計心得</b></p><p> 這兩周的課程設(shè)計實習(xí)周終于結(jié)束了,通過兩周以來同學(xué)和老師的共同努力,我們終于完成了設(shè)計要求。但大家臉上的表情都是欣慰和歡喜的,到底工夫不負(fù)有心人。回想過去兩周,這里面的辛苦只有做是課程設(shè)計的人才明白,才能體會。通過這種綜合性訓(xùn)練,要學(xué)生達(dá)到以下的目的和要求:</p><p>
36、 1.結(jié)合課程中所學(xué)的理論知識,獨立設(shè)計方案。達(dá)到學(xué)有所用的目的。</p><p> 2.學(xué)會查閱相關(guān)手冊與資料,通過查閱手冊和文獻(xiàn)資料,并掌握合理選用的原則,培養(yǎng)獨立分析與解決問題的能力。</p><p> 這次設(shè)計我們學(xué)到了很多東西,雖然作出來的東西很基礎(chǔ),但是我們加深了對知識的理解和掌握。作為一名大四的學(xué)生,我覺得能做類似的課程設(shè)計是十分有意義的。同時這是一次團(tuán)隊合作開發(fā)過程,
37、一次難得的經(jīng)歷。通過此次設(shè)計試驗也著重能夠?qū)W到許多東西。</p><p> 如果說任何機(jī)會都是需要去創(chuàng)造出來的話,那么那個創(chuàng)造者,其實就是你自己。時間過得真快,轉(zhuǎn)眼間已經(jīng)有兩個星期了,現(xiàn)在回想起來,往事還歷歷在目。但是不可否認(rèn)的卻是這些經(jīng)歷將會是我人生當(dāng)中不可多得的財富和經(jīng)驗的累積。</p><p><b> 參考文獻(xiàn)</b></p><p&g
38、t; [1] 鄒彥. DSP原理及應(yīng)用[M]. 北京:電子工業(yè)出版社,2005,1.</p><p> [2] 戴明楨.TMS320C54xDSP結(jié)構(gòu)、原理及應(yīng)用[M].北京航空航天大學(xué)出版社,2001,8.</p><p> [3] 胡圣堯. DSP原理及應(yīng)用[M].東南大學(xué)出版社,2008.7.</p><p> [4] 清源科技.TMS320C54xD
39、SP應(yīng)用程序設(shè)計教程[M].機(jī)械工業(yè)出版社,2004,1.</p><p> [5] 清源科技.TMS320C54x硬件開發(fā)教程[M].機(jī)械工業(yè)出版社,2003,1.</p><p><b> 附錄 設(shè)計程序</b></p><p> //------------------頭文件-----------------------------
40、---------</p><p> //#include "MMRegs.h"</p><p> #include "DspRegDefine.h" //VC5402 寄存器定義</p><p> #include <math.h></p><p> #include <
41、stdio.h></p><p> //---------------------------------------------------------------</p><p> /* ****************** 宏定義 ***************</p><p> *******************************
42、*****************************</p><p><b> */</b></p><p> #define UCHAR unsigned char</p><p> #define UINT16 unsigned int</p><p> #define UINT32
43、unsigned long</p><p> #define TRUE 1</p><p> #define FALSE 0</p><p> #define LEN 128</p><p> //------------------------------------
44、---------------------------</p><p> //--------------- LCD 指令 -----------------------------</p><p> //基本指令集 RE = 0</p><p> #define CLEAR 0x0001 //清除顯示</p><p&
45、gt; #define RESAC 0x0002 //位址歸位</p><p> #define SETPOINT 0x0006 //進(jìn)入點設(shè)定,游標(biāo)右移,DDRAM 位址計數(shù)器(AC)加1</p><p> #define CURSOR 0x000F //整體顯示,游標(biāo)顯示,游標(biāo)位置反白</p><p&g
46、t; #define MCURSOR 0x0014 //游標(biāo)向右移動,AC=AC+1</p><p> #define FUCSET 0x0030 //功能設(shè)定,BIT MPU 控制界面,基本指令集,默認(rèn)設(shè)置</p><p> #define CGRAMAC 0x0040 //設(shè)定CGRAM 位址 </p><
47、;p> #define DDRAMAC 0x0080 //設(shè)定DDRAM 位址</p><p> //第一行AC 範(fàn)圍為80H..8FH</p><p> //第二行AC 範(fàn)圍為90H..9FH</p><p> //第三行AC 範(fàn)圍為A0H..AFH</p><p> //第四行AC 範(fàn)圍為B0H..BFH
48、</p><p> //#define READBF RS=0,RW=1,DB7,DB6,DB5,DB4,DB3,DB2,DB1,DB0</p><p> // BF AC6 AC5 AC4 AC3 AC2 AC1 AC0</p><p> // 讀取忙碌旗標(biāo)
49、(BF)和位址</p><p> // 就是讀取指令寄存器,PORT8006,BF=1,表示LCD忙碌</p><p> //#define WRITERAM RS=1,RW=0,DB7,DB6,DB5,DB4,DB3,DB2,DB1,DB0</p><p> //
50、 D7 D6 D5 D4 D3 D2 D1 D0</p><p> // 寫入資料到RAM</p><p> // 就是寫數(shù)據(jù)寄存器: PORT8005</p><p> //#define READRAM RS=1,RW=1,DB7,DB6,DB5,DB4,DB3,D
51、B2,DB1,DB0</p><p> // D7 D6 D5 D4 D3 D2 D1 D0</p><p> // 讀取RAM 的值</p><p> // 就是從數(shù)據(jù)寄存器讀取資料, PORT8007</p&g
52、t;<p> //擴(kuò)充指令集 RE=1</p><p> #define IDLE 0x01 //待命模式</p><p> #define CGRAMSET 0x02 //捲動位址或RAM 位址選擇</p><p> #define REVERSE 0x04 //反白選擇</p&
53、gt;<p> #define SLEEP 0x0c //脫離睡眠模式</p><p> #define EFUCSET 0x66 //擴(kuò)充功能設(shè)定,8 BIT MPU 控制界面,為擴(kuò)充指令集動作,繪圖顯示ON</p><p> #define SISA 0x40 //設(shè)定IRAM 位址或捲動位址</
54、p><p> #define SETGDRAM 0x80 //設(shè)定繪圖RAM 位址</p><p> #define Length 128 //FFT的點數(shù)</p><p> //---------------------------------------------------------</p><p&g
55、t; //---------------------------------------------------------</p><p> /* 端口定義 */</p><p> //---------------------------------------------------------</p><p> ioport UINT16 por
56、t8002; </p><p> ioport UINT16 port8006; //串行時鐘地址</p><p> ioport UINT16 port8007; //串行數(shù)據(jù)地址</p><p> //----------------------------------------------------------</p&g
57、t;<p> /* 全局變量定義 */</p><p> //---------------------------------------------------------</p><p> UINT16 data_buff[LEN] ; </p><p> UCHAR data_buffer[128] ; </p&g
58、t;<p> UCHAR data_picture[16*64] ; </p><p> double pr[128],pi[128],fr[128],fi[128],result[128];</p><p> const double pp=3.1415926;</p><p> UINT16 iii = 0; &l
59、t;/p><p><b> /*</b></p><p> **********************************************************************</p><p> *************** 所使用的函數(shù)原型 *****************</p><p>
60、; **********************************************************************</p><p><b> */</b></p><p> void cpu_init(void); //初始化CPU</p><p> void Delay(UINT16 numbers);
61、 //延遲</p><p> extern void delay_100us(void); //100us延遲 --指令之間的延遲</p><p> extern void delay_1us(void); //1us延遲 --時鐘之間的延遲</p><p> void delay_50ms(void); /
62、/50ms延遲 --復(fù)位延遲</p><p> void delay_20ms(void); //20ms延遲 --清屏延遲</p><p> void SendByte(UCHAR dat); //串行發(fā)送一字節(jié)數(shù)據(jù)</p><p> void SendCMD(UCHAR dat); //寫指令寄存
63、器 </p><p> void SendDat(UCHAR dat); //寫顯示數(shù)據(jù)或單字節(jié)字符</p><p> void Display(UCHAR x_add,UCHAR dat1,UCHAR dat2); //寫漢字到LCD 指定的位置</p><p> void xint2_init(void); //外
64、部中斷2初始化子程序</p><p> interrupt void ExtInt2(); //中斷2中斷子程序</p><p> void Initlcd(void); //初始化 LCd</p><p> void display_lcd();</p><p> void buffer()
65、;</p><p> void data_switch(unsigned char *ptr);</p><p> void kfft(double pr[128],double pi[128],int n,int k,double fr[128],double fi[128],int l,int il);</p><p> //---------------
66、----------------------------------------------------</p><p><b> /*</b></p><p> ************************************************************************</p><p> ******
67、***************** 函數(shù)定義 ******************</p><p> ************************************************************************</p><p><b> */</b></p><p> //---------------
68、-----------------------------------------------------</p><p> // 函數(shù)名稱 : void cpu_init(void)</p><p> // 函數(shù)說明 : 初始化CPU</p><p> // 輸入?yún)?shù) : 無</p><p> // 輸出參數(shù) : 無</p&g
69、t;<p> //--------------------------------------------------------------------</p><p> void xint2_init() //外部中斷2初始化子程序</p><p><b> { </b></p><p>
70、*(unsigned int*)IMR=0x0004; //使能int2中斷 </p><p><b> /* </b></p><p> bit 15 1: XINT2 flag --write "1" to clear</p><p> bit 14-3
71、 0: reserved</p><p> bit 2 1: XINT2 Polarity --"1" rising eage</p><p> bit 1 0: XINT2 Priority --"0" High priority</p><p> bit
72、0 1: XINT2 Enable --"1" Enable interrupt</p><p><b> */</b></p><p> asm(" rsbx INTM"); //開總中斷</p><p><b> }</b><
73、;/p><p> interrupt void ExtInt2() //中斷2中斷子程序</p><p> { </p><p> *(unsigned int*)IFR=0xFFFF; //清除所有中斷標(biāo)志,"寫1清0" ,這個語句可以省略,響應(yīng)中斷自動清除中斷標(biāo)志</p><p&g
74、t; //----讀AD7822的轉(zhuǎn)換結(jié)果---------------- </p><p> data_buff[iii] = port8002 & 0x00ff;</p><p><b> iii++;</b></p><p> if(iii == 256) </p><p> iii= 0; //
75、在此設(shè)斷點</p><p><b> return;</b></p><p><b> }</b></p><p> void cpu_init(void)</p><p><b> {</b></p><p> asm(" nop
76、");</p><p> asm(" nop ");</p><p> asm(" nop ");</p><p> //-------------------------------------------------------------------</p><p> //CL
77、KMD DEFINITIONS:</p><p> // PLLMUL (bit 15-12) - 0000 PLL multiplier = 0 (mult by 1)</p><p> // PLLDIV (bit 11) - 0 PLL divider = 0 (div by 1)</p>&
78、lt;p> // PLLCOUNT (bit 10-3)- 11111111 PLL counter set to max</p><p> // PLLONOFF (bit 2) - 1 PLL on</p><p> // PLLNDIV (bit 1) - 1 Sele
79、ct PLL mode</p><p> // PLLSTATUS (bit 1) - x PLL Status (read only)</p><p> // ------------------</p><p> // 0000011111111111 = 0x0
80、7ff CLKMD=1 X CLKIN</p><p> //--------------------------------------------------------------------</p><p> *(unsigned int*)CLKMD=0x0; //switch to DIV mode clkout= 1/2 clkin</p>
81、<p> while(((*(unsigned int*)CLKMD)&01)!=0);</p><p> *(unsigned int*)CLKMD=0x07ff; //switch to PLL X 1 mode</p><p> //----------------------------------------------------------
82、----------</p><p> // ST0 DEFINITIONS:</p><p> // ARP (bit 15-13) - 000 Auxiliary register pointer</p><p> // TC (bit 12) - 1 Test/control fl
83、ag</p><p> // C (bit 11) - 1 Carry is set to 1 if the result of an addition generates a carry; it is cleared to 0 if the</p><p> // re
84、sult of a subtraction generates a borrow.</p><p> // OVA (bit 10) - 0 Overflow flag for accumulator A</p><p> // OVB (bit 9) - 0 Overflow flag for accu
85、mulator B</p><p> // DP (bit 8-0) - 00000000 Data-memory page pointer</p><p> // --------------------</p><p> // 0001 1000 0000 0000 =0x1
86、800 Reset value</p><p> //--------------------------------------------------------------------</p><p> // *(unsigned int*)ST0=0x1800; </p><p> //-------------------------------
87、-------------------------------------</p><p> // ST1 DEFINITIONS:</p><p> // BRAF (bit 15) - 0 Block-repeat active flag </p><p> // CPL (bit 14) - 1
88、 Compiler mode CPL=0 DP;CPL=1 SP</p><p> // XF (bit 13) - 1 XF status</p><p> // HM (bit 12) - 0 Hold mode</p><p> // I
89、NTM (bit 11) - 1 Interrupt mode INTM=0,All unmasked interrupts are enabled</p><p> // Reser (bit 10) - 0 Always read as 0</p><p> // OVM (bit 9) -
90、 0 Overflow mode</p><p> // SXM (bit 8) - 1 Sign-extension mode</p><p> // C16 (bit 7) - 0 Dual 16-Bit/double-precision arithmetic mode<
91、/p><p> // FRCT (bit 6) - 0 Fractional mode</p><p> // CMPT (bit 5) - 0 Compatibility mode</p><p> // ASM (bit 4-0) - 00000 Ac
92、cumulator shift mode</p><p> // --------------------</p><p> // 0110 1001 0000 0000 =0x2900 Reset value</p><p> //------------------------------------
93、--------------------------------</p><p> // *(unsigned int*)ST1=0x6900;</p><p> //-------------------------------------------------------------------- </p><p> //IPTR DEFINITI
94、ONS?</p><p> // IPTR (bit 15-7) - 001111111 Run-time Interrupt vector location = 0x3f80 (for now)</p><p> // MP/~MC (bit 6) - 1 Turn off internal Instruction
95、 ROM (use RAM)</p><p> // OVLY (bit 5) - 1 Turn on internal RAM</p><p> // AVIS (bit 4) - 1 Address visibility on</p><p> // DR
96、OM (bit 3) - 0 Data ROM of FF00~FFFF is external </p><p> // CLKOFF (bit 2) - 0 Clockout enabled,only for use clkout=cpu clock</p><p> // SMUL
97、(bit 1) - 1 Saturate before multiply on MAC</p><p> // SST (bit 0) - 0 Do not saturate before store</p><p> // ----------------
98、-</p><p> // 0011 1111 1111 0010 = 0x3ff2</p><p> /*---------------------------------------------------------------------*/</p><p> *(unsigned int*)PMST=0x3F
99、F2;</p><p> //---------------------------------------------------------------------</p><p> // SWWSR DEFINITIONS?</p><p> // XPA (bit 15) - 0 Extended pr
100、ogram address control bit. XPA is used in conjunction with the program space fields</p><p> // (bits 0 through 5) to select the address range for program space wait
101、states</p><p> // I/O (bits 14-12) - 111 set to max wait states for seven</p><p> // Data1 (bits 11-9) - 111 Seven Wait state for Upper data space(0x8000-0xF
102、FFF) </p><p> // Data2 (bits 8-6) - 111 Seven Wait states for Lower data space (0x0000 - 0x7FFF)</p><p> // Prog1 (bits 5-3) - 111 Seven Wait state for Uppe
103、r program space. (xx8000-xxFFFF)</p><p> // Prog2 (bits 2-0) - 111 Seven Wait states for Program space. (xx0000-xx7FFF)</p><p> // -----------------<
104、;/p><p> // 1 111 111 111 111 111 - 0x7fff</p><p> /*--------------------------------------------------------------------*/</p><p> *(unsigned int*)SWWSR=0x
105、7fff;</p><p> //--------------------------------------------------------------------</p><p> //SWCR DEFINITIONS?</p><p> // Reserved (bits 15-1)</p><p> // SW
106、SM (bit 0) - 1 wait-state base values are mulitplied by 2</p><p> // for a maximum of 14 wait states.</p><p> // ------------------
107、--------</p><p> // 0000 0000 0000 0001</p><p> //--------------------------------------------------------------------</p><p> *(unsigned int*)SWCR=0x0001;
108、</p><p> //--------------------------------------------------------------------</p><p> //BSCR DEFINITIONS?</p><p> // BNKCMP (bit 15-12) - 1111 Bank compare. Determines the
109、external memory-bank size. BNKCMP is used to mask the four MSBs of</p><p> // an address.</p><p> // 1111 4k</p><p> //
110、 1110 8k</p><p> // 1100 16k</p><p> // 1000 32k</p><p> // 0000 64k</p>&l
111、t;p> // PS-DS (bit 11) - 1 One extra cycle is inserted between consecutive data and program reads. </p><p> // Reserve
112、d (bits 10-3) - 00000000</p><p> // HBH (bit 2) - 0 The hpi bus holder is disabled</p><p> // BH (bit 1) - 0 The data bus holder is dis
113、abled</p><p> // EXIO (bit 0) - 0 The external bus interface functions as usual</p><p> // ------------------------------------</p><p> //
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)的采集與音頻信號的頻譜分析-課程設(shè)計
- 音頻信號分析儀課程設(shè)計
- 視音頻信號處理課程設(shè)計
- 利用matlab軟件對音頻信號進(jìn)行頻譜分析與處理
- 基于小波的音頻信號的濾波與頻譜分析.pdf
- 數(shù)字通信課程設(shè)計----音頻信號分析及去噪
- 基于dsp的音頻信號分析儀
- 數(shù)字信號處理課程設(shè)計---語音信號的頻譜分析
- matlab方波頻譜分析課程設(shè)計
- 紅外音頻信號轉(zhuǎn)發(fā)課程設(shè)計報告書
- 音頻信號分析
- 簡易頻譜分析儀課程設(shè)計
- 基于dsp芯片的音頻信號的分析器設(shè)計
- 虛擬儀器課程設(shè)計(doc)-虛擬信號頻譜分析儀設(shè)計
- 基于DSP的音頻頻譜分析系統(tǒng)的設(shè)計與實現(xiàn).pdf
- 基于dsp的音頻信號處理的濾波分析
- 信號處理實驗實驗七音頻頻譜分析
- 數(shù)字信號除處理課程設(shè)計-dft在信號頻譜分析中的應(yīng)用
- 基于DSP的語音信號頻譜分析系統(tǒng).pdf
- 數(shù)字信號處理課程設(shè)計---應(yīng)用 matlab對信號進(jìn)行頻譜分析及濾波
評論
0/150
提交評論