Chinaunix首页 | 论坛 | 博客
  • 博客访问: 744139
  • 博文数量: 769
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 4985
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-15 16:37
文章分类

全部博文(769)

文章存档

2011年(1)

2008年(768)

我的朋友

分类:

2008-10-15 16:39:56

    开发定点(fixed-point)算法时,通常需要在设计功能性、数字精度建模、及验证(仿真)速度之间取得一个平衡。现在,一种新的数据类可使此过程简单化,由此得到更简单精确的建模精度、更好的数字求精、及更快的验证周期,而ANSI C/正是开发这种数字求精算法的最佳语言。

  某此算法天生就适用于操作整数,或那些理想中的实数(如数字滤波器的系数),它们也可能会使用浮点或定点类型。一般而言,在算法开发的早期阶段,会经常用到C语言的float或double浮点类型,因为它们可提供一个非常大的动态数据范围,且对大多数程序来说都是适用的。见图1:  

在C/算法设计中使用任意位宽

  使用C内置的float类型来建模一个FIR滤波器

  算法可进行数字求精,以便使用定点算术来降低最终硬件或软件实现的复杂性。在硬件方面,将整数或定点算术限制为最小位宽,可在本质上满足性能、空间、能耗的需要;如果实现中用到了DSP处理器,那么把算法限制为整数或定点算术,就可为特定程序使用尽可能便宜的处理器。

  定点算术的建模可通过C语言内置的浮点或整数类型来完成,这做的话,需要显式编码并受限于C中浮点数及整数可表示的最大数:64位整数或53位尾数;这些都会给操作数的位宽带来更多的限制,例如,2个33位的数相乘,会超过64位C整数可表示的范围。图2演示了一个FIR滤波器的例子,但temp变量限制为15位的定点精度,其中10位用于整数位。在这个实现中,LSB的右部位被舍弃(量化模型的截断),而MSB的左部位也被舍弃(包装的溢出模型),应该意识到,使用float(或double)的模型在精度上是受限的,且不能再次合成(synthesis)。同样,由于有取整模型的严格位精度定义有先,又由于内置浮点类型的取整将会先被应用,所以对除法这样的操作来说,就非常难实现了。

[1]   

【责编:huangchunmei】

--------------------next---------------------

阅读(418) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~