基于ARM的數(shù)字音識別系統(tǒng)_第1頁
基于ARM的數(shù)字音識別系統(tǒng)_第2頁
基于ARM的數(shù)字音識別系統(tǒng)_第3頁
基于ARM的數(shù)字音識別系統(tǒng)_第4頁
基于ARM的數(shù)字音識別系統(tǒng)_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 ARM課程設(shè)計報告 基于ARM的數(shù)字音識別系統(tǒng)1、 C/OS-II的移植1. C/OS-II簡介 C/OS-II是一個完整的、可移植、可固化、可剪裁的占先式實時多任務(wù)內(nèi)核。C/OS-II使用ANSI C語言編寫,包含一小部分匯編代碼,使之可以供不同架構(gòu)的微處理器使用。至今,從8位到64位,C/OS-II已在超過40種不同架構(gòu)的微處理器上運行。C/OS-II的特點:提供源代碼、可移植性、可固化、可剪裁、可剝奪、多任務(wù)、可確定性、任務(wù)棧、系統(tǒng)服務(wù)、中斷管理、穩(wěn)定性與可靠性。2.C/OS-II移植C/OS-II硬件軟件體系結(jié)構(gòu)3. 移植C/OS-II用于產(chǎn)生系統(tǒng)時鐘移植時需要編寫的代碼要移植一個操

2、作系統(tǒng)到一個特定的CPU體系結(jié)構(gòu)上并不是一件很容易的事情,它對移植者的要求:對目標(biāo)體系結(jié)構(gòu)要有很深了解;對OS原理要有較深入的了解;對所使用的編譯器要有較深入的了解;對需要移植的操作系統(tǒng)要有相當(dāng)?shù)牧私?;對具體使用的芯片也要一定的了解。1)移植需要編寫的文件 根據(jù)C/OS-II的要求,移植C/OS-II到一個新的體系結(jié)構(gòu)上需要提供2個或3個文件: OS_CPU.H(C語言頭文件) OS_CPU_C.C(C程序源文件) OS_CPU_A.ASM(匯編程序源文件) 其中OS_CPU_A.ASM在某些情況下不需要,但極其罕見。2) 移植代碼包括的內(nèi)容3)與應(yīng)用相關(guān)的代碼OS_CFG.H 用來配置內(nèi)核,

3、用戶根據(jù)需要對內(nèi)核進(jìn)行修改,留下需要的部分,去掉不需要的部分,INCLUDES.H 系統(tǒng)頭文件,整個實時系統(tǒng)程序所需要的文件,包括了內(nèi)核和用戶的頭文件,這樣使得用戶項目中的每個.C文件不用分別去考慮他實際上需要哪些頭文件。4)與處理器相關(guān)的代碼這是移植中最關(guān)鍵的部分。內(nèi)核將應(yīng)用系統(tǒng)和底層硬件有機地結(jié)合成一個實時系統(tǒng),我們在移植時需要自己處理這部分代碼,在I.OS_CPU.H包含了用#define定義的與處理器相關(guān)的常量、宏和類型定義,有系統(tǒng)數(shù)據(jù)類型定義、棧增長方向定義、關(guān)中斷和開中斷定義、系統(tǒng)軟中斷的定義等。 (1)不依賴于編譯的數(shù)據(jù)類型C/OS-不使用C語言中的short,int和long等

4、數(shù)據(jù)類型的定義,因為他們與處理器類型有關(guān),隱含著不可移植性,代之以移植性強的整數(shù)數(shù)據(jù)類型,這樣,既直觀又可移植。根據(jù)ADS編譯器的特性,代碼為:typedef unsigned char BOOLEAN;typedef unsigned char INT8U;typedef signed char INT8S;typedef unsigned short INT16U;typedef signed short INT16S;typedef unsigned int INT32U;typedef signed int INT32S;typedef float FP32;typedef doubl

5、e FP64;typedef INT32U OS_STK; (2)使用軟中斷SWI做底層接口 因為帶T變量的ARM7處理器核具有兩個指令集,用戶任務(wù)可以使用兩種處理器模式,為了使底層接口函數(shù)與處理器狀態(tài)無關(guān),同時在任務(wù)調(diào)用相應(yīng)函數(shù)時不需要知道該函數(shù)位置,應(yīng)用中使用軟中斷指令SWI作為底層接口,使用不同的功能號區(qū)分不同的函數(shù)。 (3)OS_STK_GROWTH C/OS-使用結(jié)構(gòu)常量OS_STK_GROWTH指定堆棧的生長方式,其代碼為:#define OS_STK_GROWTH 1II.OS_CPU_C.C包含了與移植有關(guān)的C函數(shù),但是最重要的是OSTaskStkInit()函數(shù),該函數(shù)是在用

