想搭建一下matlab和fpga程序联仿的平台,试了一下并不那么容易,陆续记录一下问题吧:
最理想的hdl验证方式应该是FPGA在环仿真,因为控制部分的运算交给了fpga,整个仿真的速度能提起来且更实际化。但因为maltab硬件支持组件(xlinx的在环verify支持组件)很难下载成功,所以只能先进行代码的验证。
Matlab支持生成hdl代码,但显然不如直接写的可靠高效,故需要先写好.v的hdl文件。
关键步骤总结如下:
- 确保安装了hdl code 和verify等组件,或matlab高版本自动包含;安装了Modelsim。
- 通过命令行运行cosimWizard
- 正常操作,指定端口时一定指定好clk和rst如下(试过clk和rst也用作input,感觉反倒容易出问题):
- 一定要将输出的sample time指定为至少小于等于周期时间
- 下一步建议这样设置,因为低电平复位。
- 后正常生成文件。
简单reg输入需要转为布尔量并加一级hold,输出可以加一级hold和数据转换用来输出。
双击模块可以来改动仿真内容,此处下图改变参照modelsim使用。
先打开hdl simulator使用联仿
需要在自动弹出的设置里设置timescale对应关系或者从前面模块设置里看着改一下。确保所有输入输出信号对matlab采样时间和对hdl时间是一致或者并满足时钟周期要求。
仿真代数环通过delay(波形delay)解决。
通过简单输入信号,.v块正确取反,并输出信号且重新置于模块输入使用,验证了联仿功能,输入输出使用功能和初步闭环功能。