0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

讲解MATLAB/Simulink HDL使用入门

OpenFPGA 来源:OpenFPGA 2023-11-06 09:12 次阅读

MATLAB / Simulink HDL 快速入门

我们将使用实例讲解MATLAB / Simulink HDL 使用入门。

4a9a6a26-7c3c-11ee-939d-92fbcf53809c.jpg

开始这个项目,首先需要创建一个包含 Stateflow 的新 Simulink 。只需单击画布中的任意位置并开始输入 Stateflow。

4aaddcdc-7c3c-11ee-939d-92fbcf53809c.png

此时应该能在画布上看到 Stateflow 图标。双击图标进行编辑。

4ae653a0-7c3c-11ee-939d-92fbcf53809c.png

进入图表编辑器后,可以添加状态以及状态之间的转换。开始,我们创建两种状态并将它们命名为“idle”和“LED”。它们之间的转换还没有任何条件。

4afbf7e6-7c3c-11ee-939d-92fbcf53809c.png

要添加状态转换条件,可以双击转换并输入所需的条件。

4b0c76ca-7c3c-11ee-939d-92fbcf53809c.png

当然,状态机可以具有 Mealey 和 Moore 输出,这些输出作为当前状态 (Moore) 或当前状态和输入 (Mealey) 的函数出现。在本例中,将 LED 输出声明为 Moore 输出,并在每个状态下声明。

4b161fd6-7c3c-11ee-939d-92fbcf53809c.png

最终的结果如下所示。

4b429e6c-7c3c-11ee-939d-92fbcf53809c.png

使用模型浏览器,我们可以定义状态机的输入和输出。对于输入,我们将它们保留为与 Simulink 相同的类型,但需要定义输出。由于 LED 需要三位,因此我们使用类型 fixdt(0,3,0)。这意味着向量是三位宽、无符号的,并且没有数字的小数元素。

4b4ff90e-7c3c-11ee-939d-92fbcf53809c.png

此外,在模型资源管理器中选中“初始化时执行(输入)图表”选项。

4b57c77e-7c3c-11ee-939d-92fbcf53809c.png

导航到图表上方的画布。这里我们需要添加块的 IO,我们还将添加延迟。在画布中,开始输入输入或输出以获取所需的端口

4b702242-7c3c-11ee-939d-92fbcf53809c.png

还可以通过双击输入和输出来命名端口,将其设置为正确的类型。

4b829d14-7c3c-11ee-939d-92fbcf53809c.png

将 sw_in 设置为与之前声明的输出类型相同的 fixdt(0,3,0)。我们使用延迟来添加寄存器。要添加额外的延迟,只需在画布中键入即可。

4ba4be26-7c3c-11ee-939d-92fbcf53809c.png

要更改延迟的长度,双击延迟并将其更改为延迟 1。

4bb35742-7c3c-11ee-939d-92fbcf53809c.png

下图显示了完整的图表。

4bd8a128-7c3c-11ee-939d-92fbcf53809c.png

现在我们可以将其生成 RTL,但首先我们将为它创建一个测试平台。选择画布上的所有元素,右键单击它,然后选择从选择创建子系统。

4be30b86-7c3c-11ee-939d-92fbcf53809c.png

添加阶跃函数和常数,设置子系统模块中使用的模块类型,并确保将离散采样的采样时间设置为 -1。

4bedd80e-7c3c-11ee-939d-92fbcf53809c.png

右键单击感兴趣的信号并选择开始记录所选信号。

4c065168-7c3c-11ee-939d-92fbcf53809c.png

打开模型资源管理器并将模型设置为具有固定步长的计时器的离散时间。

4c1bc020-7c3c-11ee-939d-92fbcf53809c.png

运行模拟并打开数据检查器。应该能够看到 SW_ENB 被置位,并且 LED 输出在下一个时钟后变高。

4c406cc2-7c3c-11ee-939d-92fbcf53809c.png

现在我们可以创建 HDL 并将其导出到 Vivado 中使用。我们可以通过右键单击子系统并选择为子系统生成 HDL 来完成此操作。

4c584ce8-7c3c-11ee-939d-92fbcf53809c.png

如果要更改任何生成的 HDL 代码格式(即删除时钟启用),需要从 HDL 代码生成选项卡中选择全局设置选项。

4c8e4852-7c3c-11ee-939d-92fbcf53809c.png

生成代码后,将在生成代码的 MATLAB 窗口中看到一条消息。

4c9af390-7c3c-11ee-939d-92fbcf53809c.png

然后可以将该 HDL 导入到 Vivado 项目中。生成的代码本身实际上是可读的,并且取决于我们对 Simulink 图的注释程度。例如,我可以命名状态图,这将反映在case语句名称中。

生成三个 VHDL 文件:包含声明的包、实现状态机的实际源代码以及顶级文件。

在 Vivado 中进行综合,最终设计需要三个触发器和两个 LUT。

4ca575cc-7c3c-11ee-939d-92fbcf53809c.png

