HDL coder使用手册

news/2024/9/24 7:03:05/

💡 由于本科毕设女朋友准备使用FPGA完成,因此写这篇文章帮助她快速上手HDL coder的使用,降低前期入门的难度。

支持生成HDL代码的simulink库

2024after4202409211041121.png

名字中含有HDL的库中的模块一般都可以用来生成HDL代码。直接搜索模块名称,比如搜索fir,

2024after4202409211050982.png

可以看到旁边会显示位于哪个库中,模块有可能位于多个库,只要有一个库的名字里面有HDL,就代表这个模块可以用来生成HDL代码。

一些常用操作

创建子系统

将库中的模块拖到主界面组合好后,可能会占据很大的空间,如果工程较大,模块越连越多就特别臃肿,因此当我们完成某个功能以后,就可以将这部分的模块全部选中,此时右下角会出现三个点,将鼠标移到上面后会展开,出现很多不同的功能。下图是一个AM调制的过程,可以看到选中所有相关的模块后点击创建子系统,即可得到右图的子系统。刚生成的子系统的命名为subsystem,可以将命名改为更清晰易懂的名字。

2024after4202409211056583.png

1726887497741.png

观察节点的信号波形

当选中某根连线时,同样会出现三个点,鼠标移动到上面后会展开,选择WiFi形状的选项即可记录该连线上的信号。运行仿真后再次点击WiFi图标即可打开逻辑分析仪,即可查看该连线上的信号。

1726888515922.png

1726889009858.png

逻辑分析仪内部选中某个信号后即可在波形中调节数制、高度等设置。

也可以使用scope模板看节点信号。

频谱分析

使用Spectrum Analyzer模块进行频谱分析。

2024after4202409211127829.png

当样点比较少的时候可以将估计方法改为welch。

信号数据格式显示

2024after4202409211131120.png

可以显示模块输入输出信号的数据类型和小数位数。

采样时间一栏中的时间图例选中以后,会用不同的颜色显示不同采样速率的模块,在多速率系统设计中有很大的用处。

生成HDL代码

前期准备

设置诊断类型

2024after4202409211138607.png

模型设置中选择诊断/采样时间

2024after4202409211139629.png

单任务和多任务数据传输必须设置成错误。

兼容性检测

2024after4202409211145908.png

选择代码生成的目标文件夹,运行兼容性检查器,如果工程没有问题的话会出现如下界面

1726890374067.png

目标平台选择

2024after4202409211148557.png

根据使用的FPGA选择综合工具和FPGA的系列。

模块设置

在要生成代码的子系统上右键,选择HDL模块属性:

2024after4202409211151201.png

可以对流水线、乘法器等参数进行设置

1726890814415.png

如果生成的代码在EDA工具中编译以后无法满足时序约束,可以加输入和输出的流水线

💡 如果模块的输出对前面的模块有反馈信号的话不能添加流水线,详细见
bookmark

[bookmark](https://blog.sawenmoerjie.top/article/ec96aebc-b5a5-4059-bbef-02f0003e7a45)

代码生成

2024after4202409211154140.png

点击为子系统生成HDL代码后会自动进行一次编译,命令行窗口会出现如下信息

1726891451673.png

同时会生成一个report

2024after4202409211206344.png

没有报错的话即可在上面选择的文件夹里面看到生成的Verilog代码文件

2024after4202409211207218.png

将这些文件导入到EDA工具中即可直接例化使用。

💡 所有文件都要导入,不能只导入需要的某个名字的模块!


http://www.ppmy.cn/news/1529703.html

相关文章

662. 二叉树最大宽度 BFS 力扣

662. 二叉树最大宽度 已解答 中等 相关标签 相关企业 给你一棵二叉树的根节点 root ,返回树的 最大宽度 。 树的 最大宽度 是所有层中最大的 宽度 。 每一层的 宽度 被定义为该层最左和最右的非空节点(即,两个端点)之间的长…

vue入门小练习

文章目录 1.案例需求2.编程思路3.案例源码4.小结 1.案例需求 一个简易的计算器,其效果如下: 图片切换,其效果如下: 简易记事本,其效果如下: 2.编程思路 1.这个Vue.js应用实现了一个简单的计算器&#x…

黑马智数Day3

渲染基础Table列表 封装接口: export function getCardListAPI(params) {return request({url: /parking/card/list,params}) } 具体实现: import { getCardListAPI } from /apis/cardexport default {data() {return {// 请求参数params: {page: 1,pa…

委托的注册及注销+观察者模式

事件 委托变量如果公开出去,很不安全,外部可以随意调用 所以取消public,封闭它,我们可以自己书写两个方法,供外部注册与注销,委托调用在子方法里调用,这样封装委托变量可以使它更安全,这个就叫…

C语言指针篇

要想学好C语言,作为灵魂的指针那是必须要掌握的,而要想搞定指针,就不得不讲一下内存和地址之间的关系 内存和地址 计算机上的CPU(中央处理器)在处理数据的时候,需要的数据是在内存中读取的,处…

0-1开发自己的obsidian plugin DAY 1

官网教程有点mismatch,而且从0-100跨度较大,📝记录一下自己的踩坑过程 首先,官网给的example里只有main.ts,需要自己编译成main.js 在视频教程(https://www.youtube.com/watch?v9lA-jaMNS0k)里…

研1日记15

1. 文心一言生成: 在PyTorch中,nn.AdaptiveAvgPool1d(1)是一个一维自适应平均池化层。这个层的作用是将输入的特征图(或称为张量)在一维上进行自适应平均池化,使得输出特征图的大小在指定的维度上变为1。这意味着&…

0基础学习HTML(十四)表单

HTML 表单和输入 HTML 表单用于收集用户的输入信息。 HTML 表单表示文档中的一个区域,此区域包含交互控件,将用户收集到的信息发送到 Web 服务器。 HTML 表单通常包含各种输入字段、复选框、单选按钮、下拉列表等元素。 以下是一个简单的HTML表单的例…