《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的嵌入式數(shù)字化語(yǔ)音錄制與回放的設(shè)計(jì)實(shí)現(xiàn)
基于FPGA的嵌入式數(shù)字化語(yǔ)音錄制與回放的設(shè)計(jì)實(shí)現(xiàn)
電子發(fā)燒友
摘要: 0引言隨著微電子技術(shù)的發(fā)展,,系統(tǒng)集成向高速,、高集成度、低功耗發(fā)展已經(jīng)成為必然,,同時(shí)SoPC技術(shù)也應(yīng)用而生。SoPC將軟硬件集成于單個(gè)可編程邏輯器件平臺(tái),使得系統(tǒng)設(shè)計(jì)更加簡(jiǎn)潔靈活,。SoPC綜合了SoC,,PLD和FPGA的優(yōu)點(diǎn),集成了硬核和軟核CPU,、OSP,、存儲(chǔ)器、外圍I/O及可編程邏輯,,用戶可以利用SoPC平臺(tái)自行設(shè)計(jì)高速,、高性能的CPU和DSP處理器,使得電子系統(tǒng)設(shè)計(jì)進(jìn)入一個(gè)嶄新的模式,。該設(shè)計(jì)運(yùn)用SoPC技術(shù)實(shí)現(xiàn)嵌入式數(shù)字化語(yǔ)音錄制與回放,。其中,介紹了在FPGA上構(gòu)建WM8731的I2C總線,,以及數(shù)字化語(yǔ)音在SRAM中的存儲(chǔ),,并利用Matlab7.0.4軟件對(duì)所采集的語(yǔ)音數(shù)據(jù)進(jìn)行仿真。SoPC是現(xiàn)在電子技術(shù),、電子系統(tǒng)設(shè)計(jì)的匯聚點(diǎn)和發(fā)展方向,。充分體現(xiàn)了其高性能、設(shè)計(jì)靈活和易用等特點(diǎn),。1系統(tǒng)整體方案系統(tǒng)以Altera公司的FPGA芯片(CycloneⅡ系列)EP2C35F672C6NK為平臺(tái),,結(jié)合音頻編/解碼芯片WM8731實(shí)現(xiàn)語(yǔ)音錄制與回放。該FPGA芯片具有豐富的片內(nèi)資源,,大量的邏輯宏單元和多個(gè)硬件乘法器,,大量的自定義I/O接口,此外還有4個(gè)鎖相環(huán),,為系統(tǒng)提供實(shí)時(shí)時(shí)鐘,。設(shè)計(jì)中充分利用了FPGA的高速并行和A
關(guān)鍵詞: FPGA 語(yǔ)音錄制 回放 CycloneⅡ
Abstract:
Key words :

  0 引言

  隨著微電子技術(shù)的發(fā)展,系統(tǒng)集成向高速,、高集成度,、低功耗發(fā)展已經(jīng)成為必然,同時(shí)SoPC技術(shù)也應(yīng)用而生,。SoPC將軟硬件集成于單個(gè)可編程邏輯器件平臺(tái),,使得系統(tǒng)設(shè)計(jì)更加簡(jiǎn)潔靈活。SoPC綜合了SoC,,PLD和FPGA的優(yōu)點(diǎn),,集成了硬核和軟核CPU、OSP,、存儲(chǔ)器,、外圍I/O及可編程邏輯,,用戶可以利用SoPC平臺(tái)自行設(shè)計(jì)高速、高性能的CPU和DSP處理器,,使得電子系統(tǒng)設(shè)計(jì)進(jìn)入一個(gè)嶄新的模式,。

  該設(shè)計(jì)運(yùn)用SoPC技術(shù)實(shí)現(xiàn)嵌入式數(shù)字化語(yǔ)音錄制回放。其中,,介紹了在FPGA上構(gòu)建WM8731的I2C總線,,以及數(shù)字化語(yǔ)音在SRAM中的存儲(chǔ),并利用Matlab 7.0.4軟件對(duì)所采集的語(yǔ)音數(shù)據(jù)進(jìn)行仿真,。SoPC是現(xiàn)在電子技術(shù),、電子系統(tǒng)設(shè)計(jì)的匯聚點(diǎn)和發(fā)展方向。充分體現(xiàn)了其高性能,、設(shè)計(jì)靈活和易用等特點(diǎn),。

  1 系統(tǒng)整體方案

  系統(tǒng)以Altera公司的FPGA芯片(CycloneⅡ系列)EP2C35F672C6NK為平臺(tái),結(jié)合音頻編/解碼芯片WM8731實(shí)現(xiàn)語(yǔ)音錄制與回放,。該FPGA芯片具有豐富的片內(nèi)資源,,大量的邏輯宏單元和多個(gè)硬件乘法器,大量的自定義I/O接口,,此外還有4個(gè)鎖相環(huán),,為系統(tǒng)提供實(shí)時(shí)時(shí)鐘。設(shè)計(jì)中充分利用了FPGA的高速并行和Avalon總線自定義硬件外設(shè)的優(yōu)勢(shì),,從而構(gòu)建了一個(gè)高集成度,、高性能的系統(tǒng)。歡迎轉(zhuǎn)載,,本文來(lái)自電子發(fā)燒友網(wǎng)(http://www.elecfans.com/)

  語(yǔ)音通過(guò)話筒輸入,,由音頻編/解碼芯片WM8731以8 kHz的A/D采樣率轉(zhuǎn)換成16位PCM碼緩存。此外,,為確保采集的語(yǔ)音數(shù)據(jù)不丟失,,先將語(yǔ)音存儲(chǔ)在SRAM中,再作后續(xù)處理,。整體系統(tǒng)框架圖1所示。

  

 

  1.1 芯片工作原理

  音頻編/解碼芯片WM8731上電后必須將工作模式設(shè)置在系統(tǒng)要求的狀態(tài)下,,因此上電后需要用VERILOG HDL編寫程序模塊對(duì)芯片的工作模式進(jìn)行設(shè)置,。該語(yǔ)音編/解碼芯片有多種工作模式,A/D變換后,,語(yǔ)音的采樣頻率與采樣位寬都需要根據(jù)系統(tǒng)的具體要求,,合理配置。語(yǔ)音芯片的配置時(shí)序?yàn)镮2C模式,,芯片接口為主模式,,即由WM8731提供位時(shí)鐘,,A/D轉(zhuǎn)換和D/A轉(zhuǎn)換的左、右聲道控制相位時(shí)鐘,,以及轉(zhuǎn)換后的數(shù)據(jù)PCM碼輸送給FPGA處理器,。以下為芯片配置字列表,WM8731內(nèi)部控制字寄存器有16個(gè),,在芯片初始化時(shí),,在制作ROM表格中完成。相應(yīng)的程序設(shè)置如下:

  

 

  1. 2 配置單元模塊

  配置單元模塊綜合頂層圖如圖2所示,。從程序編譯分析報(bào)告(見(jiàn)圖3)可以得出,,該單元模塊消耗了101個(gè)邏輯單元,它作為語(yǔ)音采集模塊的一個(gè)子模塊,。在配置電路中,,模塊CLOCK_50將輸入的50 MHz系統(tǒng)時(shí)鐘分頻為1 MHz,作為I2C總線模塊的工作時(shí)鐘,,CLOCK_50模塊中寫出的上面程序代碼是一個(gè)表格,,存儲(chǔ)了配置的控制字。I2C總線模塊的I2C_SDAT和I2C_SCLK是數(shù)據(jù)線和時(shí)鐘線,,DE2板固定分配了專門的I2C數(shù)據(jù)線和時(shí)鐘線的引腳線,。

  

 

  

 

  1.3 語(yǔ)音采集模塊

  語(yǔ)音采集單元頂層綜合模塊如圖4所示。系統(tǒng)通過(guò)語(yǔ)音采集模塊將語(yǔ)音芯片采集的聲音數(shù)據(jù)串/并轉(zhuǎn)換為16位PCM碼,,聲音數(shù)據(jù)傳送至S-RAM存儲(chǔ)器內(nèi)保存,,這里設(shè)置了4 s錄音時(shí)間,用戶1次輸入3個(gè)孤立詞(如數(shù)字),,4×8 KB=32 KB,,考慮到32 KB的原始數(shù)據(jù)需要預(yù)處理、FIR濾波和歸一化,。斷點(diǎn)檢測(cè),,所有處理后的數(shù)據(jù)仍然存入后續(xù)的SRAM地址中。檢測(cè)出的孤立詞分別存入獨(dú)立首地址后面,。

  1.4 語(yǔ)音采集實(shí)時(shí)采樣

  鎖相環(huán)PLL給予WM8731工作在18.4 MHz時(shí)鐘頻率下,,通過(guò)I2C總線控制器設(shè)置WM8731工作在8 kHz的采樣頻率下。圖5為在嵌入式邏輯分析儀(SignalTapⅡLogic Analyzer)下語(yǔ)音采集控制器的采樣圖,。

  

 

  圖5為實(shí)時(shí)采集圖,,測(cè)試人現(xiàn)場(chǎng)讀入語(yǔ)音數(shù)據(jù),模塊實(shí)時(shí)進(jìn)行語(yǔ)音采集回放,。從圖中可見(jiàn),,左對(duì)齊語(yǔ)音采集過(guò)程一共有19個(gè)脈沖,其中前16個(gè)脈沖為有效語(yǔ)音數(shù)據(jù)提取脈沖,,后3個(gè)脈沖為將來(lái)處理擴(kuò)展預(yù)留,。有效語(yǔ)音提取出來(lái)之后便存人SRAM中,。該模塊通過(guò)計(jì)數(shù)器,從啟動(dòng)錄音開始,,自動(dòng)錄制4 s的語(yǔ)音信號(hào),。

  2 語(yǔ)音錄制回放仿真

  經(jīng)WM8731采集的語(yǔ)音信號(hào)轉(zhuǎn)換并存儲(chǔ)于SRAM,然后用SRAM中的數(shù)據(jù)將SRAM的語(yǔ)音數(shù)據(jù)導(dǎo)出,,圖6為語(yǔ)音采集模塊處理后作者錄入的數(shù)字符號(hào)“1234”效果圖,。

  

 

  

 

  圖6是通過(guò)DE2控制面板軟件讀取SRAM前256 KB數(shù)據(jù)(地址:O~0x1FFFF)在Matlab軟件上畫出來(lái)的圖形,同時(shí)為了對(duì)比,,通過(guò)Matlab自帶的[y,,fs,bits]=wavread(‘Blip’,,[N1 N2]),,進(jìn)行同樣話語(yǔ)的錄制,用sound(x,,fs,,bits)對(duì)聲音進(jìn)行回放,仿真結(jié)果見(jiàn)圖6,、圖7,。從仿真圖可看出,以Matlab平臺(tái)為標(biāo)準(zhǔn),,F(xiàn)PGA實(shí)時(shí)采集與現(xiàn)實(shí)吻合,。

  3 結(jié)語(yǔ)

  該系統(tǒng)充分利用了FPGA的高速處理能力,自行設(shè)計(jì)采集模塊和I2C協(xié)議驅(qū)動(dòng)模塊,,并通過(guò)AWALON總線掛載在Nios軟核上,,很好地實(shí)現(xiàn)了實(shí)時(shí)高速采集回放,充分體現(xiàn)了FPGA的優(yōu)越性能,。同時(shí)結(jié)合SoPC設(shè)計(jì)理念,,使系統(tǒng)一片式整合。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。