Matlab Simulink HDL Coder开发流程(三)— 验证从Simulink模型生成的HDL代码

验证从Simulink模型生成的HDL代码

  • 一、什么是HDL Test Bench(测试台)
  • 二、简单的计数器模型
  • 三、验证方法
  • 四、生成HDL Test Bench
    • 生成VHDL Test Bench
    • 生成Verilog Test Bench代码
  • 五、查看HDL Test Bench文件
  • 六、运行仿真和验证生成的HDL代码
  • 七、在目标设备上部署生成的HDL代码

这个例子展示了如何生成一个HDL Testbench,并验证一个简单计数器模型生成的代码。要为该模型生成HDL代码,请参考本系列上一篇文章:Matlab Simulink HDL Coder开发流程(二)—从Simulink模型生成HDL代码”。

如果您没有为这个模型生成HDL代码,那么HDL Coder将在生成Testbench之前运行代码生成。

一、什么是HDL Test Bench(测试台)

为了验证DUT的HDL代码的功能,生成一个HDL测试台(测试台)。测试台包括:

  • 由连接到被测实体的信号源产生的激励数据。
  • 被测实体生成的输出数据。在测试台运行期间,将此数据与VHDL模型的输出进行比较以进行验证。
  • 时钟、复位和时钟使能输入能够驱动被测实体。
  • 被测实体的组件实例化。
  • 驱动被测实体的代码,并将其输出与预期数据进行比较。

您可以使用ModelSim模拟器模拟生成的测试台架和脚本文件。

二、简单的计数器模型

打开这个模型可以看到一个简单的计数器。该模型从零开始计数到一个阈值,然后返回到零。阈值设置为15。要更改阈值,请更改count_threshold端口的输入值。Enable信号指定计数器是向上计数还是保持先前的值。值为1表示计数器持续向上计数。
在这里插入图片描述

三、验证方法

如果安装了HDL验证程序,也可以使用这些方法验证生成的HDL代码。
在这里插入图片描述

四、生成HDL Test Bench

生成VHDL Test Bench

生成VHDL、Verilog或SystemVerilog测试台架代码。默认情况下,相对于当前文件夹,HDL代码和测试台代码被写入相同的目标文件夹hdlsrc。

对于计数器模型,HDL_DUT子系统就是DUT。要生成测试台架,请选择此子系统。
1、在Apps选项卡中,选择HDL Coder。
2、选择DUT子系统HDL_DUT,并确保此名称出现在HDL Code选项卡上的Code for选项中。要记住选择,请固定此选项。单击Generate T estbench。

生成Verilog Test Bench代码

要为计数器模型生成Verilog测试台架代码:
1、在“HDL Code”选项卡中,单击“设置”。
2、在“HDL Code Generation”区域框的“Language”中选择“Verilog”。
3、在“HDLCode Generation > Test Bench”窗格中,单击“Generate Test Bench”。
在这里插入图片描述
在这里插入图片描述
HDL Coder对模型进行编译并生成测试台架。
测试台架生成完成并显示此消息。生成的文件出现在hdlsrc文件夹中
在这里插入图片描述

五、查看HDL Test Bench文件

对于计数器模型,hdlsrc文件夹包含这些测试台架文件:

  • HDL_DUT_tb.vhd:VHDL测试台代码包含生成的测试和输出数据。如果您生成了Verilog或SystemVerilog测试台架代码,生成的文件是HDL_DUT_tb.v或HDL_DUT_tb.sv。
  • HDL_DUT_tb_pkg.vhd:包文件为VHDL测试台代码。如果生成SystemVerilog测试台架代码,生成的文件是HDL_DUT_tb_pkg.sv。如果指定Verilog作为目标语言,则不会生成此文件。
  • HDL_DUT_tb_compile.do:ModelSim编译脚本(vcom命令)。该脚本编译并加载要测试的实体(HDL_DUT_tb.vhd)和测试台架代码(HDL_DUT_tb.vhd)。
  • HDL_DUT_tb_sim.do:ModelSim脚本初始化模拟器,设置波窗口信号显示,并运行仿真。

要在MATLAB编辑器中查看生成的测试台架代码,在当前文件夹中双击HDL_DUT_tb.vhd或HDL_DUT_tb.v。

六、运行仿真和验证生成的HDL代码

为了验证仿真结果,您可以使用Siemens ModelSim模拟器。您必须已经安装了Siemens ModelSim。
直接打开ModelSim或者在Matlab中打开模拟器,使用vsim (HDL验证器)功能。这个命令显示了如何通过指定可执行文件的路径来打开模拟器,在Matlab命令窗口中执行:

vsim('vsimdir','vsim.exe可执行文件所在路径')

