DSPBuilder笔记

一、位宽设置

DSPBuilder中,数据在内部采用二进制定点数表示方法,数据可以设置成无符号整数、有符号整数和有符号小数等,其中有符号数由符号位、整数位和小数位组成(有符号整数的小数位为0),位宽根据需求可任意调整,但确定位宽在数据离散化的过程中非常重要,不合理的位宽设置会引起错误。对于无符号整数,如果数据大于位宽所表示的最大值,则高位被截断;对于有符号整数,高位被截断之后,剩余部分的最高位会决定数据的正负(1为负数,0为正数);对于小数部分,小数位宽越大,数据越精确,反之误差越大。数据被截断或误差太大会造成计算结果错误,导致偏离正常值,但过多的模块位宽设置过大也会消耗FPGA的硬件资源,造成浪费,甚至超过FPGA的硬件资源数量,造成无法编译。

对于位宽设置,加(减)法模块、乘法模块可以遵循如下准则,其他模块可参考以下方法。

为了后面叙述方便将定点数统一表述成如下形式:

                                    (3-1)

其中为符号位,代表有符号数,代表无符号数;代表整数位宽,代表小数位宽[16]

对于一个两输入的基本数学运算模块,设其源操作数(输入)为保证计算结果不会溢出,目标操作数(输出)位宽应分别与其源操作数位宽满足如下关系[16]

        (3-2)

                (3-3)

                    (3-4)

其中|代表或运算,max代表取最大值运算。减法运算和乘法运算只能有两个源操作数,而加法模块可有多个源操作数。加法模块每增加一个源操作数,其整数位宽需加一才能保证运算结果不会溢出。利用DSPBuilder实现一个复杂运算的过程中,需要首先确定其自变量的取值范围,然后根据其取值范围为其设计合理的定点数整数位宽和小数位宽[17]

以上准则适用于在系统设计初期位宽的估算,针对具体的数据输入,可以用Simulink中的示波器观察每个模块的输入输出数据的大小,根据具体情况设置合理的位宽。

 

二、查找表

查找表的基本思想是将函数值预先存入一个具有连续地址空间的存储区域,运算过程中,将函数的自变量映射成该存储区域的地址,通过读存储区域中该地址的数据实现函数的运算。因FPGA 中存储地址空间是一维的,因此只能实现含有一个变量的函数运算。

由上可知,查找表的真正输入应该是地址,即0~2^n-1,使用时需预先把自变量换算(映射)成地址。

查找表的使用方法举例:将的取值范围-50~40变换为查找表的地址范围0~1023,(+50)×(1023/90),同时将乘法器的输出限定为整数,即可得到查找表的地址值。

 

三、流水线数据通路

利用DSPBuilder求解常微分方程需要用到流水线数据通路的概念,所谓流水线数据通路,顾名思义,就是数据的计算以流水线的方式进行,同一时间的工作值可以有多个,采用流水线的结构可以增加系统的吞吐量

在流水线的结构设计中,一个完整的组合逻辑被分成的独立块的数量称为其流水线深度(depthofpipeline)[18,19]组合逻辑的流水线深度就是其延时时间,以时钟周期为单位。流水线深度的确定需要综合考虑吞吐量和时钟频率,本文中加(减)法模块、乘法模块和查找表模块若无特殊说明,其流水线深度分别为1,2和0,这个设定不是一成不变的,也可以根据具体需求更改,如在某些情况下将某个模块的延时设为0

在FPGA硬件模型中,任何复杂的多项式运算都是由多个基本数学运算模块组成的流水线数据通路(pipelineddatapath)实现的。设计数据通路的过程中既要保持前项运算的输出位宽与后项运算的输入位宽一致,还要保证同一运算模块的所有输入同步(即同一个模块之间的所有输入应具有相同的延时时间)。

基于流水线数据通路的方法求解常微分方程的理论依据是用欧拉法,即离散化常微分方程后采用迭代运算求解,具体离散化方法以及流水线的连接参见第四章。

 

摘自维基百科

欧拉方法,是一种一阶数值方法,用以对给定初值的常微分方程(即初值问题)求解。

问:怎么在DSP Builder中给常微分方程赋初值?(阶跃模块?)

注意:要同时考虑流水线上各处的初值

非形式化的几何诠释

欧拉方法的图示。待求的曲线为蓝色,它的折线近似为红色。

考虑计算下面一个未知曲线的形状:它具有给定的起点并且满足一个给定的微分方程。这里,所谓"微分方程"可以看作能够通过曲线上任意点的位置而计算出这一点的切线斜率的公式。

思路是,一开始只知道曲线的起点(假设为),曲线其他部份是未知的,不过通过微分方程,的斜率可以被计算出来,也就得到了切线。

顺着切线向前走一小步到点。如果我们假设

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值