(信号与信息处理专业论文)g722的xdais算法标准库的实现及在rf3下的调用.pdf_第1页
(信号与信息处理专业论文)g722的xdais算法标准库的实现及在rf3下的调用.pdf_第2页
(信号与信息处理专业论文)g722的xdais算法标准库的实现及在rf3下的调用.pdf_第3页
(信号与信息处理专业论文)g722的xdais算法标准库的实现及在rf3下的调用.pdf_第4页
(信号与信息处理专业论文)g722的xdais算法标准库的实现及在rf3下的调用.pdf_第5页
已阅读5页,还剩80页未读 继续免费阅读

(信号与信息处理专业论文)g722的xdais算法标准库的实现及在rf3下的调用.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 摘要 算法标准是指算法编码遵循的一系列规范,它能够实现同个算法在不同的软 硬件环境下,不修改算法代码,也可以重新连接和配置,并独立于任何i o 设备。 t i 公司就开发了这样一套编写和使用d s p 算法的t m s 3 2 0 数字信号处理器算法标 准( x d a i s ) ,大大改善了算法的移植和开发效率,提高了算法的重用性和通用性。 参考框架( r f ) 是一个与设备相对独立的系统,提供了一套通用的i o 接口,并 规定了算法和应用程序如何使用这个接口。所有外设都以接口形式存在,算法通 过框架提供的接口访问外设。此外,框架还定义了任务的优先级,通过优先级, 实现对各种模块的控制,即任务的调度。框架实质就是基于硬件平台之上的软件 平台。t i 公司提出的这样一套参考框架r f ,提供了与外设和应用算法通信的标准 接口规则,规范了从应用层到物理层的数据传输模式,为不同的软硬件环境提供 了标准而便于使用的软件平台。 x d a i s 和r f 定义的一系列编程的准则和建议,标准化了算法和系统软件的 接口,使得算法使用者的系统集成任务大为减轻,产品开发周期大为缩短。 本论文简要介绍了g 7 2 2 语音编解码算法、算法标准和参考框架的基本概念, 详细介绍了算法标准中的静动态内存分配,a l g 接口,i a l g 接口和一些重要 的结构及函数等技术要点,并结合g 7 2 2 算法的x d a i s 算法标准库的实现过程, 解析了这些重点要素的实现方法;详细介绍了r f 3 中d s p b i o s 的配置,i o m 硬 件驱动,r f 3 软件中断管理和数据流程,并在d e s 3 2 0 p p u 硬件平台上通过构建 r f 3 软件框架,解析了这些要素的实现方法,并成功调用了g 7 2 2 算法标准库,验 证了g 7 2 2 标准库的实现和r f 3 框架的成功搭建。 关键词:x d a i s 算法标准;i a l g 接口;d s p b i o s ;i o m ; r f 3 a b s t r a c t a b s t r a c t a l g o r i t h ms t a n d a r dm e a n sas e r i e so fr u l e si nc o d i n g ,i tm u s ta c h i v et h e s eg o a l s : a l la l g o r i t h mc a nb ee x e c u t e di nd i f f e r e n ts o f t w a r ea n dh a r d w a r ee n v i o r e m e n t ,a n dc a n b er e l i n k e da n dr e c o n f i g u r e dw i t h o u t c o d i n gm o d i f i c a t i o n ,a n dm u s t a l s ob e i n d e p e n d e n to fa n ys p e c i a li od e v i c e t id e v e l o p e dx d a i sa l g o r i t h ms t a r d a r du n d e r t h e s er u l e s ;i te n h a n c e st h ee f f i c i e n c yo fa l g o r i t h mt r a n s f e ra n dd e v e l o p m e n t ,i n c r e a s e s o p e r a t i o nu s ea n dr e u s eo ft h ea l g o r i t h m r e f e r e n c ef r a m e w o r k ( r f ) i so n ek i n do fs y s t e m sw h i c hi si n d e p e n do fd e v i s e s ,i t p r o v i d e su n i v e r s a li 0i n t e r f a c e sa n dt h er u l e sh o wa l g o r i t h ma n da p p l i c a t i o nu s et h e s e i n t e r f a c e s a l lp e r i p h e r a ld e v i c e sa r ee x i s t e di nf o r m so fi n t e r f a c e ;a l g o r i t h mc a r lv i s i t t h e s ed e v i c e so n l yt h r o u g hi n t e r f a c e sp r o v i d e db yf r a m e w o r k m e a n w h i l ef r a m e w o r k d e f i n e sh o wt o r e g i s t e ri n t e r n a la p p l i c a t i o nm o d u l e sa n dt h ep r i o r i t yo ft a s k s f r a m e w o r kc a r lc o n t r o la l lt h e s em o d u l e sa n dt a s kd i s p a t c hb ye d i t i n gt h e s ep r i o r i t i e s f r a m e w o r kc a nb ec o n s i d e r e da so n ek i n do fs o f t w a r ep l a t f o r mu p o nh a r d w a r ep l a t f o r i l l t ig e n e r a t e dt h r e ek i n d so fr e f e r e n c ef r a m e w o r k s ,w h i c hp r o v i d es t a n d a r di n t e r f a c e sf o r c o m m u n i c a t i o n b e t w e e np e r i p h e r a ld e v i c e sa n da p p l i c a t i o n s ,d e f i n ed a t at r a n s f e rm o d e f r o ma p p l i c a t i o nl e v e lt oh a r d w a r el e v e l ,i t sas i m p l eb u tc o n v e n i n e n ts o f t w a r ep l a t f o r m f o rd i f f e r e n ts o f t w a r ea n dh a r d w a r ee n v i r o n m e n t s a l lt h e s er u l e sa n ds u g g e s t i o n sp r o v i d e db yx d a i sa n dr fa r ed e f i n e da s s t a n d a l i z ei n t e r f a c e so fa l g o r i t h ma n ds y s t e ms o f t w a r e ,w h i c hr e d u c eh a r dl o a do f s y s t a ni n t e g r a t o ra n dd u r a t i o no fp r o d u c td e v e l o p m e n tp e r i o d g 7 2 2a l g o r i t h ma n dr fp r o p o s e db yt ia r eb r i e f l yi n t r o d u c e di nt h i sp a p e r w i t h a ne m p h a s i sa n a l y s i so nt h ek e yc o n c e p t sa sd y n a m i ca n ds t a t i cm e m o r ya l l o c a t i o n , a l gi n t e r f a c e ,i a l gi n t e r f a c ea n ds o m eo t h e ri m p o r t a n ts t r u c t u r e sa n df u n c t i o n s , d e p e n d i n go nt h er e a l i z i n go fx d a i ss t a n d a r da l g o r i t h ml i b r a r yo fg 7 2 2 a n da l s ow i t h a ne m p h a s i sa n a l y s i so nt h ek e yc o n c e p t sa sd s p b i o sc o n f i g u r a t i o n ,i o mh a r d w a r e d r i v e ra n dr f 3s o f t w a r ei n t e r r u p tm a n a g e m e n ta n dd a t af l o w , d e p e n d i n go nr e a l i z i n g r f 3s o f t w a r es y s t e m ,a n df i n a l l yr e c t i f yt h i sl i b r a r ys u c c e s s f u l l yc a l l e di nd e s 3 2 0 p p u h a r d w a r ed e v e l o p m e n te n v i r o n m e n t i i a b s t r a c t k e y w o r d x d i a sa l g o r i t h ms t a n d a r d ;i a l gi n t e r f a c e ;d s p b i o s ;i o m ;r f 3 i i i 图目录 图目录 图2 - ig 7 2 2 编解码器数据流程8 图2 2 静态内存分配功能1 2 图2 - 3 动态内存分配功能1 4 图3 - 1d s p b i o s 配置工具界面1 7 图3 - 2d s p b i o s 内核模块查看窗口1 8 图3 - 3d s p b i o s 程序模块执行图1 8 图3 - 4d s p b i o s 状态统计窗口1 8 图3 5d s p b i o s 信息显示窗口1 9 图3 - 6d s p b i o s 配置文件的创建和加载2 0 图3 7 不使用d s p b i o s 的程序结构2 0 图3 - 8 使用d s p b i o s 的程序结构2 1 图3 - 9s w i 与t s k 线程的区别2 2 图3 1 0i o m 驱动模型2 4 图3 - 1 1i o m 中的d m a 数据传输模式2 7 图3 - 1 2d m a 数据传输功能实现步骤2 8 图3 - 1 3s t a r t d m a ( ) 函数功能2 9 图3 - 1 4s w i a n d n h o o k ( ) 函数功能3 0 图3 - 1 5r f 3 数据流程3 1 图4 - 1 算法实体初始化函数功能4 0 图4 - 2 算法实体激活函数功能4 1 图4 - 3 算法实体注销函数功能4 1 图4 - 4 算法实体内存定位函数功能4 2 图4 - 5 算法实体内存释放函数功能4 3 图4 - 6 算法实体参数控制函数功能4 3 图4 - 7g 7 2 2 算法动静态内存使用数据流程4 5 图4 - 8g 7 2 2 算法动静态内存分配4 6 图4 - 9m d b i n d d e v0 函数功能5 0 图4 - 1 0m d c r e a t e c h a n o 函数功能5 1 v i t 图目录 4 - 1 1i o 请求发送函数功能实现5 l 4 1 2d s p b i o s 系统配置5 4 4 1 3d s p b i o sm e m 模块配置5 5 4 1 4d s p b i o sp i p 模块p i p r x 配置5 6 4 1 5d s p b i o sp i p 模块p i p t x 配置5 6 4 - 1 6d s p b i o ss w i 模块配置5 7 4 - 1 7d s p b i o ss w i 模块中断实体s w i a u d i o p r o c 配置5 8 4 - 1 8d s p b i o sd e c 模块配置5 8 4 1 9d s p b i o sd e c 模块外设实体配置5 9 4 2 0p i o _ n e w ( ) 函数功能6 l 4 - 2 1t r a n s f e r ( ) 函数功能6 2 4 2 2p i o _ r x p r i m e ( ) 函数功能6 3 4 2 3r x c a l i b a c k ( ) 函数功能6 4 4 2 4p i o _ t x p r i m e ( ) 函数功能6 4 4 2 5t x c a l l b a c k ( ) 函数功能6 5 4 2 6r f 3 系统初始化功能6 6 4 2 7t h r a u d i o p r o c r u n ( ) 函数功能6 8 4 - 2 8d s p b i o s 下的未加载算法库时的l o a d 图6 9 4 - 3 0d s p b i o s 的执行状态图6 9 4 3 1s w i 状态图6 9 4 3 2d s p b i o s 信息显示窗口7 0 4 3 3 实时语音编码输入波形7 0 4 3 4 实时语音解码输出波形7 0 v i 图图图图图图图图图图图图图图图图图图图图图图图 表目录 表目录 表2 1 静态内存分配举例1 3 表3 - 1 类驱动适配层与微驱动层函数问的对应关系2 7 表4 1g 7 2 2 算法d s p b i o s 中的内存分配5 5 i x 缩略词表 缩略词表 英文缩写英文全称中文释义 d s p d i g i t a ls i g n a lp r o c e s s 数字信号处理 i 心 r e f e r e n c ef r a m e w o r k参考框架 a l g a l g o r i t h mi n t e r f a c e 算法模块接口 认l g a l g o r i t h mi n s t a n c ei n t e r f a c e 算法实体接口 x d a i st m s 3 2 0d s pa l g o r i t h ms t a n d a r d t m s 3 2 0 d s p 算法标准 s 、s o f t w a r ei n t e r r u p t 。 软件中断 h w ih a r d w a r ei n t e r r u p t 硬件中断 i o mi 0m i n i - d r i v e r外设微驱动 a p i a p p l i c a t i o np r o g r a m m i n g i n t e r f a c e应用程序接口 c s l c h i ps u p p o r tl i b r a r y 片上支持库 d m ad i r e c tm e m o r ya c c e s s直接存储器存取 m 【tm o d u l a t e dl a p p e dt r a n s f o r m 重叠变换调制 x 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作 及取得的研究成果。据我所知,除了文中特另t l ;d n 以标注和致谢的地方 外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为 获得电子科技大学或其它教育机构的学位或证书而使用过的材料。与 我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的 说明并表示谢意。 签名:盛叠塾 日期:2 0 0 8 年月 日 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁盘, 允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文的全 部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描 等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名:导师签名: 日期:2 0 0 8 年0 5 月弓f 日 第一章引言 1 1 课题背景 1 1 1 语音压缩编码标准 第一章引言 语音信息在人们的工作和生活中具有非常重要的作用,数字化的语音信息的 数据量也相当巨大,为更好地存储、传输和使用数字化的信息,需要对语音信息 进行标准化的编码压缩。为使编码后的语音信息可以被广泛地使用,在进行语音 信息编码时需要采用标准的算法。因而,需要对语音编码进行标准化。 自从1 9 3 7 年a h r e e v e s 提出脉冲编码调制( p c m ) 以来,语音编码技术已有 6 0 余年的发展历史。尤其近2 0 年随着计算机和微电子技术的发展语音编码技术得 到飞速发展。 c c i t t ( 国际电话与电报顾问委员会) 于1 9 7 2 年确定6 4 k sp c m 语音编码g 7 1 l 建议,它已广泛的应用于数字通信、数字交换机等领域。这种编码方法可以获得 较好的语音质量但占用带宽较多,在带宽资源有限的情况下不宜采用。c c i t t 于 1 9 8 4 年通过了3 2 k sa d p c m 语音编码g 7 2 1 建议,它不仅可以达到p c m 相同的 语音质量而且具有更优良的抗误码性能,广泛应用于卫星,海缆及数字语音插空 设备以及可变速率编码器中。随后,于1 9 9 2 年公布1 6 k s 低延迟码激励线性预测 ( l d c e l p ) 的g 7 2 8 建议,它以较小的延迟、较低的速率、较高的性能在实际中得 到广泛的应用。最后共轭代数码激励线性预n ( c s a c e l p ) 的8 k s 语音编码g 7 2 9 于1 9 9 6 年6 月在i t u t s g l 5 会议上通过,正式成为国际标准,被广泛应用于个人 移动通信、低c n 数字卫星通信、高质量移动无线通信、存储检索、分组语音和 数字租用信道等领域n ,。 语音的编码是以尽量少的数字代表语音的过程,同时还要保证某一系统所需 的品质和清晰度。计算机的发展为语音信号编码技术的研究提供了强有力的工具。 大规模,超大规模集成电路的出现,为语音编码的实现提供了基础。随着时间的 推移,语音编码技术历经了波形编码、参数编码和混合编码三个阶段。 电子科技大学硕士学位论文 在低比特率、高压缩比的混合编码中,比特率、质量、复杂度与处理时延是 她的四个主要参量,一个理想的语音编码器应该是低速率、高语音质量、低时延、 低复杂度并具有良好的顽健性和算法可扩展性。 i t ug 7 2 2 于1 9 8 8 年标准化,是第一个用于1 6k h z 采样率的标准化宽带语 音编码算法。该编解码器将1 6k h z 的频带分为两个子频带,并用a d p c m 建立 在c e l p ( 激励线性预测) 语音编码器基础上,音频带宽为5 0 - 7 0 0 0h z ,在6 6 至 2 3 8 5k b i t s 间提供9 种语音编码。这个标准把话音信号的质量由电话质量提高到 a m 无线电广播质量,而其数据传输率仍保持为6 4 k b s 髓1 。 1 1 2 算法标准的发展和属性 d s p ( d i g i t a ls i g n a lp r o c e s s o r ) 处理器,使用了特别的哈佛结构和桶型移位器等 专用的硬件逻辑,使其在语音、视频处理等特定的领域得到了快速的发展。为了 实现实时复杂信号算法处理,采用直接在程序中嵌入汇编语句访问硬件外设。很 多算法是多年科研成果,但是缺乏统一标准,当算法从一个系统移植到另外一个 系统时,通常要做很大改动,算法的继承性和重用性都很差,不同产品开发商的 算法实施环境相互不兼容,严重限制了d s p 的发展和推广。 2 0 世纪9 0 年代中期,算法标准的需求逐渐显现出来,出现了功能更为强大的 d s p ,可支持一个算法的多通道或者同一d s p 上的多个算法。些d s p 开发商开 始做为第三方出售知识产权,包括算法。系统集成商从第三方购买黑盒子代码, 并将其加载到系统中,以节省宝贵的开发时间。但是第三方开发商常常假定d s p 用法,以便使其算法尽可能精简,并获得最佳性能效果。而系统集成商可能无法 了解开发商的事先假定是什么,如果算法来自不同的第三方,那么多种算法就不 能在多功能系统中和平共处,集成商将面临不兼容性难题和不可避免的相互指责 3 】 o 到2 0 世纪9 0 年代末,d s p 厂商开始发布行为规则,将其编写为第三方软件 开发商必须遵循的标准代码,必便保证算法的兼容性。 一个算法要应用于多种操作系统,必须具备几个基本的特征m 1 : ( 1 ) 算法对于应用程序透明,相同的算法可以用于任何应用程序。 ( 2 ) 算法既能用于静态系统,又能用于动态系统。 ( 3 ) 算法必须能用二进制形式分发,即能以目标文件发行。 ( 4 ) 算法既能用于单任务,也能用于多任务,即算法具有可重入性。 2 第一章引言 ( 5 ) 算法的使用不需要重新编译,但可以重新连接和配置。 ( 6 ) 算法是c 语言可调用的。 ( 7 ) 算法独立于任何特殊的i o 设备。 算法要具有上述特征,在编码上就必须遵循一定的规范,在处理器资源的使 用上,也必须做些限制,这些限制和规范就会是算法标准。 针对这种状况,同个算法要应用于不同的软硬件环境,在不修改算法编码下, 可以做重新连接和配置,并且独立于任何特殊的i 0 设备,t i 公司就开发了一套编 写和使用d s p 算法的标准x d a i s ,大大改善了算法移植和开发效率,提高了算法 重用性和通用性。因此,对算法标准的规范和实现方法的研究具有重要的应用价 值。 1 。1 3 参考框架的发展和属性 随着d s p 系统的日趋复杂,一些应用可能包含多个算法,同一个算法可能需 要多通道运行,使得系统集成商的开发也越来越复杂。t i 的t m s 3 2 0 d s p 算法参 考框架的提出就是为了解决这些难题。 参考框架是一个与设备相对独立的i o 子系统,即提供了一个通用的i 0 接口, 并规定算法和应用程序如何使用这个接口。所有可能的外设都以接口形式存在, 算法通过框架提供的接口访问外设。任何外设只要提供接口( 驱动程序) 就可以接 入操作系统。 此外,框架还定义了内部应用模块的登记,也就是操作系统中任务的优先级。 通过优先级,框架可以实现对模块的控制,也就是操作系统中所谓的任务调度。 框架负责i o 接口和任务的调度,实质就是基于硬件平台之上的软件平台。 算法在框架中属于非常独立的模块,独立于任何i o 设备而存在,因此算法中 不能出现外设的物理地址,只能通过指针参数或模块接口指针将地址传到函数中。 这一实现通常要依靠一个i o 接口模块,通过这个方法,可以减小算法对框架的依 赖,提高算法的通用性。算法仅对采集到的数据处理,数据的采集、中断的调用 都属于框架的工作。而算法获取数据通常有两种方法,这两种方法均离不开应用 框架的支持。一种是中断输入方式,算法通过应用框架的中断服务函数获得数据; 一种是查询方式,框架提供一个周期性的函数,通过该函数周期性的在某个端口 获得数据崎。 r f 为一种使用d s p b i o s 内核和t m s 3 2 0 算法标注的通用初始化代码。主要 3 电子科技人学硕士学位论文 实现三个主要的功能:存储管理,线程管理和通道封装。它是一个与设备相对独 立的软件平台,基本功能是提供数据传输的接口和模块控制模式h 1 。 对于不同的应用,我们只需在这三个元素上做改变,而不用从头设计整个应 用,大大简化了开发者难度,节省了开发时间。 t i 公司根据应用的复杂程度提供了3 个软件参考架构:r f l 、r f 3 和r f 5 : 一r f l :小型系统,主要用于由c 5 4 x 和c 5 5 x 实现的低端系统 一r f 3 :中型系统,主要用于由c 5 4 x 和c 5 5 x 实现的高端系统和c 6 x 实现 的低端系统 一i 疆5 :大型系统,主要用于由c 6 x 实现的高端系统 1 2 研究目的及意义 t m s 3 2 0 v c 5 4 1 6 是t i c 5 0 0 0 系列d s p 中性价比较高的一款芯片,由于具有低 功耗、低成本、高性能的特点,c 5 4 x 在消费类产品和通信市场,可以用来实现的 算法包括:语音编解码;线路回声消除,噪声消除;调制解调;声音的压缩和解 压缩;语音加密和解密;语音识别,语音合成等。 g 7 2 2 做为一种广泛应用的语音编解码算法,可以被应用于可视电话、广播节 目制作和一部分多谋体传输和制作上,其简单而高效的语音压缩方法正被广泛在 不同平台上使用,为了使算法能够做较小的改动就能在不同软硬件平台上应用, 具备更广泛的移植性,将其封装为标准算法库就具有重要的应用意义,不仅节省 了算法重开发的时间,并能高效的提高算法的重利用价值。 参考框架r f 3 适用于包含小数量的算法,且可以实现多线程、多通道的应用, 比如语音处理、电话会议等。搭建完整的r f 3 框架,就是实现了一个有严格规范 的软件平台,不同的硬件平台和应用算法只需要提供相应的标准接口就可以在方 便简单的流程控制下成功运行,大大提高了算法的集成能力,实现了一个包容的 集成环境。因此实现r f 3 下g 7 2 2 语音标准算法库的调用不仅验证了g 7 2 2 标准库 的成功封装,也验证了r f 3 框架在d e s 3 2 0 p p u 硬件平台上的成功搭建和算法标 准库的成功调用。 因此g 7 2 2 的x d a i s 算法标准库的实现和在r f 3 框架下的调用实现具有重要 的研究价值。 4 第一章引言 1 3 全文组织结构 在本论文中,我在深入理解算法标准和框架结构的基础上,分析了g 7 2 2 算 法标准库的关键技术,结合t m s 3 2 0 v c 5 4 x 系列d s p 芯片的特点,在搭建d s p 平 台的基础上,完成了g 7 2 2 标准算法库的封装和在r f 3 下的成功调用,并在 t m s 3 2 0 v c 5 4 1 6 上的实时实现,语音质量良好。 本论文分为五章。第一章,对语音编码的研究现状,算法标准和参考框架的 意义进行了简要介绍并指出本论文的组织结构。第二章,对算法标准中的关键技 术进行了深入研究。第三章,对参考框架r f 3 中的关键技术进行了深入研究。第 四章,详细介绍了g 7 2 2 算法标准库的实现方法和r f 3 框架及其调用算法库的具 体实现,包括软硬件环境,系统软件设计,并对实现结果进行了分析。最后,在 第五章结束语中对全文所做的工作进行了总结,并提出下一步努力的方向。由于 时间和本人自身水平的限制,文中难免不足之处,欢迎各位读者批评指正。 5 电子科技大学硕士学位论文 第二章算法标准中的关键技术 x d a i s 算法标准是t i 公司做为d s p 芯片全球最大的生产厂商,为了改善算 法的兼容性和重用性,提出的一套算法接口规范,意在统一第三方软件开发商在 算法接口上规则,实现算法的高效重用和移植。 为了能实现标准算法库,算法核心代码的共有属性必须满足:c 语言可调用的; 是同时可以被多个用户读或同一用户读多次的程序;与i o 独立;可以以内存占有 大小和m i p s 需求进行分类; x d i a s 算法标准规则分为四组,具备基本的校验机制以保证符合标准: 一一常识性变成规则,作用在于加强算法的便携性、可预测性及易用性。 一一取消任意选择,指定了在各种不同方法中采用何种方法。 一一资源管理,是算法标准的核心,适用于外部及内部存储器,以及d m a 通 道等外设。 一一统一规范,有助于系统集成商衡量算法并评估其在系统中的兼容性。 x d i a s 一共有4 6 条规则,随着标准需求的不断发展,还在不断完善和增加, 其主要的规则包括:不同厂商的算法能够被集成到一个系统内;算法是与框架独 立的,同个算法能够被任何应用或框架有效的调用;算法能够在静态和动态环境 中部署;算法能以二进制格式分布;算法的集成不需要客户的重编译,但需要重 配置和连接;算法中不能出现内存地址和硬件编码程序,不能直接访问任何外设; 所有模块都必须遵循x d a i s 的命名规则,提供初始化和终止的方法等等。 该算法标准的目标是:标准易于使用和遵守;标准的一致性能够得到验证; 算法标准库能够在不同的t id s p 芯片平台上方便移植:有工具能够简化系统集成 任务,包括配置、执行的模型、标准一致性和调试。 为了对算法标准有更深刻的认识,本章从g 7 2 2 算法的实现出发,详细研究分 析和归纳了算法标准中用到的关键技术,包括a l g 接口、i a l g 接口、内存动静 态分配以及其他一些重要的数据结构和函数。 6 第二章算法标准中的关键技术 2 1 g 7 2 2 算法简介 i t ug 7 2 2 是第一个用于1 6l d t z 采样率的标准化宽带语音编码算法。该编解 码器将1 6l d - i z 的频带分为两个子频带,并用a d p c m 建立在c e l p 语音编码器 基础上,音频带宽为5 0 7 0 0 0h z ,在6 6 至2 3 8 5k b i t s 间提供9 种语音编码, 其数据传输率仅为6 4 k b s 。 g 7 2 2 采用m l t 压缩编码算法,将输入语音划分为每帧3 2 0 点,m l t 把以前一 帧的3 2 0 点和当前帧的3 2 0 点共6 4 0 点做变换,产生3 2 0 个m l t 系数,每帧系数 独立编码,2 4 k 和3 2 k 压缩率的每帧点数为4 8 0 和6 4 0 ; 用m l t 系数计算振幅包络并量化:3 2 0 点分为1 6 个频段,每段2 0 点,频宽 为5 0 0 h z ,因为带宽为7 k ,所以有用频段为1 4 个,忽略了高于7 k 的m l t 系数。 表示振幅包络的b i t 被送入m u x 传送给解码器,并被用于编码m l t 系数中的分类 处理。 使用量化后的振幅包络和剩余在帧内经过振幅包络编码后的b i t ,分类处理 ( c a t e g o r i z a t i o np r o c e d u r e ) 产生了l6 个类,不同的分类( c a t e g o r i z a t i o n ) 需要不同数 目的b i t 来编码同样的m l t 系数。每个分类包括一组1 4 个类别分配( c a t e g o r y a s s i g n m e n t s ) ,一个分配对应1 4 个频段中的一个。一个类别( c a t e g o r y ) 为一个频段 定义了一组预定量化和编码的系数,分配了期望需要的b i t 数,因为使用不同长度 的h u f f m a n 编码,最终的b i t 数取决于这个频段的m l t 系数特定次序。然后,m l t 系数使用1 6 个计算好了的分类独立量化和编码,并且每个分类的确定编码b i t 数 已确定好了。 量化和编码处理是一个频段一个频段进行的,一个分类决定为1 4 个频段需要 的类别分配,而每个频段的所有的类别分配和振幅包络决定该频段内2 0 个m l t 系数的所有量化和编码的系数。 1 6 种分类方法,每种分类包含一套1 4 个种类分配方式,分别对应1 4 个不同 频段,即每个类别预定义一套对所有1 4 个频段的码字分配情况。所有的m l t 系 数将根据每一种不同的类别被量化和编码,就可得到每个种类所需要的确切b i t 数。 这样的量化和编码过程是一个频段接着一个频段进行的。分类方法决定了所有1 4 个频段的种类分配方式,每个频段的幅度包络以及分类方式决定了频段中2 0 个 m l t 系数所使用的量化的编码参数。每个区域的m l t 系数首先由量化后的幅度包 络进行归一化,然后进行标量量化。量化后的系数合成矢量,再进行h u f f m a n 编码, 7 电子科技大学硕士学位论文 其b i t 数不固定,出现概率大的值需要少的b i t ,出现概率小的值需要较多b i t 蚴。 整个编解码器的数据流程如图2 1 : 输入语音,分成帧长为3 2 0 点的数 据段,存入i n p u t 数组 上 调用e n c o d e 0 对i n p u t 编码 上 编码结果压缩为3 0 点,存放在 o u t - w o r d s 数组 上 调用d e c o d e ( ) 对o u t w o r d s 解码 上 解码结果恢复为3 2 0 点,存放在 o u t p u t 数组 上 通过d s p 上的串口送给输模转换 器还原为模拟信号 上 通过扬声器听到编解码后的语音 图2 - 1g 7 2 2 编解码器数据流程 在银杏公司开发的d e s 3 2 0 p p u 教学实验箱上,采用t i 的t m s 3 2 0 v c 5 4 1 6 d s p 芯片,通过替换内联函数,适当选择优化选项的使用,并用汇编语音编写耗 时较多的多循环语句等优化方法,最终实现了实时的、语音质量良好的g 7 2 2 编解 码器。 2 2a l g 接口 a l g 是x d a i s 算法标准中一个非常重要的概念,是标准算法提供给应用层的 接口,应用程序必须通过a l g 标准函数与算法通信,具体包含八个标准函数 a l g _ a c t i v a t e0 、a l g d e a c t i v a t e ( ) 、a l g c r e a t e ( ) 、a l g d e l e t e ( ) 、a l g c o n t r o l ( ) 、a l g e t u p ( ) 、a l g j n i t ( ) 、a l g e x i t ( ) 。这八个函数仅仅定义了函数名或指 针名,其函数体的实际内容是通过相对应的具体算法的i a l g 接口函数实现的,稍 8 第二章算法标准中的关键技术 后将在i a l g 中作具体解释。 其中a c t i v a t e ( ) 和d e a c t i v a t e ( ) 两个函数,是为了解决多个通道的算法重入问题, 通过这两个函数在调用前后对参数做保存和恢复,以及在动态( s c r a t c h ) 和静态 ( p e r s i s t e n t ) i 勾存间进行数据的拷贝和搬移。a c t i v a t e 0 函数激活实体对象,主要是初 始化动态内存中的数据,以供算法使用。d e a c t i v a t e o i 函数撤销实体对象,将下次执 行算法时需要的数据从动态内存保存到静态内存中口3 。 c o n t r o l ( ) 函数则通过命令控制字( e m d ) 结构体对参数进行动态调整或给出算法 状态等信息。 2 3ia l g 接口 所有标准算法必须实现一个标准的 a l g 接口,即算法实体接口。该接口提 供的功能包括: 系统内存分配管理,算法实例的建立, 算法实体对象的初始化 和终止。最重要的是建立了一个v 表,就是一种定义的特殊结构体,算法标准命 名为 a l gf x n s 的结构体,定义了满足x d a i s 的标准接口函数,以供a l g 定义 的八个标准函数或者应用程序通过这个接口调用算法库。 在i a l gf x n s 结构中,除了a l g a l l o c ( ) ,a l g l n i t ( ) 和a l g f r e e ( ) 是必须的以外, 其它的函数都是可选的。a l g a l l o c 0 实现内存管理,返回一个内存描述表,包含 创建一个算法实体对象时内存需求的描述,包括每块内存块的大小、读取方式、 属性和首地址;a l g i n i t o 将算法实体关联的内存块首地址赋值于算法模块定义的内 存表中的各内存块首地址,算法实体关联的参数赋值于算法模块定义的参数值, 完成算法实体的内存定位初始化;a l g f r e e ( ) 在终止算法实例对象后,释放内存空 间,返回应当被释放的内存指针表哺1 。 其主要实现的关键技术包括: 1 对i a l gf x n sv 表做扩展,以名为x x 的算法为例,定义x x 算法的v 表结 构: t y p e d e fs t r u c ti x x f x n s i a l g f x n s i a l g ;| 噙i x xe x t e n d si a l g 卑| v o i d 木k e y f u n c t i o n ( ) ; ) h x _ f x n s ; 包含定义一个标准的i a l gf x n s 结构体,用于对标准i a l g 接口做扩展,和 9 电子科技大学硕士学位论文 算法的核心函数名; 2 在源文件中,初始化这个扩展的v 表: i x x f x n sx x i x x = i a l g f x n s , x x _ v e n d e r _ k e y f u n c t i o n , ) ; 初始化定义了算法扩展的v 表和算法核心函数名构建的标准i a l g 结构体。 3 再用宏定义实现算法实体对标准v 表的扩展,并具体化每个函数的实际功 能,具体的实现程序将在第四章中详细介绍。 # d e f i n ei a l g f x n s & x x v e n d e r i a l g , 降m o d u l ei d | x x v e n d e r a c t i v a t e ,| a c t i v a t e 鼻| x x v e n d e r a l l o c ,| 噶a l g a l l o c | x x v e n d e r c o n t r o l ,| c o n t r o l 每| x x v e n d e r d e a c t i v a t e ,| 嚏d e a c t i v a t e 丧| x x v e n d e r f r e e ,| f l e e 舟l x x v e n d e r _ i n i t o b j ,| 嚏i n i t 舟| x x v e n d e r m o v e d ,| m o v e d 毒| 酞v e n d e rn u m a l l o c溶n u m a l l o c 卑| 4 当我们调用x x 算法的k e y f u n c t i o n 功能时,调用算法执行接口函数 x x _ a p p l y ( ) ,函数体内调用a l g _ a c t i v a t e ( ) , 代码如下: v o i da l ga c t i v a t e ( a l g _ h a n d l ea l 曲 i f ( a l g 一 f x n s 一 a l g a c t i v a t e ! = n u l l ) a l g 一 f x n s 一 a l g a c t i v a t e ( a l g ) ;) 由a l g h a n d l ea l g 语句实际定义的是一个i a l g f x n sv 表, 当运行 a l g 一 f x n s 一 a l g a c t i v a t e ( a l g ) 语句时,就会调用到用户扩展的v 表中的宏i a l g f x n s : x xv e n d e ra c t i v a t e 函数。也就是说应用程序调用a

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论