微波EDA网,见证研发工程师的成长! 2025濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柣鎴f閺嬩線鏌涘☉姗堟敾闁告瑥绻橀弻鐔虹磼閵忕姵鐏嶉梺绋块椤︻垶鈥﹂崸妤佸殝闂傚牊绋戦~宀€绱撴担鍝勭彙闁搞儜鍜佸晣闂佽瀛╃粙鎺曟懌闁诲繐娴氶崢濂告箒濠电姴锕ら幊搴㈢閹灔搴ㄥ炊瑜濋煬顒€鈹戦垾宕囧煟鐎规洜鍠栭、姗€鎮欏顔锯偓鎾⒒閸屾瑧顦﹂柟璇х節閹兘濡疯瀹曞弶鎱ㄥ璇蹭壕閻庢鍠栭…鐑藉极閹邦厼绶炲┑鐘插閸氬懘姊绘担鐟邦嚋缂佽鍊歌灋妞ゆ挾鍊e☉銏犵妞ゆ挾濮烽敍婊堟⒑缂佹ê濮﹂柛鎾寸懇瀹曟繈濡堕崱娆戭啎缂佺虎鍙冮ˉ鎾跺姬閳ь剟鎮楀▓鍨灈妞ゎ厾鍏橀獮鍐閵堝懎绐涙繝鐢靛Т鐎氼喛鍊撮梻鍌氬€风粈渚€骞夐敓鐘茬闁糕剝绋戝婵囥亜閺冨倻鎽傞柛鐔锋噽缁辨捇宕掑顑藉亾閹间礁纾归柣鎴eГ閸ゅ嫰鏌ら幖浣规锭闁搞劍姊归妵鍕箻閸楃偟浠奸梺鎼炲妼閸婂潡寮诲☉銏╂晝闁挎繂妫涢ˇ銉╂⒑閽樺鏆熼柛鐘崇墵瀵寮撮悢铏诡啎闂佺粯鍔﹂崜姘舵偟閺囥垺鈷戠紒瀣儥閸庡繑淇婇锝囩疄鐎殿喛顕ч埥澶婎潩椤愶絽濯伴梻浣告啞閹稿棝鍩€椤掆偓鍗遍柛顐g箥濞撳鏌曢崼婵囧殗闁绘稒绮撻弻鐔煎礄閵堝棗顏�04闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閹冣挃闁硅櫕鎹囬垾鏃堝礃椤忎礁浜鹃柨婵嗙凹缁ㄥジ鏌熼惂鍝ョМ闁哄矉缍侀、姗€鎮欓幖顓燁棧闂備線娼уΛ娆戞暜閹烘缍栨繝闈涱儐閺呮煡鏌涘☉鍗炲妞ゃ儲鑹鹃埞鎴炲箠闁稿﹥顨嗛幈銊╂倻閽樺锛涢梺缁樺姉閸庛倝宕戠€n喗鐓熸俊顖濆吹濠€浠嬫煃瑜滈崗娑氭濮橆剦鍤曢柟缁㈠枛椤懘鏌嶉埡浣告殲闁绘繃娲熷缁樻媴閽樺-鎾绘煥濮橆厹浜滈柨鏃囶嚙閺嬨倗绱掓潏銊︻棃鐎殿喗鎸虫慨鈧柍閿亾闁归绮换娑欐綇閸撗呅氬┑鐐叉嫅缁插潡寮灏栨闁靛骏绱曢崢閬嶆⒑閸濆嫬鏆婇柛瀣尰缁绘盯鎳犻鈧弸娑㈡煟濞戝崬娅嶇€殿喕绮欓、妯款槼闁哄懏绻堝娲濞戞艾顣哄┑鐐额嚋缁茶法鍒掗鐔风窞濠电姴瀛╃€靛矂姊洪棃娑氬婵☆偅绋掗弲鍫曟焼瀹ュ棛鍘遍柣搴秵閸撴瑦绂掗柆宥嗙厵妞ゆ洖妫涚弧鈧繝纰夌磿閸忔﹢宕洪敓鐘茬<婵犲﹤鍟粻娲⒒閸屾瑧顦﹂柟纰卞亜鐓ら柕濞炬櫅绾剧粯绻涢幋娆忕仼闁绘帒鐏氶妵鍕箳閸℃ぞ澹曟繝鐢靛Л閸嬫捇姊洪鈧粔鎾倿閸偁浜滈柟鍝勭Х閸忓矂鏌涢悢鍝ュ弨闁哄瞼鍠栧畷娆撳Χ閸℃浼�15闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閹冣挃闁硅櫕鎹囬垾鏃堝礃椤忎礁浜鹃柨婵嗙凹缁ㄥジ鏌熼惂鍝ョМ闁哄矉缍侀、姗€鎮欓幖顓燁棧闂備線娼уΛ娆戞暜閹烘缍栨繝闈涱儐閺呮煡鏌涘☉鍗炲妞ゃ儲鑹鹃埞鎴炲箠闁稿﹥顨嗛幈銊╂倻閽樺锛涢梺缁樺姉閸庛倝宕戠€n喗鐓熸俊顖濆吹濠€浠嬫煃瑜滈崗娑氭濮橆剦鍤曢柟缁㈠枛椤懘鏌嶉埡浣告殲闁绘繃鐗犲缁樼瑹閳ь剟鍩€椤掑倸浠滈柤娲诲灡閺呭爼骞嶉鍓э紲濡炪倖娲栧Λ娑㈠礆娴煎瓨鎳氶柡宥庣亹瑜版帗鏅查柛顐ゅ櫏娴犫晛顪冮妶鍡樷拹婵炶尙鍠庨~蹇撁洪鍛画闂佽顔栭崰妤呭箟婵傚憡鈷戦柤濮愬€曢弸鍌炴煕鎼达絾鏆鐐插暙椤粓鍩€椤掑嫬鏄ラ柨鐔哄Т缁€鍐┿亜韫囨挻锛旂紒杈ㄧ叀濮婄粯鎷呴搹鐟扮闂佽崵鍠嗛崹钘夌暦閹达箑绠荤紓浣贯缚閸橀亶姊洪棃娴ㄥ綊宕曢幎钘夋槬闁挎繂娲犻崑鎾斥枔閸喗鐏堝銈庡弮閺€杈ㄧ┍婵犲洤绠瑰ù锝呮憸閸樻悂姊虹粙鎸庢拱闁活収鍠氶懞杈ㄧ鐎n偀鎷绘繛杈剧到閹虫瑨銇愰幒鎴濈彉濡炪倖甯掗崐濠氭儗濞嗘挻鐓欓弶鍫熷劤閻︽粓鏌℃担绋库偓鍧楀蓟閵娾晜鍋嗛柛灞剧☉椤忥拷 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閹冣挃闁硅櫕鎹囬垾鏃堝礃椤忎礁浜鹃柨婵嗙凹缁ㄥジ鏌熼惂鍝ョМ闁哄矉缍侀、姗€鎮欓幖顓燁棧闂備線娼уΛ娆戞暜閹烘缍栨繝闈涱儐閺呮煡鏌涘☉鍗炲妞ゃ儲鑹鹃埞鎴炲箠闁稿﹥顨嗛幈銊╂倻閽樺锛涢梺缁樺姉閸庛倝宕戠€n喗鐓熸俊顖濆吹濠€浠嬫煃瑜滈崗娑氭濮橆剦鍤曢柟缁㈠枛椤懘鏌eΟ鑽ゅ灩闁搞儯鍔庨崢閬嶆煟韫囨洖浠滃褌绮欓幃锟狀敍濮樿偐鍞甸柣鐔哥懃鐎氼厾绮堥埀顒勬⒑鐎圭媭娼愰柛銊ユ健閵嗕礁鈻庨幋鐘碉紲闂佽鍎虫晶搴g玻濡ゅ懏鈷掑ù锝呮啞閸熺偞銇勯鐐搭棦鐎规洘锕㈤弫鎰板幢濞嗗苯浜炬繛宸簼閸婂灚顨ラ悙鑼虎闁告梹纰嶇换娑㈡嚑椤掆偓閳诲牏鈧娲橀崹鍧楃嵁濮椻偓閹虫粓妫冨☉娆戔偓顓㈡⒒娴e憡鍟炴繛璇х畵瀹曟粌鈽夐姀鈩冩珫濠电偞鍨崹娲煕閹达附鐓曟繛鎴炃氶惇瀣箾閸喐绀€闁宠鍨块幃娆戞嫚瑜戦崥顐︽⒑鐠団€虫灆闁告濞婇妴浣割潩鐠鸿櫣鍔﹀銈嗗坊閸嬫捇鏌i敐鍥у幋鐎规洖銈稿鎾Ω閿旇姤鐝滄繝鐢靛О閸ㄧ厧鈻斿☉銏╂晞闁糕剝銇涢弸宥夋倶閻愮紟鎺楀绩娴犲鐓熸俊顖濇娴犳盯鏌¢崱蹇旀珔闁宠鍨块、娆撴嚍閵夈儱鏀俊銈囧Х閸嬫盯鏁冮妷銉殫闁告洦鍨扮粻娑欍亜閹烘垵浜扮紒閬嶄憾濮婄粯鎷呯粵瀣秷閻庤娲橀敃銏ゃ€佸鎰佹▌闂佸搫琚崝鎴炰繆閸洖骞㈤柡鍥╁Х閻i箖姊绘笟鈧ḿ褔鎮ч崱娆屽亾濮樼厧鐏︾€规洘顨呴悾婵嬪礋椤掑倸骞堟繝鐢靛仜濡鎹㈤幋位澶愬閳╁啫寮挎繝鐢靛Т閹冲繘顢旈悩鐢电<閺夊牄鍔岀粭鎺楁懚閿濆鐓犲┑顔藉姇閳ь兙鍊曞嵄妞ゆ帒瀚埛鎺懨归敐鍛殘鐟滅増甯楅弲婵嬫煏閸繃瀚呴柤鏉挎健濮婃椽顢楅埀顒傜矓閹绢喗鍊块柛顭戝亖娴滄粓鏌熼崫鍕ラ柛蹇撶焸閺屾盯鎮㈤崫銉ュ绩闂佸搫鐬奸崰鏍х暦濞嗘挸围闁糕剝顨忔导锟�婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柛娑橈攻閸欏繘鏌i幋锝嗩棄闁哄绶氶弻娑樷槈濮楀牊鏁鹃梺鍛婄懃缁绘﹢寮婚敐澶婄闁挎繂妫Λ鍕⒑閸濆嫷鍎庣紒鑸靛哺瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁诡垎鍐f寖缂備緡鍣崹鎶藉箲閵忕姭妲堥柕蹇曞Х椤撳搫鈹戦悙鍙夘棞缂佺粯甯楃粋鎺撱偅閸愨斁鎷虹紓浣割儐椤戞瑩宕曞澶嬬厱濠电姴鍟扮粻鐐碘偓娈垮枛椤嘲顕i幘顔藉亜闁惧繗顕栭崯搴ㄦ煟閻斿摜鐭婄紒澶屾嚀閻g兘顢涢悜鍡樻櫇闂佹寧妫佸Λ鍕焵椤掑啯纭鹃柍瑙勫灴閹晠宕f径濠庢П闂備焦濞婇弨閬嶅垂閸ф钃熼柣鏃囨閻瑩鏌熺粙鍨劉鐎规洖纾槐鎾存媴閸濆嫅锝夋煙缁嬫鐓煎┑锛勬暬瀹曠喖顢涘☉娆愮彆闂佽崵濮村ú鈺冧焊濞嗘劗顩锋い鏍ㄧ矌绾捐棄銆掑顒佹悙闁哄绋掗妵鍕敇閻樻彃骞嬮梺闈涙缁€渚€鍩ユ径鎰潊闁炽儲鏋奸崑鎾绘倻閼恒儱鈧敻鏌i姀銏☆仮闁荤喖鍋婇崵鏇㈡煙閹澘袚闁抽攱甯掗湁闁挎繂鐗婇鐘绘偨椤栨稓鈯曠紒缁樼洴瀹曪絾寰勭仦瑙f嫲闁诲氦顫夊ú姗€宕濆▎蹇曟殾闁绘垹鐡旈弫鍥ㄧ箾閹寸伝鍏肩珶閺囩偐鏀芥い鏃傜波缂傛岸鏌涚€n偅灏甸柍褜鍓氶悢顒勫箯閿燂拷
首页 > 应用设计 > 消费类电子 > 基于矩阵乘法器的MP3音频解码系统的优化设计

