UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

请教关于vivado hls中关于仿真步长改变的问题

回复
Visitor
发帖数: 5
注册日期: ‎03-17-2018

请教关于vivado hls中关于仿真步长改变的问题

大家好,我是刚刚接手vivado hls的新手,之前一直用xilinx的mcode的模块搭建仿真,然后用dspace实现(研究实时仿真的)。现在开始在matlab中用vivado hls模块搭建仿真,近期遇到了一个关于仿真步长会自行改变的小问题,百思不得其解,想请教有经验人士指点一二,谢谢大家!

为了方便大家理解,我以最简单的RL电路为例,在matlab中分别用simulink模块搭建,mcode的m语言编写,和vivado  hls的c语言编写三种方式实现,并对比,发现vivado hls的仿真结果误差较大(把RL电路换成更复杂电路问题同样存在),分析比较误差存在的原因是因为vivado hls的仿真步长竟然不是按我设置的进行的,很奇怪。

 

vivado hls和mcode的程序对比如下(一模一样):

Hls_RL C程序:                      

hlsRL.png


 

 

 

 

 

 

 

 

 

mcode_RL m程序

MCODERL.png

 

 

 

 

 

 

 

 

 

 

 

 

 

vivado hls,mcode,simulink模块仿真对比图如下所示:

参数设置均为:h=1e-5,R=4Ω,L=0.001H,Us=100V

仿真.png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

仿真结果如下:

波形.png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

波形细节图

波形细节.png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

如图所示,可以看出hls的结果与simulink和mcode存在明显误差,当设置的仿真步长均为1e-5时,matlab/mcode波形正确,而hls仿真步长显示为1e-5的五倍,导致波形错误。在hls仿真中,关于涉及到输入信号的计算过程时,均会出现仿真步长的问题。我有在工作区间读取vivado hls生成的数据,发现其实每过一个1e-5均会有值输出,只是每5个1e-5输出来的值是一样的,好像没经过程序计算一样,看起来像仿真步长放大了5倍。

 

试过很多小程序,vivado hls模块均会出现这个错误,尤其是输入信号涉及计算的时候,hls执行的仿真步长是我设置的整数倍(不一定是5倍),从而出现误差甚至是错误,程序非常简单,应该不存在在一个仿真步长内跑不完的现象,所以想请跟大家一起探讨!再此谢过了!

附件还有关于buck电路的仿真!

 

Highlighted
Explorer
发帖数: 102
注册日期: ‎06-25-2010

回复: 请教关于vivado hls中关于仿真步长改变的问题

[ 已编辑 ]

Hi, 你提供了非常丰富的材料,但是,缺乏一个核心环节,数据类型dint是如何定义的?我怀疑你的步长问题不是时间步长,而是量化步长,希望你把dint改为float试试看能否解决问题,或者把相关的定义细节发上来。谢谢。