当然,这是一个简单的示例,但能够学习流程,以便可以将它用于更复杂的应用程序。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    242

    文章

    23252

    浏览量

    660545
  • matlab
    +关注

    关注

    185

    文章

    2974

    浏览量

    230378
  • HDL
    HDL
    +关注

    关注

    8

    文章

    327

    浏览量

    47374
  • 文件
    +关注

    关注

    1

    文章

    565

    浏览量

    24727
  • Simulink
    +关注

    关注

    22

    文章

    533

    浏览量

    62377

原文标题:MATLAB / Simulink HDL 快速入门

文章出处:【微信号:Open_FPGA,微信公众号:OpenFPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    专家支招:使用MATLABSimulink算法创建FPGA原型

    本文将介绍使用MATLABSimulink创建FPGA原型的最佳方法。这些最佳方法包括:在设计过程初期分析定点量化的效应并优化字长,产生更小、更高效的实现方案;利用自动HDL代码生成功能,
    发表于 01-28 11:08 1.7w次阅读
    专家支招:使用<b class='flag-5'>MATLAB</b>和<b class='flag-5'>Simulink</b>算法创建FPGA原型

    使用MATLAB SimulinkHDL编码器创建自定义IP--AWB

    自动白平衡模块的设计是使用 HDL Coder 在 MATLABSimulink 中创建的。HDL Coder能够生成 HDL 文件,
    的头像 发表于 11-13 09:27 1152次阅读
    使用<b class='flag-5'>MATLAB</b> <b class='flag-5'>Simulink</b>和<b class='flag-5'>HDL</b>编码器创建自定义IP--AWB

    初学者的MATLAB_Simulink翻译

    MATLAB是现存最流行的仿真软件。作为控制专业的学生,即使没有用过也应该听过这个名字。这篇文章是为了做一个控制系统的仿真而使用MATLAB/Simulink这个软件的。主要目的是给从来没有使用过
    发表于 07-15 08:55

    电力系统的matlabsimulink仿真和GUI例子讲解

    电力系统的matlabsimulink仿真和GUI例子讲解这是感觉最好的资料
    发表于 06-14 09:02

    什么是MATLAB SIMULINKSimulink有哪些应用实例?

    什么是MATLAB SIMULINKSimulink有哪些应用实例?怎样去设计一种Simulink电力电子控制系统?
    发表于 07-02 06:50

    Simulink软件入门

    基础部分 :Simulink入门视频教程及其参考书籍+基于Simulink代码生成技术视频教程及其参考书籍此部分为Simulink基础入门
    发表于 08-26 10:52

    浅析MATLABSimulink嵌入式视觉应用

    嵌入式视觉是什么?嵌入式视觉是指将图像处理和计算机视觉应用到嵌入式系统。嵌入式视觉开发工作流程的主要环节包括视觉算法的算法设计、系统建模、协作和部署。工程师使用 MATLABSimulink
    发表于 12-04 08:00

    基于MatLab/Simulink的GPS系统仿真

    基于MatLab/Simulink的GPS系统仿真:快速可靠的GPS (全球定位系统)系统仿真可对双频GPS 接收机的设计、接收算法的研究提供有效的帮助。文中详细介绍了在MatLab/Simu
    发表于 02-08 14:55 112次下载

    MathWorks发布在MATLABSimulink中提供

    MathWorks发布在MATLABSimulink中提供高级信号处理的新工具 MathWorks面向使用MATLABSimulink设计高级信号处理和通信系统发布了重要的新功
    发表于 09-17 12:47 547次阅读

    MathWorks推出基于MATLAB生成HDL代码的产品

    MathWorks 近日宣布推出 HDL Coder,该产品 支持MATLAB 自动生成 HDL 代码,允许工程师利用广泛应用的 MATLAB 语言实现 FPGA 和 ASIC 设计。
    发表于 03-07 09:27 2160次阅读
    MathWorks推出基于<b class='flag-5'>MATLAB</b>生成<b class='flag-5'>HDL</b>代码的产品

    Matlab-Simulink教程集合(文档)

    Matlab-Simulink教程集合【文档】,大学学习Matlab基础教材。
    发表于 08-23 16:46 0次下载

    Simulink仿真教程讲解

    学习Matlab的同学可以看看Simulink仿真教程
    发表于 08-31 17:02 0次下载

    MATLAB教程之MATLAB语言的基础知识及入门

    本文档的主要内容详细介绍的是MATLAB教程之MATLAB语言的基础知识及入门主要内容包括了:1.MATLAB的发展历程和影响,2.MATLAB
    发表于 01-04 14:55 0次下载
    <b class='flag-5'>MATLAB</b>教程之<b class='flag-5'>MATLAB</b>语言的基础知识及<b class='flag-5'>入门</b>

    Matlab_Simulink仿真步骤讲解

    本书重点介绍了MATLAB的矩阵运算、符号运算、图形功能、控制系统分析与设计、SimuLink仿真等方面的内容。
    发表于 04-20 16:09 64次下载

    Verilog HDL入门教程-Verilog HDL的基本语法

    Verilog HDL入门教程-Verilog HDL的基本语法
    发表于 01-07 09:23 179次下载