基于矩阵乘法器的MP3音频解码系统的优化设计

时间:03-06 来源:3721RD 点击:

0 引言

MP3(MPEG Audio Layer 3)是一种以高保真为前提实现的高效压缩技术。MP3音频编码器复杂,压缩率很高,但其音色和音质还可以保持基本完整,因此该音频格式文件在计算机、网络和各种电子设备上都得到了广泛运用。

由于MP3音频解码相对比较复杂,为了达到在控制成本的范围内实现快速解码的要求,提出了在SoC上通过增加矩阵乘法器运行快速的两个16点DCT算法,进一步提高MP3解码速度的可行性方案。

1 MP3解码流程分析

MP3解码的流程如图1所示,解码的主要过程包括同步处理、解帧头、解边带信息、解比例因子、Huffman解码、逆量化、频率线重排序、立体声处理、混叠重建、改进离散余弦逆变换(IMDCT)、频率倒置处理、子代综合滤波,最后输出原始的PCM数据。

闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鎯у⒔閹虫捇鈥旈崘顏佸亾閿濆簼绨奸柟鐧哥秮閺岋綁顢橀悙鎼闂侀潧妫欑敮鎺楋綖濠靛鏅查柛娑卞墮椤ユ艾鈹戞幊閸婃鎱ㄩ悜钘夌;婵炴垟鎳為崶顒佸仺缂佸鐏濋悗顓熶繆閵堝繒鍒伴柛鐕佸亞缁鈽夊Ο蹇撶秺閺佹劙宕ㄩ璺攨缂傚倷绀侀鍕嚄閸撲焦顫曢柟鎹愵嚙绾惧吋鎱ㄥ鍡楀幋闁稿鎹囬幃婊堟嚍閵夈儮鍋撻崸妤佺叆闁哄洦姘ㄩ崝宥夋煙閸愯尙鐒告慨濠勭帛閹峰懘宕ㄦ繝鍌涙畼闂備浇宕甸崰鍡涘磿閹惰棄绠查柕蹇曞濞笺劑鏌嶈閸撴瑩顢氶敐鍡欑瘈婵﹩鍘兼禍婊呯磼閻愵剙顎滃瀛樻倐瀵煡顢楅崟顑芥嫼闂佸湱枪濞撮绮婚幘瀵哥閻犲泧鍛煂闁轰礁鐗婃穱濠囧Χ閸涱喖娅ら梺绋款儌閸撴繄鎹㈠┑鍥╃瘈闁稿本绋戝▍锝咁渻閵堝繒鍒伴柕鍫熸倐楠炲啯绂掔€e灚鏅┑鐐村灦钃遍悹鍥╁仱濮婅櫣鎷犻垾铏亶闂佽崵鍣︽俊鍥箲閵忕姭鏀介悗锝庝簽閸婄偤姊洪棃娴ゆ盯宕橀妸銉喘婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柟闂寸绾捐銇勯弽顐粶闁绘帒鐏氶妵鍕箳閹存繍浠肩紒鐐劤椤兘寮婚悢鐓庣鐟滃繒鏁☉銏$厽闁规儳顕ú鎾煙椤旂瓔娈滈柡浣瑰姈閹棃鍨鹃懠顒佹櫦婵犵數濮幏鍐礃椤忓啰椹抽梻渚€鈧稓鈹掗柛鏂跨Ф閹广垹鈹戠€n亜绐涘銈嗘礀閹冲秹宕Δ鍛拻濞达絽鎲$拹锟犳煙閾忣偅灏甸柍褜鍓氬銊︽櫠濡や胶鈹嶅┑鐘叉搐缁犵懓霉閿濆牆鈧粙濡搁埡鍌滃弳闂佸搫鍟犻崑鎾绘煕鎼达紕锛嶇紒杈╁仱楠炴帒螖娴e弶瀚介梻浣呵归張顒勬偡閵娾晛绀傜€光偓閸曨剛鍘甸梺鎯ф禋閸嬪懎鐣峰畝鈧埀顒冾潐濞叉粓寮拠宸殨濞寸姴顑愰弫鍥煟閹邦収鍟忛柛鐐垫暬濮婄粯鎷呴懞銉с€婇梺闈╃秶缁犳捇鐛箛娑欐櫢闁跨噦鎷�...

