SDL语言介绍SDL(规范描述语言)广泛地用于描述通信系统的行为。它是CCITT推荐的规范描述语言。经过ITU-T的发展和标准化,定义在兰皮书Z.100建议中。ITU-T在1988年推出了第一个正式版,以后每四年进行一次增补更新。作为国际标准化的正式语言,它被用来规范实时多任务系统的描述。SDL与其它一些相关技术如Z.120建议——消息序列图和Z.105建议及抽象语法符号一起形成一个完整的描述语言。在协议软件的开发流程中,SDL被应用在系统规范描述和设计阶段。它完全独立于硬件实现与操作系统。Telelogic
Tau公司提供的SDL软件不仅可以用于规范描述和设计,还可以把SDL的描述和设计直接生成标准的C代码。用户也可以直接在SDL描述和设计中嵌入C代码,从而完成图1中的实现部分的功能。经SDL描述产生的C代码(包括嵌入的C代码)可以直接与多种嵌入式(或非嵌入式)实时多任务操作系统集成,如NUCLUES、pSOS、Solaris、Vrtx、OSE等,集成后的代码可以直接在目标板上运行,从而方便用户进行协议软件的开发。与SDL相对应的MSC(信息序列图),是ITU-T规范中用来表示信息序列的语言。在1991年,ITU-T对MSC进行了标准化。用MSC图可以方便地表示出信号的流向,即信号是从什么进程发送到什么进程,信号是否带有参数、具体的参数值等都可以直观地表示在SDL
MSC图中,这对了解和分析信号在各个模块间的传递带来了很大的方便。不仅如此,通过MSC图还可以将SDL的各功能有机地联系在一起。在软件的跟踪及调试过程中,使用Simulator和Validator可以产生MSC图。在软件的TTCN测试过程中,MSC图还经常被用于分析测试的结果。通过MSC图还可以直观地描述信号发送的先后次序,而这些在SDL描述中是办不到的。开发的最后一步是使用TTCN进行测试。TTCN(树表结合表示法)是由ISO和ITU定义在ISO/IEC
9646-3中的一个规范测试语言,是ISO/IEC
9646的第三部分标准,用于OSI一致性测试集的测试表示法。树表结合表示法,顾名思义,就是采用以树和表格为表现形式的测试表示法,其中表格主要用于数据类型、原语、协议观察点、约束等,而树则用于描述测试集、测试例、测试步。对标准有效性的验证和通信软件的一致性测试就显得非常重要。用SDL设计的系统是一个等级结构的系统,它包括了系统、功能块和进程等。一个系统可以包含多个块,每个块可由一个或多个进程组成。进程是SDL系统中的最小处理单元,采用EFSM描述,所有用户的处理和操作都在进程中完成。在系统级下定义的内容(信号、数据结构等)可以在该系统下所有的块和进程中使用,在块下定义的内容可以在该块的任何进程中使用。正是SDL的这些特点,在开发协议软件中起着不可比拟的作用,下面以SDL开发TD-SCDMA高层信令简单说明SDL的使用。2
TD-SCDMA系统结构首先介绍一下TD-SCDMA系统结构。根据TSM协议的要求和实际开发产品的需要,可将TD-SCDMA系统用户终端协议软件分成图2所示的系统结构(没有包括分组数据业务部分)。整个系统结构满足TSM协议的分层结构,同时根据控制和软件的需要增添了TSR、HL1模块,是一个SDL块级的TD-SCDMA的UE端高层信令结构。整个系统共有六个模块,每个模块对应SDL中的一个块,每个模块分别完成不同的功能。下面简要介绍每个模块的功能和接口。CM模块完成连接管理功能,包括呼叫控制、短消息和附加业务三部分,即图2中的CM块。MM模块完成在电路交换模式下的移动性管理功能,实现UE的移动性、安全性以及连接管理,即图2中的MM块。TSR模块是一个信号中转模块,是MM子层的一部分,主要实现信号路由的功能;同时基于CM子层中各实体的多实例(如建立多个呼叫)特性,对CM模块进行多实例的管理。RRM模块完成无线资源管理和控制功能。在空闲模式下,RRM模块执行小区选择和小区重选、为响应网络寻呼或高层的RR建立请求而发起RR连接建立以及切换等任务;在RR连接建立过程中,RRM控制HL1模块发起立即指派过程、主信令链路的建立过程;在连接模式下,RRM主要完成连接模式的资源管理,如指派、信道模式改变和切换等控制过程;处理随路信令,如分析和处理系统信息类型5、类型6;发送测量报告以及对在FACCH信道上接收到的层3消息进行分析和处理等任务。另外RRM模块还控制HL1模块对服务小区和邻近小区的测量等过程。DL模块完成无线连接控制功能,主要包括:信道上提供一个或多个数据链路的连接,不同的连接通过数据链路连接标识DLCI区分;提供帧类型的识别机制;允许层3消息在2个层3对等实体之间进行透明传输;顺序控制,以保持帧通过一条数据链路连接后的顺序;具有在数据链路上对格式和操作性错误的检测功能;当出现数据链路的不可恢复性错误时,具有向层3实体报告错误的机制;具有流量控制的功能;在RACH上完成接入请求后,当需要建立一条数据链路时具有解决冲突的功能。HL1模块是连接协议层与物理层的桥梁。按系统的硬件设计,协议层和应用层的任务由ARM处理器完成,DSP处理器负责完成具体的物理层底层任务,如信源和信道的编解码、交织、各种物理层参数的测量、扩频及调制等。两种处理器之间通过中断交换数据。HL1根据协议层的请求,通过对协议层的任务分解和规划,对物理层资源进行调度和控制。主要包括:在小区选择过程中,HL1模块控制物理层进行邻近小区的码功率的测量,解读BSIC,解读DwPTS的相位,读取BCCH块等任务;在空闲状态下,HL1模块控制物理层执行服务小区和邻近小区的测量,解读服务小区的系统信息和最强6个邻近小区的系统信息类型1,并把测量结果和读取的系统信息报告给RRM模块;在随机接入过程中,根据RRM模块的控制信号,HL1模块控制并调度物理层执行随机接入过程的消息发送与接收;在连接模式下HL1控制物理层执行数据的收发、服务和邻近小区的测量以及切换过程等。
图2中,每个模块对应SDL描述中的一个块级结构,在每个块级结构中又可以分成很多个进程,高层信令可以通过PHI信道和物理层进行通信。向上可以通过MMI、CMMI、MMSIM信号和人机界面进行信息交互。而人机界面可以由WINCE系统完成,硬件驱动部分可以直接编程实现[3]。3
利用SDL系统开发TD-SCDMA方法在图2的TD-SCDMA系统描述中,可以利用Telelogica
Tau
AB公司的SDL
Editor将其描述成标准的SDL描述形式。但不是系统所有的部分都可以使用SDL开发。在硬件驱动、物理层具体的算法、信道的编解码以及SIM卡的操作等都需要C语言(或者其他语言)完成。最后将所有的代码编译成一个可以执行的目标代码。具体过程如图3所示。系统开发代码运行平台是ARM,操作系统是NUCLUES
PLUS。利用SDL实现TD-SCDMA高层信令软件过程如下:第一步:首先根据详细报告的描述,定义出所有的数据结构。例如保存系统信息的结构体、IMSI码结构、TMSI码以及任务规划等结构定义,这些数据结构可以C/C++语言格式或是ANS.1格式完成,它们都可以被SDL使用。C/C++描述可以被SDL提供的CPP2SDL.EXE工具很方便地转换成SDL,可以直接使用PR文本[8]。第二步:利用SDL工具将图2中完成的TD-SCDMA系统描述和生成相关的PR描述,根据需要编译成不同的C/C++代码,最常用的有两种:一种是在目标板上运行的代码?穴通常选用Cadvanced模式?雪,另一种是可以提供给TTCN测试的代码。第三步:由于生成的目标代码和测试代码具有很好的一致性,利用TTCN可以检查出SDL设计中的问题,以保证SDL设计的正确性。这也是利用SDL进行TD-SCDMA系统开发的优势之一。根据TSM
11(TD-SCDMA系统测试规范)系列所编写的测试例,方便进行协议的一致性测试,最大可能地发现开发中出现的问题,避免了这些错误带到板级调试中,从而加快了软件开发速度。第四步:SDL描述生成的C源代码要在ARM硬件系统上运行,还需要与选定的RTOS操作系统进行集成。SDL可以与多种RTOS系统相互集成,它们的集成原理相同。根据
SDL的进程任务,在RTOS系统中的处理情况可以分成两种,一种是深度集成,另外一种是轻度集成。它们的效果相同,其区别在于深度集成将SDL描述中的每一个进程作为RTOS中的一个进程来处理,而轻度集成则将整个SDL系统作为一个RTOS进程进行处理。在实际应用中,大多使用第二种方法。这种方法便于SDL和RTOS系统的集成,集成时只需要修改SDL的接口文件setenv.c。在该接口文件中,增加下列NUCLEUS的函数:NU_Create_Memory_Pool()NU_Allocate_Memory()NU_Create_Task()前两个函数被NUCLEUS用来分配内存,保存SDL进程控制块。NU_Create_Task()函数用于创建NUCLEUS的任务,它是SDL进程与NUCLEUS接口的关键函数。该函数共有11个参数:Task_Ptr、“SDL_fn”、SDL_main、0、NULL、Stack_Ptr、MANAGER_STACK_SIZE、MANAGER_TASK_PRIORITY、MANAGER_TIME_SLICE、NU_PREEMPT、NU_START;其中Task_Prt是指向进程的控制块、“SDL_fn”是进程的名字、Stack_Ptr是进程的堆栈指针、MANAGER_STACK_SIZE是堆栈的大小;MANAGER_TIME_SLICE是进程可以占用的最大时间(以ticks来计算)。经过修改后的接口函数只要与SDL生成的源代码和操作系统提供的代码一起编译即可。每次启动系统后,NUCLEUS将SDL描述当作是一个独立的任务进行处理。SDL进程由SDL内核管理,而整个SDL系统则由NUCLEUS管理。NUCLEUS系统有自己一套完整的消息处理机制,同时SDL生成的代码也有自己一套信号处理机制,它们相互独立,共同作用组成应用系统[9]。最后将SDL生成的代码、NUCLUES代码和所编写的硬件驱动统一编写成ARM运行代码。在整个软件开发过程中,实际开发过程不是完全由第一步到第四步这么简单,有时它们交织在一起。在TTCN以及目标板测试中发现的问题反馈到设计过程,不断修正,直到系统的最后完善。从以上过程描述可以看出SDL有以下优势:(1)SDL工具可以同时支持图形(GR)和文本描述(PR),并且可以相互转换。图形方式方便设计人员直观了解设计结果,而文本方式便于保存。(2)便于软件设计,可以将详细设计报告和代码设计过程有机地结合在一起,SDL可以把利用SDL描述的详细报告部分直接生成所需要的代码。(3)
由于SDL具有一致性的目标源代码和测试代码,可以利用TTCN直接测试,大大提高了SDL设计的源代码的正确性。同时SDL具有丰富的MSC接口,在测试的Validator、Simulator、TTCN过程中都有MSC图输出,可以提供设计人员检查设计中存在的问题。SDL生成的代码可以在多种实时多任务平台上运行,可以方便地与pSOS、Nuclues
Plus、Solaris、VxWorks、OSEDelta等RTOS系统相互集成,具有较好的可一致性。SDL工具可以将整个软件开发过程、需求报告、总体设计报告、详细设计报告、代码设计及测试和维护集成一体。各个部分的设计都可以使用SDL的不同功能来描述,最大限度地节省人力和物力。图3
利用SDL开发TD-SCDMA系统模式(UE端)
本文没有介绍SDL的UML部分可以完成软件开发的需求分析、总体或概要设计。结合SDL的功能,Telelogical
Tau
AB提供的SDL工具将软件开发的全过程有机地结合在一起,从需求分析到代码生成。加快了软件开发速度,缩短了软件开发周期。在整个TD-SCDMA高层项目开发中,SDL工具软件起关键作用。但是SDL在协议软件的开发中也不是万能的,虽然SDL的描述直观、方便,但是SDL生成的代码非常复杂,不便于修改和阅读。这也是惟一对SDL担忧的地方。通常在生成代码中一个不起眼的BUG,将永远都不会找到。
如何利用SDL开发TD-SCDMA高层信令
最新推荐文章于 2022-11-02 15:17:07 发布