6、戶建立任務(wù)時系統(tǒng)內(nèi)部自己調(diào)用的,用來對用戶任務(wù)的堆棧初始化。在ARM7體系結(jié)構(gòu)下,任務(wù)堆??臻g由高至低遞減,依次保存著PC,LR,R12,R1,R0,CPSR的初始化堆棧結(jié)構(gòu),當(dāng)用戶初始化了堆棧,OSTaskStkInit()就返回新的堆棧指針STK所指的定地址。OSTaskCreate()和OSTaskCreateExt()會獲得該地址并將他保存到任務(wù)控制塊TCB中。III. OS_CPU_A.SOs_cpu_a.s的結(jié)構(gòu)圖5) 關(guān)于中斷及時鐘節(jié)拍在移植中,IRQ是受C/OS-II管理的中斷,而對于FIQ不做處理,這是為了提高FIQ的響應(yīng)速度。由于各種ARM芯片的中斷系統(tǒng)不一樣,各個用戶的目

7、標(biāo)板也不一樣,對于中斷和時鐘節(jié)拍是需要進(jìn)一步移植的代碼。為此應(yīng)編寫了一個匯編宏,它是C/OS-II for ARM7通用的中斷服務(wù)程序的匯編與C函數(shù)接口代碼。流程圖:void ISR(void) OS_ENTER_CRITICAL()或直接給變量OsEnterSum賦1; 清除中斷源; 通知中斷控制器中斷結(jié)束: 開中斷: OS_EXIT_CRITICAL();用戶處理程序;4. C/OS-的測試做完移植工作以后,就要測試移植是否正確,這其實是移植過程的最后一步,應(yīng)該首先不加任何用代碼來測試移植好的C/OS-,即應(yīng)該首先測試內(nèi)核自身的運行狀況,這樣做的目的是如果有些部分未能正常工作,那就是移植本

8、身的問題,而不是應(yīng)用代碼產(chǎn)生的問題,主要分為以下幾個步驟來進(jìn)行移植的測試:首先,必須了解處理器所使用的編譯器系統(tǒng),這個步驟取決于使用的編譯器,在這期間是無代碼的測試,其次,要驗證OSTaskStkInit()和OSStartHighRdy()函數(shù),在OS_CFG.H文件中設(shè)置OS_TASK_STAT_EN為0,只讓一個空閑任務(wù)OS_TaskIdle()運行,檢查是否出錯,然后需要驗證任務(wù)級切換OSCtxSw()函數(shù),在測試任務(wù)TaskTest()中加入OSTimeDly()函數(shù),OSTimeDly()函數(shù)接著調(diào)用OS_Sched(),OS_Sched()調(diào)用匯編語言編寫的函數(shù)OSCtxSw()

9、函數(shù),如果是正確配置了SWI,CPU就會開始執(zhí)行OSCtxSw(),最后,需要驗證OSIntCtxSw()和OSTickISR()函數(shù)。當(dāng)上述的這些測試步驟都成功后,可以嘗試運行一些具體的任務(wù),按照由簡到繁的過程不斷使測試變得復(fù)雜,來進(jìn)一步驗證內(nèi)核的穩(wěn)定性和系統(tǒng)性能。二、系統(tǒng)設(shè)計1.語音識別系統(tǒng)概述伴隨著科技進(jìn)步和全球信息交流的日益擴大,嵌入式設(shè)備產(chǎn)品的市場規(guī)模在迅猛發(fā)展。追求小體積多功能嵌入式設(shè)備的必然趨勢,使語音合成、語音識別、手寫輸入技術(shù)在嵌入式中的應(yīng)用成了最具吸引力的功能,因此今后嵌入式產(chǎn)品交互應(yīng)用的競爭已演化成以此三項關(guān)鍵技術(shù)為核心的競爭。語音識別是通過識別和理解過程把人類的語音信號

