主要内容

使用图表对象为通信协议建模

这个例子展示了如何使用一个独立的statflow®图表来建模一个通信系统中的帧同步和符号检测组件。独立图表以MATLAB®为操作语言实现经典图表语义。您可以通过使用MATLAB的全部功能来编程图表,包括那些在Simulink®中代码生成受到限制的函数。金宝app有关更多信息,请参见创建用于执行的状态流图作为MATLAB对象

实现一个符号检测算法

在这个例子中,通信系统的输入由每10毫秒接收的0和1的二进制信号组成。输入信号可以包含以下任意组合:

  • 一个770毫秒的脉冲(77个连续的),用来标记一帧数据的开始和结束,以确保系统同步。

  • 一个170毫秒的脉冲(17个连续的)来表示符号A。

  • 一个470-ms的脉冲(47个连续的)来表示符号B。

该文件sf_frame_search.sfx定义实现此通信协议的独立状态流图。该图表由两个并行分解的外部状态组成。的初始化State重置本地数据的值象征在每个执行步骤的开始。的搜索状态包含定义符号检测算法的逻辑。当这种状态检测到通信协议允许的一个脉冲时,相应符号的名称存储为象征并显示在MATLAB命令窗口中。并行分解使图表能够对输入数据进行预处理。有关更多信息,请参见状态分解

为了通过几个执行步骤来跟踪脉冲的长度,图表使用操作符。该操作符消除了手动计数器的需要,从而简化了图表的设计。例如,条件(计数(脉冲)= = 17)保护从子状态发出的过渡NewFrame.当数据脉冲为连续17个执行步骤。在本例中,图表转换为CouldBeA亚态。如果这个转换后面跟着一个0的输入,那么图表注册符号A的接收并转换回NewFrame亚态。否则,图表将转换为SearchForB说明条件的来源(计数(脉冲)= = 29)搜索另外29个以标记符号B。

执行独立的图

在MATLAB脚本中sf_frame_tester.m时,样本代码生成由几个有效脉冲和一个传输错误组成的短信号。错误由470-ms脉冲组成,太长而不能代表符号a,太短而不能代表符号B。

测试符号检测算法%生成由多个有效脉冲和一个脉冲组成的短信号%传输错误。f = sf_frame_search (“脉搏”' 0 ');创建图表对象sendPulse (77);%帧标记sendPulse (f, 17);%的sendPulse (f, 47);% BsendPulse (f, 37);%传输错误sendPulse (f, 47);% BsendPulse (f, 17);%的sendPulse (77);%帧标记删除(f);删除图表对象函数sendPulse (f, n)向图表对象f发送n个1和1个0的脉冲。I = 1:n步长“脉搏”1);printDot (1)结束printDot(0)步骤(f,“脉搏”, 0);函数printDot (x)持续的k如果Isempty (k) k = 1;结束如果X == 0' \ n ');k = 1;elseifK == 50”。\ n”);k = 1;其他的流(“。”);k = k + 1;结束结束结束

运行脚本会在MATLAB命令窗口中产生以下结果:

.................................................. ...........................框架  .................一个  ...............................................B  .....................................错误  ...............................................B  .................一个  .................................................. ...........................框架

在模拟过程中,图表动画提供了算法运行时行为的可视化指示。

另请参阅

相关的话题