还剩2页未读,继续阅读
文本内容:
fir分布式滤波的fpga实现此设计的结构包括
1.移位寄存器链,n阶的有nT个寄存器
2.第一次累加部分由fir滤波系数对称可得到对称的寄存器相加可以减小电路规模,所以第一次累加很有必要3,锁存并移位部分此部分是为了通过移出lut地址,通过给出lut地址即可得到lut输出4,lut部分,该部分实现的主要功能是输出不同地址情况下的结果5,二次累加部分该部分是将每一位卷积得到的结果加权累加,需要注意的是,由于是采用补码运算,最高位加权后应该是被减去而不是被加上分布式滤波器的原理如下式I可以用卜式表示62式中,人即力⑴,第肛即为滤波器的抽头数把数据源数据格式规定为2的补码形式,则省力=-2!〃+E.“n27b9式中,办〃为二进制数,取值为0或1为符号位.为1衣示数据为负,为0及示数据为正:,将7式代入6式可得〃=£儿|一2=〃+2m1*04*1V-l H-l V-I2儿+2[5窗8查找表的实现可参考下表表1杳找表内容查找表查找表12地址存储数据内容/地址件储数据内容/000000000XM1A|0]MX1M4]0010/i|l|0010/«|5|h[5\^h[4\XH All]+h[OJ MllOHM/!|2|010”6]同柯01012|+h
[0]10161+M4]ARl+h[ll01100110/t
[6]+A[S]h
[6]^h
[5]^h
[4]111U2]+h[l]+h
[0]1111000A|3|i i1n M7]1X1“3J+U0]lMl fc[7RA
[4]川101A
[3]+A|ll1017]+M5]1011M3]川1]川0]1011/I|7|+/4514/I|4|⑺1IM1100G+Q61川川1101/i[3|+/42|0]1101”7]+/46]♦4|川川+川111AI3kAI2KAfll11107]+6[51mi h
[3]^h
[2]^h[\]^h[Q]fill实现过程的几个关键问题:
4、FPGA实现FIR滤波器的几个关键问题第一冲激响应系数的处理由Matlab为设计FIR滤波器系数是一系列的浮点数,而FPGA不支持浮点数的运算,因此浮点数需转换成定点数,本设计采用Q值量化法,把系数同扩大了212=1096倍,然后转化为13位二进制数注意到FIR滤波器系数行些是负数,因而二进制数是有符号位的数据,经过A/D转换器的输入值是无符号位的,仃符号数和无符号数足不可以克接运算的所以处理负数是程序的一个难点本设计将负数用补码来表示,且对系数进行扩展,即将系数增加一个符号位,1代表负数,代表1E数第二ROM杳找表的建立基丁」6阶低通FIR数字滤波器冲激响闷的对称性,根据分仰式算法的原理,可以做一张ROM大小13*2八8的查找丧其中13为ROM中系数的宽度,8为阶数的一半,这样的查找表大小达到了
3.25Kbit,且随着阶数的增加,ROM的大小将以2的籍次增加,资源的占用将是非常可怕的本设计采用分割杳找表的办法叫大大减小了的大小,分析如下:本设计采用了两个4输入ROMROM来代替一个8输入ROM,占用的资源即8*13*2A4=416b1,只是前面ROM的1/8,大大节省了硬件资源ROM中参数的设定如表2所示对「系数h4—h7可以做一张类似的杳找表,不同的是ROM中的数据为h4-h7表2ROM中参数设定ROM地址ROM数据ROM地址ROM数据000001000hO0001h31001hO+h30010h21010hO+h20011h2+h31011hO+h2+h30100hl1100hOihl0101hl+h31101hO+hl+h30110hl+h21110hO+hl+h20111hBh2+h3mi hHhl+h2+h3笫三加法器位数的处理从杳找表出来的数据为13位,高位是符号位,法器的宽度设定变得很关键,加法器的宽度可以用公式8近似估算:要设计力器宽度取25位由于在系数处理的过程中,系数扩大「1096倍,在最终的结果40962*12,即要在25位的数据中去掉12位的数据,所以结果的输出为13£加法器带宽二输入宽度+系数宽度+1屋/-1L为滤波器的阶数I这次设计就在加法器带宽处产生问题,带宽不够,发现出来的波形顶部挪到低下去了,通过看中间数据发现是数据位宽不够造成的,根据这个公式得到的加法器带宽刚好能满足设计需求。