10、轉(zhuǎn)變?yōu)槲谋净蛎畹募夹g(shù)。其根本目的就是研究出一種具有聽覺功能的機器,這種機器能直接接受人的語音,理解人的意圖,并做出相應(yīng)的反應(yīng)。從技術(shù)看,它屬于多維模式識別和智能接口的范疇。語音識別技術(shù)是一項集聲學(xué)、語音學(xué)、計算機、信息處理、人工智能等于一體的綜合技術(shù),可廣泛應(yīng)用于信息處理、通信與電子系統(tǒng)、自動控制等領(lǐng)域。2.語音識別原理 語音識別技術(shù)發(fā)展到今天,人們提出了各種的識別方法,但它們的基本原理都是相同的,即語音信號經(jīng)過采集送到特征提取模塊處理,得到一組反映該段語音特征的參數(shù)模型,然后這些特征參數(shù)送入模型庫模塊,聲音模式匹配模塊根據(jù)模型庫對該段語音進(jìn)行識別,最后得出識別結(jié)果。 語音識別屬于模式識別,

11、與人的認(rèn)知過程一樣,分為訓(xùn)練和識別兩個過程。在訓(xùn)練階段,語音識別系統(tǒng)對人類語言進(jìn)行學(xué)習(xí),學(xué)習(xí)結(jié)束,把學(xué)習(xí)內(nèi)容組成語音庫存儲起來;識別階段就可以把人們當(dāng)前輸入的語音在語音庫中查找相應(yīng)的詞義或語義。從信號處理的角度,任何一個語音識別系統(tǒng)都能下圖來表示。 語音識別基本原理框圖從圖中可以看出語音識別一般分為兩個步驟: 第一步是系統(tǒng)“學(xué)習(xí)”或“訓(xùn)練”階段, 這一階段的任務(wù)是建立識別基本單元的聲學(xué)模型以及進(jìn)行文法分析的語言模型, 即構(gòu)建參考模式庫; 第二步是“識別”或“測試”階段,根據(jù)識別系統(tǒng)的類型選擇能夠滿足要求的識別方法, 采用語音分析方法分析出這種識別方法所要求的語音特征參數(shù), 按照一定的準(zhǔn)則和測度

12、與參考模式庫中的模型進(jìn)行比較, 通過判決得出結(jié)果。3. 系統(tǒng)硬件設(shè)計 系統(tǒng)以LPC2880 ARM 芯片為核心, 加上FLASH、EPROM等存儲設(shè)備, 及LCD、USB、語音接口等外圍設(shè)備構(gòu)成, 共同完成語音的訓(xùn)練和識別過程。LPC2880 是一款基于ARM7 的32 位微控制器, 適合于要求低功耗和高性能的便攜式應(yīng)用, 8KB 的系統(tǒng)高速緩存(CACHE) , 極大地提高了系統(tǒng)運行速度。它包含一個USB2.0 高速設(shè)備接口, 外部存儲器控制器支持SDRAM、FLASH、ROM和SRAM, 一個MMC/SD 存儲卡接口, A/D和D/A 轉(zhuǎn)換器, 以及包含UART、I2C 總線和I2S 總線

13、在內(nèi)的串行接口。在結(jié)構(gòu)上增加了多通道DMA, 處理器高速緩存, 多條內(nèi)部總線上的同步操作, 靈活的時鐘發(fā)生單元, 它們有助于確保LPC2880 能夠處理更高要求的應(yīng)用。該芯片能夠采用單電池、USB 或已校準(zhǔn)的1.8V 和3.3V 供電。系統(tǒng)的硬件框圖如圖下所示。 音識別系統(tǒng)硬件框圖1)系統(tǒng)組成( 1) 控制部分主要由LPC2880 芯片和鍵盤組成。系統(tǒng)的整個控制過程由LPC2880 來完成, 語音信號的特征提取、訓(xùn)練算法由上位機( PC) 來完成。UDA1314 音頻芯片通過IIS 接口與微控制器進(jìn)行音頻通信, 全部代碼固化在EEPROM中, 采樣的數(shù)據(jù)和變量存入RAM內(nèi)。鍵盤則用來控制整個系

14、統(tǒng)的工作狀態(tài)選擇, 通過不同按鍵來選擇不同的功能。主機的通信則由LPC2880 通過USB 接口來實現(xiàn), 并操作LCD 液晶顯示模塊來顯示信息。( 2) 輸入輸出部分包括有話筒、揚聲器、LCD 液晶顯示器、A/D 和D/A 轉(zhuǎn)換電路組成。語音模擬信號經(jīng)話筒輸入然后進(jìn)行預(yù)處理, 包括A/D 變換, 自動增益控制, 反混疊濾波。整個系統(tǒng)的A/D、D/A 變換由PHILIPS 公司的UDA1314 專用音頻芯片完成, 它集成了A/D 和D/A 功能, 并內(nèi)置有濾波器。揚聲器用來輸出聲音, LCD 用來顯示系統(tǒng)當(dāng)前的工作狀態(tài)。所用的是點陣式液晶顯示器, 為日立公司的HD44780A00LCD。( 3)

