娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年06月22日(星期日)

2021年06月22日 | 基于ARM7的SoC語音處理系統的設計

發布者:oplkjjj 來源: eefocus關鍵字:ARM7  SoC  語音處理系統 手機看文章 掃描二維碼
隨時隨地手機看文章

引 言


隨著微電子和計算機技術的高速發展,許多嵌入式應用系統應運而生。其中,各種語音處理系統不斷被開發出來,在各行業得到廣泛應用,如語音報站器、自動解說裝置、采訪錄音筆等,為人類的生產、生活提供了極大的便利。本文基于東南大學國家專用集成電路的32位嵌入式SoC——SEP3203處理器,采用G.721標準ADPCM算法,實現了語音信號的軟件實時編解碼,為語音處理應用提供了一種有效的嵌入式解決方案。


1、G.721標準概述


1937年,A.H.Reeves提出脈沖編碼調制(PCM),開創了語音數字化通信的歷程。CCITT在20世紀80年代初,開始研究低于64 Kb/s的非PCM編碼算法,先后制定通過了G.721、G.728、 G.729等編碼標準。其中,G.721協議作為ADPCM的典型算法,不僅具有與PCM近乎相同的語音質量,而且有簡單的算法結構和優良的抗誤碼性能,在衛星、海纜及便攜式數字語音設備等方面都有廣泛應用。G.721算法的簡化框圖如圖1所示。


編碼過程:


① 計算Sl(k)與自適應預測器輸出Se(k)的差值E(k)=Sl(k)-Se(k);

② 通過自適應量化模塊對E(k)進行量化,得到ADPCM碼字I(k);

③ 通過自適應反量化模塊對I(k)計算得到量化差分預測信號Dq(k);

④ 根據重建信號Sr(k)=Se(k)+Dq(k)和Dq(k)更新預測濾波器系數;

⑤ 利用新的系數,計算得到Se(k+1),重復上述5個步驟,壓縮下一個語音采樣數據。


解碼過程:


① 通過自適應反量化和自適應預測得到Dq(k)和Se(k),得到語音重建信號Sr(k);

② 對重建信號Sr(k)進行PCM格式轉換,得到PCM碼字Sp(k);


圖1 G.721編碼器和解碼器簡化框圖


③ 采用與編碼器相同的方法更新預測濾波器系數;

④ 為實現雙向通信,同步調整Sp(k);

⑤ 利用新的濾波器系數,重復上述5個步驟,解碼下一個I(k)。


2、芯片簡介


SEP3203芯片為系統處理核心,總體結構框圖如圖2所示。該芯片是東南大學國家專用集成電路系統工程技術研究中心自主設計的基于ARM7TDMI的32位SoC,采用AMBA2.0標準,0.25μmCMOS工藝,主要面向嵌入式中低端手持設備。片上提供AC97控制器、外存接口EMI、6通道DMAC、TIMER、PMU、INTC等模塊。其中,語音系統使用的模塊有:EMI,負責控制對外存的訪問;片上存儲器


eSRAM,用于優化耗時的核心代碼;AC97,提供AC97標準的音頻接口;DMAC,用于實現大數據量的DMA傳送。


圖2 SEP3203芯片結構框圖


3、系統設計


3.1 硬件系統


硬件系統框圖如圖3所示。虛線框內是片內模塊;框外為片外器件,包括外存(SDRAM/SRAM/FLASH等)、CODEC等。Philips公司的UCB1400作為CODEC。以下為系統工作過程。


圖3 語音處理硬件系統框圖


① 編碼。CODEC采樣語音數據,暫存在AC97的輸入FIFO中。然后,由DMAC通過中斷方式,將數據傳送到指定存儲區域。在ARM7TDMI的控制下,運行G.721編碼程序,將語音PCM數據壓縮為ADPCM碼。


② 解碼。運行G.721解碼程序,把存儲器中的ADPCM碼解碼為PCM碼。每解滿1幀數據后,由DMAC通過中斷方式把數據傳送到AC97的輸出FIFO,通過CODEC驅動放音設備(耳機、揚聲器等)。


根據語音實時性的需要,設置UCB1400采樣速率為8 kb/s。該芯片用16位表示一個采樣點,故采樣速率為128 kb/s。編碼后,每個采樣點用4位表示,故傳輸率為32 kb/s。


3.2 軟件系統


軟件流程如圖4所示。每幀數據為64個采樣點,共計為128字節、16位表示的PCM碼,編碼后為32字節、4位表示的ADPCM碼。


