《通信软件设计-05SDL语言.ppt》由会员分享,可在线阅读,更多相关《通信软件设计-05SDL语言.ppt(110页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、SDL 语言SDL mechineinput portFSMtimerdataoutput signalinput signalreveal/viewsave queuesavetimeouttimer opdata opSDL语言中的语法构件l定义包(Package)l代理(Agent)l系统图 Systeml功能块图 Blockl进程 Processl通信l信道 Channell信号 Signall状态机l动作/迁移过程l定时器SDL系统组成System&EnvironmentlSDL规格定义了系统(System)对来自环境(Environment)的事件的反应l环境通过信号(Signal
2、s)向系统发送事件l信号是SDL中描述系统和环境间通信的唯一形式SDL SystemENVIRONMENTsignalsSDL的描述和具体系统的关系SDL Overview-Processl在SDL中的进程(Process)通常是一个eFMSl系统由一系列互相通信的进程(process instances)实例组成System InstanceProcessInstanceProcessInstancesignalssignalssignalsSDL Overview-Blocksl当一个系统由大量的进程组成时,没有适当的静态结构会导致无法快速获得系统的整体目标l功能块(Blocks)用于在S
3、DL中适当的进行结构化和层次化的定义l在进程间使用信号路由(Signal routes),在 功能块间采用信道(channels)来描述通信路径BlockSystem(or another block)ProcessInstanceProcessInstancesignal routesBlockBlockchannelsBlock在SDL中的通信方式lsignal:l信号时SDL中最基本的通信表达方式l由发送代理所发送(Output)l由接收代理所接收(Input)lchannel:l信道是代理间通信的路径lstimulus:l激励是导致代理自发转移的一种事件SDL 概览总结l环境,指在SD
4、L规格之外的一切东西l如人(用户),其他互联系统等l不是SDL中的一个元素lSDL system 是针对真实世界所建立的模型l用于定义系统中的各个组成部分l采用层次化的方式lSystem 包含lblocks,功能块之间用信道连接lBlock 包含lprocesses,进程间使用信道连接lblocks,子功能块lProcess 含有l使用变量和过程所定义的属性l使用状态(states)和迁移过程(transitions)所定义的行为lTypes l可用于定义system系统类,block 功能块类和processes 进程类1 定义包(Package)含义l用于定义代理类型、信号、变量、数据、过
5、程等,解决可重用性l在SDL的各个层次的代理图和过程图中l用来进行SDL的结构化l用来使用外部定义和提供给其他系统和包使用,可含有l系统类,功能块类,进程类的定义l信号定义package AccessPointLib AccessPointBlockingAccessPointuse SignalLib;LoggingAccessPoint例子:定义包signal opened,closed;/*Door to Controller*/signal open,close;/*Controller to Door*/package SignalLib signal eject-card,lock
6、,unlockinput-card,isOpen,isCloseddisplay,keys;signal Code(integer,integer);signal OK,NOK,ERR;signallist validity=OK,NOK,ERR;signallist outp=EjectCard,display;signallist inp=InputCard,keys;/*AccessPoint/*ENV/*Display/*ENV/*AccessPoint/*CentralUnitto ENV*/to AccessPoint*/to ENV*/to Keyboard*/to Centra
7、lUnit*/to AccessPoint*/signalDisable,Enable/*CentralUnit to/*CentralUnit toBlockingAccessPoint*/BlockingAccessPoint*/例子:定义包(续)包的图形语法l:=contains *set is associated with 包的图形语法(续)l:=package l:=contains*l:=use 包的图形语法(续)l:=contains|*包的图形语法(续)l:=|2 代理(Agent)一、代理图1、代理是SDL 2000中的概念2、代理可以表示为系统、功能块、进程3、图形语法,
8、代理图包括三种类型l:=|代理图的图形语法l:=*|setl:=系统 Systeml一个SDL规格所定义的全部内容l完整地描述一个真实系统或真实系统中相对独立的一个部分l可划分为若干功能块,l功能块之间用信道来连接l功能块和环境之间用信道来连接l不包含任何行为l只包含抽象的结构,即black boxesl通常含有信号和数据类型的定义l用于定义系统中的内部数据l类似头文件定义例子:系统图系统图的图形语法l:=contains is associated with l:=system 系统图使用注意l系统图分页时,系统名不变l页码格式l系统图包括:包引用域、头部、文本域、交互域l系统方框图的边界是
9、与环境的交界l定义部分可放在包中再引用例子:系统和包 system AccessControl 1(1)C(validity)Code(validity),Enable,DisableCodeCBap(100):AccessPointCbap(20):BlockingAccessPointCCentralUnituse SignalLib;use AccessPointLib/AccessPoint,BlockingAccessPoint,LoggingAccessPoint;CLlap(20):LoggingAccessPointC(validity)CodeCEedDCEedDCEedD功
10、能块 Blockl可定义子功能块和进程l图形语法l:=contains is connected to *set is associated with 例子:功能块图l进程图引用符l进程创建,创建符l进程名(N1,N2)lN1为初始化创建的进程实例数lN2为运行时允许创建的进程最多实例数l例:Manager(1,1)Caller(0,1000)功能块图中使用进程Static&Dynamic SDLlSDL语法中包括静态构件和动态构建l静态构件描述和规定系统的结构l功能分解l功能间的连接关系l功能间通信的信号l动态构件描述和规定系统的运行-行为lSDL的迁移过程,迁移中的动作l通信l进程的生命周
11、期,创建、运行和终止Static SDLl在进行系统模型化分析是,用于对系统进行高层的抽象描述l一个SDL的系统(system)可以包含一个或多个功能块(block)l一个SDL的功能块(block)可以包含进程和功能块l进程即eFSM,用来定义动态行为SystemBlockProcessSystem的功能分解原则l当面对一个复杂系统时,最好的办法是:l大事化小,将系统分解为可以处理的复杂程度的逻辑单位:BLOCKsl功能分解时按照系统的自身规律来进行:l BLOCKs要反应真正的软件/硬件模块l将功能块间的接口最小化:l减少功能块间交换的信号的数量和种类Structuring of the
12、System DescriptionDecomposition Rules:No Limit in number of Block levelsDecomposition Rules:Blocks and Process cannot share a level 进程 Processl用于对真实世界进行建模的基本组件l采用FSM作为其数学基础l进程包含l属性(data)l行为(state machine)l进程间通信l可以发生在进程间,进程和环境之间l通常使用信号signals来进行通信l通过信道来进行通信l通信是以异步方式进行的l其他通信方式l远端过程调用(remote process)和远
13、端变量(remote variable)l进程的行为和信号之间有关联关系l行为是由一系列信号引起的状态转移l用Input-Action-Transition来定义行为 la signal is receivedlsome tasks are carried out,signal(s)sent outltransition to another statel每个进程都有一个或多个实例l进程标识类型:PIdl4个保留字lself(constant)本进程的PIDlparent(constant)父进程的PIDlsender(varies)最近被消耗信号的进程的PIDloffspring(varie
14、s)最近被本进程创建的进程的PID进程 Process(续)进程的图形语法l:=contains is associated with l:=process 过程进程的一部分,可被进程调用过程符号,在进程和过程中说明一个被调用的过程1、图形语法l:=contains*set is associated with l:=procedure l:=(,*)l:=l:=in/out|in|out l:=,*l:=l:=-l:=contains|l:=|l说明:l过程图不是代理图,但可以使用包l过程头包括:关键字、过程名、可带形式参数和返回值l形式参数可包括:参数类型、变量名、数据类型l过程文本域中定
15、义局部变量2、举例l过程调用符3 通信l通常在通信中,有两种对通信的抽象描述:l异步通信Asynchronousl同步通信Synchronousl在同步通信中:l要求参与通信的进程同时参与通信,如果进程A准备发送信息而进程B没有准备好接收,进程A必须等待直到进程B准备好接收。3 通信l在异步通信中:l参与通信的进程不需要同时参与l如果进程A准备发送信息而进程B没有准备好接收,进程A无需等待直接发送l如果进程B准备接收信息,而进程A没有发送,进程B必须等待l在异步通信中,必然要用到缓冲区来保存信息l在协议通信中,绝大多数是采用异步通信的在异步通信中的FIFOsl在绝大多数通信系统中,采用FIFO
16、(First In First Out)的原则来处理信息的发送和接收l在发送一个信息时,把信息附加在FIFO的队尾l在接收时,从FIFO的队头取走ProcessProcessFIFO CHANNELFIFO CHANNELSendReceiveReceiveSend在异步通信中的FIFOsl在通信系统中,可采取一些办法来进行有优先级别的通信l如优先级队列l带外信道l在实际的通信过程中,FIFO队列可以用来吸收通信时延的变化l处理时延抖动,将抖动平滑的基本方法3 通信一、SDL中的通信方式l异步信号l同步远端过程调用l共享变量,远端变量(remote variable)1、异步方式l功能块之间、
17、进程之间的信号收发无需等待确认2、同步方式l一个进程实例调用另一个进程实例中定义的过程,等待返回 通信(续)二、信道(channel)1、含义l代理之间、代理与系统环境之间传递信号的通路l单向和双向信道l延迟和非延迟信道2、图形语法l4种信道符,标有信道名称、信关、信号列表l信道符与代理域、状态机域或图边界信关连接l:=is associated with set is connected to|set l:=|l:=l:=l:=l:=信号三、信号(signal)l代理之间、代理与环境之间传递的信息l是进程间通信的基本单位l信号可以定义参数l抽象数据结构定义的参数l信号列表,signal li
18、stl可使用定义过的信号定义信号列表l相似含义的一组信号的集合l在信道上使用时,要用()来括起来和信号进行区别信号的文本语法l:=signal ,*l:=(,*)信号的文本语法l:=signallist =l:=,*l:=|()信号的图形语法2、图形语法l:=contains l:=3、举例l门控系统l功能块:控制面板、卡校验器、门控制器l内部信道、外部信道例子:信号FSM例子(VS-FSM)进程图中的几个核心组件l状态(STATEs):在进程(PROCESS)中监视输入队列,获得输入信号(SIGNALs)的点l等待输入的状态l状态迁移后的下一个状态 l输入(INPUT):当 到达的信号和输入
19、中的“信号”一致时,将执行输入下面的状态迁移过程lINPUTs 可以指定信号和信号中的值lINPUTs 可以是一个特定的定时器的超时l输出(OUTPUT):规定了发送给另外一个进程的信号 (SIGNAL)state_asig_astate_asig_cFSM例子(VS-FSM)VS-FSM的进程图(Process Diagram)用EFSM描述时l转移函数扩充转移函数扩充lt=e/p:ae输入事件,p谓词,a动作l若若t=e,则收到e,不执行动作就转移l若若t=e/a,则收到e,无条件执行动作并转移l若若t=e/p:a,则收到e,根据守护条件决定是否执行动作,同时状态转移l动作动作 任务任务T
20、ASKl判断和转移判断和转移分支分支DECISION进程图中增加的组件l任务(TASK):表示对变量操作和其他操作l在动作的符号内部来表示,如赋值语句、定时器设置等l分支(DECISION):根据其内部表示的判断条件来决定进程的下一个分支l汇接:相当于GOTOdo_somethingmake_decisionyesnoAA进程图例子 process calling 2/5wait_for_numT1busyToneVIA uGwait_for_onHooknum(toNum)reset (T1)getUserPid(toNum,otherPid)otherPid=NULLTruemsg(Sor
21、ry,wrong number)wait_for_onHookFalsewait_for_connReplonHookreset (T1)A1在SDL中描述系统行为的组件l通过状态机(通过状态机(EFSM)描述系统行为)描述系统行为l状态机的启动l状态、后继状态l触发事件l自发转移l保存l迁移过程l输出、创建、任务、过程调用、分支、定时器、汇接一、启动一、启动1、图形语法l:=is followed by l:=2、举例l启动符后可接初始状态或迁移过程。状态状态1、图形语法、图形语法l:=contains is associated with|*l:=状态域可定义为状态符,包含状态列表l:=,
22、*|l:=(,*)l:=*在状态列表中表示状态的几种形式l单个状态名l多个状态名,如lS1,S2,S3l所有状态l*l除一些状态外的所有状态l*(S1,S2,S3)l下一个状态是自身状态时l-S1S1,S2,S3*-*(S1,S2,S3)状态符可接输入符、优先输入符、连续信号符、保存符 状态机转移的结果是进入后继状态l:=contains l:=|-触发事件l三种触发事件l输入事件、优先输入事件、连续信号事件l在SDL machine中隐含着输入队列l例子:键盘输入触发事件输入事件触发事件输入事件1、输入、输入l状态机接收并消耗信号 图形语法l:=contains is connected t
23、o is followed by l:=l:=,*|l:=(,*)l:=允许条件(使能条件)允许条件(使能条件)lTrue:消耗信号,False:保存信号l:=contains l:=输入信号可带参数输入信号可带参数l使用变量接收参数值输入接允许条件(使能条件)l当状态在S1时,收到输入信号msg后,l系统计算“XMAX”的结果l结果为真,消耗msg信号,继续进行后续状态转移过程;l结果为假,不消耗msg信号,msg信号依然在输入队列中,系统持续计算表达式“XMAX”,直到结果为真或系统由于其他输入信号而执行了其他状态迁移过程S1msgXMAX触发事件优先输入事件触发事件优先输入事件2、优先输
24、入优先输入l信号队列FIFO原则处理,但优先输入除外l不接允许条件符 l图形语法l:=contains is followed by l:=,*l:=(,*)l:=触发事件输入事件触发事件输入事件3、连续信号、连续信号l状态转移由布尔表达式取值引起l图形语法l:=contains ;priority is followed by l:=l:=l注意连续信号和允许条件的区别自发转移自发转移l非外部激励也能使状态机发生转移1、图形语法l:=contains none is followed by l进程实例PId值:Sender=Self2、举例none保存保存1、图形语法l:=contains
25、l:=|l:=2、举例保存例子process P11(1)ac,dS1bdS2dS3eS4S5P1S1ecdabe保存(上一个例子的处理过程1)当前状态接收信号处理方式信号队列(用从左到右表示信号的先后次序)下一个状态信号队列保存队列e,c,d,a,b,e空S1e丢弃 c,d,a,b,e 空S1S1c保存 d,a,b,ecS1S1d保存 a,b,ec,dS1S1a消耗 b,ec,dS2S2c丢弃 b,edS2S2d保存 b,edS2S2b消耗 edS3S3d消耗 e空S4S4e丢弃 空空S4注:从上到下表示处理的顺序保存(上一个例子的处理过程2)当前状态接收信号处理方式信号队列(用从左到右表示
26、信号的先后次序,用红色表示保存的信号)下一个状态e,c,d,a,b,eS1e丢弃 c,d,a,b,eS1S1c保存 c,d,a,b,eS1S1d保存 c,d,a,b,eS1S1a消耗 c,d,b,eS2S2c丢弃 d,b,eS2S2d保存 d,b,eS2S2b消耗 d,eS3S3d消耗 eS4S4e丢弃 空S4注:从上到下表示处理的顺序在输入中表示信号*ssS1,S2,S3S1,S2,S3l单个信号l多条信号lS1,S2,S3l除了在本状态下已经列出的信号外的所有信号l*输入、连续信号、保存迁移过程迁移过程l状态机受到激励之后,执行的一系列动作1、输出、输出l通过信道一个代理实例发信号给另一个
27、代理实例 图形语法l:=contains l:=迁移过程-输出l:=,*l:=()l:=expression ,*l:=to|*l:=|thisl:=via|迁移过程-输出说明l输出体中信号标识符可带参数,可以为数值、表达式、变量等l信号最终要被一个进程或过程消耗(to)lpid expression:self、sender、parent、offspringlagent identifier:进程实例名lthis:本进程类型l通过的路径(via)l承载信号的信道名l经过的信关lto和via不能同时使用;都不使用时,通过唯一的信道发送出去举例:门控系统的控制面板进程用户通过 迁移过程-创建进程2
28、、创建、创建l静态创建,在系统初始化时创建l动态创建 图形语法l:=contains l:=l:=|this 举例动态进程处理l在SDL中可以动态创建和撤销(created and destroyed)l可以使用创建符号来创建一个进程;在创建符号内包含着被创建的进程类型l用offspring保留变量来返回被创建的进程IDl在SDL中用终止符号(Stop)来表示进程结束ProcessAoffspring 0yesnoThe User ServerInitialisation Procedure 迁移过程-任务3、任务、任务l执行与变量有关的动作 图形语法l:=contains l:=l:=|迁移
29、过程-任务 说明l任务符包含语句列表l赋值语句、条件语句、分支语句、复合语句、设置语句、复位语句a)赋值l:=x:=1;y:=x+1迁移过程-任务 b)IFlIf()else c)DecisionlDecision()():+else:d)组合语句e)非形式化文本描述 if(x 0)x:=1;else x:=x+1;decision(a)(=0):b:=1;(1:9):b:=2;else:b:=3;迁移过程-过程调用4、过程调用、过程调用l在进程或过程中都可以调用过程l进程图和过程图的区别 图形语法l:=contains l:=过程图ProcedurelPROCEDURE:和子程序类似 l用于
30、在SDL进行代码重用l减少SDL进程图的大小,将注意力集中在主要迁移过程l可以通过value(IN)或reference(IN/OUT)的方式传递参数sigAstateCProcB(SENDER)PROCEDURE ProcBfpar player PId;Gameid to player 迁移过程-调用和返回l:=l:=is associated with l:=说明l过程调用符中的实参与过程图中定义的形参匹配l过程图中定义的形参为in、out、in/out型l过程可有返回值,标在返回符旁l调用过程可认为是一个任务过程与进程l起始符不同l过程必须有返回符l进程可以没有结束,即没有终止符l过程
31、可以使用状态l过程没有信号输入队列,信号来自调用者(调用过程的进程)的信号输入队列 迁移过程-分支5、分支、分支l分支操作是一个动作,通过计算条件表达式选择不同迁移过程 图形语法l:=contains is followed by l:=迁移过程-分支l:=|any l:=+setl:=is associated with is followed by l:=|()l:=is associated with elseis followed by l:=|l:=分支 process calling 2/5wait_for_numT1busyToneVIA uGwait_for_onHooknum
32、(toNum)reset (T1)getUserPid(toNum,otherPid)otherPid=NULLTruemsg(Sorry,wrong number)wait_for_onHookFalsewait_for_connReplonHookreset (T1)A1 迁移过程-定时器6、定时器l在状态机图中,监视激励信号是否在定时器规定时间间隔内到达。若无激励到达,则触发超时事件,作为激励输入。l定时器操作包括:设置和复位l执行一个定时器操作即执行一个任务l超时作为一个触发事件,引起状态的迁移过程 迁移过程-定时器 文本语法l:=timer ,*;l:=:=l :=(,*)图形语法l
33、设置定时器、复位定时器l超时事件 迁移过程-定时器l:=contains l:=set(,)l:=now+l:=(,*)l:=contains l:=reset()迁移过程-汇接7、汇接、汇接l两种方式:连接符、合并 连接符l入连接域和出连接域l对每个出连接域,必须有且仅有一个同名入连接域与之对应l多个出连接域可汇接到一个入连接域l连接符只用于迁移过程,不可连接状态和触发事件 迁移过程-汇接l图形语法l:=contains l:=l:=contains is followed by l:=迁移过程-合并 合并迁移过程l对进程图中某一状态,不同触发事件引起不同迁移过程,若最终迁移到同一状态时,可
34、先合并迁移过程l图形语法l:=is connected to l:=l举例procedure ini_anadcl j idx10,lno int16;dcl ana_table anatab;ana_table(0)(j):=(.true,16.);ana_table(1)(j):=(.true,16.);ana_table(2)(j):=(.true,16.);ana_table(3)(j):=(.true,16.);ana_table(0)(3):=(.false,1.);ana_table(1)(0):=(.false,2.);ana_table(1)(1):=(.false,3.);
35、11(2)j:=j+1;j 10truefalsej:=0;SDL图形符号连接关系小结l启动符可接初始状态、迁移过程l连接符不可连接状态符和触发事件l迁移过程为一系列动作符号l迁移结果进入后继状态、进程终止l区别进程图和过程图的起始符和结束符l进程图和过程图只能始于启动符、状态符、入连接符图形符合连接关系 注释和正文扩展1、正文扩展2、注释SDL-Summary lStructurel关注功能块和进程间的组成关系l引入结构化可以l使整个系统的内部组成易于理解l能更好的反应和真实系统的情况l结构化和接口(interface)直接相关lBehaviorl关注信号的发送和接收l关注在进程内的状态转移
36、的描述l通过进程的动态描述和信号的通信过程来达到系统的行为描述SDL-Summary lDatal关注信息的保存l在信号中保存l在进程内保存l是eFSM中进行谓词逻辑运算的基础,从而在进程中可以进行判断和转移lInterfacesl关注信号和信号间的通信路径lSDL中的通信行为是异步通信,在SDL的通信中:l信号传递是有延迟的l信号在接收端是有可能被排队的l通过在接口上的通信将SDL系统的行为向外界表现出来SDL-SummarylStructure 用系统、功能块、和进程来对被描述(和定义)的系统进行层次化定义的手段lChannels 用来承载在代理(Environment,System,Blocks,Processes)间通信的信号(information&stimulus)lSDL的目标是描述和规定系统的所有行为l通过包含在系统内的功能块或进程的行为来进行描述和定义一个系统