在这里插入图片描述
要编译和运行模拟生成的模型和测试台代码,请使用HDL Coder生成的脚本。对于计数器模型,运行这些命令来编译和模拟为HDL_DUT子系统生成的测试台。
1、打开ModelSim软件并导航到包含生成的代码文件和脚本的文件夹。
在这里插入图片描述
2、使用生成的编译脚本来编译和加载生成的模型和文本工作台代码。对于HDL_DUT子系统,运行此命令编译生成的代码。
在这里插入图片描述
3、使用生成的仿真脚本执行仿真。您可以忽略警告消息。对于HDL_DUT子系统,运行此命令模拟生成的代码。
在这里插入图片描述
模拟器优化您的设计并在波窗口中显示结果。如果没有看到模拟结果,请打开波窗口。仿真脚本显示模型中的输入和输出,包括波窗口中的时钟、复位和时钟使能信号。
在这里插入图片描述
现在可以查看信号并验证仿真结果是否与原始设计的功能相匹配。验证完成后,关闭Siemens ModelSim模拟器,然后关闭MATLAB Editor中打开的文件。

七、在目标设备上部署生成的HDL代码

要在目标FPGA设备上部署生成的代码,请使用Simulink HDL Workflow Advisor。
关于该章节详细内容在本系列第四篇文章进行详细说明:Matlab Simulink HDL Coder开发流程(四)— 基于Simulink模型的HDL代码生成和FPGA综合

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

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

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

相关文章

设计模式:11、迭代器模式(游标)

目录 0、定义 1、迭代器模式的四种角色 2、迭代器模式的UML类图 3、示例代码 4、迭代器的next()方法与集合的get(int index)方法的效率对比(LinkedList为例) 0、定义 提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象…

基于SpringBoot的“招聘信息管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“招聘信息管理系统”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 系统首页界面图 企业招聘界面…

Linux高阶——1123—服务器基础服务器设备服务器基础能力

目录 1、服务器基础 1、服务器基本概述 2、服务器设计之初解决的问题 网络穿透 网络数据设备间的收发 3、服务器的类型C/S、B/S 2、服务器设备 将自己的服务器软件部署上线 3、代理服务器负载均衡,以及地址绑定方式 4、服务器的基础能力 1、服务器基础 1…

探索 Python 任务自动化的新境界:Invoke 库揭秘

文章目录 探索 Python 任务自动化的新境界:Invoke 库揭秘背景:为何选择 Invoke?什么是 Invoke?如何安装 Invoke?5个简单的库函数使用方法1. 定义任务2. 带参数的任务3. 运行 Shell 命令4. 任务参数化5. 列出任务 场景应…

docker部署nginx,并配置SSL证书

、拉取nginx镜像 docker pull nginx:latest 在此过程中会遇到网络的问题&#xff0c;导致镜像无法下载&#xff0c;这时候需要在服务器中配置下国内的镜像地址。下面包含近期最新的国内镜像&#xff0c;截至2024年11月27日&#xff1a; "https://<你的阿里云账号ID&…

使用NAS开启无纸化办公,Docker部署开源文档管理系统『Paperless-ngx』

使用NAS开启无纸化办公&#xff0c;Docker部署开源文档管理系统『Paperless-ngx』 哈喽小伙伴们好&#xff0c;我是Stark-C~ 对于文案类的办公场景来说&#xff0c;手头堆放最多的可能就是各种文档文件&#xff0c;以及各种用过的打印废纸。 这么多年来&#xff0c;不管是领…

ES 基本使用与二次封装

概述 基本了解 Elasticsearch 是一个开源的分布式搜索和分析引擎&#xff0c;基于 Apache Lucene 构建。它提供了对海量数据的快速全文搜索、结构化搜索和分析功能&#xff0c;是目前流行的大数据处理工具之一。主要特点即高效搜索、分布式存储、拓展性强 核心功能 全文搜索:…

矩阵的拼接

矩阵的拼接分为横向拼接和纵向拼接 注意&#xff1a;横向拼接要求两矩阵行数相同&#xff0c;纵向拼接要求两矩阵列数相同 h o r z c a t horzcat horzcat和 v e r t c a t vertcat vertcat函数 h o r z c a t ( a , b ) horzcat(a,b) horzcat(a,b)将 a a a和 b b b横向拼接&a…

【Qt】重写QComboBox下拉展示多列数据

需求 点击QComboBox时&#xff0c;下拉列表以多行多列的表格展示出来。 实现 直接上代码&#xff1a; #include <QComboBox> #include <QTableWidget> #include <QVBoxLayout> #include <QWidget> #include <QEvent> #include <QMouseEve…

七牛云AIGC内容安全方案助力企业合规创新

