本文是该系列的第10篇,上一篇介绍了在System Generator设计中使用MCode模块调用MATLAB代码来完成逻辑控制。本文将介绍System Generator支持的所有MATLAB语法。
限于篇幅,本文只记录了经常用到或相对重要的内容,更详细的信息可以参考xilinx官方文档ug958->第一章->MCode小节。
MCode block特性
MCode用于在Simulink环境下执行MATLAB函数。MCode的名称与管脚即为函数名称与函数接口。在将System Generator设计导出到FPGA时,软件会将MATLAB代码转换为对应的HDL模型。MCode经常用于实现一些简单的算法功能、有限状态机和控制逻辑。
调用的MATLAB函数必须遵循以下三条基本规则:
所有的输入和输出必须是Xilinx的定点数据类型(xfix);
至少包含一个输出;
M文件应在MATLAB的搜索路径下,或与slx模型文件在同一目录。
当初次使用MCode时,会自动调用一个示例文件xlmax.m。博主建议先在slx文件目录下创建好新的m文件,再用Browse定位。
支持的MATLAB语法
1.所支持的MATLAB语法结构包括:
赋值(等号左边只能有一个变量);
if/else/elseif end语法(条件表达式必须是判断true/false或1/0);
switch语法(case只能选择常量)、for语法;
加法、减法、乘法、除法(除数必须是2的N次幂,因为可以转换为移位),除此之外,不支持其它算术表达式
关系运算符(、>=、==、~=)