圖4 編解碼的軟件流程


(1) 編碼


首先對系統初始化,包括對AC97、CODEC、DMAC等模塊配置,以及有關狀態變量的初始化。然后,采樣第1幀語音數據,采樣結束進入DMA中斷,在中斷處理中再次配置DMAC,觸發新的采樣傳輸,并對剛采樣的數據編碼。由于編碼由內核執行,采樣由CODEC和DMA完成,故對第K幀編碼和對第K+1幀采樣是并發進行的。


(2) 解碼


同編碼過程類似,首先對系統進行初始化,然后解碼第1幀音頻數據。解碼完配置DMAC,觸發數據傳送至AC97輸出FIFO,通過放音設備播放錄音。同樣,解碼第K+1幀數據與播放第K幀數據并發進行。


本設計采用“雙Buffer”機制緩沖數據。“雙Buffer”是指:開辟兩個幀緩沖區為Buf0、Buf1,緩沖標志Flg初始為0。編碼時,采樣第1幀數據,DMA從AC97輸入FIFO向Buf0傳輸數據,傳輸完后,設置Flg=1,編碼器從Buf0中取數據編碼;同時,DMA向Buf1中傳送新數據。周而復始,每幀數據采樣完,設置Flg=!Flg,編碼器從Buf!Flg緩沖區取數據編碼,DMA傳送采樣數據的目的地址為Buf Flg,從而實現了第K+1幀數據采樣和第K幀數據編碼并發。只要編碼速度高于采樣速度,就不會出現數據的覆蓋。處理過程如下(解碼時的情況類似):


Flg=0;

Psmp=Buf Flg;

Run_Sample(Psmp);//采樣第1幀數據

While(1) { 

Flg=! Flg;

Penc=Buf !Flg;//編碼指針指向緩沖區Buf !Flg

Psmp=Buf Flg;//采樣指針指向緩沖區Buf Flg

Run_Sampler(Psmp); Run_Encoder(Penc); 

//啟動采樣器和編碼器,兩者并發

}


4、性能優化


語音處理的實時性要求很高,否則,若數據處理速度跟不上語音變化速度,就會在錄音時出現剛采樣的數據覆蓋了先采入但未處理的數據;在放音時,出現播放的速度比實際語音慢。當然,如果用足夠大的緩沖,可以避免錄音出現的問題,但放音出現的問題是無法避免的。同時,鑒于存儲資源對于嵌入式系統是很寶貴的,故此方案沒有實際價值。上文介紹的“雙Buffer”機制,能夠使采樣和編碼之間、解碼和播放之間分別互不影響、并發執行,易于控制;但要滿足實時性要求,還要使編解碼速度符合采樣和播放的要求。語音速率是8 KB/s,而系統中一個采樣點用16位表示,故編解碼速度不能低于16 KB/s(即每秒至少編碼16 KB的PCM碼,每秒至少解出16 KB的PCM碼)。表1是未對系統優化前,測試裸機無操作系統情況下,處理512 KB的PCM碼(對應128 KB的ADPCM碼)所用時間。該測試是使用SoC內部定時器TIMER進行的,見參考文獻[1]。測試結果顯示,系統優化前沒有滿足語音實時性要求。

表1 優化前編解碼速度


到此,系統目標代碼都是在SDRAM中運行的。SEP3203提供了一個很有用的模塊——片內高速存儲器eSRAM。eSRAM存取速度非常快,可達到0.89 MIPS/MHz,所以對系統性能有很大的優化作用,而SDRAM卻只能有其性能的1/3左右。表2是在50 MHz時鐘、32位ARM指令情況下,SDRAM和eSRAM的性能比較。各項指標的意義見參考文獻[1]。

表2 eSRAM和SDRAM性能比較


但是,SEP3203的20K的eSRAM資源是有限的,不可能也不必要將所有代碼都放在其中執行。ARM集成開發工具提供了Profile功能,可以對整個程序進行統計分析,得到各部分代碼(主要以標準C函數為單位)所耗時間占系統總時間的百分比。通過對軟件系統做Profile分析,得到各編解碼庫函數在總編解碼時間內所占的百分比,其中主要部分如表3所列。

表3 最耗費時間的庫函數


