FPGA数字信号处理(十八)Quartus CIC IP核实现
该篇是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核实现相关推荐
- FPGA数字信号处理(八)Quartus FFT IP核实现
本系列的2-7篇分别介绍了FIR和IIR滤波器的FPGA实现.除了数字滤波器外,快速傅里叶变换(FFT)也是DSP系统常用的运算单元,用于对信号进行频域分析.FFT算法的实现很复杂,但Altera和X ...
- FPGA数字信号处理(九)Vivado FFT IP核实现
该篇是FPGA数字信号处理的第9篇,选题为DSP系统中极其常用的FFT运算.上篇介绍了Quartus环境下FFT IP核的使用"FPGA数字信号处理(八)Quartus FFT IP核实现h ...
- FPGADesigner《FPGA数字信号处理系列》目录与传送门
FPGA数字信号处理(1)数字混频(NCO与DDS的使用): https://blog.csdn.net/fpgadesigner/article/details/80512067 FPGA数字信号处 ...
- ise的时钟ip核_Vivado CIC IP核滤波器详解(一)
引言:从本文开始,我们详细介绍Xilinx CIC IP核滤波器相关知识,包括CIC IP核提供的特性.IP核接口描述以及IP核设计指导等相关内容. 1.概述 级联积分器梳状(CIC)滤波器,也称为H ...
- FPGA数字信号处理(十九)Vivado CIC IP核实现
该篇是FPGA数字信号处理的第19篇,题接上篇,本文详细介绍使用Vivado自带的CIC IP核进行设计的方法.关于单级CIC滤波器.多级CIC滤波器的Verilog HDL设计以及Quartus中C ...
- FPGA数字信号处理(十六)单级CIC滤波器Verilog设计
该篇是FPGA数字信号处理的第16篇,选题为多速率信号处理系统中常用的CIC滤波器.本文将详细介绍使用Verilog HDL设计单级CIC滤波器的方法.接下来几篇会介绍多级CIC滤波器的Verilog ...
- FPGA数字信号处理(四)Quartus FIR IP核实现
该篇是FPGA数字信号处理的第四篇,选题为DSP系统中极其常用的FIR滤波器.本文将在前两篇的基础上,继续介绍在Quartus开发环境下使用Altera(或者叫Intel)提供的FIR IP核进行FI ...
- FPGA数字信号处理(十五)多速率FIR滤波器
该篇是FPGA数字信号处理的第15篇,选题为多速率信号处理系统中用到的多速率FIR滤波器.本文将简单介绍多速率信号处理系统的基本概念,以及使用Quartus和Vivado的IP核设计多速率FIR滤波器 ...
- FPGA数字信号处理(20)单级半带(HB)滤波器设计
本篇是FPGA数字信号处理的第20篇,前面介绍了多速率信号处理系统中用到的多速率FIR滤波器.CIC滤波器,本文将介绍另一种常用的半带滤波器(Half-Band Filter)的相关知识及设计方法.本 ...
最新文章
- linux的mount(挂载)命令详解
- 机器视觉行业的现状和未来
- 使用StarWind为RAC设置存储
- visual studio输入法打不了中文_目前比较满意的手机输入法方案:Gboard + 搜狗词库...
- 成功解决SQL server服务,远程过程调用失败
- jQuery的attr()和prop()方法
- 常见笔试面试问题点(转载)
- 高扫后督解决方案 力助银行内部核查
- Laravel框架一:原理机制篇
- ural 1129 (求数据)
- 前端性能优化篇——浏览器同域名并发请求对限制
- [PyTorch] 基于Python和PyTorch的cifar-10分类
- C++类成员函数的传参问题
- Java虚拟机内存管理
- excel两个字符串相减_Excel小技巧|三种方法计算算式字符串
- strut2 上传文件
- flask之修改蓝图的template_folder参数,模板路径的查找处理:
- Red and Black 模板题 /// BFS oj22063
- jQuery 实现五星好评
- php版临时邮箱,Forsaken Mail创建临时邮箱系统| 手把手教程