本节将介绍在Model Composer模块中导入C/C++代码作为定制模块的方法。
在本书给出的设计实例的路径下,建立名字为“simple.h”的文件,即
simple.h文件的内容如代码清单4-9所示。
代码清单4-9 simple.h文件
(1)在该段代码中,“#pragma XMC INPORT in1,in2”用于将in1和in2显式声明为输入端口;“#pragma XMC OUTPORT sum,diff”用于将sum和diff显式声明为输出端口。它们的声明格式为
(2)“template <int ROW,int COL>”代码用于定义模板变量ROW和COL,告诉编译器这是一个功能模板。输入和输出数组的真实维度in1[ROW][COL]、in2[ROW][COL]、sum[ROW][COL]和diff[ROW][COL]在仿真的时候由输入到模块的输入信号确定。
(3)代码清单4-9实现两个数组的相加和相减。
本节将前面建立的代码导入Model Composer模块中,主要步骤包括:
(1) 将MATLAB工具定位到E:\fpga_dsp_example\model_composer路径下。
(2) 在MATLAB工具的控制台中输入 “xmcCreateLibrary(′userlib′,{′matrix_add_sub′},′simple.h′,{},{},′unlock′)” 命令。
其中:
① userlib为读者指定的Model Composer库的名字。
② matrix_add_sub为在源文件/头文件中所定义的将要导入Model Composer模块的函数名字。
③ simple.h为包含函数声明或者定义的头文件的名字(.h)。
④ 第一个“{}”内的内容为可选的源文件的名字(可选)。
⑤ 第二个“{}”内的内容为源文件的路径(可选)。
(3)输入命令后,自动弹出“Library:userlib-Simulink sponsored use”对话框,如图4.62所示。在该对话框中,生成了一个名字为“matrix_add_sub”的模块符号。
图4.62 “Library:userlib-Simulink sponsored use”对话框
(4)生成一个空白的设计界面,利用matrix_add_sub模块符号,构建一个验证模型,如图4.63所示。
图4.63 基于matrix_add_sub模块构建模型验证系统
注 :读者可以定位到本书配套资源的\fpga_dsp_example\model_composer路径下,打开名字为 “matrix_add_sub.slx” 的文件。
思考与练习4-10 :打开matrix_add_sub.slx文件,查看输入数组的数据类型,以及输入数组的数据维数与前面所建立的C/C++代码之间的关系。
本节将介绍如何将定制的库添加到库浏览器中,主要步骤包括:
(1)在本书提供资料的下面路径中,新建一个名字为“slblock.m”的脚本文件,即
slblock.m文件的内容如代码清单4-10所示。
代码清单4-10 slblock.m文件
(2)为了在库浏览器下使能定制库可用,必须打开EnableLBRepository参数。当使用xmcCreateLibrary将一个模块导入新的库中并且处于打开状态时,读者需要在MATLAB工具的控制台界面下输入下面的命令:
(3)在图4.62中,保存定制库到本书提供资料的下面路径下:
(4)在MATLAB工具的控制台界面中输入下面的命令:
(5)在MATLAB工具的控制台界面中输入下面的命令,将包含定制库的路径添加到搜索路径中:
(6)再次进入“Simulink Library Brower”界面,按【F5】按键,刷新库浏览器,刷新过程结束后,可以在库浏览器界面中看到读者的定制库userlib,如图4.64所示。
图4.64 将用户的定制库添加到Simulink库浏览器后的界面