Altera DE2的固定和浮点使用?

时间:2013-09-25 08:00:55

标签: c algorithm filter floating-point fixed-point

我希望实现两种版本的算法,该算法在软件中执行有限脉冲响应,一种算法采用浮点格式,另一种算法采用定点格式。现在我认为如果我只使用函数浮点变量,那么算法将使用浮点数完成:

算法应该按照规范

运行
  

在新样本x * k *到达之前,旧样本将转移到   右边然后每个样本用一个系数进行缩放   结果y * k *,计算所有缩放样本的总和

float[] FIRfloats = {0,0,0,0,0};
void floatFIR(float newsample)
{
for(int i=0;i<5;i++)
{
  FIRfloats[i+1]=FIRfloats[i]; /* shift the samples right */
}
FIRfloats[0]=newsample*0:0299;
FIRfloats[1]=FIRfloats[2]*0.4701;
FIRfloats[2]=FIRfloats[3]*0.4701;
FIRfloats[3]=FIRfloats[4]*0.0299;
}

然后我只是对样本求和以获得浮点格式?那么这会是FIR滤波器的软件实现吗?我该怎么做定点版本?

1 个答案:

答案 0 :(得分:1)

不,您没有将样本保存在FIRfloats中,而是保存样本乘以系数。只需将样本保存在数组中即可。使用系数计算产品并将其保存在临时变量中,然后对产品求和以获得过滤器输出值。

将其转换为定点,并且做得好,超出了此处可以包含的范围。基本上,您需要将所有系数乘以某个比例因子,比如2 ^ 16(65536),并舍入到最接近的整数。传入的样本也应乘以比例因子并转换为整数。对样本和系数执行整数乘法,然后对乘积进行整数相加。结果将具有比例因子,该比例因子是系数的比例因子和输入样本的乘积。在不知道你将如何处理过滤器输出的情况下,很难说在那之后会发生什么。

但是你在提问中提到了Altera DE2。如果这是打算在FPGA中实现的话,你不应该使用Verilog或VHDL吗?