从零开始利用MATLAB进行FPGA设计(二)用于HDL代码生成的Simulink模型并用于流水线设计

文章灵感来源于MATLAB官方免费教程:HDL Coder Self-Guided Tutorial

考虑到MATLAB官网的英文看着慢,再加上视频讲解老印浓浓的咖喱味,我决定记录利用MATLAB&Simulink&SystemGenerator进行FPGA数字信号处理的学习过程。

往期回顾:

从零开始利用MATLAB进行FPGA设计(一):建立脉冲检测模型的Simulink模型1

从零开始利用MATLAB进行FPGA设计(一):建立脉冲检测模型的Simulink模型2

1.HDLSETUP

在MATLAB命令行中将上一期中制作好的Simulink文件执行:

open hdlsetup('文件名')

这个命令用来设置用于生成HDL代码的模型参数。

其中一个参数是SampleTimeColoes,即用不同颜色表示不同的采样时间,对应FPGA中的时钟速度。

在本例中,所有位置的采样速度相同,所以显示为相同颜色。

2.插入pipiline

FPGA的流水线设计(pipline design)是FPGA设计中的关键,流水线设计就是将组合逻辑系统地分割,并在各个部分之间插入寄存器,暂存中间数据的方法,目的是将一个大操作分解成若干小操作,各小操作并行执行,提高效率,总的来说是一种以面积换取时间的方法。

2.1转置结构的FIR滤波器

首先将滤波器结构改为direct form transposed(转置结构):

转置结构的FIR滤波器于直接型相比,最大的不同是滤波器系数的顺序是相反的,在转置形式中,输入同时到达所有乘法器,而直接型输入在不同周期到达乘法器:

转置型FIR滤波器
直接型FIR滤波器

将pipeline添加到直接型FIR会导致输入到输出的延迟,而转置结构不会;但转置结构同时将输入广播到所有乘法器,在输入存在大量抽头是,必须考虑输入的扇出。考虑到寄存器的数量和延迟,转置结构是首选的实现方式。

2.2编辑块属性

在编辑块属性中添加输入/输出pipeline寄存器:

将AdaptivePipelining设为on可以自动为某些运算插入pipeline寄存器:

2.3流水线设计仿真

通过减少pipeline之间的逻辑运算可以提高时钟速度。在生成HDL代码时,可以查看插入到各个模块中的寄存器,寄存器会影响模型的整体仿真效果。可以通过手动插入延迟达到这样的效果。

为滤波器、积分器和峰值提取定位模块建立一个定成子系统:

在Simulink模型中添加数据有效性检查:

size(RxSignal) 返回的是 RxSignal 的大小(即维度),然后 true(size(RxSignal)) 会创建一个与 RxSignal 相同大小的逻辑数组,其中每个元素都为 true,创建一个与 RxSignal 同样大小的逻辑掩码。

Run Pulse detector test bench (step 2),可以看到结果与黄金参考相匹配:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言柔性数组详解:让你的程序更灵活

