Simulink方法总结和避坑指南(一) |
您所在的位置:网站首页 › simulink教程知乎 › Simulink方法总结和避坑指南(一) |
文章目录
一、项目场景二、基本模块原理与调试方法分析——信源部分:三、信号处理部分和显示部分:四、基本的通信链路搭建:四、特殊模块:interpreted MATLAB function:五、总结和坑点提醒
一、项目场景
最近一个任务是使用simulink搭建一个MIMO串扰消除的链路,并用实际收到的数据进行测试,在搭建的过程中也遇到了不少的问题(当然这比vivado里面的debug好不知道多少倍)。准备趁着这个机会,先以一个很基本的通信链路对simulink基础和相关的debug方法进行总结。 在本篇中,主要记录simulink的基本原理和基本的SISO通信传输链路(QPSK方式),计划在下篇记录这次MIMO串扰消除的链路的debug心路历程。 二、基本模块原理与调试方法分析——信源部分: 大多数人一开始做simulink的时候会觉得他和MATLAB没有太大的区别,诚然这两个使用的语言都是m语言,但是这两个背后蕴含的思想是很不一样的。simulink相比于MATLAB而言,多引入了时序的思想,这点我倒是认为可以类比数字电路的角度去进行分析,现在Xilinx的system generator工具已经支持将simulink中特定的HDL模块直接转化成Verilog代码了。因此,分析好时序的思想,是simulink链路搭建成功的前提。而一共simulink模块,可以大致分为信源部分,信号处理部分和结果展示部分。 接下来先说明信源部分。以最基本的模块:random integer generator为例进行说明。 其标识如下: 2.可以使用display模块观察数据的取值(但是数据过多时只能观察前面几个) 我们使用刚才的基本模块,加上display模块进行调试,如下图所示: 3.可以使用step forward按钮进行步进调试。 简单来说,simulink会对数据源源不断的以帧为单位进行处理,但当运行完成后显示的只有最后一帧的数据,因此,可以采用step forward进行处理,step forward的处理即可以展现中间过程,当然,设置的stop time要足够大,例如此处sample time和sample per frame分别为2s和5,相当于一帧5个数据对应10s的持续时间,将stop time设置为20s,如下图所示: 先说对于已知数据,通常以.mat文件存在,只需要使用load函数将其导入工作区。再使用constant模块即可,因为constant模块可以自动读取工作区中的变量。如下图所示: 这个地方其实没什么要说的,主要问题就是做信号处理的模块里面的参数需要调成frame based而非sample based,因为是按一帧为单位进行处理(当然,如果对于比较简单的链路,sample per frame为1,不涉及帧结构,就是一个bit一个bit的进行处理,那么这个设置什么就无所谓了)。同时对于涉及到上采和下采的模块,需要对应的选择enforce single-rate processing(不能allow multi-rate process)。当然更多的模块参数,只能实践出真知,此处无法一概而论。此处以我设置的RRC滤波器的参数为例: 而对于如何显示数据,除了之前说过的display以外,主要就是频谱图模块和星座图模块: constellation diagram:自动显示星座图 此处以一个基本的QPSK链路为例进行说明: https://download.csdn.net/download/weixin_45813401/74921483 四、特殊模块:interpreted MATLAB function: 当有些模块用simulink固有的模块无法实现的时候,可以自己通过MATLAB函数进行实现,需要使用该模块:interpreted MATLAB function。核心思想就是自己编写MATLAB函数,然后在这个simulink模块内部输入MATLAB函数的名称即可。
最后总结一下刚才说的几个simulink的调试经验,以及一些闭坑经验: 1.展示信号维度有助于对时序的理解和调试。 2.不要随便的在链路中间加入buffer模块,如刚才所言,simulink和Verilog不完全一样,按帧为处理单位时,很多模块会自动进行串并转换,在链路中间使用buffer很容易导致时序出现大问题。 3.不要随便的在interpreted MATLAB function中加入figure函数。如刚才所言,一个模块的一次执行是以串行数据中一帧的长度对应的时间作为一个单位,在到达设置的仿真时间之前,是会源源不断的执行的,如果在里面加入figure,可能会一下子执行几百次。 最后:多调链路多尝试,多设断点debug,毕竟,熟能生巧。码字不易,还望得到点赞收藏,感谢。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |