接口电路仿真的算法分析及实现_第1页
接口电路仿真的算法分析及实现_第2页
接口电路仿真的算法分析及实现_第3页
接口电路仿真的算法分析及实现_第4页
接口电路仿真的算法分析及实现_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

接口电路仿真的算法分析及实现引言系统仿真是近30年才发展起来的一门新兴学科,它通过对所研究系统的认识与了解,抽取其中的基本要素,建立与现实系统相对应的仿真模型,并通过系统模型实验去研究一个已经存在的或者正在设计的系统的过程。Matlab是一种功能强大的的仿真工具,它包括众多的功能各异的工具箱、以矩阵与数组为基本单位的编程语言,为数学计算与试验数据分析提供了极大的便利。Siumlink是MATLAB的一个共生产品,包括丰富的模块资源与工具箱资源,具有相对独立的功能与使用方法,提供了建模、分析与仿真各种动态系统的交互环境,建立仿真模型后可以很容易地通过改变仿真参数,得到不同参数的仿真结果。结合MATLAB与Simulin的特点,可以实现各种电路的仿真。在构建仿真电路时,有些可以直接调用Simulink模块,有些用Simulink模块难以实现的,可以通过编写Simulink支持的S函数来完成。对于比较复杂的仿真电路,可以采用Simulink模块调用与编程混合的方式实现。本文所实现的A/D转换电路的仿真就是采用Simulink模块调用与MATLAB编程混合的方式。A/D转换电路的仿真A/D转换电路的的仿真模/数(A/D)转换电路的任务是将连续变换的模拟信号转换为离散的数字信号,以便于数字系统进行处理,模/数转换一般要完成采样、量化与编码等几个过程。采样是在连续变化的模拟量上按一定的规律(周期地)取出其中的某一些瞬时值来代表这个连续的模拟量。为了保证采样信号不丢失的信息,即采样后的离散信号能代替或能恢复原来的连续信号,采样必须遵循采样定理,即对信号采样时,采样频率必须大于或等于信号最高频率的两倍。量化就是将f(nT)的所有值映射到数字量所表示的状态上。实际上,在量化过程中是将样本的幅值范围分为若干个量化层,每一个量化层对应一个量化输出,所有落于该量化层内的样本都统一取该量化输出值。量化层的数目与量化后编码的位数有关。采样功能的实现A/D转换就是一个量化的过程,它把采样后的模拟信号转换成数字量。在实际工作中,A/D转换首先要选定一个合适的编码方案,然后根据编码的位数确定量化层,从而确定采样频率。实现仿真电路的关键是采样模块的构建,由于Simulink的模块难以构建采样功能,采样模块主要是通过编写Simulink支持的S函数实现的。S函数有固定的程序格式,S函数的实现包括初始化、连续状态微分、计算输出与仿真终止。可以用MATLAB语言可以编写S函数,也可以使用C语言、C++与Fortran等语言编写。S函数使用一种特殊调用规则来实现用户与Simulink的内部解法器进行交互,并且这种交互可以适用于不同性质的系统。S函数模块存放在Functions&Tables模块库中,通过此模块可以创建包含S函数的Simulink模块。S函数文件名区域要填写S函数的文件名。S函数参数区填入S函数所需要的参数。本系统假定输入的模拟信号周期为2,编写了4个S函数,分别为sf_ad4、sf_ad8、sf_ad16、sf_ad32,对应的采样时间分别为0.5、0.25、0.125、0.0625,即采样频率分别是信号最高频率的四倍、八倍、十六倍与三十二倍。下面以sf_ad32函数为例,说明其算法及实现程序。首先,设模拟信号是周期为2的Sine波,且用连续的时间函数f(t)表示,采样就是周期地取f(t)的瞬时值。根据采样定理,对每个周期的模拟信号采样32次,则采样的时间就为0.0625(2/32)的倍数。完成一个周期的采样时间为0.0625*n(0<=32,n为整数),延时为0。采样后将相应值输出,但信号在量值上仍然是连续的,需将f(nT)的所有值映射到数字量所表示的状态上,这种过程为量化。在量化过程中是将样本的幅值范围分为若干个量化层,每一个量化层对应一个量化输出,所有落在该量化层内的样本都统一取该量化输出值。本实例中,采用4位编码,则有24=16个量化层。在编码过程中采用从1000到0111的编码,来输出相应的量化值。其源代码如下:function[sys,x0,str,ts]=sf_ad32(t,x,u,flag)switchflag,case0,[sys,x0,str,ts]=mdlInitializeSizes;case9,sys=[];otherwiseerror([unhandleflag=,num2str(flag)]);endfunction[sys,x0,str,ts]=mdlInitializeSizessizes=simsizes;sizes.NumContStates=0;sizes.NumDiscStates=0;sizes.NumOutputs=1;sizes.NumInputs=1;sizes.DiRFeedthrough=1;sizes.NumSampleTimes=32;sys=simsizes(sizes);x0=[];str=[];ts=[0.062500.12500.0625*300.2500.0625*31020];functionsys="mdlUpdate"(t,x,u)sys=x;functionsys="mdlOutput"(t,x,u)sys=u;其中,sys依照flag的值返回不同的结果,x0为初始状态值,str用于设置输出矢量为一个空矩阵,ts采用两列的矩阵来设置采样时间与延迟,sf_ad4是S函数的函数名,1为目前仿真中的实现时间,x为状态矢量,可为空,u为输入矢量,flag为S函数行为标示。sf_ad8、sf_ad16、sf_ad32的S函数类似于sf_ad4,不同的就是采样时间的个数与ts的采样时间与延迟矩阵。调用S函数时首先将所需的S函数模块拖入调用模块(Simulink->User-DefinedFunctions->S-Function)并设置S函数的参数,参数设置对话框如图1所示。Bl*el[Fwr I1果耶川同州用% 星皿V■帽”**口41*blfslEFlw匕anyb« i2I)售ArAfifcsad+口1,*la讪常3,爵讣mdu**tmd-flitwi叱,illrtoIM 皿b,5iEink"Tictri"pu-faHh*an・・[■■iTfi«14F*rVB-a^trsFEixnEwn♦*一-Gkfuam标WttE;「•… IDR]匚孙"!■ |图1S函数的调用A/D转换仿真电路的构建A/D转换仿真电路由“模拟信号发生器”模块、“选择采