以上三個函數在總編解碼時間內占用了近80 %的時間(Quan()、Fmult()、Update()的功能分別為量化表查找、定點化的浮點數乘法、狀態變量更新),對這些代碼優化就會明顯提高編解碼速度。把這些函數代碼整合到文件rec_esram.c中,然后加載remap.scf文件進行內存映像(*.scf文件是ARM ADS集成開發工具提供的鏈接腳本文件)。下面是remap.scf文件的內容:

FLASH 0x30002000 0x1000000

{

FLASH 0x30002000

//系統初始化入口及其他代碼存放地址

{

init_ice.o (INIT, +First)

* (+RO,+RW,+ZI)

}

32bitRAM 0x00000000 //中斷向量表入口地址

{

boot_gfd.o (BOOT, +First)

} 

ESRAM 0x1fff0000 0x600 //核心庫代碼存放地址,在eSRAM中

{

rec_esram.o (+RO,+RW,+ZI)

}

/*堆棧設置部分*/

}


進行內存映像后,rec_esram.c的目標代碼rec_esram.o(約為1.5KB)就加載到eSRAM(起始地址為0x1fff0000)中執行了。表4是經過eSRAM優化后編解碼速度測試結果。

表4 eSRAM優化后的編解碼速度


在有操作系統的情況下,也對語音系統性能進行了測試,如表5所列。該操作系統為東南大學專用集成電路系統工程技術與研究中心自主研發的面向嵌入式應用的ASIXOS,提供圖形用戶界面、網絡、時鐘、實時中斷管理等支持和清晰的應用程序開發接口。語音系統為該OS環境中的一個應用,有獨立的用戶界面和底層服務。限于篇幅,本文不再詳述。


從以上測試可以看出,在經過eSRAM優化后,無論是在裸機上還是在有操作系統的情況下,編解碼速度都能滿足語音實時性的需要,達到了設計要求。

表5 eSRAM優化后的編解碼速度


結語


在設計一款面向多媒體應用的嵌入式系統時,實時性能非常重要。本文提出了一種基于ARM7TDMI內核的SoC中語音處理系統的設計方案,并根據該款SoC具有eSRAM的特點,進行了系統性能的優化。對樣機的測試表明系統在主頻70 MHz、有操作系統的情況下編碼速率為19.88 KB/s,解碼速率為22.68 KB/s,達到了語音系統的實時性要求。而且,如果語音處理作為樣機的子系統應用,其硬件設計也支持MP3播放和LCD觸摸屏


的功能,實現了系統板面積減小、整機成本降低的目的,不失為一種高效價廉的設計方案。


參考文獻

1 凌明.基于ARM7TDMI的低成本手持多媒體設備處理器.南京:東南大學國家ASIC工程中心,2004

2 茍大舉,楊啟剛.基于ADPCM 編碼的語音錄放系統開發平臺.四川大學學報(自然科學版), 1998.4, Vol.35 No.2:178~182

3 傅秋良,袁宗寶.純軟件實現ADPCM語音壓縮算法.電信科學, 1994.10, Vol.10 No.10:21~24

4 Gibson Jerry D. 多媒體數字壓縮原理與標準.李煜暉譯.北京:電子工業出版社,2002

5 CCITT. Recommendation G.721: A 32kbit/s Adaptive Differential PulseCodeModulation, Red Book,1984

6 CCITT. Recommendation G.711: General Aspects of Digital Transmission Systems and Terminal Equipments, Blue Book, 1988


關鍵字:ARM7  SoC  語音處理系統 引用地址:基于ARM7的SoC語音處理系統的設計

上一篇:在linux下更新Micropython固件
下一篇:ARM平臺設備WinCE下UART配置

推薦閱讀