在这些过程中由于IMDCT和子带综合滤波的算法比较复杂,占用硬件资源较多,处理时间长,因此功耗所占比例相应较高。表1是在DSP平台上成功移植后,对代码进行耗时分析的结果。

闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鎯у⒔閹虫捇鈥旈崘顏佸亾閿濆簼绨奸柟鐧哥秮閺岋綁顢橀悙鎼闂侀潧妫欑敮鎺楋綖濠靛鏅查柛娑卞墮椤ユ艾鈹戞幊閸婃鎱ㄩ悜钘夌;婵炴垟鎳為崶顒佸仺缂佸鐏濋悗顓熶繆閵堝繒鍒伴柛鐕佸亞缁鈽夊Ο蹇撶秺閺佹劙宕ㄩ璺攨缂傚倷绀侀鍕嚄閸撲焦顫曢柟鎹愵嚙绾惧吋鎱ㄥ鍡楀幋闁稿鎹囬幃婊堟嚍閵夈儮鍋撻崸妤佺叆闁哄洦姘ㄩ崝宥夋煙閸愯尙鐒告慨濠勭帛閹峰懘宕ㄦ繝鍌涙畼闂備浇宕甸崰鍡涘磿閹惰棄绠查柕蹇曞濞笺劑鏌嶈閸撴瑩顢氶敐鍡欑瘈婵﹩鍘兼禍婊呯磼閻愵剙顎滃瀛樻倐瀵煡顢楅崟顑芥嫼闂佸湱枪濞撮绮婚幘瀵哥閻犲泧鍛煂闁轰礁鐗婃穱濠囧Χ閸涱喖娅ら梺绋款儌閸撴繄鎹㈠┑鍥╃瘈闁稿本绋戝▍锝咁渻閵堝繒鍒伴柕鍫熸倐楠炲啯绂掔€e灚鏅┑鐐村灦钃遍悹鍥╁仱濮婅櫣鎷犻垾铏亶闂佽崵鍣︽俊鍥箲閵忕姭鏀介悗锝庝簽閸婄偤姊洪棃娴ゆ盯宕橀妸銉喘婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柟闂寸绾捐銇勯弽顐粶闁绘帒鐏氶妵鍕箳閹存繍浠肩紒鐐劤椤兘寮婚悢鐓庣鐟滃繒鏁☉銏$厽闁规儳顕ú鎾煙椤旂瓔娈滈柡浣瑰姈閹棃鍨鹃懠顒佹櫦婵犵數濮幏鍐礃椤忓啰椹抽梻渚€鈧稓鈹掗柛鏂跨Ф閹广垹鈹戠€n亜绐涘銈嗘礀閹冲秹宕Δ鍛拻濞达絽鎲$拹锟犳煙閾忣偅灏甸柍褜鍓氬銊︽櫠濡や胶鈹嶅┑鐘叉搐缁犵懓霉閿濆牆鈧粙濡搁埡鍌滃弳闂佸搫鍟犻崑鎾绘煕鎼达紕锛嶇紒杈╁仱楠炴帒螖娴e弶瀚介梻浣呵归張顒勬偡閵娾晛绀傜€光偓閸曨剛鍘甸梺鎯ф禋閸嬪懎鐣峰畝鈧埀顒冾潐濞叉粓寮拠宸殨濞寸姴顑愰弫鍥煟閹邦収鍟忛柛鐐垫暬濮婄粯鎷呴懞銉с€婇梺闈╃秶缁犳捇鐛箛娑欐櫢闁跨噦鎷�...