柔性数组 一、前言二、柔性数组的用法三、柔性数组的内存分布四、柔性数组的优势五、总结 一、前言 仔细观察下面的代码,有没有看出哪里不对劲? struct S {int i;double d;char c;int arr[]; };还有另外一种写法: struct S {int i;double …

全球首个 AI 软件工程师 Devin它来了!

如果您想每日获取AI最新新闻,欢迎关注文章底部的公众号 Cognition AI 发布 AI 软件工程师 Devin 初创公司 Cognition 近日发布公告,宣布推出全球首个 AI 软件工程师 Devin,并号称会彻底改变人类构建软件的方式。Devin 擅长长期推理能力,可以自主规划和完成软件项目,并在此…

国产开源数据库厂商

这是ren_dong的第36篇原创 前言 开源数据库即免费的社区数据库,其源代码可供公众使用,并且可以在其原始设计中进行修改或使用。开源数据库的流行示例包括 MySQL,PostgreSQL和MongoDB。 image 开源数据库用户托管数据库部署的方式有 内部部署、…

mysql查看以及建立索引

现在mysql中有一张表journal_update_logs,数据量比较大,有3000多万条数据,现在查询比较慢,需要建立索引。 第一步,查看该表的索引: SHOW INDEX FROM journal_update_logs; 每张表都会有原始的主键索引PRIM…

傅立叶之美:深入研究傅里叶分析背后的原理和数学

一、说明 T傅里叶级数及其伴随的推导是数学在现实世界中最迷人的应用之一。我一直主张通过理解数学来理解我们周围的世界。从使用线性代数设计神经网络,从混沌理论理解太阳系,到弦理论理解宇宙的基本组成部分,数学无处不在。 当然&#xff0c…

叶顺舟:手机SoC音频趋势洞察与端侧AI技术探讨 | 演讲嘉宾公布

后续将陆续揭秘更多演讲嘉宾! 请持续关注! 2024中国国际音频产业大会(GAS)将于2024年3.27 - 28日在上海张江科学会堂举办。大会将以“音无界,未来(Audio, Future)”为主题。大会由中国电子音响行业协会、上…

报告合集 |2023年,5份必读的“数字孪生”行业报告合集(文末下载)

数字孪生正在快速改变多个行业的面貌。它通过创建物理世界对象的虚拟复制,使得数据分析和系统优化能够在数字空间中实现,正在制造业、城市规划、医疗保健等国家支柱行业展现出巨大的变革力量,为行业的智能决策和预测提供了强大的支撑。 作为…

mysql重构

力扣题目链接 列转行 SELECT product_id, store1 store, store1 price FROM products WHERE store1 IS NOT NULL UNION SELECT product_id, store2 store, store2 price FROM products WHERE store2 IS NOT NULL UNION SELECT product_id, store3 store, store3 price FROM p…

基于大数据与时间序列预测的的书籍数据分析(内含spark+hive+mysql+kettle+echart+tensorflow)

目录 一,绪论 1、项目背景: 2、目标: 3、用户群体: 二.相关开发技术介绍 (一)后端相关技术 1.sparkSQL简介 2.kettle简介 3.tensorflow简介 (二)前端相关技术 1.HTML简介…

【Python】新手入门学习:详细介绍依赖倒置原则(DIP)及其作用、代码示例

【Python】新手入门学习:详细介绍依赖倒置原则(DIP)及其作用、代码示例 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、Py…

MySQL索引原理及慢查询优化

背景 MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上…

【话题】2024年AI辅助研发趋势,有那些应用领域

大家好,我是全栈小5,欢迎阅读文章! 此篇是【话题达人】系列文章,这一次的话题是《2024年AI辅助研发趋势》 目录 背景概念实践医药领域汽车设计领域展望未来文章推荐 背景 随着人工智能技术的持续发展与突破,2024年AI辅…

使用CryptoJs对开发中的参数进行加密

场景描述 在开发程序中,我们无时无刻不在接受第三方的一些token,比如我们申请了地图软件的一些定位、导航功能,第三方会给予我们appid还有app secret作为访问他们服务的凭证,大部分时候我们会将求这些登陆凭证放在env文件中&…

uniapp发行H5获取当前页面query

阅读uni的文档大致可得通过 onLoad与 onShow()的形参都能获取页面传递的参数,例如在开发时鼠标移动到方法上可以看到此方法的简短介绍 实际这里说的是打开当前页面的参数,在小程序端的时候测试并无问题,但是发行到H5时首页加载会造成参数获取…

怎样基于“用户”思维让内容营销更有效

当下互联网流量见顶,内容已经成为互联网竞争新的制高点,可以说在数字化驱动的新时代下,“内容为王”仍然是真理。然后信息泛滥的时代下,如何让内容营销脱颖而出呢?媒介盒子认为“用户思维”是关键,今天就和…

C/C++中strcpy,strcat,strstr以及strncpy,strncat,strncmp的使用

1、首先我们来介绍strcpy的使用从这个函数的名字来看它应该是属于字符串的拷贝,string copy。 那么这个函数是怎么用的呢?下面我么来介绍她的基本结构。 char * strcpy ( char * destination, const char * source );由上述可知它需要两部分 一个是目标字…

操作系统——进程

1.什么是进程 概念: 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,是系统进行资源分配和调度的一个独立单位。 进程是程序的依次执行 进程是一个程序及其数据在处理机上顺序执行时所发生的活动 进程是程序在一个数据集合上运行的过…

[剪藏] - 由哇哈哈和农夫山泉所想到的

哇哈哈和农夫山泉的缠斗最近冒出来一个有趣的点:营销大于内容的胜利。 具体来说是这样的:农夫山泉很多年前做广告,说纯净水没有矿物质,长期喝是不利于人体健康的。农夫还做了个营销的对比实验,大概是用矿泉水养水仙花&…

CMDB在IT管理中的重要性

Configuration Management Database(CMDB)即配置管理数据库,在当前企业的IT运维管理中扮演着重要的角色。CMDB是一个包含了企业所有设备、软件和服务配置信息的中心数据库,通过有效地管理这些配置数据,能够为企业提供全…

AIX7.2下安装mysql5.1.73数据库

首先需要现在AIX版本的mysql安装包以及相关的依赖包 依赖关系deps文件下载地址: Index of /download/rpmdb/deplists/aix72 对应的rpm包下载地址: Index of /download/everything/RPMS 我们需要下载的mysql安装包主要有 mysql-5.1.73-1.ppc mysql…