寄存器溢出的问题

时间:2008-11-08

  寄存器溢出的问题可以通过缩放输人来缓解,将输人缩放到一定程度可降低或消除寄存器溢出的概率。这种方法的缺点是实践中求解所需的缩放因子非常烦琐。测试用的输人可能并非坏情况输入,因而可能低估所需的缩放因子。而且缩放降低了输入的,因而也将降低输出。另一种消除运行时溢出的方法是使用扩展的算法和寄存器。扩展寄存器具有额外的字长余量,从而允许坏条件下滤波器仍能无误差地存储并保留系统状态。

  克服运行时溢出危害的方法是求解各寄存器或状态位置处的坏情况滤波器增益。这是研究FIR时引人的坏情况设计分析的扩展。通过将FIR的冲激响应假设为无限长,可实现FIR到IIR的转换。在FIR中坏情况分析是用滤波器的冲激响应来确定的,相似的方法也可用于IIR。如果假设通过逐样比较得到输人信号的边界为|x[k]≤Mx,那么坏情况输人可表示为下式:

  用术语讲,Gmax是滤波器输人-输出响应的J1范数。为了对n阶IIR运用这种基于FIR的方法,需要算出系统所有状态的i1范数,于是先要求出存储在输入和状态移位寄存器之间的n个冲激响应。使用所选结构的状态变量描述将便于进行求解。从状态4元组[A,D,c,d]中[,4,b1的元素出发,利用一些数学技术即可算出从输人到状态n之间的n个冲激响应,利用下式可以进行仿真运算:

  式中,h[k]花]为冲激响应构成的n维向量。理论上讲,所有独立状态的i,范数均由向量值的无穷和确定,即

  式中,hi[k]为第i个移位寄存器的输出(即状态xi[k]所在的位置)。不幸的是,利用式求解时需要计算无穷和。

  假设系统是渐近稳定的,其冲激响应将逐渐收敛到零上,因而‖h[k]‖1为有界的稳态值。可以运用基本特征值分析原则来求解收敛值,而更简单的方法是用实验法求解i,范数。这种方法是用足够长的部分求和值来逼近式。Matlab的norm函数可用于按给定误差容限计算第J个状态的冲激响应的J,范数。一旦l,范数‖h[k]‖1被计算或估计出,即可用于确定状态寄存器的动态范围需求。下面的例子显示了这个过程。

  欢迎转载,信息来自维库电子市场网(www.dzsc.com


  
上一篇:寄存器溢出算法
下一篇:滤波器动态范围求解

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料