根据表1可知,子带综合滤波占了整个解码时间的60 %以上,是决定解码速度的最关键模块;其次是长块IMDCT运算,占了整个解码时间的10%以上。若采用MPEG-1建议的算法流程,数值计算主要集中在子带综合滤波上。以两声道48 kHz采样率为例,乘法运算量为(48 000/32)×(64×32+512)×2=7 680 000次/s。因此,子带综合滤波是MP3解码器的优化重点,减少子带综合滤波的计算量和计算时间是MP3解码器实现的核心。

2 子带综合滤波分析

子带综合滤波是MP3解码的最后一部分,也是解码过程中最为耗时的关键步骤。它负责从IMDCT的输出值中把PCM值还原出来,可以分成5个步骤。首先是Matrixing(矩阵)运算,即,2,…,63。由公式可知,它从32个子带Sk的每个子带中取出一个值组成32个值送入一个矩阵中进行运算,然后把输出Vi的64个结果放入一个1 024的先入先出(FIFO)缓存中,再从1 024值中取出一半,组成一个512矢量Ui,并对这512矢量进行加窗运算,即Wi=UiDi,i=1,2,…,511,加窗系数Di由MP3官方协议 AnnexB Table3-B.3提供。最后将加窗结果Wi进行叠加生成32个时域PCM输出。

闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鎯у⒔閹虫捇鈥旈崘顏佸亾閿濆簼绨奸柟鐧哥秮閺岋綁顢橀悙鎼闂侀潧妫欑敮鎺楋綖濠靛鏅查柛娑卞墮椤ユ艾鈹戞幊閸婃鎱ㄩ悜钘夌;婵炴垟鎳為崶顒佸仺缂佸鐏濋悗顓熶繆閵堝繒鍒伴柛鐕佸亞缁鈽夊Ο蹇撶秺閺佹劙宕ㄩ璺攨缂傚倷绀侀鍕嚄閸撲焦顫曢柟鎹愵嚙绾惧吋鎱ㄥ鍡楀幋闁稿鎹囬幃婊堟嚍閵夈儮鍋撻崸妤佺叆闁哄洦姘ㄩ崝宥夋煙閸愯尙鐒告慨濠勭帛閹峰懘宕ㄦ繝鍌涙畼闂備浇宕甸崰鍡涘磿閹惰棄绠查柕蹇曞濞笺劑鏌嶈閸撴瑩顢氶敐鍡欑瘈婵﹩鍘兼禍婊呯磼閻愵剙顎滃瀛樻倐瀵煡顢楅崟顑芥嫼闂佸湱枪濞撮绮婚幘瀵哥閻犲泧鍛煂闁轰礁鐗婃穱濠囧Χ閸涱喖娅ら梺绋款儌閸撴繄鎹㈠┑鍥╃瘈闁稿本绋戝▍锝咁渻閵堝繒鍒伴柕鍫熸倐楠炲啯绂掔€e灚鏅┑鐐村灦钃遍悹鍥╁仱濮婅櫣鎷犻垾铏亶闂佽崵鍣︽俊鍥箲閵忕姭鏀介悗锝庝簽閸婄偤姊洪棃娴ゆ盯宕橀妸銉喘婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柟闂寸绾捐銇勯弽顐粶闁绘帒鐏氶妵鍕箳閹存繍浠肩紒鐐劤椤兘寮婚悢鐓庣鐟滃繒鏁☉銏$厽闁规儳顕ú鎾煙椤旂瓔娈滈柡浣瑰姈閹棃鍨鹃懠顒佹櫦婵犵數濮幏鍐礃椤忓啰椹抽梻渚€鈧稓鈹掗柛鏂跨Ф閹广垹鈹戠€n亜绐涘銈嗘礀閹冲秹宕Δ鍛拻濞达絽鎲$拹锟犳煙閾忣偅灏甸柍褜鍓氬銊︽櫠濡や胶鈹嶅┑鐘叉搐缁犵懓霉閿濆牆鈧粙濡搁埡鍌滃弳闂佸搫鍟犻崑鎾绘煕鎼达紕锛嶇紒杈╁仱楠炴帒螖娴e弶瀚介梻浣呵归張顒勬偡閵娾晛绀傜€光偓閸曨剛鍘甸梺鎯ф禋閸嬪懎鐣峰畝鈧埀顒冾潐濞叉粓寮拠宸殨濞寸姴顑愰弫鍥煟閹邦収鍟忛柛鐐垫暬濮婄粯鎷呴懞銉с€婇梺闈╃秶缁犳捇鐛箛娑欐櫢闁跨噦鎷�...