随着人工智能生成内容(AIGC)技术的飞速发展,内容审核的难度也随之急剧上升。在传统审核场景中,涉及色情、政治、恐怖主义等内容的标准相对清晰明确,但在AIGC的应用场景中,这些界限变得模糊且难以界定。用户可能通过交互性引导AI生成违规内容,为审核工作带来了前所未有的不可预测…

告别 Kafka,拥抱 Databend:构建高效低成本的用户行为分析体系

用户行为数据埋点指标是数据仓库中不可或缺的重要数据源之一&#xff0c;同时也是企业最宝贵的资产之一。通常情况下&#xff0c;用户行为数据分析包含两大数据源&#xff1a;用户行为分析日志和上游关系型数据库&#xff08;如 MySQL&#xff09;。基于这些数据&#xff0c;企…

数据结构 (8)线性表的应用——一元多项式的表示及应用

一、一元多项式的定义 一元多项式是代数学研究的基本对象之一&#xff0c;可以表示为&#xff1a; P_n(x) p_0 p_1x p_2xn 其中&#xff0c;p_0, p_1, ..., p_n 是数域 F 中的数&#xff0c;n 是非负整数&#xff0c;x 是变量。 二、一元多项式的线性表表示 在计算机中&…

如何安全高效地打开和管理动态链接库(DLL)?系统提示dll丢失问题的多种有效修复指南

动态链接库&#xff08;DLL&#xff09;文件是Windows操作系统中非常重要的一部分&#xff0c;它们包含了程序运行所需的代码和数据。当系统提示DLL文件丢失时&#xff0c;可能会导致应用程序无法正常运行。以下是一些安全高效地打开和管理DLL文件以及修复DLL丢失问题的方法&am…

基于微信小程序的平价药房管理系统+LW参考示例

1.项目介绍 系统角色&#xff1a;管理员、医生、普通用户功能模块&#xff1a;用户管理、医生管理、药品分类管理、药品信息管理、在线问诊管理、生活常识管理、日常提醒管理、过期处理、订单管理等技术选型&#xff1a;SpringBoot&#xff0c;Vue&#xff0c;uniapp等测试环境…

鸿蒙ArkUI-X已更新适配API13啦

ArkUI-X 5.0.1 Release版配套OpenHarmony 5.0.1 Rlease&#xff0c;API 13&#xff0c;新增适配部分API 13接口支持跨平台&#xff1b;框架能力进一步完善&#xff0c;支持Android应用非压缩模式&#xff0c;支持Android Fragment对接跨平台。ACE Tools工具易用性提升&#xff…

《生成式 AI》课程 第3講 CODE TASK执行文章摘要的机器人

课程 《生成式 AI》课程 第3講&#xff1a;訓練不了人工智慧嗎&#xff1f;你可以訓練你自己-CSDN博客 任务1:总结 1.我们希望你创建一个可以执行文章摘要的机器人。 2.设计一个提示符&#xff0c;使语言模型能够对文章进行总结。 model: gpt-4o-mini,#gpt-3.5-turbo, import…

【人工智能】深入解析GPT、BERT与Transformer模型|从原理到应用的完整教程

在当今人工智能迅猛发展的时代&#xff0c;自然语言处理&#xff08;NLP&#xff09;领域涌现出许多强大的模型&#xff0c;其中GPT、BERT与Transformer无疑是最受关注的三大巨头。这些模型不仅在学术界引起了广泛讨论&#xff0c;也在工业界得到了广泛应用。那么&#xff0c;G…

Python开发环境搭建+conda管理环境

下载Miniconda 推荐从清华镜像下载安装包 Index of /anaconda/miniconda/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 打开网页后&#xff0c;下拉到最后找到Miniconda3-latest前缀的文件&#xff0c;或者网页中直接搜索Miniconda3-latest&#xff0c;都可以找…

python控制鼠标,键盘,adb

python控制鼠标&#xff0c;键盘&#xff0c;adb 听说某系因为奖学金互相举报&#xff0c;好像拿不到要命一样。不禁想到几天前老墨偷走丁胖子的狗&#xff0c;被丁胖子逮到。他面对警察的问询面不改色坚持自我&#xff0c;反而是怒气冲冲的丁胖子被警察认为是偷狗贼。我觉得这…

使用 exe4j 将 Spring Boot 项目打包为 EXE 可执行文件

使用 exe4j 将 Spring Boot 项目打包为 EXE 可执行文件 文章目录 使用 exe4j 将 Spring Boot 项目打包为 EXE 可执行文件什么是 exe4j准备工作打包 Spring Boot 项目为 EXE 文件1.启动 exe4j2. 选择项目类型3. 配置项目名称和输出目录4. 配置项目类型或可执行文件名称5. java配…