模型设计
先看一下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
//
//========================