1次矩阵运算乘法和加法运算过程分别为1 024次和992次,完成1个声道的解码需要18次矩阵运算。矩阵运算是子带综合滤波的关键步骤。实际上,Konstantinos Konstantinides提出的方法,只需要做一些变化就可以通过32点DCT变换成矩阵运算。

2.1 32点快速DCT算法分析

快速DCT变换算法主要基于系数矩阵分裂方法,增加输入的预处理,使得乘法和加法计算量减半。32点的DCT变换到矩阵运算如图2所示。其中V(1×64)表示矩阵的输出,A,B都是长度为1×16的矢量,(A,B)表示32点DCT的输出。

由于32点的DCT可以分解成2个16点的DCT变换,依次类推可以分解成8点的DCT变换,考虑到定点数字信号处理中的有限字长效应,实际只需分解1 次,将32点DCT化成2个16点的DCT。简化子带滤波流程以及使用快速DCT变换后,子带综合滤波部分的运算量可以减少约60 %。

由32点DCT分解为2个16点DCT过程推导如下:

闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鎯у⒔閹虫捇鈥旈崘顏佸亾閿濆簼绨奸柟鐧哥秮閺岋綁顢橀悙鎼闂侀潧妫欑敮鎺楋綖濠靛鏅查柛娑卞墮椤ユ艾鈹戞幊閸婃鎱ㄩ悜钘夌;婵炴垟鎳為崶顒佸仺缂佸鐏濋悗顓熶繆閵堝繒鍒伴柛鐕佸亞缁鈽夊Ο蹇撶秺閺佹劙宕ㄩ璺攨缂傚倷绀侀鍕嚄閸撲焦顫曢柟鎹愵嚙绾惧吋鎱ㄥ鍡楀幋闁稿鎹囬幃婊堟嚍閵夈儮鍋撻崸妤佺叆闁哄洦姘ㄩ崝宥夋煙閸愯尙鐒告慨濠勭帛閹峰懘宕ㄦ繝鍌涙畼闂備浇宕甸崰鍡涘磿閹惰棄绠查柕蹇曞濞笺劑鏌嶈閸撴瑩顢氶敐鍡欑瘈婵﹩鍘兼禍婊呯磼閻愵剙顎滃瀛樻倐瀵煡顢楅崟顑芥嫼闂佸湱枪濞撮绮婚幘瀵哥閻犲泧鍛煂闁轰礁鐗婃穱濠囧Χ閸涱喖娅ら梺绋款儌閸撴繄鎹㈠┑鍥╃瘈闁稿本绋戝▍锝咁渻閵堝繒鍒伴柕鍫熸倐楠炲啯绂掔€e灚鏅┑鐐村灦钃遍悹鍥╁仱濮婅櫣鎷犻垾铏亶闂佽崵鍣︽俊鍥箲閵忕姭鏀介悗锝庝簽閸婄偤姊洪棃娴ゆ盯宕橀妸銉喘婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柟闂寸绾捐銇勯弽顐粶闁绘帒鐏氶妵鍕箳閹存繍浠肩紒鐐劤椤兘寮婚悢鐓庣鐟滃繒鏁☉銏$厽闁规儳顕ú鎾煙椤旂瓔娈滈柡浣瑰姈閹棃鍨鹃懠顒佹櫦婵犵數濮幏鍐礃椤忓啰椹抽梻渚€鈧稓鈹掗柛鏂跨Ф閹广垹鈹戠€n亜绐涘銈嗘礀閹冲秹宕Δ鍛拻濞达絽鎲$拹锟犳煙閾忣偅灏甸柍褜鍓氬銊︽櫠濡や胶鈹嶅┑鐘叉搐缁犵懓霉閿濆牆鈧粙濡搁埡鍌滃弳闂佸搫鍟犻崑鎾绘煕鎼达紕锛嶇紒杈╁仱楠炴帒螖娴e弶瀚介梻浣呵归張顒勬偡閵娾晛绀傜€光偓閸曨剛鍘甸梺鎯ф禋閸嬪懎鐣峰畝鈧埀顒冾潐濞叉粓寮拠宸殨濞寸姴顑愰弫鍥煟閹邦収鍟忛柛鐐垫暬濮婄粯鎷呴懞銉с€婇梺闈╃秶缁犳捇鐛箛娑欐櫢闁跨噦鎷�...

