主要内容

多重速率的过滤器

金宝app支持的多速率过滤类型

以下多速率滤波器类型支持HDL代码生成:金宝app

  • 级联梳状积分器(CIC)dsp。CICInterpolator

  • 级联积分器梳式抽取器(CIC)dsp。CICDecimator

  • FIR多相抽取器(dsp。FIRDecimator

  • FIR多相插补器(dsp。FIRInterpolator

  • FIR多相采样率转换器(dsp。FIRRateConverter

  • CIC补偿插补器(dsp。CICCompensationInterpolator

  • 补偿抽取器(dsp。CICCompensationDecimator

生成多速率滤波器代码

要生成多速率滤波器代码,首先使用filter Designer、filter Builder或MATLAB选择并设计支持的滤波器类型之一金宝app®命令行。

创建过滤器之后,打开Generate HDL对话框,设置所需的代码生成属性,然后生成代码。看到多速率过滤器的代码生成选项

属性生成代码generatehdl函数,指定在功能上等同于UI选项的多速率筛选器代码生成属性。看到generatehdl属性的多速率滤波器

多速率过滤器的代码生成选项

当支持类型的多速率筛选器时(请参见金宝app金宝app支持的多速率过滤类型),生成HDL对话框中的几个选项的启用/禁用状态发生变化。

  • 全局设置选项卡,时钟输入启用下拉菜单。这个菜单提供了两种选择,用于生成多速率滤波器的时钟输入。

    请注意

    时钟输入菜单不支持:金宝app

    • 过滤器与一个部分系列体系结构

    • 多级采样率转换器:dsp。FIRRateConverter,或dsp。FilterCascade包含多个利率

  • 对于CIC过滤器,在上过滤器体系结构选项卡,乘数系数选项是禁用的。CIC滤波器不使用系数乘法器。

  • 对于CIC过滤器,在上过滤器体系结构选项卡,冷杉加法器的风格选项被禁用,因为CIC过滤器不需要一个最终加法器。

下图显示了支持CIC过滤器的Generate HDL对话框选项的默认设置。金宝app

时钟输入选项有:

  • :当您选择,编码器为多速率滤波器生成单个时钟输入。过滤器的模块或实体声明有一个单独的时钟输入和一个相关联的时钟使能输入和一个时钟使能输出。生成的代码包括一个计数器,它控制数据传输到过滤器输出(用于抽取过滤器)或输入(用于插值过滤器)的时间。计数器作为一个次级时钟,其速率由抽取或插值因子决定。该选项为FPGA设计提供了一个独立的时钟解决方案。

    若要自定义时钟的名称,请参见设置时钟使能输出名称.插补器也通过时钟使输入信号的输出端口命名ce_in.该信号指示对象何时接受了输入样本。您可以使用此信号来控制上游数据流。不能自定义此端口名称。

    以下代码摘录是由抽取因子为的CIC抽取过滤器生成的4,时钟输入设置为

    编码器生成输入时钟、输入时钟使能和输出时钟使能。

    实体cic_decim_4_1_single IS PORT(clk: IN std_logic;clk_enable: IN std_logic;reset: IN std_logic;filter_in:在std_logic_vector(15 DOWNTO 0);——sfix16_En15 filter_out: OUT std_logic_vector(15 DOWNTO 0);——sfix16_En15 ce_out: OUT std_logic);cic_decim_4_1_single结束;

    时钟使输出过程,ce_output,维持信号计数器.每四个时钟周期,计数器切换到1。

    (1) BEGIN IF reset = '1' THEN cur_count <= to_unsigned(0,4);ELSIF clk'event AND clk = '1' THEN IF clk_enable = '1' THEN cur_count = 3 THEN cur_count <= to_unsigned(0,4);ELSE cur_count <= cur_count + 1;如果;如果;如果;结束过程ce_output;cur_count = 1 AND clk_enable = '1' ELSE '0';

    下面的代码摘录说明了计数器信号,在这种情况下要定时滤波器输出。

    output_reg_process: PROCESS (clk, reset) BEGIN IF reset = '1' THEN output_register <= (OTHERS => '0');ELSIF clk'event AND clk = '1' THEN IF counter = '1' THEN output_register <= section_out4;如果;如果;结束过程output_reg_process;
  • 多个:当您选择多个,编码器为多速率滤波器生成多个时钟输入。过滤器的模块或实体声明对于多速率过滤器的每个速率都有单独的时钟输入(每个都有一个关联的时钟使能输入)。您负责提供与所需的抽取或插值因子相对应的输入时钟信号。要查看示例,请为您的多速率过滤器生成测试工作台代码,并检查clk_gen每个时钟的进程。

    多个选项用于asic和fpga。它提供了比选项,但假设您提供了更高级别的HDL代码来驱动您的滤波器的输入时钟。

    不提供多个时钟域之间的同步器。

    当您选择多个,编码器不生成时钟使能输出;因此,时钟使能输出端口场的全局设置面板是禁用的。

    以下实体声明由CIC抽取过滤器生成时钟输入设置为多个

    实体cic_decim_4_1_multi IS PORT(clk: IN std_logic;clk_enable: IN std_logic;reset: IN std_logic;filter_in:在std_logic_vector(15 DOWNTO 0);——sfix16_En15 clk1: IN std_logic;clk_enable1: IN std_logic;reset1: IN std_logic;filter_out: OUT std_logic_vector(15 DOWNTO 0)——sfix16_En15;cic_decim_4_1_multi结束;

设置时钟使能输出名称

当您设置时,编码器会生成一个时钟启用输出时钟输入在“生成HDL”对话框中。时钟使能输出的默认名称是ce_out

若要更改时钟启用输出的名称,请修改时钟使能输出端口场的港口窗格的生成HDL对话框。

编码器启用时钟使能输出端口字段仅在为具有单个输入时钟的多速率滤波器生成代码时使用。

generatehdl多速率过滤器的属性

如果你正在使用generatehdl要为多速率过滤器生成代码,可以设置以下属性来指定时钟生成选项:

  • ClockInputs:对应于时钟输入选择;为多速率滤波器选择单个或多个时钟输入的生成。

  • ClockEnableOutputPort:对应于时钟使能输出端口场;时钟使能输出端口的名称。

  • ClockEnableInputPort对应于时钟使能输入端口场;时钟使能输入端口的名称。