怎么将matlab滤波器系数导出_matlab与FPGA数字信号处理系列(1)——通过matlab工具箱设计FIR数字滤波器...

edf166dff29f058d4dd647c599e266f9.png

以99阶FIR低通滤波器为例,学习使用matlabfdatool工具箱设计滤波器,并将滤波器系数导出到.coe文件,联合Vivado进行FPGAFIR滤波器设计。

本文滤波器参数为:低通FIR滤波器窗函数设计,采用布莱克曼窗99阶抽样频率32MHz通带频率1.5MHz使用窗函数时截止频率不需要设定,根据选定的窗函数和阶数决定截止频率

1. 打开matlab

a59eff81164e02b26896fa1657638f51.png

2.命令行输入fdatool,回车,打开fdatool滤波器设计工具箱

打开后的初始界面如下:
1处选定滤波器类型(低通、高通、带通、带阻);
2处选择要设计IIR(无限冲激响应)滤波器还是FIR(有限冲击响应)滤波器,并且选择使用哪种方法设计对应的滤波器
3处设计滤波器的阶数,一般阶数越多滤波效果越好,但是系数对应的也越多,在FPGA硬件实现的时候会占用更多的资源,设计时要综合考虑;

5ff843c7b1c23af80bcf929d160a57a4.png

3.设计所需滤波器

低通(Lowpass)FIR滤波器,窗函数设计(Window),采用布莱克曼窗(Blackman),99阶(会有100个系数,这个是固定的,N阶FIR需要N+1个系数),抽样频率32MHz通带频率1.5MHz,使用窗函数时截止频率不需要设定,选定的窗函数和阶数已经限定了截止频率。

按照上图设定参数后,点击Design Filter。

c1045a254ac390a7e50be5f86a2aa2db.png


设计完成后,黄色框内显示幅频响应曲线,可以看到,使用Fs=32MHz的抽样频率,显示的频率为0~Fs/2即0-16MHz的幅频响应,大概在2MHz左右幅度下降为原来的-60dB以下,换算成幅度即1/1000以下(-60dB=20log(1/1000))。

4.参数量化

使用16位的滤波器参数,定点数表示。
点击左侧第三个框,进行参数量化,在FPGA中计算浮点数是很麻烦的事情,并且浮点数的操作在射频输出时会影响功放性能,此处设置为定点数(一般都是设为定点数处理,设成浮点数可以试一下,是无法导出为Xilinx设计所需的.coe文件)。这里进行量化时就会引入量化误差,位数越少误差越大,但是位数越多在FPGA硬件中所需的资源也越多,设计中也是需要综合考虑,此处选择16位定点数量化(Fixed-point)。

5.导出参数

(1)导出参数到matlab

回到设计界面(不回去也不影响导出参数,此处为了更方便观看滤波器的参数),再点击 Export,即可导出参数到 matlab,导出一个名为 Num 的数组,名字可以自己修改,在命令行输入 Num 再回车即可观察系数。

(2)导出参数到Xilinx的存储文件(.coe文件)

点击 Targets -> XILINX Coeffient(.coe) File,

导出的参数共有 100 个,可以发现这样设计出来的时对称结构的FIR滤波器,第一个参数和第 100 个参数一样,第 2 个和第 99 个一样,依次对应。

7f1e9e987b88733124c2162cd24f80f8.png

作者:FPGA探索者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246036.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UGUI 合批原理

转自: UGUI合批原理笔记 - 赵青青 - 博客园 UGUI合批规则图解_时光不染-CSDN博客_ugui合批规则 合批的过程# 网格更新机制# Cavans.SendWillRenderCanvas m_LayoutRebuildQueuem_GraphicRebuildQueueCanvas.BuildBatch 更新所有DrawCall WaitingForJob 子线程网格…

vb.net 设置打印纸张与页边距_装订文档时不想让文字被挡住?在Excel中你可以这样设置打印!...

平时我们在打印文档的时候,通常会把文档左侧的页边距设置的大一点,这样在装订的时候显得美观一点。但如果我们进行双面打印时,文档左右两边的页边距刚好相反,装订时第2页的文本很容易被挡住,这样子反而更难装订了。那么…

c语言 pow优化_c程序代码优化的一些方法

我认为一个好的用于科学计算的程序代码应该:算法漂亮精妙,程序简洁易懂,运算快速,节省内存。这里有的地方是矛盾的,比如简洁vs易懂,时间vs空间,找个平衡吧。目前来看时间要比空间宝贵一些。写程…

CPU Cache原理与示例

