




已阅读5页,还剩62页未读, 继续免费阅读
(信号与信息处理专业论文)基于mcf5249c3的voip语音编码算法ilbc的实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 随着网络、通信的普及,i n t e r n e t 在越来越多的新领域获得应用, 如电子商务、i p 电话、i p 传真等。v o i p ( v o i c eo v e r i n t e r n e tp r o t o c 0 1 ) 技术的发展为语音业务在各种数据网上进行传输提供了强大、有效的 通信手段,是当下极具发展潜力的领域。通过v o l p ,数字化的语音信 号被封装在i p 数据分组中,通过i p 网络进行传送。技术主要涉及到 三个领域的问题:支持它的网络协议;完成语音编码的编解码器;起 融合作用的操作系统。本文主要研究其中的语音编解码应用部分。 鉴于目标处理器只有定点处理能力,而i l b c 算法的参考实现源代 码是浮点a n s ic 代码集。总的实现方案采用了m a t l a b 定点工具箱 作为建模的工具,通过建立了完整的算法定点模型实现浮点到定点的 转换,并进一步开发出了定点a n s ic 代码集。在定点d s p 应用程序 开发过程中,发现纯粹的c 代码在目标平台上无法高效运行,为了达 到实时性需求,本文作者运用处理器的汇编指令集对c 代码进行优化。 研究的最终成果是i l b c 算法的定点实现一一嵌汇编的定点a n s ic 代 码集。 算法在m c f 5 2 4 9d e m o b o a r d 上完成最终的测试,各项观察数 据表明从m a t l a b 定点模型到定点c 代码最终的嵌汇编代码集都较成功 地完成了实时运行指标。 关键词:v o l p ,i l b c ,m c f 5 2 4 9 ,m a t l a b a b s t r a c t w i t ht h ep o p u l a r i z a t i o no fn e t w o r ka n dc o m m u n i c a t i o n ,i n t e r n e th a s f o u n da p p l i c a r l o ni nm o r ea n dm o r ef i e l d s ,s u c ha se l e c t r o n i cc o m m e r c e , i pt e l e p h o n e ,a n di pf a xe t c t h e d e v e l o p m e n t o fv o l p t e c h n o l o g y p r o v i d e se f f i c i e n tm e a n sf o rt r a n s m i s s i o no fv o i c es e r v i c ev i ad i f f e r e n t k i n d so fd a t an e t w o r k b yu s eo f v o l p , d i g i t a l i z e ds p e e c hs i g n a l i s e n c a p s u l a t e di n i pp a c k e t ,a n dt h e nt h ep a c k e ti st r a n s m i t t e do v e rt h ei p n e t w o r k p r o b l e m si n v o l v e di nv o l pm a i n l yc o m ed o w nt ot h r e ed o m a i n : t h es u p p o r t e dn e t w o r kp r o t o c o l 、t h ea u d i o 6 0 d e c 、a n dr t o sa c t sa s f u s i o n s i n c et h er e f e r e n c eo p e ns o u r c ec o d e sa r ew r i t t e ni nf l o a ta n s ic l a n g u a g e ,w h i l et h et a r g e tp r o c e s s o rj u s th a st h ee f f o r tt oc o p ew i t hf i x e d p o i n to p e r a t i o n ,af o r m a lm o d e l i n gm e t h o dm u s tb ea p p l i e dt od e v e l o p e d as e to ff i x e dp o i n ta n s icc o d e ,a n dt r a n s f e rt h ed s pa p p l i c a t i o n d e v e l o p i n gp r o c e d u r ei n t o at r a d i t i o n a lw a y t h ef i x e dp o i n tt o o l b o x w i t h i nm a t l a bi sa d o p t e dt op l a yt h i sr o l e l o wc o s ta n dl o wp o w e rm a k ef i x e dp o i n td s pp r o c e s s o re a s i e rb e a c c e p t e db yt h em a r k e t ,a n da l s om a k et h en e wf i x e dp o i n tc o d es e th a v e b e t t e rp o r t a b i l i t ya n dw o n d e r f u la p p l i c a t i o nf u t u r e h o w e v e r ,s u c hf i x e d p o i n tcc o d es t i l lc o u l dn o tr u nd i r e c t l y ,i no r d e rt om e e tr e a l t i m e r e q u i r e m e n t ,t h ec o d es e ti so p t i m i z e db yu s eo fe m b e d d i n ga s s e m b l y i n s t r u c t i o n s ot h ef i n a lo u t p u tw o u l db eas e to fa s s e m b l ye m b e d d e d a n s ic l a n g u a g ec o d e s t h ea l g o r i t h mi s f u l l yt e s t e do nm c f 5 2 4 9d e m o b o a r d ,t e s tr e s u l t s a r ep r e s e n t e d s y s t e mp e r f o r m a n c ea n dp a r a m e t e r sg o tf r o mt e s t sp r o v e d t h a tt h ei m p l e m e n t a t i o nh a da c h i e v e do r i g i n a la i m k e y w o r d :v o l p ,i l b c ,m c f 5 2 4 9 ,m a t l a b i i 圈目录 图目录 图2 1 编码器流程图。 图2 2 起始态样点的d p c m 量化 图2 3i l b c 编码器端码书检索流程 图2 4i l b c 解码器流程图 图2 5i l b c 、g 7 2 9 a 、g 7 2 3 1 性能对比 图3 1 定点数的二进制形式 图3 2 数据精度与范围 图3 3 补码表示时数据范围。 图3 4 模运算的时钟图二一 图3 5 二进制加法一 图3 6 二进制减法 图3 7 二进制乘法 图3 8 实数与实数乘法。 图3 9 实数与复数乘法 图3 1 0 复数与复数乘法 图3 1 1 数据类型转换之短数据转长数据 图3 1 2 数据类型转换之长数据转短数据 图3 1 3f i 对象内建函数 图4 1 有效寻址模式与种类 图4 2 二维数组的n ,z 访问 图4 36 4 位整数开平方 图5 1m c f 5 2 4 9 c 3 模块图 图5 2 开发板体系结构 图5 3v 2c o l d f i r e 处理器流水线结构 图5 4m c f 5 2 4 9s d r a m 接口 图5 5 定时器模块 图5 6 音频接口模块 图5 7 处理器与音频模块的接口 v i o o o _ j n 屹挖m m 蝤蝤m m玎掩殂卯勰舵甜舶卯犍 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 签名: i ! 包:赶旌。 日期:帅年f 月烈日 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名: 盈宣。家趣 导师签名 日期: 第一章引育 1 1 研究背景及意义 第一章引言 v o 球的日益兴起,市场潜力巨大1 1 j 。v o l p 在目前国内市场核心传输系统还是 基于电信网络,并非真正意义上的基于i n t e r n e t 网络,由于市场准入机制上的限制 使得市场扩展有一定的难度,但此项业务已经在国外取得了成功,业界都普遍认 为国内市场之所以未及时开放是出于对国有运营商的一种保护,随着国内开发商 与运营商的成长壮大,必将迎来此块市场的春天。作为其实现的核心语音编 解码算法,还没有现成的r r u 相关标准出台,当前的各种流行开源算法受到各种 层次d s p 开发者越来越多的追捧。实现手法也是五花八门。从各种通信产品,或 者电子消费品中已有的实现手段上讲,要么将算法固化到特定的编解码芯片中, 如现在普遍存在的m p 3 播放器,数码相机等;要么就是使用d s p 处理器将可执 行代码在开机启动后从外部存储单元完全加载到内部r a m 或者部分加载进去。通 常来说后者开发成本低,可移植性强、容易升级、进入市场速度快、风险小等突 出特点;但市场规模大的话,其弊端就集中到了产品硬件成本太高。找到合适的 算法,利用合适的开发平台,快速有效的从试验平台走下来,进而产品化。不管 是参与当前市场竞争还是为将来的市场竞争做技术储备,都具有非常现实的意义。 1 2 问题的提出 说到v 0 i p ( v o i c eo v e ri p ) 最容易想到的就是当前各种流行的低比特率编解码 方案。目前主流的几种编解码算法都存在一个知识产权问题,使得设备商或者开 发者都不得不承担专利费,不仅如此,在丢包率比较高的网络环境下实际的语音 效果也不尽人意。随着、,o i p 产业的不断发展,一种能提供良好语音质量,专门为 英特网上丢包率比较高的通信环境设计,又能免除专利费困扰的新编解码算法: i l b c ( i n t e r n e tl o wb i t r a t ec o d e c ) 应运而生了。目前应用最为成熟的一些语音编 解码算法基本上都是基于c e l p ( c o d ee x c i t e dl i n e a rp r e d i c t i o n ) 编码框架。比如 说u g 7 2 9 、c - 7 2 3 、g s m e f r 等等。在传统的电路交换网中,c e l p 方案已经成 功地实现了高质量低比特率语音编码。这种编码方案最大的长处在于它发掘了连 电子科技大学硕士学位论文 续语音信号段之间的互相关信息。因而实际语音效果也很大程度上取决于历史语 音段的编码情况,或者说在连续语音段之间互相关信息的存在量上。c e l p 编解码 器是有记忆的,内部的动态自适应码书常常保留了过去好几帧数据的信息。它的 弊端是一旦有语音帧丢失或者延迟比较大,就会将当前产生的错误蔓延。这个缺 陷在分组交换的网络中是致命的,单单一个包的丢失就会影响到后面很多帧的解 码语音质量。幸运的是:i l b c 的诞生就是为了解决这一问题。 1 3 研究内容 我们的目标是要在m c f 5 2 4 9 c 3 开发板上实现此编解码算法。最大的瓶颈是限 定的硬件平台m c f 5 2 4 9 c 3 以c o l d f i r e3 2 位微处理器为核心,而它是一款定点控 制器,本身并不具有d s p 功能优势,由于其内部含有m a c 加速单元使得它比一 般的、m c u 在计算能力上强了很多,具有一定的数据处理能力。前面提到的i l b c 算法又是以浮点代码集的形式提供的参考,这就使得算法实现面临极大的困难。 依据在同样开发平台上g t 7 2 9 的开发经验,即使是完整、正确、可执行的定点a n s i c 代码集,也同样有很大的难度。基于以上分析本人制定以下开发方案: 一i l b c 语音编解码算法分析 一i l b c 定点模型搭建 一算法优化 硬件开发平台 一实时测试 2 第二章i l b c 语音编解码算法摘析 第二章i l b c 语音编解码算法简析 i l b c 编解码器是为了提高口网络上语音通信抗数据包丢失而被开发出来的。 它的编解码设计对象是8 k h z 采样率的窄带语音信号,支持两种模式:帧长3 0 m s , 比特率1 3 3k b p s 帧长2 0 m s ,比特率1 5 2 k b p s 。不管是哪种模式,首先都会有一 系列l p c ( l i n e a rp r e d i c t i v ec o d i n g ) 分析滤波器被计算出来。输入的语音信号经 过滤波产生残差信号,编码器对残差信号中主体态( d o m i n a n ts t a t e ) ( 以能量大小 作为标准) 进行标量量化。此主体态就是连续的5 7 5 8 ( 2 0 m s 3 0 m s ) 个样点,由 它衍生出动态码书中的起始态( s t a r ts t a t e ) 。动态码书的构建正是基于已经编码了 的残差信号。这些刚刚生成的动态码书又被用来对残差信号中尚未被编码的部分 进行编码。通过上述方法实现了对独立语音数据包的独立编解码。成功消除了由 于掉包引起的语音降质蔓延问题。同时这个方法也高质量地附带实现了p l c ( p a c k e tl o s sc o n c e a l m e n t ) 。 本章旨在给出此算法的基本原理【2 】。 ? 2 1 编码器基本原理 如图2 1 所示为编码流程框图,关于各模块的相关描述将在下文进一步给出。 s p e e c 叫p r eph l p cha n a o。 r 山 广 兰酆率 l s u b f r a m e0 2 4 l , 生 j ,( 2 0 m s 3 0 m s )l 1 s c a l a rq u ip a c k e t i z e 卜_ p a y l o a d 图2 1 编码器流程图 _ 预处理是可选的。具体操作就是添加一个高通滤波器。 l p c 系数计算、量化及内插。 - 基于分析滤波器计算残差。 _ 起始态选择及量化。 电子科技大学硕士学位论文 - 对每个子帧进行编码( 通过查找码书) 。 一对编码结果进行打包封装。 2 1 1 预处理 在某些应用当中录音得到的语音数据包含直流或者5 0 、6 0 赫兹的噪声,如果 这些噪声在编码器工作之前没有被滤除,那么这个高通滤波器就应该被加上。通 常截止频率选择为9 0 赫兹。 2 1 2l p c 系数计算、量化及内插 进入l p c 分析模块的数据是刚刚经过预处理的数据流。8 k 采样1 6 b i t 表示的 p c m 数据流输入编码器,被分割成帧长为1 6 0 2 4 0 个样点的一系帧,每个帧又被 切成4 6 小连续的子块,每个子块包含4 0 个样点。对于3 0 m s 帧,编码器将做两 次阶数为】0 的l p c 分析。第一次分析一个对称平滑窗的重心在第二个子块上,第 二次分析一个非对称平滑窗的重心在第五个子块上。对于2 0 m s 帧,仅存在一次 l p c 分析,采用的平滑窗重心在第三个子块上。每次分析都是通过自相关法以及 l e v i n s o n d u r b i n 算法得到1 0 阶线性滤波器的系数。每一次l p c 分析,得到线性 预滤波器的系数之后都需要将其映射到到一个l s f ( l i n e s p e c t r a lf r e q u e n c i e s ) 集 合,量化内插后得到l s p ( l i n es p e c t r np a i r ) 集合。之所以这样是因为线谱对系 数更利于量化,内插,换句话说就是对量化误差不敏感,具有良好的鲁棒性。线 谱对系数的量化利用的是三级分割矢量量化技术,1 0 个系数分量被分割成3 、3 、 4 的子集,然后每个子集分别通过常规的矢量量化方式得到量化结果。量化完毕后, 需要对l s f 系数进行重排序,按照下标顺序一次从小到大,目的是最终结果反映 出来的滤波器具有稳定性。 2 1 3 对l s f 的内插 内插是基于一个1 0 阶的线性f i r 滤波器来完成的。语音信号经过刚计算出来 的滤波器滤波得到残差信号。 感知加权。由于线性预测算法的缺点是使得处理后的语音变得机械,柔和度 降低。通常需要添加一个感知加权滤波器让频谱变得更加平滑。 第二章i l b c 语音编解码算法简析 2 1 4 起始态确认及量化 从能量上衡量残差信号中最大的两个连续子块将被视为起始态的粗略位置。 起始态就是这两个连续子块的前5 7 5 8 个样点或者后5 7 5 8 个样点。最终选谁就看 哪一端的能量更大。针对选中作为起始态的这些个样点,需要对其作归一化处理。 在归一化之前用一个全通滤波器对其作相位杂散处理,这样做的好处是在残差信 号序列中,样点的分布规律更具偶对称特性。滤波通过时域中的圆周卷积来完成。 从滤波后的响应序列当中选出幅度最大的样点,对数化之后通过查具有6 4 个量化 级的表求出对应的量化值。以这个值作为依据导出归一化因子。 如图2 2 所示,对归一化之后的起始态样点值做感知加权,目的是使得语音 频谱不因为归一操作而变的过于尖锐。加权后的样点经过差分p c m 量化编码完成 最后的起始态编码。其中w k ( z ) 为感知加权滤波器,p k ( z 1 为全通滤波器。 2 1 5 码书编码 图2 2 起始态样点的d p c m 量化 对于除去起始态的那些样点,余下样点需要通过动态码书来编码。 编码是基于一个自适应码书,已编码的语音数据在编码端l 艋时解码得到l p c 激励信号,将它们缓存在一块固定的内存中,按照一定的规则选许这块内存中的 样点序列,就能得到用于编码下一块数据的自适应码书。之所以可以这样就是利 用了语音信号的短时平稳性。基本流程大致如图2 3 所示: 图2 3i l b c 编码器端码书检索流程 5 皇王型垫查堂堡主堂堡堡奎 2 1 6 码本检索 对目前为止已经编码的残差信号进行解码,方式是用没有感知加权的码书。 建立码书内存:利用刚解码出来的数据填充缓冲内存,为创建自适应码书做 准备。需要注意的是在起始态前面和后面的不同子块在内存中相应的排序是相反 的。 感知加权:对码书内存中的数据和目标残差信号进行感知加权。 码书检索:在码书中查找和目标残差信号最匹配的码字,进而计算出优化的 增益并对此增益进行量化。 目标更新:从感知加权内存中选出的向量,乘上计算出来的优化了的增益得 到一个预测残差,从感知加权过后的目标残差当中减去此獭0 残差得所谓更新了 的目标残差信号。反复两次。 2 1 7 编码小结 动态码书编码对象: 包含起始态的那两个子块中剩下的2 3 2 2 ( 2 0 m s 3 0 m s ) 样点在时间上落后或超 前于起始态的予块。 动态码书的构建: 对于一个语音块中刚刚被编码的部分,在编码端临时解码即得到l p c 激励信 号。这些激励信号被保存在一段专用内存中,以自适应的方式构建出动态码书。 激励信号样点的排列顺序和将要被编码的目标残差信号样点序列在时间上是一致 的。动态码书采用3 级递进方式。每一级都将查找出一个最匹配的码字。相应每 个码字都会有一个增益,且依次被5 、4 、和3 - b i t 标量量化器量化。构建出基本 码书,通过线性内插得到扩展码书。为了弥补码本的延迟,常常还要构建增量码 书。 码书查找方法: i l b c 中的查找方法采用了噪声遮蔽策略,最主要的判决标准还是目标向量和 码字之间的m s e ( m i n i m i z es q u a r ee l f o r ) 。码字来自于两个码书中的一个,第一 码书称为基本码书,里面的内容其实就是延迟了的,已经被编码了的残差信号的 备份。而第二个码书被称为扩展码书,里面的内容是基本码书中的码字通过一个8 阶f i r 滤波器处理之后的新码字矢量。 编码结果打包 第二章i l b c 语音编解码算法简折 这部完成比特流的定义,对于2 0 m s 帧编码结果为3 0 4 b i t s ,由3 8 个字节承载, 数据速率为1 5 2 k b p s ;对于3 0 m s 帧编码结果为4 0 0 b i t s ,由5 0 个字节承载,数据速 率为1 3 3 k b p s 。有趣的是b i t 流中的每个b i t 按照对错误的敏感程度划分为3 类。 编码数据对错误的敏感度高意思是说一但发生错误,将对解码有严重的影响。最 敏感的放置在编码帧的最前段,2 类次之,3 类地位最低,放在每个编码帧的最后 端。 2 2 解码器基本原理 本节描述解码部分的基本原理如图2 4 所示。 图2 4i l b c 解码器流程图 从比特流中提取各种参数。 一解码出线性预测滤波器的系数并内插。 _ 构建5 7 5 8 b i t 的起始态。 _ 基于已解码残差信号建立码书内存,通过内存数据构建码书。 一构建残差数据子帧。相应的码字增益相乘再累加即得。 一通过后滤波来增强残差数据。 - 残差综合得到合成语音信号。 _ 后处理。( 与预处理相对应) 2 2 1 线性预测滤波器重建 线性预测滤波器的解码是非常直接的,给出3 或6 个下标系数( 分别对应2 0 m s 7 电子科技大学硕士学位论文 和3 0 m s 模式) ,查表很容易得出相应的l s f 向量。每三个独立的l s f 向量结合到 一起就得到一组量化了的i s f 系数,再经过稳定性检查和内插之后得到线性预测滤 波器系数。 2 2 2 丢包判别 在分组传输通信中,接收端的前端总是有一个动态抖动调整缓冲,通过它判 断包含编码语音信号的数据包是收到了还是丢失了。对于正常接收到的包解码器 执行一次解码,对于丢失了的包,解码器就要做出p l c ( p a c k e tl o s tc o n c e a l m e n t ) 处理。 2 2 3 解码 。 解码过程总是最先提取l p c 滤波器系数并完成内插,紧接着是对起始态的解 码。对基于码书编码的子段,根据三级查找给出的三个码字下标信息,从相应码 书中查找便可得到期望的码字。与三个码字相对应的是三个增益因子信息。它们 通过同样的方法得到。最后三个码字经过加权组合即得到对应子块的解码输出。 2 2 4 语音增强 对于解码重构得到的激励信号还不能直接用于激励线性预测滤波器,必须采 取一定的语音增强措施。然而语音增强虽然改善了语音质量但增加了语音中浊音 信号的周期长度。折衷的角度,语音增强要限定在对语音信号的修改( 可理解为 信号在增强前和增强后二者的差异) 而增加的短时能量不能超过一个预定的百分 比。 2 2 5 丢包隐藏 丢包隐藏操作可以比较容易的嵌到解码器中。通过重复l p c 滤波器系数,再 借助先前得到的残差信号,通过长时预测估计的方法就可以得到对当前丢失包的 逼近补偿。从而完成丢包隐藏。 2 3i l b c 的性能评价 性能的好坏并没有绝对的标准,而相对标准的选择也要有一定的合理性。下 第二章i i , b c 语音编解码算法简析 面就不同网络环境下多中编解码器的对丢包恢复的表现做了对比。网络质量的好 坏也仅以丢包率为准则。美国的g l o b a li ps o u n d 公司,和一些独立的实验室如 d y n a s t a ti n c 在2 0 0 2 年,a t & t 语音质量评估实验室在2 0 0 3 都对i l b c 的性能做了 较为权威的评估。 如图2 5 所示为根据评估数据绘制的曲线图【3 l 。数据表明,i l b c 不单是在丢 包环境下性能明显好于当前一些标准编解码算法,就是在干净的信道环境下( 不 存在丢包) ,性能也同样好于或者相等于其他标准的编解码算法。 图2 5i l b c 、g 7 2 9 a 、g 7 2 3 1 性能对比 i - b c 与几种标准算法的性能评估 无丢包环境 丢包环境 a t & t 的测试还表明,i l b c 的两种模式下性能差异不大,只是在信道质量较 差时,2 0 m s 模式具有更好的抗丢包性能。 i l b c 语音编解码算法很好的克服了分组传输中丢包给语音通信带来的危害。 实现了低数据率与高质量语音压缩的折衷。目前的i p 电话基本上都是基于i s p n 电路交换网,还不能真正称为i p 电话,i l b c 的出现使得v o i p 的广泛应用真正成 为了可能 电子科技大学硕士学位论文 第三章i l b c 系统定点模型搭建 到目前为止对于i l b c 定点实现,已经有很多v o i p 设备商将i l b c 集成到了 他们的产品中。诸如:应用开发商:s k y p e ,n o r t c l ,w e b e x ,h o t s i p ,i p 电话制造商: w o r l d g a t e ,g r a n d s t r e a m ,芯片制造商:a u d i o c o d c s ,t it c l o g y , l c a d t e k , m i n d s p c e d i l b c 编解码算法浮点a n s ic 源代码可以在w w w i l b c f r e e w a r e o r g 、 w w w i e t l o r gs i t e s 下载到。这是完全免费的,你完全没有专利费的忧虑。可以采用 一款浮点d s p 芯片来实现该算法,或者先将浮点算法转换为定点等价算法。再通 过一款定点d s p 芯片来实现。后者的好处是对芯片要求较低,从而产品成本比较 低,且运算速度常常比较快。但缺点是开发难度大。 建立浮点算法的定点模型,是本算法实现的关键。 3 i 定点的概念 定点的概念【4 】在过去算法仿真通常是在浮点环境下完成从而没有被重视。到了 实现环节,更多的场合要求定点概念的加强。下面我们就定点问题逐一讨论。阐 述什么是定点数据类型,怎样表示一个定点数, 分析精度与范围的重要性。介绍在定点工具箱中的算术运算所隐含的概念: 特别是从范围、转化和例外处理这几个方面,比较a n s ic 整数数据类型与m a t l a b 中f i 对象。 3 1 1 定点数据类型 在数字硬件里,数字是以二迸制字的形式存储的。一个二进制宇是一个固定 长度的比特串( o ,1 串) 。硬件单元或软件功能模块如何解释这一串0 ,1 序列是 由数据类型定义的。 二进制数据可以表示定点数据或浮点数据。这一章所讨论的许多术语和概念 与定点数、数据类型以及数学有关。 一个定点数据类型的特性由字长、二进制小数点的位置和是否有符号位决定。 二进制小数点的位置决定了二进制数值的度量和解释。 图3 1 是一个定点数( 有符号或无符号) 的二进制表现形式: 第三章j i 矗c 系统定点模型搭建 = 进制小数 图3 1 定点数的二进制形式 图中: d i 是二进制数的第i 位。 w z 是二进制数的长度。 o “t 是二进制数的最高位( m s b ) 。 d 0 是二进制数的最低位( l s b ) 。 二进制小数点位于l s b 的左边四位。因此,在这个例子中二进制数的小数部 分长度为四。、 定点数据类型可以是有符号或无符号。有符号二进制数可以表示为以下三种 方式: 符号幅度 补码 姜 反码 t o 补码是有符号二进制数最常见的表示方法,也是定点工具箱中所使用的唯一 的一种表示方式。 。 3 1 2 定点表示 定点数可以按照下面的方式进行编码 r e a l - w o r m ;( s l o p e x i n t e g e r ) + b i a s 其中s l o p e 可以表示为 s l o p e :f r a c t i o n a l s l o p e 2 肛4 。印”“ i n t e g e r 有时被称为s t o r e di n t e g e r 。这是未处理的二进制数,在这部分中二进制 小数点被假设在字的右边。在定点工具箱中,f i x e de x p o n e n t 的相反数常被称为 f r a c t i o nl e n g t h 。 s l o d e 和b i a s 一起表示定点数的定点表示。一个b i a s 为零的数,只有s l o p e 影 响定点表示。一个仅由二进制小数点位置定点表示的定点数,等于在 s l o p eb i a s 】 表示法中一个b i a s 等于零,f r a c t i o n a ls l o p e 等于一的数。这被成为b i n a r yp o i n t o n l y 电子科技大学硕士学位论文 定点表示或p o w e r - o f 4 w o 定点表示: r e a l w o r l dv a l u e ;2 删唧”“xi n t e g e r 或 r e a l w o r l dv a l u e = 2 一加锄蚴x i n t e g e r 定点工具箱对b i n a r yp o i n t o r d ys c a l i n g 和 s l o p eb i a s 】s c a l i n g 都支持。 3 1 3 精度和范围 你必须留意定点数据类型的精度和范围以及所选的定点表示,来确定是否有 四舍五入的产生或是否有上溢出、下溢出( 又叫截断) 的发生。 3 1 3 1 范围 范围是定点数据类型和定点表示能够表示的数字的跨度。对于字长为w l 、定 点表示为斜率s 以及偏置为b 的定点数补码,可表示的数的范围如图3 2 所示: s 2 耐1 ) + bb s 2 耐1 ) + b 负数正数 图3 2 数据精度与范围 对于任何数据类型的有符号定点数和无符号定点数,有2 种不同的比特模式。 例如,在补码中,零和负数必须被表示。因此可表示的最大值为2 “1 1 。因为零 只有一种表示,那么正数和负数的个数将不相等。这就意味着一2 “1 要表示一个数, 而2 “4 则不表示。 2 耐”】 n 2 耐1 辫黼篡褥辫瓣黼黼纂黪嚣麓纂;i 篝鬻i 糍瓣鬻i 麓孽舞 负数 正数 图3 3 补码表示时数据范围 3 1 3 2 溢出处理 因为定点数据类型所表示的数在一个有限的范围内,如果运算的结果大于或 小于这个范围上溢出和下溢出就可能发生。 定点工具箱允许饱和( s a t u r a t e ) 或绕回( w r a p ) 这些溢出。饱和用范围中最 大的正数来表示正数的溢出,用范围中最大的负数来表示负数的溢出。绕回是通 第兰章| l b c 系统定点模型搭建 过取模运算,将溢出转化到数据类型的可表示的范围内。关于“取模运算 ( m o d u l o a r i t h m e t i c ) ,当你在定点工具箱中创建一个f i 对象时,所有的溢出都是采用饱和 处理的。f l m a t h 对象的溢出模式属性( o v e r f l o w m o d ep r o p e r t y ) 默认是溢出。 3 1 3 3 精度 定点数的精度是由它的数据类型和定点表示所表示的连续值之间的差值,该 差值等于它的最低位。最低位的值也就是数的精度,由数的小数比特位所决定。 一个定点值能够被表示到由它的数据类型和定点表示所确定的精度的一半的误差 内。 例如,由二进制小数点右边四位所表示的定点数的精度为2 “或0 0 6 2 5 ,也就 是其最低位的值。任何在由这种数据类型和定点表示所确定的范围以内的数能够 被表示到( 2 。) 2 或0 0 3 1 2 5 的误差内,也就是精度的一半。以上是一个用有限精 度来表示数的例子。 3 1 3 4 舍入方法 用有限精度表示数的一个局限是,在可用空间内不是每个数都能被准确地表警 示。当定点计算的结果是一个不能通过所使用的数据类型和定点表示来准确表示 的一个数时,精度将无法得到保证。一种舍入方法必须被采用,将结果处理为一 个可以被表示的数。定点工具箱现在支持以下几种舍入方法: 。 下舍入( f l o o r ) 与截断,_ ( t r u n c a t i o n ) 等价,即朝着负无穷的方向舍入成一个 可表示的最接近的数。 上舍入( c e i l ) 是朝着正无穷的方向舍入成一个可表示的最接近的数。 固定舍入( f i x ) 是朝着零的方向舍入成一个可表示的最接近的数。 收敛舍入( c o n v e r g e n t ) 是将结果舍入为一个可表示的最接近的整数。当结果 和两个相邻整数距离相等时,规定将其舍入为最接近的偶数。 四舍五入( r o u n d ) 是将结果舍入为一个可表示的最接近的整数。当结果和两 个相邻整数距离相等时,规定将其朝着正无穷的方向舍入成一个可表示的最接近 的整数。它是f i 对象和f i 计算方法所默认采用的舍入方法。 3 1 4 算术运算 算术运算种类繁多,在定点实现中的用法有些不同,尤其是关于乘累加部分 常被忽视。下面对仅对取模、二进制取补、加减法以及乘法从定点角度 电子科技大学硕士学位论文 3 1 4 1 取模运算。 二进制数学是基于取模运算的。取模运算只使用一组有限的数,将所给数组 以外的计算结果绕回到该数组内。 如图3 4 ,我们每天所使用的普通时钟就是采用1 2 进制算术。在该系统中数 字只能使1 到1 2 。因此在“时钟”系统中,9 加9 等于6 。用数字环的方式来表示 更加直观: 图3 4 模运算的时钟图 类似地,二进制算术只能够使用数字0 和1 ,并且任何算术结果在这个范围以 外的要被绕回到0 或1 。 3 1 4 2 加法和减法 定点数加法要求加数以二进制小数点对齐。加法采用二进制算术,只使用o 或1 表示数。 0 1 0 0 1 0 1 ( 1 8 5 ) 和0 1 1 0 1 1 0 ( 6 7 5 ) 的加法如图3 5 : 0 1 0 0 1 0 1 ( 1 8 5 - i - 0 1 1 0 。1 1 0 ( 6 镯) 0 1 1 0 0 1 。0 1 0 ( 2 5 2 5 ) 图3 - - 5 二进制加法 定点减法与加法等价,只是所有负值都使用补码表示。在减法中,加数应该 通过符号扩展来互相对齐。0 1 0 0 1 0 1 ( 1 8 5 ) 减去0 1 1 0 1 1 0 ( 6 7 5 ) 的n 算如图3 - - 6 : 1 4 第三章i l b c 系统定点模型搭建 0 1 0 0 1 0 1 0 0 1 8 与 = 进制朴码0 1 0 0 1 0 i 0 0 ( i s 6 0 1 1 0 1 1 0 ( 6 7 6 ) + + 1 1 1 0 0 1 。0 1 0f 一6 7 5 ) 符号位扩展 j,001011110(1175) 进位位被7 图3 6 二进制减法 默认f i m a t h 对象的c a s t b e f o r e s u m 属性的值为1 。这可以把加数在加法以前就 计算为加法数据类型。因此在按二进制小数点对齐相加时没有进行进一步不必要 的移位。 如果c a s t b e f o r e s u m 的值为0 ( f a l s e ) ,加数将保持全精度( f u l lp r e c i s i o n ) 来 进行相加。在相加之后,再对和进行量化。 3 1 4 3 乘法 定点数补码的乘法与十进制的乘法是相似的。不同的地方在于中间结果必须 通过符号扩展,以使得在把它们加起来以前,它们是从左边开始对齐的。 1 0 1 1 ( - 1 2 5 ) 与0 1 1 ( 3 ) 的乘法如图3 - - 7 : 多出采的这 1 0 - 1 l ( 一1 - 2 6 ) 一 个i 是符号位0 1 1 ( 3 ) 。 1 0 1 1 i i 0 0 0 1 ( 胡7 6 i 小数部分的虚数为 两个因子小数使数 图3 7 二进制乘法 乘法数据类型: 下面的图表说明了定点乘法所使用到的数据类型。图表也说明了在。r e a l r e a l , c o m p l e x r e a l ,a n dc o m p l e x c o m p l e x 乘法中所使用到的数据类型之间的差异。 实数与实数的乘法 图3 8 表示定点工具箱中两个实数乘法所使用的数据类型。这种乘法的输出 为乘积数据类型( p r o d u c td a t at y p e ) 。该数据类型由f i m a t h 的p r o d u c t m o d e 属性控 带0 : 电子科技大学硕士学位论文 图3 8 实数与实数乘法 实数与复数的乘法 图3 9 表示定点工具箱中一个实定点数和一个复定点数的乘法所使用的数据 类型。实数与复数的乘法和复数与实数的乘法是等价的。这种乘法的输出为乘积 数据类型( p r o d u c td a t at y p e ) 。该数据类型由f i m a t h 的p r o d u c t m o d e 属性控制: 图3 9 实数与复数乘法 复数与复数的乘法 图3 1 0 图表示定点工具箱中两个复定点数的乘法所使用的数据类型。注意: 这种乘法的输出为和数据类型( s u m d a t a t y p e ) 。该数据类型由f i m a t h 的s u m m o d e 属性控制。乘积数据类型由f i m a t h 的p r o d u c t m o d e 属性控制: 第三章j l b c 系统定点模型搭建 图3 1 0 复数与复数乘法 f i m a t h 对象允许你用s u m m o d e 和p r o d u c t m o d e 属性指定中间过程产生的和以 及积的数据类型和定点表示。当你设置s u m m o d e 和p r o d u c t m o d e 属性时,搞清楚 每个c a s t 的分支很重要。根据你所选择的数据类型,溢出或舍入可能会发生。以 下两个例子将说明什么情况下溢出和舍入会发生。选型就发生在两个长度不一致 的的场合。 将一个较短的数据类型转化为一个较长的数据类型 让我们来思考,将一个由总长为4 比特的数据类型表示,并有2 位小数位的 非零数转化为一个总长为8 比特并有7 位小数位的数据类型: 号勰一 匹配目的的小数点位 目的 焉( 二:) 源数据项由于左移而超 、厂、 岜i 最! 熙:+ 軎磐曼鍪 目的数据项的多 鋈堂墅蹩篁i 瓣须做暴崔i i :翁 饱和或者绕回处理 图、3 1 1 数据类型转换之短数据转长数据 电子科技大学硕士学位论文 如图3 1 1 所示,源比特串左移使得二进制小数点与目标二进制小数点的位 置相匹配。源的最高位与目的不匹配,因此溢出可能发生,其结果将会饱和或绕 回。目的数据类型低位的空比特位用0 或1 来填补: 如果溢出不发生,空的比特位将用0 来填补 如果绕回发生,空的比特位将用0 来填补 如果饱和发生 正数空的比特位将用1 来填补 负数空的比特位将用o 来填补 我们能看到即使将一个较短的数据类型转化为一个较长的数据类型,溢出仍 然可能发生。当源数据类型的整数长度( 这个例子中为2 ) b b 目标数据类型的整数 长度( 这个例子中为1 ) 要长时,溢出将发生。类似地,如果目标数据类型和定点 表示的小数比特位少于源时,即使将一个较短的数据类型转化为一个较长的数据 类型舍入可能是在所难免的。 将一个较长的数据类型转化为一个较短的数据类型 让我们来思考,将一个由总长为8 比特的数据类型表示,并有7 位小数位的 非零数转化为一个总长为4 比特并有2 位小数位的数据类型: 的 工e 二i 二工二i 二工二: 这位源数据项已经没有相 应的数值,所以结果必须做 符号扩展来填补 这些b i t 不能适配到目的数据 项,需要做适当的四舍五入 图3 1 2 数据类型转换之长数据转短
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年安全教育培训考试应急救援知识事故预防与应急处置试题
- 2025年期货从业资格考试法律法规真题模拟解析训练
- 政府审计学试题及答案
- 2025年专升本艺术概论模拟试卷:艺术与科技融合虚拟现实与游戏设计案例试题
- 2025年执业药师药学专业知识试卷:药品生产与流通管理试题解析
- 2025年中学教师资格《综合素质》心理辅导案例解析试题(含答案)
- 2025年执业药师药学专业知识试卷二十八:药学专业药品政策法规与市场准入模拟试题
- 在线教师资格试题及答案
- 2025年乡村医生考试题库:农村慢性病管理基层医疗服务试题
- 2025年成人高考《语文》得体表达:报告撰写试题库
- 精选同济大学实验室安全教育考试题库(全)
- 水泥预制品销售合同
- EN1112标准(中文版)
- 产学研合作管理制度
- 卫生部《病历书写基本规范》解读(73页)
- 生物必修一课程纲要
- 南方332全站仪简易使用手册
- 人民调解员培训讲稿村级人民调解员培训.doc
- 高低压配电安装工程-技术标部分(共41页)
- 监理规划编制案例
- 图画捉迷藏-A4打印版
评论
0/150
提交评论