现在的位置: 首页 > 综合 > 正文

定点仿真:仿真方案未必就真

2013年03月31日 ⁄ 综合 ⁄ 共 2797字 ⁄ 字号 评论关闭

1 问在之前:你会选择哪款手机?

    假若你要买手机,现在放在你面前的有2款,如下:

              价格    质量

手机一    1000    每3个月通话中断一次

手机二    3000    每5年通话中断一次

我们在最后来回答这个问题。

2 问题所在

    回到标题。定点仿真,为什么仿真方案未必就真?这要从定点仿真的工作原理和随机信号的各态历经性说起。

    先来看看定点仿真的过程:

  1. 先进行浮点仿真
  2. 根据每个变量的浮点仿真的数据范围进行定点化;
  3. 再按照此定点方案进行定点仿真,查看有没有溢出的情况

    问题显现,为什么要进行第3步呢?如果第2步的定点方案已经绝对不会溢出,那第3步定点仿真的时候就一定不会溢出。原因在于随机信号各态历经的前提:仿真时间足够长。对“足够长”的理解:

  • 对于有限区间的分布:

    • 离散分布:可以在某个时间内遍历所有状态
    • 连续分布:需要无限长的时间才能遍历各种状态
  • 对于无限区间的分布:不管是离散分布还是连续分布,都需要无限长的时间才能遍历各种状态

    问题就在这,一般情况下我们在有限的仿真时间内是无法遍历信号的各种状态,也就无法确定该信号的最大值和最小值,那怎么敢保证随机信号的数据范围就是其实际的范围呢。因此就不能确定利用某些数据得到的定点方案用在另一些随机数据上会不会溢出,于是才有了第3步,需要回去检查定点方案。

 

注 各态历经的物理含义:只要观测的时间足够长,每个样本函数都将经历信号的各个状态,或者说能够遍历信号的全部状态。在实际中我们遇到的信号大都是各态历经的,对于非各态历经的随机过程,不能这样简单地仿真,而要取不同的样本函数,使得这些样本函数中的各种状态能够包含该随机过程的所有状态。

3 解决方案

  • 最好的方法无疑是理论推导信号处理过程中每个随机信号的范围,按照此范围直接确定定点方案,连定点仿真都不用做了,这样确定的定点方案也是最保险的,绝对不会溢出。但实际中我们却很少用此方法,原因在于理论推导有时候很繁琐,或者由于公式复杂根本推导不出数据范围,又或者数据范围本身就无穷大。
  • 次一点的方法就是通过定点仿真了,用尽量大的仿真量去做定点方案。
  • 理论推导和仿真相互融合。比如一个大的系统,某部分可能理论推导比较好做,而另一部分理论推导不好做,就只有定点仿真了。

 

    如果用一倍数据量跑浮点仿真来确定定点方案,再用该定点方案去跑十倍数据量,很大可能会出现溢出。同样,用一倍数据量跑浮点仿真来确定定点方案,其溢出的概率肯定比用十倍数据量溢出的概率更大。我们可以用平均无故障时间(Mean Time Between Failure,MTBF)来直观地度量溢出的概率。

4 简单例子

    拿一个通信系统来做例子。

 

    发送端的信号的范围可以通过理论推导精确地确定,因为发送端相对简单,都是由一堆比较简单的公式累积而成。

    但一旦到接收端,数据范围就会变到无穷宽,为什么?因为我们在噪声建模的时候就是用的AWGN,噪声在每一时刻的分布都是高斯分布。其取值范围从负无穷到正无穷,任何一个值都可取,只不过越偏离期望,取得该值的概率就越小(就算很小很小,但仍然可能取得!)那我们的定点方案岂不是没法做下去了?因为要是按照完全不溢出的原则,我们需要的定点数的量化位数为无穷位!显然不可能。于是出现了3-segma准则。即高斯分布的随机变量,其值落在3倍标准差以内的概率为99.74%已经相当接近100%了,但还是有0.26%的概率落在之外。就因为这,一个采用4-segma准则的定点方案的MTBF肯定会大于采用3-segma准则的方案。

    那么,一个通信系统的接收端就一定不可能做出绝对不溢出的定点方案么?答案在我看来是否定的(至少现在我这么认为)。原因有2点:

  • 噪声建模的问题:AWGN只是现实噪声的数学模型,是对实际噪声的拟合,和实际噪声有偏差。这就好比我们认为一个班级学生的考试成绩服从正态分布,难道考试成绩可以取到正无穷?肯定不可能,这只是对考试成绩的一个近似。同理,AWGN也是种近似,现实中的噪声不可能取到正无穷。
  • 射频和中频部分:前面所说的仿真都是纯基带仿真,没有考虑射频和中频部分。发送端的D/A和PA都有其饱和的输出电平,接收端的LNA和A/D也有其饱和的输出电平。所以,虽然噪声可以无穷大,但经过这些器件后,信号幅度已经被限制在一个有限的范围内了。所以是可以得到绝对不溢出的定点方案的。将射频和中频模块的基带数学模型加入到整个基带仿真,不仅可以让我们得到绝对不溢出的定点方案,还可以在仿真阶段就引入这部分对基带处理的影响,以便更好地对基带部分进行设计,这样设计出来的接收机也才能在实际中有用。

    对于是否能得到绝对不溢出的定点方案本人还不确定,因为没接触过一个完整的物理层链路(包括RF+IF+BB),也可能自己还有考虑不周全的因素。

5 写在之后:你选择好了么?

    回到本文最前面的问题,由于价格差异太大,我想很多人都会选择便宜的手机,但是如果第二款手机的价格不是3000,而是2000或者1500呢?我想很多人就会徘徊了。另一方面,5年不出错对我们来说并没有特别大的意义,打不通或者串音的概率极小,一般都不会影响我们的正常生活,中断了就重打呗。现在我们大家的手机一般都是2年一换,所以一个手机5年一次断话对消费者来说并没有太大的意义。

    另外,溢出导致的后果只会表现在实时业务(基于电路交换的语音,VoIP除外)。对于非实时业务(比如看网页),由于TCP的存在,低层的错误被检测到之后,接收端会重发。所以这种低概率的物理层错误基本上不会对用户体验产生什么影响。而一款好的App也会把可靠性融入软件的设计中,在应用层为用户提供没有差错的体验。

    更重要的是,就像第4部分所述,我到现在为止还不确定到底能不能设计出永不溢出的定点方案。如果真能设计出永不溢出的定点方案,那么本文开头说描述的问题就不复存在了。求带~

6 题外话:浮点 vs. 定点

    随着时间的演进,不管是FPGA厂商还是IP大厂,都不遗余力地推出越来越多的浮点IP Core。如果一个链路的所有模块都用浮点来运算的话,那么定点仿真也就不用做了。

    采用浮点方案可以减少一款芯片的开发时间。其带来的好处绝对是难以估量的。不仅可以减少开发期间的人力成本,尤其是对于现在越来越强烈的market driven的IC市场。谁先占领市场就已经成功了一半。曾经有人把抢占市场比作爬山,谁先爬到山顶谁就可以拿出机关枪向下扫射,可见占领市场的先机是多么重要。

    但浮点IP Core需要消耗的资源是否比定点多还真不好说,需要视情况而定。本人从来没用过浮点IP Core,所以具体情况也不清楚。采用浮点IP带来的开发成本的降低有可能被IC制造成本的上升所抵消掉,尤其是在某一款IC出货量很大的时候。

    所以,IC设计公司要做的,就是在节约开发时间以便尽快推出成品与减少IC电路成本之间做折衷。

 

抱歉!评论已关闭.