样函数1〜4”模块、“结果显示”模块与“A/D转换电路”子

第6页系统组成,如图2所示。“选择采样函数1〜4”模块是选择采样频率,构建过程为:在Matlab的命令窗口中输入命令Simulink打开SimnlinkLibraryBrowser子窗口,选中左边目录栏中的Simulink库后单击子目录Sources,右边的子窗口显示相应的Sources库中的模块集,选中Constant常数模块并拖入所建的仿真模块中(简单表述为Simulink->Sources->Constant,后文同此),双击此模块出现参数设置框,输入所要选择函数对应的编号1〜4。“模拟信号发生器”模块与“结果显示”模块通过直接调用模拟信号发生器与示波器构建。"A/D转换电路”子系统内部主要是由1个选择开关与四个S函数组成。“采样电路”子系统的构建首先是调用一般的子系统(Simulink->Ports&Subsystems->Subsystem),然后双击此子系统,在子系统的内部生成1个选择开关,拖入四个S函数,把选择开关与四个S函数相连。

TOTO图2"A/D转换”仿真系统的主界面A/D转换电路的仿真结果运行仿真电路时,由“模拟信号发生器”模块产生各种模拟输入信号,通过“选择采样函数1〜4”模块选定采样频率,结果在“结果显示”模块显示。选择采样函数为4,则A/D转换的采样时间为0.0625,选定输入信号分别为正弦波与随机波。运行此仿真系统后的结果如图3、图4所示。图3输入信号为正弦波的运行结果图4

输入信号为随机波的运行结果3结^语本文作者创新点:由于Simulink的模块库中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论