15、 存儲部分存儲器部分共分為3 塊: 存儲運行程序、采樣數(shù)據(jù)、語音信號訓(xùn)練結(jié)果。由于要存儲語音信號訓(xùn)練的結(jié)果, 因此選用了SAMSUNG 公司生產(chǎn)的4M×8=32MB KM29W32000AT FLASH 芯片, 它可進(jìn)行100 萬次擦寫, 數(shù)據(jù)保存時間為10a, 通過編程可自動進(jìn)行擦寫。這里用于保存語音信號訓(xùn)練的結(jié)果數(shù)據(jù), 其數(shù)據(jù)保存不需要充電維持。其連接電路圖如下圖所示。片內(nèi)自帶64KB靜態(tài)RAM用來存儲采樣數(shù)據(jù)。用一片24AA128( 128kE2PROM) 用來存放控制LPC2880 工作的程序。 FLASH 存儲器連接電路圖2)系統(tǒng)的工作過程分析( 1) LPC2880 與U

16、DA1341 語音芯片接口工作原理 UDA1341TS 語音芯片通過IIS( I2S) 接口與LPC2880 微控制器進(jìn)行音頻通信, 此外該芯片帶有L3 接口, 進(jìn)行內(nèi)部寄存器設(shè)置, 如音量控制, 低音加強等, L3 接口與3 個GPIO 口連接。IIS( Inter- IC Sound bus) 又稱I2S, 是SONY、PHILIPS 等公司提出的串行數(shù)字音頻總線協(xié)議。IIS 總線只傳送聲音數(shù)據(jù), L3 接口發(fā)送控制信息: L3DATA 接口數(shù)據(jù)線; L3MODE 接口模式線; L3CLOCK 接口時鐘信號線。LPC2880 通過L3 接口向UDA1341 語音芯片發(fā)送控制信息, 發(fā)送過程

17、分地址模式和數(shù)據(jù)傳送模式。地址模式主要用來選擇所要發(fā)送數(shù)據(jù)的目的寄存器。數(shù)據(jù)傳送模式數(shù)據(jù)可以雙向傳送, 發(fā)送控制信息。地址模式、數(shù)據(jù)傳送模式選擇由L3MODE 口線的電平時序決定, 在設(shè)定時, 地址模式在先、數(shù)據(jù)傳送模式在后, 完成一次寄存器設(shè)置。( 2) 語音識別系統(tǒng)工作原理 系統(tǒng)的工作分為語音訓(xùn)練和語音識別兩個過程,在語音訓(xùn)練過程中, 從話筒輸入的語音信號經(jīng)UDA1341 音頻芯片處理變換后, 由PC上位機采用隱馬爾可夫算法( HMM) 進(jìn)行訓(xùn)練, 然后將分析后的結(jié)果保存在FLASH 中。語音識別階段是將輸入的語音信號經(jīng)過控制器處理后與存在FLASH 中的參考樣本進(jìn)行對比, 然后找出最相近

18、的聲音作為識別效果, 然后再由LPC2880 通知用戶系統(tǒng)。整個過程由LPC2880 進(jìn)行控制, 上位機只參與算法設(shè)計, LPC2880 與上位機之間交換信息通過USB2.0 接口, 信息傳送速度快。4.系統(tǒng)軟件設(shè)計 系統(tǒng)的軟件設(shè)計分為算法設(shè)計和控制軟件設(shè)計, 算法主要是用隱馬爾可夫算法( HMM) 來實現(xiàn)語音模型訓(xùn)練及識別, 控制軟件則是系統(tǒng)的整體軟件設(shè)計。 HMM是到目前為止已有的最強有力的語音識別算法。對語音識別系統(tǒng)而言, HMM的輸出值通常就是各個幀的聲學(xué)特征。為了降低模型的復(fù)雜度, 通常HMM模型有兩個假設(shè)前提: 一是內(nèi)部狀態(tài)的轉(zhuǎn)移只與上一狀態(tài)有關(guān); 二是輸出值只與當(dāng)前狀態(tài)或當(dāng)前狀態(tài)轉(zhuǎn)移有關(guān)。除了這兩個假設(shè)外, HMM模型

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論