硬件设计的MBD实践:自动生成RTL代码

本文介绍了基于模型设计(MBD)的硬件设计流程,详细阐述了如何自动生成RTL代码,包括模型设计、生成步骤以及代码解析。重点讨论了加法器、定点化处理器、单元延时器(寄存器)、LUT前的定点化处理和正弦波数据存储等关键模块的设计与实现。同时,强调了资源使用统计在验证设计合理性中的重要性。
摘要由CSDN通过智能技术生成

模型设计

先看一下DDS的模型设计。
在这里插入图片描述

生成RTL代码

简单3个步骤就可以自动生成RTL代码。
1)模型设计的顶层放置一个代码生成控制器,设置RTL代码的模块名称和一些文件头信息,时钟频率将用于自动生成的DC综合脚本。
在这里插入图片描述
2)开启RTL代码生成服务器
3)运行一次Simulink仿真
在这里插入图片描述

RTL代码解析

1)文件头

在这里插入图片描述
与模型设计中的RTL Generate Control的参数设置对应。

2)模块声明和端口声明

在这里插入图片描述
与输入端口模型和输出端口模型对应:
在这里插入图片描述
在这里插入图片描述
CLK和RST_N是数字电路两个必要的信号,隐含在模型设计的基于节拍的仿真方式中。

3)每个模型对应的输出信号的声明

在这里插入图片描述

4)加法器

在这里插入图片描述
对应模型:
在这里插入图片描述
加法器的两个输入,一个来自输入端口FREQ,一个来自寄存器Reg3_REG。

加法器遵循“无精度损失”原则,输出位宽相对输入位宽会有所增加。

5)定点化处理器

在这里插入图片描述
对应模型:
在这里插入图片描述

6) 单元延时器(寄存器)

在这里插入图片描述
对应模型:
在这里插入图片描述

7)LUT前的定点化处理器

在这里插入图片描述
对应模型:
在这里插入图片描述
LUT的地址空间大小由输入信号的位宽决定,需要用定点化处理模型限制位宽,降低LUT的电路规模。

8)LUT,存储正弦波数据

在这里插入图片描述
在这里插入图片描述
对应模型:
在这里插入图片描述

9)输出级寄存器

在这里插入图片描述
对应模型:
在这里插入图片描述

10)输出赋值与模块结束

在这里插入图片描述
对应模型:
在这里插入图片描述

11)资源使用统计

在这里插入图片描述
对于位宽异常大的信号,需要检查确认是否符合设计预期。

完整verilog代码

//-----------------------------------------------------------------------------
// FILE     :  rtlgen_demo_dds.v
// AUTHOR   :  myName
// DATE     :  2020-08-15
// ABSTRACT : 
//    test simu-rtl_gen
//
//========================
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值