前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >System Generator系列之使用MCode进行建模控制

System Generator系列之使用MCode进行建模控制

作者头像
狂人V
发布2020-06-29 11:30:02
8080
发布2020-06-29 11:30:02
举报
文章被收录于专栏:电子狂人
前些天通过创建数字滤波器的设计,对System Generator做了一些简单的使用介绍,今天将分享一下如何在System Generator中使用MATLAB中编写的M代码进行建模控制。

~Show Time~

老样子,先打开System Generator,启动MATLAB完成后,再打开Simulink进行仿真模型的设计,再添加以下的一些基本模块:

Repeating Sequence Stair:用于重复产生离散时间序列,也是本次设计的输入。

Gateway In、Gateway Out、System Generator以及Scope

添加完成后,可以简单先进行连接,如下:

中间留着的空白区就是用于今天的核心,用于和M代码进行链接的模块即MCode,所在菜单为:Xilinx Blockset/Index,如下:

将其添加到自己的模型文件中,先不用连接,需要自己编辑好M文件后再使用,双击MCode模块,然后点击Edit M-File

然后会在MATLAB的代码编辑区打开默认的M文件:

可以看到该文件就是一个函数,因此只需要自行编辑一个function定义的函数即可在MCode中使用,创建一个新的M文件,然后输入如下所示的代码,其中:

函数名:state_machine

输入:din

输出:matched

以上的代码表示的是一个状态机(FSM—FiniteState Machine),有5个状态,能够检测连续的序列(1011),状态图如下:

然后将代码保存到与模型文件同一文件夹下面,然后可以关掉之前打开的xlmax.m,并且在MCode这个模块中点击Browse:

在弹出的界面选择刚刚保存的state_machine.m,点击OK保存并关闭,然后在模型文件下可以看到此时的MCode已经只有一个输入和输出端口,并且名字已经变成刚刚创建的函数名,如下所示:

不过这时候的代码并没有编写完成,还需要添加一些变量,首先是state需要设置一个变量声明,不然相当于未定义,要报错,添加以下一句代码即可:

persistent state, state =xl_state(0,{xlUnsigned, 3, 0});

这部分的代码使用persistent将state在该M文件中做了一个变量的声明,可以在该M文件中进行使用,xl_state()这个则是对state进行赋值;

该函数的简单用法就是:xl_state(init, precision)

第一个init就是初始化的值,precision就是其精度;

而代码中的{xlUnsigned, 3, 0}属于一个单元阵列,其中xlUnsigned代表数据类型是无符号的定点数;3代表数据的位宽,因为代码中的state需要达到4,所以至少要3bit的位宽;0代表的是二进制点的位置,该部分代码不需要有小数,所以直接设置为0。xl_state 以及Percision也都还有其他用法,可以自行对MCode使用help进行研究。

不过代码中其实存在一些缺陷,就是状态机还不能正常进入,需要添加一个otherwise使得状态机开始运行,具体添加如下:

以上步骤的内容都完成后,就可以保存,在运行前还需要对Repeating SequenceStair这个模块做下简单的配置,使得输出的序列值有包含状态机检测的序列的:

然后因为变量序列值比较多了,默认设置的运行时间也需要做一定的改变,弄个足够把序列值全部能采集到,直接设置20,然后再点击Run进行运行,并且在示波器观察结果:

可以看到只要出现了“1011”的序列,输出检测就会置1,反之保持为0。

学会了今天的操作,是不是觉得以后在FPGA中使用MATLAB中的代码也变得很简单了

下次我想再搞个反过来的操作,让硬件描述语言可以转换成在MATLAB上也能使用的,敬请期待吧~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 电子狂人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档