第二章 FIR滤波器的原理和设计方案
时候,将前一级的结果锁存为该级电路的输出。在这个过程中,数据好像流过了一根数据导管,流水线技术因此而得名。也就是说流水线技术是将待处理的任务分解为相互有关而又相互独立的、可以顺序执行的子任务来逐步实现。
在流水先技术中,由于算法分解后,数据逐级锁存,输出不是实时的,电路中有几级流水线,输出相当于输入就会延迟响应的时钟周期。另外,在每一级都会有寄存器将上一级的结果寄存,所以,当电路中位数增多时,电路的规模就会迅速增加。这是流水线技术为了得到较高的工作速率而增加的额外开销。
虽然如此,但是如果我们把系数的个数限制在4个或者是8个的时候,再加上流水线寄存器,这个代价还是值得的。 2.2.2 分布式算法的优化
这次设计的滤波器主要采用的是串行分布式算法,即SDA(Serial Distributed Arithmetic)。由于采用是的是用一个移位累加器的实现方法,查找表的大小占硬件规模的主要部分,所以可以将查找表的大小看做是硬件规模的近似。又由于假设查找表的输出被锁存了,所以查找表结果的读出和相加可以看作是并行执行的,则加法的次数可以用来进行速度大小的比较。在比较中,假设一个相同的滤波器,它的每个采样值有w位,而阶数有N阶。
表结果的读出和相加可以看作是并行执行的,则加法的次数可以用来进行速度大小的比较。在比较中,假设一个相同的滤波器,它的每个采样值有w位,而阶数有N阶。
(1)串并行相结合的实现方法
在全串行的实现方法中,一次输入每一个采样值的一位。这样,查找表的地址总线就有N位,所以查找表中有
种可能的值,查找表的规模可以看作是
。
而由于数据是一位一位输入的,所以结果要在w个时钟周期后才能得到,用到了(w-1)次加法。而这种方法又是有被称为IBBAT(one bit at a time)。
如果采用串并结合的方法,比如说,一次输入每个采样值的两位(2BAAT,two bit at a time),则加法的次数可以减少到(w/2-1)次。如果输入采样值的位数w不是偶数,在使用2BAAT方法之前必须对采样值就行符号扩展,使其达到偶数位。符号扩展也就是在二进制补码之前补1或0,对负数补1,对正数补0。
15
电子科技大学成都学院本科毕业设计论文
由图2.9可知,查找表的规模是随着阶数的增加成指数增加。在一次输入两位的情况下,查找表的规模是串行方法规模的平方倍,即则查找表的规模为
个字。如果N为16,
个字,实在是太大了。所以我们要想办法减小表的规模。
LUT的输入位宽度就是系数的数量,如果系数N过多,则LUT表的规模将十分庞大,这是因为LUT的规模随着地址空间(也就是N)的增加而呈指数增加。造成硬件资源趋于紧张,甚至不能实现。
为缩小LUT,对LUT的地址进行电路分割,可以制作部分表,然后将结果相加,如果加上流水线寄存器,这一改进并没有降低速度,却极大的地减少了设计硬件的规模。
图2-9 一次输入两位的2阶FIR滤波器
例如,对于N=15的FIR滤波器,LUT地址是16位,即便是考虑了它的系数对称性,地址也是8位,字数为
。但是FLEXIOK系列芯片只能提供4输入的
LUT,所以要对LUT的地址进行分割。将8位地址线分为高4位和低四位,分别做成2个4位地址输入的LUT,可以成指数倍地节省了硬件资源,如图2-10所示。
16
第二章 FIR滤波器的原理和设计方案
图2-10 部分表求和缩小LUT规模的DA算法
(2)用OBC编码方式减小LUT规模
使用OBC编码方式进一步减少LUT规模的OBC编码方式的原理如下。 假设一个FIR滤波器有N阶系数,且其卷积和为:
Y??cx (2-14)
i?0iiN?1其中是w位的二进制补码数。第i次采样值可以分解为下式:
1?xi2[xi?(?xi)]
w?11?j?(w?1) ?[?(xi,w?1?xi,w?1)??(xi,w?1?xi,w?1?j)2?2] (2-15)
2j?1其中,
?xi??xi,w?1??xi,w?1?j2?2j?1w?1?j?(w?1) (2-16)
这个时候,定义
ddi,j?xi,j?xi,j for j≠w-1: ??(xi,w?1?xi,w?1) for j=w-1:
i,j而且,∈{-1,+1},这样,式2.15可以重写为:
17
电子科技大学成都学院本科毕业设计论文
1w?1?j?(w?1) xi?[?di,w?12?2] (2-17)
2j?0则式2.16可以重写为:
1w?1?j?(w?1)Y??ci[?di,w?1?j2?2]
2i?1j?1
N?111N?1?j?(w?1) ??(?cidi,w?1?j)2?(?ci)2 (2-18)
2i?0j??0i?02 定义
N?1i?0w?1N?1 Dj??1 for 0?j?w?1
2cidi,j1N?1 Dextra??ci (2-19)
2i?0得到
Y??Dw?1?j2?Dextra2i?0w?1?j?(w?1) (2-20)
表2.2 显示了采用OBC编码方式时,LUT表的内容。
表2.2采用OBC编码时LUT内容
ROM 内容
0 0 0 0 1
0 0 1 1 0
0 1 0 1 0
18
相关推荐: