学位论文基于fpga的傅里叶算法内容摘要:

IR滤波器结构 图 33是一个直接 I型的 4阶 FIR滤波器节的结构。 为了使该滤波器节的调用更为方 便,xin输入后插入了一个延时单元, 3阶滤波器演变成 4阶的,在由不过常数系数项 z(系数项)h(0)恒为 0。 由于在通信应用中, FIR滤波器处理的往往是信号流,增加一个延时单元不会影响 FIR滤 波器处理的结果,只是系统延时增加了一个时钟周期。 对于该 FIR滤波器节,其系统函数可以用下式来表示: 4321 )4()3()2()1()(   zhzhzhzhzH (35) 由于浮点小数在 FPGA中实现比较困难,实现的资源代价太大。 DSP Builder 中不妨在使用整数运算来实现,最后用位数舍取的方式得到结果。 图 33 直接 I型 4阶 FIR滤波器结构图 10 为了使参数可变, FIR 滤波器系数 h(1)、 h( 2)、 h(3)、 h( 4)也作为输入端口。 在本设计中输入序列 x(n)的位宽设为 16位。 图 34 显示的就是一个设计好的 4阶 FIR滤波器节,与 常数 FIR滤波器相比,用 Product( 乘法)模块代替了 Gain(增益)模块。 图 34 直接 I型 4阶 FIR滤波器模型图 图 34 中相关模块的参数设置如下: Xin、 hn0、 hn hn hn3模块:( Altbus) 库: Altera DSP Builder中 IO amp。 Bus库 参数 “ Bus Type” 设为 “ signed Integer” 参数 “ Node Type” 设为 “ Input port” 参数 “ number of bits” 设为 “ 16” (即输入位宽为 16位) yn模块:( Altbus) 库: Altera DSP Builder中 IO amp。 Bus库 参数 “ Bus Type” 设为 “ signed Integer” 参数 “ Node Type” 设为 “ Output port” 参数 “ number of bits” 设为 “ 33” (即输出位宽为 33位) xn4模块:( Altbus) 库: Altera DSP Builder中 IO amp。 Bus库 参数 “ Bus Type” 设为 “ signed Integer” 参数 “ Node Type” 设为 “ Output port” 参数 “ number of bits” 设为 “ 16” Parallel Adder Subtractor模块:( Parallel Adder Subtractor) 库: Altera DSP Builder中 Arithmetic库 11 参数 “ Add(+)Sub()” 设为 “ ++++” 使用 “ Pipeline” 参数 “ Clock Phaese Selectioon” 设为 “ 1” Delay、 Delay Delay Delay3模块:( Delay) 库: Altera DSP Builder中 Storage库 参数 “ Depth” 设为 “ 1” 参数 “ Clock Phase Selection” 设为 “ 1” Product模块:( Product) 库: Altera DSP Builder中 Arithemtic库 参数 “ Pipeline” 设为 “ 2” 参数 “ Clock Phase Selection” 设为 “ 1” 不选择 “ Use LPM” 16 阶 FIR 滤波器模型设计 要设计的 16阶的 FIR滤波器( h(0) = 0 ) 指标参数如下: 低通滤波器 , 采样频率 Fs为 48kHz,滤波器 Fc为 ,输入序列位宽为 16位(最高位为符号位) ,输出位宽为 16位。 利用以上设计的 4阶 FIR滤波器节可以方便地搭成 4 n阶直接 I型 FIR滤波器(注意: h(0) = 0 ) 比如要实现一个 16阶的低通滤波器, 可以调用 4个 4阶 FIR滤波器节来实现。 为了设计 4阶 FIR滤波器节子系统,首先需要建立一个新的 DSP Builder模型,复制上节的 FIR4tap模型到新模型。 由 FIR4tap模型建立子系统,并对端口信号进行修改,把子系统更名为 fir4tap,如图 35所示。 fir4tap的内部结构示于图 36。 然后组成 16阶 FIR滤波器模型。 为此复制 4个 fir4tap,并将它们衔接起来,前一级的输出端口 x4接后一级的 x输入端口。 并附加上 16个常数端口,作为 FIR滤波器系数的输入。 4个子系统 fir4tap的输出端口 y连接起来,把接入一个 4输入端口的加法器,得到 FIR滤波器的输出 yout。 注意,在完成子系统设计后,修改其 Mask参数 Mask Type为 “ SubSystem AlteraBlockSet”。 设计好的 16阶 FIR滤波器见图 37所示。 图 35 fir4tap 子系统 图 36 fir4tap 子系统内部原理图 12 图 37 16 阶直接 I型 FIR滤波器 (tap16)模型 16 阶直接 I型 FIR滤波器模型中,新增加的模块作如下设置: xin模块:( Altbus) 库: Altera DSP Builder中 IO amp。 Bus库 参数 “ Bus Type” 设为 “ signed Integer” 参数 “ Node Type” 设为 “ Input port” 参数 “ number of bits” 设为 “ 16” yout模块:( Altbus)库: Altera DSP Builder中 IO amp。 Bus库 参数 “ Bus Type” 设为 “ signed Integer” 参数 “ Node Type” 设为 “ Output port” 参数 “ number of bits” 设为 “ 37” x16模块:( Altbus)库: Altera DSP Builder中 IO amp。 Bus库 参数 “ Bus Type” 设为 “ signed Integer” 参数 “ Node Type” 设为 “ Output port” 参数 “ number of bits” 设为 “ 16” 13 Parallel Adder Subtractor模块:( Parallel Adder Subtractor) 库: Altera DSP Builder中 Arithmetic库 参数 “ Add(+)Sub()” 设为 “ ++++” 使用 “ Pipeline” 参数 “ Clock Phaese Selectioon” 设为 “ 1” h0、 h h h h h h h h h h h1 h1 h1 h1 h15模块:( Delay) 库: Altera DSP Builder中 IO amp。 Bus库 参数 “ Bus Type” 设为 “ Signed Integer” 参数 “ number of bits” 设为 “ 16” 使用 Matlab的滤波器设计工具 可以十分方便地利用 Matlab提供的滤波器设计工具获得 各种滤波器的设计参数。 详细步骤如下: (1) 打开 Matlab的 FDATool Matlab集成了一套功能强大的滤波器设计工具 FDATool( Filter Design amp。 Analysis,可以完成多种滤波器的设计、分析和性能评估。 点击 Matlab主窗口下方的 “ Start” 开始按钮,按图 38选择 “ ToolBox”“ Filter Design” → “ Filter Design amp。 Analysis Tool” ( FDATool),打开 FDATool(如图 39所示)。 图 38 打开 FDATool 图 39 FDATool 界面 (2) 选择 Design Filter FDATool 左下侧排列了一组工具按钮,功能分别是: 滤波器转换( TransForm Filer) 设置量化参数( Set Quantization Parameters) 14 实现模型( Realize Model) 导入滤波器( Import Filter) 设计滤波器( Design Filter) 选择其中的 按钮进入设计滤波器界面,再选择: 滤波器类型( Filter Type)为低通( Lowpass); 设计方法( Design Method)为 FIR,采用窗口法( Window); 滤波器阶数( Filter Order)定制为 15; 窗口类型为 Kaiser, Beta为 ; Fs 为 48kHz,。 注意,在滤波器阶数选择时,在此设置的是 15阶,而不是 16阶。 这是由于 在前面设计的 16阶 FIR滤波器的常数系数项 h(0) = 0。 其系统函数 H (z ) 可以用下式来表示: kk k zbzH161)( (36) 或可写成: kk k zbzzH  1501)( (37) 即可以看成一个 15阶的 FIR滤波器的输出结果经过了一个单位延时单元。 所以在 FDATool中把它当成 15阶 FIR滤波器来计算参数。 点击 让 Matlab计算 FIR滤波器系数并作相关分析。 (3) 滤波器分析 计算完 FIR滤波器系数后,往往需要对设计好的 FIR滤波器进 行相关的性能分析,以便了解是否满足设计要求。 分析操作步骤如下: 选择 FDATool的菜单 “ Analysis” → “ Magnitude Response” ,启动幅频响应分析。 图310 显示了滤波器的幅频响应图, x轴为频率, y轴为幅度值(单位为 dB)。 在图的左侧列出了当前滤波器的相关信息: 滤波器类型为: Direct Form FIR (直接 I型 FIR滤波器) 滤波器阶数为: 15 注意,不是每一种 FIR滤波器设计方法计算的滤波器都是直接 I型结构的。 如果在 DSP Builder中设计的 FIR滤波器为直接 I型结构,那就必须保证在这里显示的 FIR滤波器器结构为“ Direct Form FIR”。 选择菜单 “ Analysis” → “ Phase Response” ,启动相频响应分析。 图 311显示了滤波15 器的相频响应,可以看到设计的 FIR滤波器在通带内相位响应为线性的,即该滤波器是一个线性相位的滤波器。 图 310 FIR滤波器的幅频响应 图 311 FIR 滤波器的相频响应 图 312 显示了滤波器幅频特性与相频特性的比较。 这可以通过选择菜单 “ Analysis”→ “ Magnitude amp。 Phase Response” ,来启动分析。 选择菜单 “ Analysis” → “ Group Delay” ,启动群延时分析,波形如图 313所示。 在菜单 “ Analysis” 下还有一些分析: “ Impulse Response” :冲激响应,见图 314。 “ Step Response” :阶跃响应,见图 315。 “ Pole/Zero Plot” ,零极点图,见图 316。 由于直接 I型 FIR滤波器只有零点,所以在图 316中没有极点的存在。 求出的 FIR滤波器的系数可以选择菜单 “ Analysis” → “ Filter Coefficients” 来观察,图 317列出了 FDATool计算的 15阶直接 I型 FIR滤波器部分系数。 图 312 幅频响应与相频响应比较 图 313 FIR 滤波器的群延时 16 图 314 FIR滤波器的冲激响应图 图 315 FIR 滤波器的阶跃响应 图 316 FIR滤波器的零极点 图 317 FIR滤波器系数 (4) 量化 从图 317可以看到, FDATool计算出的值是一 个有符号小数,而在 DSP Builder下建立的 FIR滤波器模型需要一个整数(有符号整数类型)作为滤波器系数。 所以必须进行量化,并对得到的系数进行归一化。 为此,点击 FDATool左下侧工具按钮 进行量化参数,如图 318所示。 在滤波器的设计指标中,已经提到 FIR滤波器的输入位宽是 16位的,表示为有 16位 符号数。 在图 318中设置 输入字长为 16位, 表示量化后位宽为 16位,绝对值为 15位; 输出字长为 33。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。