转自这篇 CPU Cache,估计也没人看 基础知识 首先,我们都知道现在的 CPU 多核技术,都会有几级缓存,老的 CPU 会有两级内存(L1 和 L2),新的CPU会有三级内存(L1,L2&#x…

python集合的基本操作不包括_Python基础知识储备,List集合基本操作大盘点

List列表是Python中最基本的数据结构,也是Python中使用频率最高的数据类型,List列表中的元素不需要具有相同类型,使用起来非常方便。现在就来体验一下List列表的基本操作。 list集合基本操作 List的基本操作(,copy&…

mysql 恢复root用户_mysql误删root用户恢复方案

linux下误删mysql的root用户,解决方法开始对liunx界面不熟悉,可能由于不小心,把root误删了,怎么办?1. # killall mysqld 干掉所有mysql进程2. # mysqld_safe --skip-grant-tables & 进入mysql安全模式3. 通过…

解决递归栈溢出:尾递归

原文:尾递归_百度百科 尾递归 如果一个函数中所有递归形式的调用都出现在函数的末尾,我们称这个递归函数是尾递归的。当递归调用是整个函数体中最后执行的语句且它的返回值不属于表达式的一部分时,这个递归调用就是尾递归。尾递归函数的特点…

mysql blob hex_数据库的完整备份与恢复 quot;--hex-blobquot; - - ITeye博客

闲言少絮,这个程序利用MySql数据库自带小程序进行数据库的备份和还原。这两个程序分别是:mysql.exe和mysqldump.exe。这两个程序在您安装Mysql数据库的时候会自动安装到数据库的bin目录。这两个程序存在的目录为:C:\Program File\MySQL\MySQL…

python实现多表格合并_用python实现多个表格合并按字段去重

需求 在xx银行项目中遇到的一个需求,是将系统中的8张余额表下载到指定的文件夹中,然后从文件夹中读取这8张余额表,将其合并为一张余额汇总表,在合并的时候要将组合名称重复的多行数据去重,并将其所对应的余额相加 实现…

C# Lambda 和 匿名函数的GC总结

关于Lambda和 匿名函数,闭包的GC,其实可以总结为两条。 为了方便理解,以举例说明,首先我们定义变量,静态变量,以及函数如下: static int staticVariable 0;int variable 0;private void Func…

Unity使用sdkmanager命令行工具安装Android SDK

转自:使用sdkmanager命令行工具安装Android SDK Unity自带的SDKManager没有GUI工具,如果需要其他android SDK版本,可以用Unity自带的SDKManager使用命令行方式安装: 例如安装android27,将目录切到Unity的Android SDK安装目录后&…

mysql c api 封装_封装MySQL C API 基本操作

根据我的以前的文章 http://blog.csdn.net/skyhuangdan/article/details/21099929 链接数据库成功后进行封装。我封装类使用的是VS2005下的win32控制台应用程序编写,预编译头文件了的。所以要在 stdafx.h 里面加入 :#include "CMySQL.h"现在代…

android中怎么保存checkbox中的checked属性_Vue 精粹:v-model指令在组件中怎么玩

最近在写组件的时候,遇到了 v-model 的使用问题,在 Vue 官方文档中,有两小端内容是关于 v-model 指令在组件中的使用,查阅文档后,依然不得要领,最后几番折腾,理论结合实践,终于领悟其精髓&#…

xcode 自动化出包

iOS提高效率之Xcodebuild自动打包总结 - 简书 使用xcodebuild命令进行自动化打包 - 简书 Add a profile to the provisioningProfiles dictionary in your Export Options property list. | 亂馬客 - Re:從零開始的軟體開發生活

linux location root访问文件夹404_如何使网站支持https访问?nginx配置https证书

购买SSL证书要想使用https访问你的网址,首先得拥有颁发的SSL证书。我使用的是免费版,有效期为一年,过期后再重新申请。申请SSL证书购买后,可在搜索框输入证书关键字进入到控制台。点击证书申请,按照提示填写完相关信息…

c++头文件能否包含函数实现?

头文件即.h文件一般是用来写函数或者类的定义的&#xff0c;而函数的实现一般在cpp文件中完成&#xff0e;但是我也看到过一些文件就在头文件中同时定义函数和实现&#xff0e;打个比方我现在有个头文件名叫header.h,内容如下 #include <iostream>void printInt(int numb…

mysql rank函数_Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介

排名函数是Sql Server2005新增的功能&#xff0c;下面简单介绍一下他们各自的用法和区别。我们新建一张Order表并添加一些初始数据方便我们查看效果。表结构和初始数据Sql附上表结构和初始数据图&#xff1a;一、ROW_NUMBERrow_number的用途的非常广泛&#xff0c;排序最好用他…

git2.29.2.2怎么安装_MySQL5.5怎么安装

安装MySQL5.5的步骤&#xff1a;1、 官网下载mysql5.5下载地址&#xff1a;http://dev.mysql.com/downloads/mysql/5.5.html#downloads2、 安装mysql5.5注意&#xff0c;安装之前&#xff0c;请关闭杀毒软件。1)、 打开下载的mysql-5.5.53-winx64.msi2) 、点击下一步3)、 选中复…

h、cpp和hpp头文件之间使用区别

hpp&#xff0c;其实质就是将.cpp的实现代码混入.h头文件当中&#xff0c;定义与实现都包含在同一文件&#xff0c;则该类的调用者只需要include该hpp文件即可&#xff0c;无需再将cpp加入到project中进行编译。而实现代码将直接编译到调用者的obj文件中&#xff0c;不再生成单…

未声明spire。它可能因保护级别而不可访问_信息系统安全:访问控制技术概述...

1.访问控制基本概念身份认证技术解决了识别“用户是谁”的问题&#xff0c;那么认证通过的用户是不是可以无条件地使用所有资源呢&#xff1f;答案是否定的。访问控制(Access Control)技术就是用来管理用户对系统资源的访问。访问控制是国际标准ISO7498-2中的五项安全服务之一&…