广告

原创 Xilinx System Generator 学习笔记(3)FIR滤波器

2017-10-19 09:36 455 0 分类: FPGA/CPLD

下面介绍使用SysGenFIRFDATools设计FIR滤波器。

  1. FDATools模块用来定义滤波器的阶数和系数。
  2. FIR模块用于Simulink仿真和在FPGA内通过Vivado实现设计,并且在实际的硬件上运行这个设计来验证其功能。

一、FIR滤波器设计原理

下面是这个单通道、单数据率滤波器的设计指标:

  1. 采样率Fs=1.5MHz;
  2. Fstop1=270kHz;
  3. Fpass1=300kHz;
  4. Fpass2=450kHz;
  5. Fstop2=480kHz;
  6. 在通带双边带的衰减=54dB;
  7. 通带纹波 =1;

该设计使用了两种不同的源来仿真滤波器。

  1. Chrip模块,用来在0~750kHz之间进行扫描;
  2. 随机源生成器,输出均匀分布的随机信号,范围是0~1;因为它的范围有限,所以均匀分布是用来驱动定点滤波器的最好选择。

二、生成FIR滤波器的系数

打开System Generator,打开Simulink,新建一个设计。展开Xilinx Blockset,选择DSP,将FDATools元件添加到设计中。双击FDATools,按照如下配置



选择File,Export,将名字为Num的滤波器系数导入到工作空间。


Matlab命令窗口输入max(Num)min(Num),确定滤波器的最大系数值和最小系数值,这些系数值决定了滤波器系数的宽度和二进制的小数点。


三、构建FIR滤波器模型

   展开Xilinx Blockset,点击DSP,将FIR Compiler 7.2加入到设计。双击打开参数配置。



找到Xilinx Blockset,单击Basic Elements,Gateway In 加入到设计。它的参数配置:

  1. Output Type : Fixed-point
  2. Number of bits:8

展开Simulink,点击Sources,找到Chirp Signal 加入到设计。双击,参数配置如下:

  1. Initial frequency(Hz):0.1
  2. Target time(secs):100
  3. Frequency at target time(Hz):75000

找到Simulink,展开Sources,Random Number 加入到设计。双击,按如下参数配置:

  1. Mean:0
  2. Variance:1
  3. Sample time: 1 / 1500000

展开Simulink,找到Signal Routing,将Manual Switch 元件加入到设计。

找到DSP System Toolbox。找到Sinks,将Spectrum Analyzer 加入到设计。

展开Xilinx Blockset,找到 Basic Elements,System Generator 加入到设计。双击,打开配置对话框,选择Clocking标签页,设置如下:Simulink system period(sec): 1/1500000


最终系统的连接如下

四、仿真FIR滤波器模型


1、双击Manual Switch 元件符号,将开关切换到Chirp Signal,在工具栏文本框输入100,单击仿真按钮开始仿真。






广告

文章评论 0条评论)

登录后参与讨论
相关推荐阅读
LoneSurvivor 2018-02-25 08:26
C++输入/输出流(2)
1. get()函数#include<iostream>using namespace std;int main(){    char s1[80], s2[...
LoneSurvivor 2018-02-23 12:19
C++输入/输出流(1)
1. 输入/输出流类层次 C++的输入/输出流类库是用派生方法建立起的,它有2个平行的基类,streambuf和ios。其他的流类都是从这两个基类直接或间接派生的。1.1  ...
LoneSurvivor 2018-02-19 11:36
C++多态(4)——特殊运算符重载和类类型转换
1.“++”和“--”的重载     运算符“++”和“--”的重载要区分前置和后置两种形式。如果不区分前置和后置,则使用operator++()或operator—()即可...
LoneSurvivor 2018-02-12 11:15
C++多态(3)——运算符重载
1.     运算符重载的定义     运算符重载也是实现多态的一个重要手段。运算符重载实现的是编译时的多态,即静态多态性。C++预...
LoneSurvivor 2018-02-12 10:31
C++多态(2)——纯虚函数与抽象类
   抽象类是一种特殊的类,它提供了统一的操作界面。建立抽象类是为了多态地使用抽象类的成员函数。抽象类是包含纯虚函数的类。 1.    ...
LoneSurvivor 2018-02-11 16:24
C++多态(1)
1.     多态      多态是人类思维方式的一种直接模拟,多态性是指不同对象接收到相同的消息时,根据对象类的不同而产...
我要评论
0
0
广告
关闭 热点推荐上一条 /2 下一条