?隨著人們需求的提升和科技的發展,家用機器人正掀起一股新的市場發展潮流,在多元化發展趨勢下,未來前景一片光明,而我國要想獲得快速穩步的發展,需要解決技術和市場上的一些難題。 ? 多元化發展驅動,家用機器人迎來光明前景! 近年來,隨著科技的不斷發展和社會的日益進步,機器人迎來了更加廣泛的應用,工業機器人解放了人們的生產,服務機...
2019年6月21日,北京訊——德州儀器(TI)(NASDAQ:TXN)今日推出了業界新款汽車系統基礎芯片(SBC)TCAN4550-Q1。該芯片集成了使用靈活數據速率控制器局域網(CAN FD)的控制器和收發器,旨在滿足車載網絡對高帶寬和數據速率靈活性的需求。它采用了幾乎所有微控制器的串行外圍接口(SPI)總線來部署CAN FD接口或提高系統中CAN FD總線端口的數量,同時...
據9to5Google報道,在上周發布了第一個Android 11 Beta之后,谷歌近日發布了Android 11 Beta 1.5補丁。此次推送的次要更新解決了設備崩潰和缺少Google Pay的問題。  IT之家了解到,Pixel用戶此次將獲推的補丁版本為Android 11 Beta 1.5 OTA(RPB1.200504.020)。Beta 1.5補丁解決的最重要問題是缺少Google Pay,同時這一補丁還修復了手勢導...
NVIDIA 創始人兼首席執行官黃仁勛與 NVIDIA 領導者在 CogX 會議上就初創公司、AI 在抗擊氣候變化中的作用以及 AI 如何推動醫療健康等關鍵行業的發展發表演講。 NVIDIA 創始人兼首席執行官黃仁勛于太平洋時間 6 月 17 日在 CogX 大會上的發言,強調 AI 在英國及全球的各類創新中都發揮著越來越重要的作用。 黃仁勛出席了在倫敦國王十字(...

史海拾趣

問答坊 | AI 解惑

無線電元器件精匯

在其他地方看到的,覺的不錯,拿來供大家需要的下載來看看! 隨后附上電子書閱讀工具 PDB+PDF+PDG+TLPDB+txt閱讀器 [ 本帖最后由 陽光如煙 于 2009-3-1 16:36 編輯 ]…

查看全部問答∨

ARM Cortex-A9 MPCore 多核處理器

TI的OMAP 4就屬于Cortex-A9這是ARM的一份A9資料…

查看全部問答∨

圖中C1503作用

請教大俠圖中標示零件的作用,這個電容不上件有什么不良現象…

查看全部問答∨

Wince6.0與設備連接不上的問題

想進行單步調試,但與設備連接不上,總是提示設備不可用或沒有準備好等類的信息,沒有用ActiveSync,用指定IP連接的, 望前輩指點…

查看全部問答∨

2個DSP如何共享一個FIFO的數據

  RT,因項目需要,要實現2個DSP共享一個FIFO的數據并分時復用,想請假下各位能不能實現,大家多給點 意見啊,感激不盡…

查看全部問答∨

求一牛人博客

幾天前在eeworld上搜索mobile入門開發書籍,無意中找到一位牛人在翻譯windows ce程序設計,第幾版沒留意 不是市面的中文版本 但是沒把其網址記下來,有人記得他博客地址么 名字似乎是叫tellmehow還是tellmewhy…

查看全部問答∨

大家來討論一關于FAT16的問題"RootDirSectors= ((BPB_RootEntCnt*32) + (BPB_BytsPerSec–1)) /BPB

在微軟的硬件白皮書中關于根目錄區所占扇區規模的計算公式中 RootDirSectors =((BPB_RootEntCnt*32)+(BPB_BytsPerSec–1))/BPB_BytsPerSec //BPB_RootEntCnt 為根目錄表項,BPB_BytsPerSec為每扇區字節數(一般為512), //在白皮書中所描述的BIOS P ...…

查看全部問答∨

關于內部數據寄存器的問題

在keilC51里,用了可以位尋址的存儲器,可是工程芯片設成89C51時編譯可以通過,就是不能實現功能(在電腦上通過串口仿真)。只有把芯片改成89C52才可以實現。 在平凡單片機書上也寫了用到內部數據存儲器時工程里需要把芯片設成52系列的。 不知道 ...…

查看全部問答∨

不知道有沒有人遇到過不能下載的問題

使用IAR的編譯器,編譯通過,也Make好了,點Debug,出現了download application畫面后,就死在那里了,照道理此時應該要轉到Programming Download的下載條吧。出現的幾率是隨機的,有時候可以下載有時卻不能了- -!…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 兴业县| 凤城市| 宝清县| 永善县| 辽宁省| 曲周县| 潍坊市| 吉木乃县| 聂荣县| 商都县| 临城县| 无棣县| 门头沟区| 扬中市| 板桥市| 水城县| 博客| 巴中市| 托克托县| 临漳县| 商洛市| 阜新| 丹江口市| 哈巴河县| 建德市| 安化县| 峡江县| 龙山县| 耿马| 大余县| 华池县| 祥云县| 余江县| 石泉县| 朝阳区| 鄂州市| 金门县| 东港市| 靖宇县| 黄陵县| 蒲城县|