这篇帖子主要介绍了对反park和svpwm进行验证的过程。
本人是刚刚接触FPGA,如果有错误的地方欢迎大佬批评指正。
1 反park和svpwm建模
本人在此之前没有学习过FPGA,所以对变成语言和FPGA开发技巧都不了解。
于是我抄了个近路,使用simulink对反park和svpwm进行建模,然后使用HDL Coder生成Verilog代码。(手动坏笑)
关于反park和svpwm计算过程在网上有许多资料这里就不进行详细说明了。
反park和svpwm模型:
在搭建模型过程中手动给定输入信号以便于验证模型的正确性。
仿真结果如下。
u_alpha u_beta仿真波形:
在搭建模型的过程中遇到了一个问题在这里和大家分享一下。
●先验证模型,再将数据修改成定点。
如果是大神可以直接使用定点进行建模。
我刚开始是直接使用定点进行建模的但是仿真的时候波形完全乱了,于是我一步一步的排查,发现是定点数据发生了溢出。
所以我的建议是先使用double类型的数据进行建模和仿真再将数据类型修改成定点。
2 生成代码
生成代码需要将之前测试用的输入信号修改成接口,示波器貌似不会对生成的代码产生影响,所以我没有删,修改后的模型如下。
使用快捷键ctrl+E可以快速打开模型配置界面,选择HDL Code Generation选项,设置好Set Basic Options下面的三项后点击Generate按钮就会开始生成代码。
将生成的代码放入Modelsim中进行仿真验证。
4 Sipeed 高云GW2A FPGA开发板上运行
我在之前的工程上直接添加的代码,所以先解释一下,工程里面led.v是顶层。
由于没有经验,刚开始将结果直接输出到wire类型里,但是始终无法用在线逻辑分析仪里找到输出信号。
尝试了很多方法,最后将信号设置成了顶层的输出才可以。
大佬如果有什么好的方法,欢迎留言指教。
在添加完代码进行综合的时候,系统提示芯片资源不够用。
经过各种尝试之后找到了一个方法,如下图:
打开设置界面 ,勾选DSP Balance,这样就可以综合通过了。
5 逻辑分析仪查看波形
使用高云的在线逻辑分析仪捕获波形。
高云的在线逻辑分析仪没有找到把数据显示成波形的方法,所以我把数据导出到csv文件,然后用matlab绘制波形。
这里我遇到了一个小问题,导出数据之前要先修改数据的类型,导出时会按照设置的数据类型就行导出。
如果时十六进行数导出的,后面绘图处理会麻烦一点。
这次的分享到此结束,欢迎交流~
MATLAB/Simulink的基于模型设计(Model-Based-Design,MBD),一直是我认为的下一代的嵌入式系统的开发方式,想不到不但能将模型和算法生成C代码,还能生成HDL代码,太牛了。
引用: mars4zhu 发表于 2022-11-28 09:06 MATLAB/Simulink的基于模型设计(Model-Based-Design,MBD),一直是我认为的下一代的嵌入式系统的开发方式 ...
确实,MBD可以缩短开发周期,即使不用在量产上,用来验证方案也是很方便的。