Matlab Simulink HDL Coder开发流程(一)— 创建HDL兼容的Simulink模型

创建HDL兼容的Simulink模型

  • 一、使用Balnk DUT模板
  • 二、从HDL Coder库中选择模块
  • 三、为DUT开发算法/功能
  • 四、为设计创建Testbench
  • 五、仿真验证设计功能
  • 六、Simulink模型生成HDL代码

这个例子说明了如何创建一个用于生成HDL代码的Simulink模型。要创建兼容HDL代码生成的MATLAB算法,请参见“Guidelines for Writing MATLAB Code to Generate Efficient HDL and HLS Code”。

该模型是一种简单的计数器算法,它向上计数,并在达到您指定的上限后包装回零。

一、使用Balnk DUT模板

要创建一个与HDL兼容的Simulink模型,请使用Blank DUT模板。使用hdlsetup函数对模板进行预配置,以便生成HDL代码。
1、在MATLAB工具栏上,单击Simulink按钮。
2、在Simulink开始页中,导航到HDL Coder部分,然后选择Blank DUT模板。
3、用文件名hdlcoder_simple_up_counter.slx保存模型到可写的工作文件夹中。
在这里插入图片描述
Blank DUT模板有一个HDL_DUT子系统,对应于为其生成HDL代码的测试下设计(DUT)。为了验证DUT的功能,该模板包含一个位于HDL_DUT子系统之外的Create HDL-Compatible Simulink Model 3-5测试台,该测试台为DUT提供输入并记录输出值。

二、从HDL Coder库中选择模块

要设计计数器算法,请使用HDL Coder库中的块。这个库中的块是为生成HDL代码而预先配置的。要过滤Simulink库浏览器以显示支持HDL代码生成的块库:
1、在Apps选项卡上,选择HDL Coder。
2、从HDL Code选项卡中选择HDL Block Properties>Open HDL Block Library。
或者,在命令行输入hdllib:

hdllib

在这里插入图片描述
HDL Coder库中的块可与Simulink一起使用。如果没有HDL Coder,则可以在模型中对块进行仿真,但不能生成HDL代码。
你可以在这些块库中找到额外的支持HDL的块:

  • DSP System T oolbox HDL Support
  • Communications T oolbox HDL Support
  • Vision HDL T oolbox
  • Wireless HDL T oolbox

若要将库浏览器恢复为默认视图,请在库浏览器中单击返回按钮。或者,在命令行输入:

hdllib('off')

三、为DUT开发算法/功能

1、双击HDL_DUT子系统。将块从HDL Coder库拖到模型中。
该表列出了要添加到模型中用于设计计数器的块。要了解块的作用并指定其块参数,请双击该块。
在这里插入图片描述
2、将输入端口In1和In2分别重命名为count_threshold和Enable。将模块放入模型中并连接它们。
在这里插入图片描述
Enable信号指定计数器是否从前一个值向上计数。当Enable信号为逻辑高时,计数器从0开始计数到count_threshold值。当out的值等于count_threshold值时,计数器将返回零,并且再次开始计数。当使能信号变为逻辑低时,计数器保持先前的值。

四、为设计创建Testbench

导航到模型的顶层并更改输入设置。

  • 常量块输入到count_threshold:该输入指示计数器计数的最大值。这个例子展示了如何设计一个4位向上计数器。设置常量值为15(2^4 - 1),并设置输出数据类型为uint8。然后,这个常量块的输出数据类型与HDL_DUT子系统中常量块的输出数据类型相匹配。
  • 自由计数器模块输入到 Enable:移除自由计数器模块。将此块替换为值为1的常量块,输出数据类型设置为布尔,采样时间设置为1。
    在这里插入图片描述
    前一节展示了hdlcoder_simple_up_counter。您按照上面描述的步骤创建的SLX模型。要在MATLAB中打开模型,请单击“打开模型”按钮。

五、仿真验证设计功能

将模型的停止时间设置为50。通过单击仿真按钮模拟您的模型。要查看模拟结果,请打开模型顶层的Scope块。
仿真结果显示使能信号产生一个常数1。输出信号从0计数到15,包装回0,然后再次计数。
在这里插入图片描述

六、Simulink模型生成HDL代码

在生成HDL代码之前,您可以验证模型设置是否与HDL代码生成兼容。本例中使用的计数器模型与HDL代码生成兼容。要验证和更新HDL兼容性的模型,请使用HDL Code Advisor。

本章节内容在下篇文章中进行详细说明:Matlab Simulink HDL Coder开发流程(二)—从Simulink模型生成HDL代码

参考文档:Matlab Simulink HDL Coder官方使用文档说明

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

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

相关文章

【VUE3】【Naive UI】<NCard> 标签

【Vue3】【Naive UI】 标签 title 属性bordered 属性header-style 和 body-style 属性footer 属性actions 属性hoverable 属性loading 属性size 属性type 属性cover 和 avatar 属性description 属性style 属性 【VUE3】【Naive UI】<NCard> 标签 【VUE3】…

Python小白语法基础20(模块与包)

0) 参考文章 python的模块(module)、包(package)及pip_python package-CSDN博客Python之函数、模块、包库_python函数、模块和包-CSDN博客Python函数模块自定义封装及模块嵌套导入(手把手教程)_python如何封装一个模块-CSDN博客 1) 模块与包说明 软件…

选择排序之大根堆

大根堆:树的根节点大于左右子树的结点值,这样就能保证每次从树根取的是最大值 灵魂在于HeadAdjust函数,以某节点为树根通过下落调整为大根堆, 建树思想 就是,从最后一个非终端结点开始调整以该结点为根的子树&#x…

springboot/ssm旅游民宿信息管理系统Java旅游景点管理系统web旅游源码