2.2 基于矩阵乘法器的快速DCT算法优化

3×3矩阵乘法器由触发器和乘累加器组成,是高性能DSP处理器的重要部件,也是实时处理的核心,其速度直接影响DSP处理器的速度。矩阵乘法器的实现有很多种,基本上都基于并行计算原则。由于每列结果与其他列不相关,因此可以通过增加乘法器多列同时计算,经过n次乘累加就可以得到最后结果。图3给出矩阵乘法器的结构。

显然,闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鎯у⒔閹虫捇鈥旈崘顏佸亾閿濆簼绨奸柟鐧哥秮閺岋綁顢橀悙鎼闂侀潧妫欑敮鎺楋綖濠靛鏅查柛娑卞墮椤ユ艾鈹戞幊閸婃鎱ㄩ悜钘夌;婵炴垟鎳為崶顒佸仺缂佸鐏濋悗顓熶繆閵堝繒鍒伴柛鐕佸亞缁鈽夊Ο蹇撶秺閺佹劙宕ㄩ璺攨缂傚倷绀侀鍕嚄閸撲焦顫曢柟鎹愵嚙绾惧吋鎱ㄥ鍡楀幋闁稿鎹囬幃婊堟嚍閵夈儮鍋撻崸妤佺叆闁哄洦姘ㄩ崝宥夋煙閸愯尙鐒告慨濠勭帛閹峰懘宕ㄦ繝鍌涙畼闂備浇宕甸崰鍡涘磿閹惰棄绠查柕蹇曞濞笺劑鏌嶈閸撴瑩顢氶敐鍡欑瘈婵﹩鍘兼禍婊呯磼閻愵剙顎滃瀛樻倐瀵煡顢楅崟顑芥嫼闂佸湱枪濞撮绮婚幘瀵哥閻犲泧鍛煂闁轰礁鐗婃穱濠囧Χ閸涱喖娅ら梺绋款儌閸撴繄鎹㈠┑鍥╃瘈闁稿本绋戝▍锝咁渻閵堝繒鍒伴柕鍫熸倐楠炲啯绂掔€e灚鏅┑鐐村灦钃遍悹鍥╁仱濮婅櫣鎷犻垾铏亶闂佽崵鍣︽俊鍥箲閵忕姭鏀介悗锝庝簽閸婄偤姊洪棃娴ゆ盯宕橀妸銉喘婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柟闂寸绾捐銇勯弽顐粶闁绘帒鐏氶妵鍕箳閹存繍浠肩紒鐐劤椤兘寮婚悢鐓庣鐟滃繒鏁☉銏$厽闁规儳顕ú鎾煙椤旂瓔娈滈柡浣瑰姈閹棃鍨鹃懠顒佹櫦婵犵數濮幏鍐礃椤忓啰椹抽梻渚€鈧稓鈹掗柛鏂跨Ф閹广垹鈹戠€n亜绐涘銈嗘礀閹冲秹宕Δ鍛拻濞达絽鎲$拹锟犳煙閾忣偅灏甸柍褜鍓氬銊︽櫠濡や胶鈹嶅┑鐘叉搐缁犵懓霉閿濆牆鈧粙濡搁埡鍌滃弳闂佸搫鍟犻崑鎾绘煕鎼达紕锛嶇紒杈╁仱楠炴帒螖娴e弶瀚介梻浣呵归張顒勬偡閵娾晛绀傜€光偓閸曨剛鍘甸梺鎯ф禋閸嬪懎鐣峰畝鈧埀顒冾潐濞叉粓寮拠宸殨濞寸姴顑愰弫鍥煟閹邦収鍟忛柛鐐垫暬濮婄粯鎷呴懞銉с€婇梺闈╃秶缁犳捇鐛箛娑欐櫢闁跨噦鎷�...这种结构的计算速度很快,但是使用乘法器会因矩阵维数n的增加而快速增加,使用的触发器也很多。在很多场合下,只要满足处理速度的要求,完全没有必要浪费这么多硬件资源,而是只要1个乘累加单元流水作业,分步计算每1列结果既可。在做乘累加计算1个元素时候,准备下一组参与运算的数据,如此循环,同样可以获得较高的处理速度。

