本文基于xilinx 的IP核设计,源于音频下采样这一需求。
创建vivado工程
1. 首先打开vivado,创建一个新的project(勾选create project subdirectory选项),并将工程命填为firfilter。
2.选择工程创建的类型为RTL project。在设计PCB会用到I/Oplanning这种类型,用在原理图和封装兼容性设计。
3.选择芯片family和封装,这种基于芯片选型的工程,其能implement的资源量受芯片自身容量限制。
创建design文件
1.创建设计文件,在flow navigator栏里,选中project manager,其展开的子项中,单击Add Source,并在跳出的框中选择Add or create desigine sources
2 填写创建的文件名为fir,类型是verilog。
定制FIR IP 核
1.类似创建design source文件一样,单击Project Manager子菜单下的IP catalog,在软件的右侧工作栏显示一个IP catalog标签,在search过滤器中选择fir,双击FIR Compiler选项。
2 定制FIR参数第一页,
a:按如下方式填写,这里的fdacoe.coe文件由matlab生成,先参考matlab一节,生成该文件。
b:在Filter type中选择Decimation,抽取方式,抽取因子填3,即将48k采样率降采样到16k。
3 定制FIR IP,第二页
3.第三页
4.第四页
5 第五页
6 第六页
基于MATLAB的FIR滤波器设计
FIR滤波器设计
a.在command window敲fdatool命令
b.在弹出的窗口中,将Response Type选中Lowpass,Designed Method选中FIR,其后下拉窗口,选中Window,即基于窗函数法设计FIR滤波器。
c.在Filter Order中选中Specify Order,填32这个数字,即32阶,窗口设计方法
按如下窗口内容填写。
FIR滤波器系数量化
先点击图中1标号按钮,进入量化界面,由于FPGA实现,2标号选定点,3标号内容照抄,4在设计有误时,返回继续设计有用。
FIR滤波器系数导出
点击菜单栏上的Target按钮,有两个选项,一个是generate c header,一个是XILINX Coefficient (.COE) file。这两个选项导出的系数都可以使用在xilinx 的fpga上,它们导出的系数是相等的。C语言导出系数如下:
const int BL = 33;
const int16_T B[33] = {
-90,
0, 148, 219,
0, -467, -658,
0, 1220,
1626,
0, -2875, -3909,
0, 8719, 17911, 21851, 17911,
8719,
0, -3909, -2875,
0, 1626, 1220,
0, -658,
-467,
0, 219, 148,
0, -90
};
COE导出的文件内容如下:
; XILINX CORE Generator(tm)Distributed Arithmetic FIR filter coefficient (.COE) File
; Generated by MATLAB(R) 8.6 and the DSP System Toolbox 9.1.
; Generated on: 17-Feb-2016 09:57:13
Radix = 16;
Coefficient_Width = 16;
CoefData = ffa6,
0000,
0094,
00db,
0000,
fe2d,
fd6e,
0000,
04c4,
065a,
0000,
f4c5,
f0bb,
0000,
220f,
45f7,
555b,
45f7,
220f,
0000,
f0bb,
f4c5,
0000,
065a,
04c4,
0000,
fd6e,
fe2d,
0000,
00db,
0094,
0000,
ffa6;
FIR滤波实现
新建fir_test.m文件,文件内容如下:
评论
查看更多