毕业论文-基于dspbuilder数字滤波器的设计与实现内容摘要:

计方案 FIR 和 IIR 设计方法 概述 IIR数字滤波器的设计方法有脉冲响应不变法和双线性变换法等; FIR 数字滤波器的设计方法有窗函数法、频率采样法、切比雪夫逼近法等。 IIR滤波器和 FIR滤波器的设计方法是很不同的。 IIR 滤波器设计方法有两类,经常用的一类设计方法是借助于模拟滤波器的设计方法进行的。 其设计步骤是:先设计模拟滤波器得到传输函数 Ha( s),然后将 Ha( s)按某种方法转换成数字滤波器的系统函数 H( z)。 这一类方法相对容易一些,这是因为模拟滤波器设计方法已经很成熟,它不仅有完整的设计公式,还有完善的图表供查阅;另外,还有一些典型的滤波器类型可供我们使用。 另一类是直接在频域或者时域中进行设计的,由于要解联立方程,设计师需要计算机作辅助设计。 FIR 滤波器不能采用模拟滤波器的设计进行转换的方法,经常用的是窗函数法和频率采样法。 还有一种比较有效的方法是切比雪夫等波纹逼近法,需通过计算机辅助设计完成。 对于线性相位滤波器,通常采用 FIR 滤波器,其单位脉冲响应满足一定 条件,可以证明其相位特性在整个频带中是严格线性的,这是模拟滤波器无法达到的。 当然,也可以采用 IIR 滤波器,但必须使用全通网络对其非线性相位特性进行相位校正,这样增加了设计与现实的复杂性。 滤波器设计方法比较 数字滤波器是语音与图像处理、模式识别、雷达信号处理、频谱分析等应用中的一种基本的处理部件,它能满足 滤 波器对幅度和相位特性的严格要求,避免模拟滤波器所无法克服的电压漂移、温度漂移和噪声等问题。 实现方案 目前滤波器的实现方法有三种:利用单片通用集成电路、 DSP 器件和可编程逻辑器件实现。 1) 单片通用集 成电路 目前 针对 DSP 算法的集成电路器件主要是 ASSP 和 ASIC,它们均是半定制 13 集成电路,故在性能指标、工作速度和可靠性上具有不可比拟的优势。 但这种芯片的开发周期长、 开发成本高,特别是在功能重构以及应用性修正上缺乏灵活性,正在逐渐失去其实用性。 2) 专用的 DSP 器件 在过去很长一段时间, DSP 处理器 (如 TI 的 TMS320 系列 )是 DSP 应用系统核心器件的惟一选择。 DSP 处理器 在硬件结构上不断改进, 但 并没有摆脱传统CPU 的工作模式。 因而,尽管拥有多个硬件乘加器,使用了环形叠代的方法进行乘法操作,且许多 DSP 处理 器还拥有使用多乘法器的并行指令,用于加速算术运算,然而由于其顺序的工作方式、较低的数据处理速率,以及缺乏实时工作的性能,使其至今仍只适合于低端的数字信号处理。 面对当今迅速变化的 DSP应用市场,特别是面对现代通信技术的发展, DSP 处理器早已显得力不从心。 例如其硬件结构的不可变性导致了其总线的不可改变性,而固定的数据总线宽度,已成为 DSP 处理器一个难以突破的瓶颈。 DSP 处理器的这种固定的硬件结构特别不适合于当前许多要求能进行结构特性随时变更的应用场合,即所谓面向用户型的 DSP 系统,或可重配置型的 DSP 应用系统 (Customized DSP 或Reconfigurable DSP 等 ), 如软件无线电、医用设备、导航、工业控制等方面。 至于在满足速度要求方面,由于采用了顺序执行的 CPU 架构, DSP 处理器则更加不堪重负。 3) FPGA(现场可编程门阵列)器件 FPGA 采用了逻辑单元阵列 LCA( Logic Cell Array) 的 概念,内部包括可配置逻辑模块 CLB( Configurable Logic Block)、输出输入模块 IOB( Input Output Block)和内部线( Interconnect)三个部分。 用户可 对 FPGA 内部的逻辑模块和 I/O 模块重新配置,以实现用户的逻辑。 它还具有静态可重复编程和动态在系统重构的特性,使得硬件的功能可以像软件一样通过编程来修改。 由 FPGA 构成的 DSP 电路可以同样以并行或顺序方式工作。 如图 所示,在并行工作方面, FPGA 与 ASIC/ASSP 相当,远优于 DSP处理器。 对 DSP 处理器需要大量运算指令完成的工作, FPGA 只需一个时钟周期的时间就能完成。 而在顺序执行方面, FPGA 也比 DSP 处理器快,因为 FPGA 中可以使用各种状态机,或使用嵌入式微处理器来完成,并且,每一顺序工作的时钟 周期中都能同时并 14 行完成许多执行,而 DSP 处理器却不能。 就灵活性而言, FPGA 的灵活性远胜于ASIC/ASSP,也胜于 DSP 处理器。 图 DSP处理器顺序工作方式与 FPGA的并行工作方式 综上所述,单片通用 集成电路 使用方便,但由于字长和阶数的规格较少,不能完全满足实际需要。 使用 DSP 器件实现虽然简单,但由于程序顺序执行,执行速度必然不快。 而 FPGA 有着规整的内部逻辑阵列和丰富的连线资源,特别适合于数字信号处理任务,相对于串行运算为主导的通用 DSP 芯片来说,其并行性和可扩展性更好。 但 长期以来, FPGA 一直被用于系统逻辑或时序控制上,很少有信号处理方面的应用,其原因主要是因为在 FPGA 中缺乏实现乘法运算的有效结构。 现在这个问题得到了解决,使 FPGA 在数字信号处理方面有了长足的发展。 基于 FPGA 的 DSP 设计流程 本次设计采用系统级的开发方法,开发流程如图 所示。 乘 加 操 作 乘 加 操 作乘 加 操 作乘 加 操 作乘 加 操 作D S P 引擎F P G A 器件( 并 行 工 作 方 式 )1 个 时 钟 并 行 操 作顺序 ( 串行 ) 操作n 个 时 钟传统 D S P 处 理 器( 顺 序 工 作 方 式 )存 储 器乘 加 操 作乘 加 操 作乘 加 操 作乘 加 操 作 乘 加 操 作乘 加 操 作乘 加 操 作乘 加 操 作 乘 加 操 作乘 加 操 作乘 加 操 作乘 加 操 作 乘 加 操 作乘 加 操 作乘 加 操 作乘 加 操 作 乘 加 操 作乘 加 操 作乘 加 操 作 15 图 基于 FPGA的系统级开发流程 顶层的开发工具就是 MATLAB /Simulink,整个开发 过程 程真正实现了自顶向下的设计流程,包括 DSP系统的建模、系统级仿真、设计模型向 VHDL 硬件描述语言代码的转换、 RTL 级功能仿真测试、编译适配和布局布线、时序实时仿真,直至对 DSP 目标器件的编程配置。 整个设计流程将系统描述和硬件实现有机地融为一体,充分显示了现代电子设计自动化开发的特点与优势。 F P G AD S P 系 统 实 现M A T L A B/ S i m u l i n k 建模 / 仿真VHDL 转换 / 逻 辑 综 合 / 功 能 仿 真 /编 译 适 配 / 时 序 实 时 仿 真 / 硬 件 配 置D S P 系 统 建 模D S P Bu i l d er综合、适配布线、布局( Q u ar t u s I I )基于 IP 核的D S P 库 16 4. FIR 设计实例 FIR 数字滤波器原理 FIR 数字 滤波器 在 数字信号处理 的各种应用中发挥着十分重要的作用,它能够提供理想的线性相位响应,在整个频带上获得常数群时延,从而得到零失真输出信号,同时它可以采用十分简单的算法予以实现。 这些优点使 FIR 滤波器 成为设计工程师的首选。 在采用 VHDL 或 VerilogHDL 等硬件描述语言设计数字滤波器时。 由于程序的编写往往不能达到良好优化而使滤波器性能表现一般,而采用调试好的 IP Core 需要向 Altera 公司购买。 在此,采用一种基于 DSP Builder 的 FPGA 设计方法,使 FIR 滤波器 设计较为简单易行,并能满足设计要求。 FIR 滤波器原理 对于一个 FIR 滤波器系统,它的冲激响应总是有限长的,最具体的 FIR 滤波器可用下式表示: 式中: r是 FIR 滤波器的抽头数; x(nr)是延时, r是 抽头的输入信号; b(r)是第 r 级抽头数 (单位脉冲响应 ); M 是滤波器的阶数; y(n)表示滤波器的输出序列。 滤波器就是寻求一个可实现的系统函数 H(z),使其频率响应 H(ejω) 满足所希望得到的频域信号,也可以用卷积的形式来表示: y(n)=z(n)*h(n) FIR 滤波器参数选取 采用 Matlab 提供的滤波器专用设计工具 FDAtool 仿真设计的滤波器 ,可满足要求的 FIR 滤波器幅频特性,由于浮点小数在 FPGA 中实现得比较困难,且代价太大,因而需要将滤波器的系数和输人数据转化为整数,其中量化后的系统可以在 Matlab 主窗口中直接转化,对于输入数据,乘以 28的增益用 Altbus 控制位宽转化为整数输入。 16 阶 FIR 滤波器 17 模型的建立 根据 FIR 滤波器原理,可以利用 FPGA 来实现 FIR 滤波电路。 DSP Builder设计流程的第一步是在 Matlab/ Simulink 中进行设计输入的,即在 Matlab 的Simulink 环境中建立一个 MDL模型文件, 如图 所示, 用图形方式调用 DSP Builder 和其他 Simulink 库中的图形模块,构成 4 阶 FIR 滤波器节 , 如图 所示。 图 建立新模型 图 4 4阶 FIR滤波器节 18 在 Simulink 中的仿真并生成 VHDL 代码 完成模型设计之后,可以先在 Simulink 中对模型进行仿真,可以通过Simulink 中的 示波器 模块查看各个步骤的中间结果。 双击 SignalCompiler 可对以上的设计模型进行分析,选择相应的 芯片 ,将以上设计模块图文件 “ 翻译 ” 成 VHDL 语言。 双击模型中的“ SignalCompiler”模块,会出现如图 所示的对话框,点击“ Analyze” (分析 )按 钮后, SignalCompiler 就会对模型进行分析,检查模型有无错误,并在 Matlab 主窗口弹出对话框给出相关信息。 若有错误( Error)存在, SignalCompiler 就会停止分析过程,并把错误信息显示在 Matlab 主窗口“ Command Window”命令窗口中;反之,在分析过程结束后,打开SignalCompiler 窗口(如图 所示),如果有警告( Warning)存在,同错误一样把警告信息显示在命令窗口。 图 双击 SignalCompiler 后的对话框 图 SignalCompiler窗口 19 当设置好后,右侧的硬件编译“ Hardware Compilation”部分就会列出一个操作流程,如图 ,该流程为: ( 1)“ Convert MDL to VHDL” :将 .mdl 文件转换为 VHDL 文件; ( 2)“ Synthesis”:综合; ( 3)“ Quartus Ⅱ”: Quartus 编译适配,生成编程文件。 按上述流程,点击 图标,完成 Simulink 文件( *.mdl)到 VHDL 文件的转换。 转换完成后,在“ Messages”信息提示框中会显示。 16 阶 FIR滤波器模型的建立 建 立一个新的 DSP Builder 模型,将上述 4阶 FIR滤波器模型建立子系统( SubSystem) ,将子系统更名为 fir4tap, fir4tap 的内部结构如图 所示。 图 fir4tap 子系统内部原理图 复制 4个 fir4tap,并将它们衔接起来。 前一级的输出窗口 x4 接后一级的x输入端口,并附上 16 个常数端口,作为 FIR滤波器系数的输入。 把 4 个子系统 fir4tap 的输出端口 y 连接起来,接入一个 4 输入端口的加法器,得到 FIR滤波器的输出 yout。 修改其 Mask 参数:选中子系统模型,然后选择菜单“ Edit”中的,在对话框中选择“ Documentation”选项页, 20 设置“ Mask type”为“ SubSystem AlteraBlockSet”(子系统 Altera 模块集),如图 所示。 图 编辑模块的“ Mask type” 设置完“ Mask type”后, SignalCompiler 就可以正常地生成 VHDL 代码了。 设计好的 16阶 FIR 滤波器如图 所示。 图 16阶直接 I型 FIR滤波器模型 21 用 MATLAB 的滤波器设计工具 计算 FIR滤波器的系数 ( 1)滤波器指标 若需要 设计一个 16 阶的 FIR 低通 滤波器( h(0)=0) ,给定的参数如下: 采样频率 Fs 为 48kHz,滤波器 Fc 为 ; 输入序列位宽为 9位(最高位为符号位)。 在此利用 MATLAB 来完成 FIR 滤波器系数的确定。 打开 MATLAB 的 FDATool, FDATool 界面如图 所示。 图 FDATool界面 在 FDAToo。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。