在该设计中,由于B矩阵是1×n的一维向量输入数据,A矩阵为DCT系数矩阵,A矩阵中的元素为n个系数的线性组合,因此整个矩阵乘法器需要2组n个触发器分别存放输入数据和n个系数,1个乘累加单元。输入数据X[0:n],从X[O]到X[n]循环n次进入乘法器,使用选择信号Assi-gn[0:n] 选择系数C[0:n],另外系数符号由Sign信号软件控制,基本结构如图4所示。

闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鎯у⒔閹虫捇鈥旈崘顏佸亾閿濆簼绨奸柟鐧哥秮閺岋綁顢橀悙鎼闂侀潧妫欑敮鎺楋綖濠靛鏅查柛娑卞墮椤ユ艾鈹戞幊閸婃鎱ㄩ悜钘夌;婵炴垟鎳為崶顒佸仺缂佸鐏濋悗顓熶繆閵堝繒鍒伴柛鐕佸亞缁鈽夊Ο蹇撶秺閺佹劙宕ㄩ璺攨缂傚倷绀侀鍕嚄閸撲焦顫曢柟鎹愵嚙绾惧吋鎱ㄥ鍡楀幋闁稿鎹囬幃婊堟嚍閵夈儮鍋撻崸妤佺叆闁哄洦姘ㄩ崝宥夋煙閸愯尙鐒告慨濠勭帛閹峰懘宕ㄦ繝鍌涙畼闂備浇宕甸崰鍡涘磿閹惰棄绠查柕蹇曞濞笺劑鏌嶈閸撴瑩顢氶敐鍡欑瘈婵﹩鍘兼禍婊呯磼閻愵剙顎滃瀛樻倐瀵煡顢楅崟顑芥嫼闂佸湱枪濞撮绮婚幘瀵哥閻犲泧鍛煂闁轰礁鐗婃穱濠囧Χ閸涱喖娅ら梺绋款儌閸撴繄鎹㈠┑鍥╃瘈闁稿本绋戝▍锝咁渻閵堝繒鍒伴柕鍫熸倐楠炲啯绂掔€e灚鏅┑鐐村灦钃遍悹鍥╁仱濮婅櫣鎷犻垾铏亶闂佽崵鍣︽俊鍥箲閵忕姭鏀介悗锝庝簽閸婄偤姊洪棃娴ゆ盯宕橀妸銉喘婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柟闂寸绾捐銇勯弽顐粶闁绘帒鐏氶妵鍕箳閹存繍浠肩紒鐐劤椤兘寮婚悢鐓庣鐟滃繒鏁☉銏$厽闁规儳顕ú鎾煙椤旂瓔娈滈柡浣瑰姈閹棃鍨鹃懠顒佹櫦婵犵數濮幏鍐礃椤忓啰椹抽梻渚€鈧稓鈹掗柛鏂跨Ф閹广垹鈹戠€n亜绐涘銈嗘礀閹冲秹宕Δ鍛拻濞达絽鎲$拹锟犳煙閾忣偅灏甸柍褜鍓氬銊︽櫠濡や胶鈹嶅┑鐘叉搐缁犵懓霉閿濆牆鈧粙濡搁埡鍌滃弳闂佸搫鍟犻崑鎾绘煕鎼达紕锛嶇紒杈╁仱楠炴帒螖娴e弶瀚介梻浣呵归張顒勬偡閵娾晛绀傜€光偓閸曨剛鍘甸梺鎯ф禋閸嬪懎鐣峰畝鈧埀顒冾潐濞叉粓寮拠宸殨濞寸姴顑愰弫鍥煟閹邦収鍟忛柛鐐垫暬濮婄粯鎷呴懞銉с€婇梺闈╃秶缁犳捇鐛箛娑欐櫢闁跨噦鎷�...

由于DCT计算本质上就是n×n矩阵乘法运算,而n×n矩阵乘法器是在通用乘法器的基础上增加2组分别存放系数矩阵的系数C(n)和输入X(n)的n个寄存器,使之实现长度为n的乘累加功能,同时还需保存上次乘法结果。其中,DCT中的系数是一组n维基的n种线性组合。只

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top