springboot/ssm旅游民宿信息管理系统Java旅游景点管理系统web旅游源码 基于springboot(可改ssm)vue项目 开发语言:Java 框架:springboot/可改ssm vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库&…

mfc110u.dll是什么意思,mfc110u.dll丢失解决方法大全详解

mfc110u.dll是Microsoft Foundation Classes (MFC)库的一个特定版本(版本11.0)的Unicode动态链接库文件。MFC是Microsoft为C开发者设计的一个应用程序框架,主要用于简化Windows应用程序的开发工作。这个框架封装了很多Windows API函数&#x…

smb cifs samba smbpasswd 笔记241127

smb cifs samba smbpasswd 笔记241127 SMB、CIFS和Samba都是与文件共享相关的技术,它们在不同的层面上发挥着作用。以下是关于SMB、CIFS和Samba的详细解释: SMB(Server Message Block) 定义:SMB(Server …

debian 11 虚拟机环境搭建过坑记录

目录 安装过程系统配置修改 sudoers 文件网络配置换源安装桌面mount nfs 挂载安装复制功能tab 无法补全其他安装 软件配置eclipse 配置git 配置老虚拟机硬盘挂载 参考 原来去 debian 官网下载了一个最新的 debian 12,安装后出现包依赖问题,搞了半天&…

JAVAWeb之CSS学习

前引 CSS,层叠样式表(Cascading Style Sheets),能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有网页对象和模型样式编辑的能力,简单来说,美化页面。…

全排列内存对齐

46. 全排列 class Solution { public:vector<int> vis;//标记数组vector<int> mid;//中间数组vector<vector<int>> ans;//答案二维数组//dfs搜索和回溯求全排列void dfs(vector<int>& nums,int depth) {if (depth nums.size()) {ans.push_…

从单机缓存到分布式缓存那些事

作者&#xff1a;秦怀 1 缓存前世今生 1.1 故事从硬件开始 Cache 一词来源于 1967 年的一篇电子工程期刊论文。其作者将法语词“cache”赋予“safekeeping storage”的涵义&#xff0c;用于电脑工程领域。当时没有 Cache&#xff0c;CPU 和内存都很慢&#xff0c;CPU 直接访…

macos下brew安装redis

首先确保已安装brew&#xff0c;接下来搜索资源&#xff0c;在终端输入如下命令&#xff1a; brew search redis 演示如下&#xff1a; 如上看到有redis资源&#xff0c;下面进行安装&#xff0c;执行下面的命令&#xff1a; brew install redis 演示效果如下&#xff1a; …

element ui select绑定的值是对象的属性时,显示异常.

需要声明 value-key"value",如果还不行可能是数据类型不一致数字0和字符串0是不一致的. el-select v-model"value" clearable placeholder"Select" value-key"value" style"width: 240px"><!-- <el-option v-for&…

黑马程序员Java笔记整理(day06)

1.继承的特点 2.继承的权限 3. 4.小结 5.方法重写 6.子类构造器 7.兄弟构造器 8.多态 9.小结

IDEA Mac快捷键(自查询使用)

Editing&#xff08;编辑&#xff09; Control Space 基本的代码补全&#xff08;补全任何类、方法、变量&#xff09;Control Shift Space 智能代码补全&#xff08;过滤器方法列表和变量的预期类型&#xff09;Command Shift Enter 自动结束代码&#xff0c;行末自动添…

区块链三级考试题整理

6.以下关于哈希查找的叙述中&#xff0c;正确的是( )。 A. 哈希函数应尽可能复杂些&#xff0c;以消除冲突 B. 构造哈希函数时应尽量使关键字的所有组成部分都能起作用 C. 进行哈希查找时&#xff0c;不在需要与查找表中的元素进行比较 D. 在哈希表中只能添加元素不能删除元…

VPC9527同步整流控制器,相对最大电压检测与强力自供电,与MP6908完全PIN TO PIN

VPC9527 是一款高性能的同步整流控制器,它兼容 CCM 和 DCM 两种模式,最大工作频率高达 700kHz;可 通过 SEL 引脚的逻辑电压来选择 400nS 或 800nS 两个关断检测的屏蔽时间;可通过 VLC 引脚来调整限压导通的 参数,以便与所选同步整流管的参数相匹配,获得适应的最优性能;它…

数据类型及相互转换

数据类型概述 在编程中&#xff0c;数据类型是用于定义变量可以存储的数据种类。不同的数据类型决定了数据的存储方式、内存占用以及可以进行的操作。常见的数据类型包括整型&#xff08;int&#xff09;、浮点型&#xff08;float&#xff09;、布尔型&#xff08;boolean&am…

万字长文解读深度学习——多模态模型BLIP2

&#x1f33a;历史文章列表&#x1f33a; 深度学习——优化算法、激活函数、归一化、正则化 深度学习——权重初始化、评估指标、梯度消失和梯度爆炸 深度学习——前向传播与反向传播、神经网络&#xff08;前馈神经网络与反馈神经网络&#xff09;、常见算法概要汇总 万字长…

【Android】ARouter——强大的路由框架

引言 在我们使用组件化的时候&#xff0c;活动并不在一个模块当中&#xff0c;但是毕竟是一个程序我们需要在不同的模块之间进行跳转&#xff0c;我们会首先想到在需要进行通信的模块下都添加相应的依赖就可以解决这个问题&#xff0c;但这样无疑增加了各个组件之间的耦合性。…

docker中redis查看key、删除key

查看docker启动的进程 docker ps这个命令会列出所有正在运行的容器&#xff0c;包括容器的 ID、镜像名称、创建时间、状态、端口映射和名称 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1a2b3c4d5e6…