[其他芯片] Sipeed 高云GW2A FPGA开发板实现反park、svpwm

WSir14138   2022-11-27 23:04 楼主

这篇帖子主要介绍了对反park和svpwm进行验证的过程。

本人是刚刚接触FPGA,如果有错误的地方欢迎大佬批评指正。

1 反park和svpwm建模

本人在此之前没有学习过FPGA,所以对变成语言和FPGA开发技巧都不了解。

于是我抄了个近路,使用simulink对反park和svpwm进行建模,然后使用HDL Coder生成Verilog代码。(手动坏笑)

关于反park和svpwm计算过程在网上有许多资料这里就不进行详细说明了。

反park和svpwm模型:

1.png

 在搭建模型过程中手动给定输入信号以便于验证模型的正确性。

仿真结果如下。

u_alpha u_beta仿真波形:

u_ab波形.png  svpwm输出马鞍波:

uvw波形.png  

在搭建模型的过程中遇到了一个问题在这里和大家分享一下。

●先验证模型,再将数据修改成定点。

如果是大神可以直接使用定点进行建模。

我刚开始是直接使用定点进行建模的但是仿真的时候波形完全乱了,于是我一步一步的排查,发现是定点数据发生了溢出。

所以我的建议是先使用double类型的数据进行建模和仿真再将数据类型修改成定点。

 

2 生成代码

生成代码需要将之前测试用的输入信号修改成接口,示波器貌似不会对生成的代码产生影响,所以我没有删,修改后的模型如下。

生成代码模型.png 使用快捷键ctrl+E可以快速打开模型配置界面,选择HDL Code Generation选项,设置好Set Basic Options下面的三项后点击Generate按钮就会开始生成代码。

生成代码设置.png  生成的代码如下:

生成的代码.png 3 验证代码

将生成的代码放入Modelsim中进行仿真验证。

fpga_svpwm_sim.png  代码原理上没有啥问题,嘻嘻。

 

4 Sipeed 高云GW2A FPGA开发板上运行

我在之前的工程上直接添加的代码,所以先解释一下,工程里面led.v是顶层。

代码.png 由于没有经验,刚开始将结果直接输出到wire类型里,但是始终无法用在线逻辑分析仪里找到输出信号。

尝试了很多方法,最后将信号设置成了顶层的输出才可以。

大佬如果有什么好的方法,欢迎留言指教。

 

在添加完代码进行综合的时候,系统提示芯片资源不够用。

经过各种尝试之后找到了一个方法,如下图:

image.png

打开设置界面 ,勾选DSP Balance,这样就可以综合通过了。
image.png  

 

5 逻辑分析仪查看波形

使用高云的在线逻辑分析仪捕获波形。

image.png  高云的在线逻辑分析仪没有找到把数据显示成波形的方法,所以我把数据导出到csv文件,然后用matlab绘制波形。

fpga_cordic_svpwm_logic.png  这里我遇到了一个小问题,导出数据之前要先修改数据的类型,导出时会按照设置的数据类型就行导出。

如果时十六进行数导出的,后面绘图处理会麻烦一点。

 

这次的分享到此结束,欢迎交流~

回复评论 (2)

MATLAB/Simulink的基于模型设计(Model-Based-Design,MBD),一直是我认为的下一代的嵌入式系统的开发方式,想不到不但能将模型和算法生成C代码,还能生成HDL代码,太牛了。

 

 

点赞  2022-11-28 09:06
引用: mars4zhu 发表于 2022-11-28 09:06 MATLAB/Simulink的基于模型设计(Model-Based-Design,MBD),一直是我认为的下一代的嵌入式系统的开发方式 ...

确实,MBD可以缩短开发周期,即使不用在量产上,用来验证方案也是很方便的。

点赞  2022-11-28 21:40
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复