该篇是FPGA数字信号处理的第18篇,题接上篇,本文详细介绍使用Quartus自带的CIC IP核进行设计的方法。下一篇会介绍使用Vivado的IP核设计CIC的方法。


IP核概述

由于版本的关系,Quartus提供的IP核有两种,一种是集成在“MegaWizard Plug-In Manager”中;一种集成在“IP Catalog”和qsys中。两种Quartus版本下的IP核,从使用者的角度来看仅仅是配置界面不同,在参数设置和使用方法上基本一致。本文以“MegaWizard Plug-In Manager”中的CIC IP核(12.1)使用为例。

Quartus的CIC IP核属于收费IP,如果是个人学习使用需要对IP核单独破解。破解方法与当时破解FIR Compiler IP核时相同,只不过CIC IP核对应的编号为00BB(参考https://blog.csdn.net/fpgadesigner/article/details/80605869 中的破解步骤)。保存license文件后重新打开Quartus,在License Setup页面看到CIC的破解信息,则可以正常使用。


IP核参数设置


CIC IP核的配置很简单。在主界面中:
●Filter Type:设置CIC滤波器模式为抽取Decimator或插值Interpolator;
●Number of stages:设置级联的CIC滤波器级数;
●Differential delay:设置差分延时(该值与输出数据位宽有关);
●Rate change factor:设置抽取/插值的倍数。

Quartus的CIC IP核还支持多通道输入,即对多个通道的数据采用分时复用 的方法完成滤波,这个功能在后面文章的设计中用到是时再做具体介绍。切换到“Input/Output Options”界面:

●Input data width:设置CIC滤波器输入数据的位宽;
●Full output resolution:选中表示全精度输出,不需要全精度输出时可以 在下面选择输出的位宽截断方式。


IP核接口说明

Quartus的很多IP核采用的是Avalon-ST接口,主要有数据(data)、准备好(ready)、有效(valid)和错误(error)几种信号。Avalon-ST接口本身也支持时分复用来完成多通道同步(channel),因此CIC支持多通道数据处理。

接下来介绍几个主要的接口:

在设置为多通道模式时,还会用到其它的接口。上表中的接口已经足够完成一次单通道的CIC滤波器设计。


FPGA设计与仿真

IP核的接口在Verilog HDL中进行设计时,一定要参考官方文档中给出的时序图。在IP核的配置界面点击“documentation”,可以找到IP核的data sheet、user guide和release notes。

将CIC IP核配置为3级CIC滤波器的级联,对输入数据进行5倍抽取。单通道的CIC接口时序非常简单,Verilog HDL示例代码如下所示:

//------------------------------------------
// 使用Quartus CIC IP核完成抽取滤波
//------------------------------------------
module Quartus_CICIP_liuqi
(input clk,         //输入,系统工作时钟input reset_n,     //输入,低电平有效复位信号input [9:0]in_data,//输入,数据output [16:0]out_data, //输出,数据output in_ready,   //输出,置1表示CIC滤波器可以接收数据output out_valid,  //输出,置1表示输出数据有效 output [1:0] out_error //输出,标明输出端违背Avalon-ST协议的错误
);CicFilter   CicFilter_cic_inst(.clk(clk),.clken(1'b1),.reset_n(reset_n),.in_data(in_data),.in_valid(1'b1),.out_ready(1'b1),.in_error(2'b00),.out_data(out_data),.in_ready(in_ready),.out_valid(out_valid),.out_error(out_error));endmodule       

程序中认为输入的数据始终有效,因此将in_valid、out_ready置1,in_error置0。

为了能将IP核的仿真结果与Verilog HDL的设计仿真结果进行对比,本文CIC IP核的设置与上篇相同,仿真及testbench的编写也基本相同。使用CIC滤波器对0.25MHz+7.5Mhz的正弦混合信号滤波。

使用Quartus调用ModelSim进行仿真,结果如下图所示:

仿真结果与上一篇的仿真结果基本一致。可以看到经过抽取滤波后,0.25MHz的信号分量数据速率降低,但信号频率没有改变。而7.5MHz的信号分量被抗混叠滤波器滤除,结果符合预期。

FPGA数字信号处理(十八)Quartus CIC IP核实现相关推荐

  1. FPGA数字信号处理(八)Quartus FFT IP核实现

    本系列的2-7篇分别介绍了FIR和IIR滤波器的FPGA实现.除了数字滤波器外,快速傅里叶变换(FFT)也是DSP系统常用的运算单元,用于对信号进行频域分析.FFT算法的实现很复杂,但Altera和X ...

  2. FPGA数字信号处理(九)Vivado FFT IP核实现

    该篇是FPGA数字信号处理的第9篇,选题为DSP系统中极其常用的FFT运算.上篇介绍了Quartus环境下FFT IP核的使用"FPGA数字信号处理(八)Quartus FFT IP核实现h ...

  3. FPGADesigner《FPGA数字信号处理系列》目录与传送门

    FPGA数字信号处理(1)数字混频(NCO与DDS的使用): https://blog.csdn.net/fpgadesigner/article/details/80512067 FPGA数字信号处 ...

  4. ise的时钟ip核_Vivado CIC IP核滤波器详解(一)

    引言:从本文开始,我们详细介绍Xilinx CIC IP核滤波器相关知识,包括CIC IP核提供的特性.IP核接口描述以及IP核设计指导等相关内容. 1.概述 级联积分器梳状(CIC)滤波器,也称为H ...

  5. FPGA数字信号处理(十九)Vivado CIC IP核实现

    该篇是FPGA数字信号处理的第19篇,题接上篇,本文详细介绍使用Vivado自带的CIC IP核进行设计的方法.关于单级CIC滤波器.多级CIC滤波器的Verilog HDL设计以及Quartus中C ...

  6. FPGA数字信号处理(十六)单级CIC滤波器Verilog设计

    该篇是FPGA数字信号处理的第16篇,选题为多速率信号处理系统中常用的CIC滤波器.本文将详细介绍使用Verilog HDL设计单级CIC滤波器的方法.接下来几篇会介绍多级CIC滤波器的Verilog ...

  7. FPGA数字信号处理(四)Quartus FIR IP核实现

    该篇是FPGA数字信号处理的第四篇,选题为DSP系统中极其常用的FIR滤波器.本文将在前两篇的基础上,继续介绍在Quartus开发环境下使用Altera(或者叫Intel)提供的FIR IP核进行FI ...

  8. FPGA数字信号处理(十五)多速率FIR滤波器

    该篇是FPGA数字信号处理的第15篇,选题为多速率信号处理系统中用到的多速率FIR滤波器.本文将简单介绍多速率信号处理系统的基本概念,以及使用Quartus和Vivado的IP核设计多速率FIR滤波器 ...

  9. FPGA数字信号处理(20)单级半带(HB)滤波器设计

    本篇是FPGA数字信号处理的第20篇,前面介绍了多速率信号处理系统中用到的多速率FIR滤波器.CIC滤波器,本文将介绍另一种常用的半带滤波器(Half-Band Filter)的相关知识及设计方法.本 ...

最新文章

  1. linux的mount(挂载)命令详解
  2. 机器视觉行业的现状和未来
  3. 使用StarWind为RAC设置存储
  4. visual studio输入法打不了中文_目前比较满意的手机输入法方案:Gboard + 搜狗词库...
  5. 成功解决SQL server服务,远程过程调用失败
  6. jQuery的attr()和prop()方法
  7. 常见笔试面试问题点(转载)
  8. 高扫后督解决方案 力助银行内部核查
  9. Laravel框架一:原理机制篇
  10. ural 1129 (求数据)
  11. 前端性能优化篇——浏览器同域名并发请求对限制
  12. [PyTorch] 基于Python和PyTorch的cifar-10分类
  13. C++类成员函数的传参问题
  14. Java虚拟机内存管理
  15. excel两个字符串相减_Excel小技巧|三种方法计算算式字符串
  16. strut2 上传文件
  17. flask之修改蓝图的template_folder参数,模板路径的查找处理:
  18. Red and Black 模板题 /// BFS oj22063
  19. jQuery 实现五星好评
  20. php版临时邮箱,Forsaken Mail创建临时邮箱系统| 手把手教程

热门文章

  1. 面向对象编程小项目,语音播报计算器
  2. 衡阳南华学校计算机,热烈祝贺计算机学院在第八届衡阳市大学生科技创新大赛南华大学初赛中取得优异成绩...
  3. 基于opencvsharp的景深融合
  4. mac使用hbuilderx安卓模拟器调试app
  5. 【C#】记录一次上位机软件界面闪退分析及解决方案
  6. 如何同时登陆多个微信账号
  7. C++面试题总结,一篇就够了
  8. LSM303DLH六轴角度传感器驱动
  9. python matplotlib坐标轴刻度设置
  10. 最实用的网上赚钱方法:这个方法真的很实用哦!