差动双相码matlab仿真,利用S函数实现自编模块

利用S函数实现自编模块

来源:华强电子网

作者:华仔

浏览:847

时间:2016-08-10 14:18

标签:

摘要:

有些过程用普通的simulink模块不容易搭建,可以利用s函数编程来实现所需要的模块,s函数可以极大地扩展simulink的功能,使得simulink的仿真变得更灵活、更强大。  s函数是一种采用matlab或c语言编写,用以描述动态系统行为的算法语言。它采用一种特殊的调用规则,从而让用户能够同simulink自身的方程求解器进行交互,这种交互过程同simulink本身标准模块的工作机制几乎完全相

有些过程用普通的simulink模块不容易搭建,可以利用s函数编程来实现所需要的模块,s函数可以极大地扩展simulink的功能,使得simulink的仿真变得更灵活、更强大。  s函数是一种采用matlab或c语言编写,用以描述动态系统行为的算法语言。它采用一种特殊的调用规则,从而让用户能够同simulink自身的方程求解器进行交互,这种交互过程同simulink本身标准模块的工作机制几乎完全相同。  要使用s函数,必须了解simulink的工作机制。simulink在仿真过程中每隔一段时间就会对模型中的所有模块进行调用,每个模块在调用过程中都会完成诸如输出信号的计算、内部状态变量的更新及其导数的计算等工作。而仿真开始和结束时刻的调用将完成该模块的初始化和扫尾工作。  simulink在仿真过程中反复调用s函数,在调用过程中,simulink将调用s函数子程序,这些子程序将完成一下工作:  (1)在仿真循环开始之前的初始化工作:初始化simstruct结构,其中包含了关于s函数的相关信息;设置输入输出端口的数目和大小;设置模块的采样周期;分配内存并设置sizes数组。  (2)下一个采样时刻的计算:如果设置的是可变步长的积分算法,则计算下一个计算时刻。如果是固定步长,则计算下一个仿真的步长。  (3)在最大时间步长内计算模块的输出。这一步完成以后,模块所有的输出都变成有效值。  (4)在最小时间步长内更新离散状态。  (5)积分过程,这一步一般是针对连续系统而言的。  s函数的引导语旬为:[sys,x0,str,ts]=f(t,x,u,flag,p1,p2,…)。从源程序角度来看,simulink将t,x,u,flag,p1,p2等参数传递给s函数,同时需要s函数返回sys,x0,str,ts四个向量。它们的具体含义是:  t:目前仿真中的实际时间。  x:状态向量,可能为空。  u:输入向量。  flag:表明simulink不同仿真状态的标志量。  sys:依据flag的不同返回不同的结果,如flag=3,sys返回s函数的输出。  x0:初始状态值,如果没有状态变量,则为空向量,在flag=0时忽略。  str:保留为将来使用,必须设置为空矩阵。  ts:两列矩阵,记录采样时间和模块的延时时间。  在m文件形式的s函数中,simulink将一个flag的参数传递给s函数,该参数存储了目前仿真的状态,我们必须为每一个flag的值编写适当的函数。表列举了仿真的不同状态下flag的具体以及调用的s函数。  表 不同仿真阶段下flag的具体值以及调用的s函数  编码实现时,在各个状态对应的函数下编写相应的功能程序即可。本文就是通过这种方法实现了差动双相码、差动码和弥勒码的构建。  1. 差动双相码的编码和解码  差动双相码的编码规则是:在半个位周期中的任意边沿表示二进制“0”,而没有边沿表示二进制“1”。此外,在每一个位周期开始时,电平都要反向。因此,这种码对接收端来说,位节拍比较容易重建。  根据上述内容,结合差动双相码的编码格式,设计的s函数如下:  可以用与编码过程类似的方法编程实现差动双相码的解码。解码的思路为:如果这一时刻的输入与上一时刻的输入相同译作“0”,否则译作“1”,由于其滞后性,引入一个位延时。设计的s函数如下:  将以上的s函数封装成模块并进行仿真,仿真模型和仿真结果如图1所示。  图1 差动双相码的编解码仿真模型与仿真波形  2. 差动码的编码与解码  与差动双相码的编解码思路相似,根据差动码的编码规则可设计出其编解码的s函数。将其封装成模块并进行仿真,仿真模型和仿真结果如图2所示。  图2 差动码的编解码仿真模型与仿真波形  3. 米勒码的编码与解码  米勒码的编码规则是在半个位周期内的任意边沿表示二进制“1”,而经过下一个位周期中不变的电平表示二进制“0”。一连串的零在位周期开始时产生电平交变。解码时在某位的中间看此时的输入是否与上一时刻相同,相同译做“0”,否则译做“1”。同样,用s函数来设

分享到:

1d53cde35a2d088c54ee789a07b6e842.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值