第13章数码录音机UML建模实例介ppt课件.ppt

上传人:小飞机 文档编号:2103792 上传时间:2023-01-10 格式:PPT 页数:48 大小:219KB
返回 下载 相关 举报
第13章数码录音机UML建模实例介ppt课件.ppt_第1页
第1页 / 共48页
第13章数码录音机UML建模实例介ppt课件.ppt_第2页
第2页 / 共48页
第13章数码录音机UML建模实例介ppt课件.ppt_第3页
第3页 / 共48页
第13章数码录音机UML建模实例介ppt课件.ppt_第4页
第4页 / 共48页
第13章数码录音机UML建模实例介ppt课件.ppt_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《第13章数码录音机UML建模实例介ppt课件.ppt》由会员分享,可在线阅读,更多相关《第13章数码录音机UML建模实例介ppt课件.ppt(48页珍藏版)》请在三一办公上搜索。

1、第13章 数码录音机UML建模实例介,本章导读,统一建模语言UML对于面向对象软件的分析和设计提供了一个标准化的表示方法。使用UML图能够对复杂的软件系统(包括实时的嵌入式系统)进行建模。,13.1数码录音机的需求分析,数码录音机是一个用来录制和播放声音的电子设备,内置的麦克风能够把声音录下来并把其存放到一个存储器中,用户可以通过该设备前部的扬声器来播放在任意时刻录制下来的声音片段。数码录音机的体积应该比较小,使用方便,并能使用电池进行供电。该产品在外观上应该简洁大方,操作方便,并能具备以下几个特点:,3.1常用UML建模工具,1.能够存储10条信息,消息的长度有内置的存储器容量来决定。2.屏

2、幕上的操作菜单要简单,方便用户的使用。3.用户可以直接访问任何的信息。4.具有一个带日历的闹钟,用户可以设置闹钟。闹钟启动后,用户需要按下某个按键或者60秒后,闹钟会停止。5.屏幕上显示当前的日期和时间。另外,当前的操作和用户帮助还要显示在上面。6.屏幕上应该有一个电压指示器,当电池的电量低于一定值时,系统要提示用户需要充电。7.要求具有待机模式,当用户长时间不使用时,系统能进入待机的状态,当用户按下某一个按键时,还可以继续操作,这样可以节省能量。8.数码录音机的声音质量要好,使用8位6Khz的采样频率。,3.1常用UML建模工具,图13.1 系统总体模块图,13.1.1 外部事件,1.系统范

3、围图系统范围图描述了整个系统和外部环境之间的交互,把整个系统看成一个整体,不具体的描述系统的内部实现,只说明系统的参与者和系统之间连接问题。根据上述的系统功能需求的分析,可以得出系统的主要参与者有:用户(user),电池(battery)和时间(time)。2.事件事件是外部环境和系统之间传递的重要消息。对于一个实时系统,系统必须在规定的时间内对外部事件作出响应。,13.1.2 数码录音机的用例图,用例是从使用者的角度所描述的系统的功能。使用者可能是一个人或者某个设备。每个用例表示对系统使用的一种方法,每个用例完成后产生不同的结果。在本系统中共有6个用例。数码录音机的用例图如图 13.3所示。

4、,13.1.2 数码录音机的用例图,图 13.3 用例图,13.1.2 数码录音机的用例图,1.记录一条信息(Record a message)使用者在录制的信息时,要将信息存储在某个目录中,所以在记录一条信息时首先是选中要某个存储目录,按下“录音”(Recording)键。如果在该位置已经有一条存储信息,该记录将被删除。系统开始通过麦克风录音,直到用户按下“停止”(Stop)键或者是将系统的内存耗尽。2.回放一条信息(Playback a message)用户找到某个信息的存储位置,然后按“播放”(Play)按钮。如果在该位置有信息,则系统通过扬声器回放该声音,直到播放完毕或是用户按下停止按

5、钮。,13.1.2 数码录音机的用例图,3.删除一条信息(Delete a message)用户选中某个信息的存储位置,按下“删除”(Delete)按钮,该位置存储的信息将被永久的删除,并释放其占用的内存空间。4.定时闹钟(Set the alarm time)用户可以设定是否开启或是关闭闹钟,以及响铃的时间。这些操作在闹钟菜单中进行设置。5.设定系统的时钟(Set the clock time)用户可以通过此设定系统的时钟来调整和校准系统的时间,也可将系统的时间改为当前时区的时间。6.显示系统时间(Watch the time)用户可以查看屏幕上显示的系统当前时间和日期。,13.1.3 用例

6、场景,用例的内容描述使我们对系统的功能有了一个整体的认知,可以知道有哪些参与者会与系统发生交互,每一个参与者需要系统为它提供什么样的服务。用例描述的是参与者与系统之间的对话,但是这个对话的细节并没有在用例图中表述出来,针对每一个用例可以用事件流来描述其内容细节。场景就是用来描述系统与外部参与者之间的交互行为。比如,我们必须要研究在系统回放声音的时候,如果电池电量不足以及当系统播放声音时闹钟响起来,这两种情况系统将如何处理。播放声音信息的用例场景的事件流如表13.2所示。,13.1.3 用例场景,当播放声音时闹铃响起来时,系统将如何处理呢?设计时给闹钟响铃一个较高的优先级,回放声音时闹钟响铃的场

7、景的事件流描述如表13.3所示。系统可以关闭显示屏幕的背景灯、麦克风和扬声器。这些部件在系统中都是要耗费大量电池电量的。通过关闭这些功能可以节省能源以及延长电池的使用寿命。当电池电量不足的时候能够向系统发出报警,系统能关闭所有外设并切换到待机状态。当用户给电池充电后,系统将离开待机模式。当系统处于待机模式时,将所有信息保存在内存中。当系统进入待机模式,被闹钟唤醒,然后接收到电量不足的警告后,重新进入待机模式场景的事件流如表13.4所示。,13.2 数码录音机中的类图,前面介绍了系统的需求分析,下面将根据已有的需求,给出问题整体解决方案的类图。图中将包含系统需要的主要的类以及其相互关系。,13.

8、2.1 数码录音系统中的对象,建立类图的第一步是找出系统中的相关的对象。在本系统中涉及的对象描述如表13.5所示。,13.2.2 数码录音机中的类图,使用者通过Display类(显示器)和keyboard(键盘)与系统交互。这些都是被动对象,因此系统提供了一个UserInterface(用户接口)类来管理上述的交互行为。UserInterface类依赖AudioContoller(音频控制器)类来完成其任务。,13.2.2 数码录音机中的类图,图 13.4 数字录音机系统类,13.2.2 数码录音机中的类图,图13.5数字录音机的子系统,13.2.2 数码录音机中的类图,1.音频子系统类图(A

9、udio Subsystem)每条信息是由一组音频块组成,而每个音频块又包含了一组音频样本。音频子系统总是记录或是回放一个完整的音频块。音频的输入类AudioInput和输出类AudioOutput是实时工作的,Timer类是硬件定时器的封装类,它为AudioInput和AudioOutput类提供精确定时。,图13.6音频子系统类图,13.2.2 数码录音机中的类图,回放一条信息和记录一条信息是一个比较复杂的过程,需要精确的定时以及和硬件进行交互。因此在系统中使用3个不同的类来播放信息。而且,这样的设计能够很容易将系统扩展成可以处理包含2声道音频块或使用管道压缩技术的立体声信息。,13.2.

10、2 数码录音机中的类图,图13.7声音信息的内部表示,13.2.2 数码录音机中的类图,图13.8回放信息的顺序图,13.2.2 数码录音机中的类图,2.信息内存子系统类图(Message Memory Subsystem)MessageMemory 类主要负责管理系统的存储空间,它维护了一个目录来保存已有的信息,同时为新信息分配存储空间。用户接口通过MessageMemory 类取得已有的信息清单,但不能对其进行修改。只能通过AudioController类来修改MessageMemory管理的内容。用户可以通过MessageMemory类的deleteMessage删除一条信息。实际上de

11、leteMessage将调用AudioController类中的相关方法对信息进行删除。删除一条正在播放信息的情况如图13.9所示。,13.2.2 数码录音机中的类图,图 13.9Message memory类图,13.2.2 数码录音机中的类图,图13.10删除一条正在播放信息的情况,13.2.2 数码录音机中的类图,3.Alarm Clock子系统类图(Alarm Clock Subsystem)AlarmClock类保存当前日期、时间和闹钟定时的设定。4.User Interface子系统类图(.User Interface Subsystem),13.3 数码录音机中的状态图,1.音频

12、控制器(AudioController)一个音频控制器对象负责控制声道。声道是用来录制或是回放声音信息以及播放闹铃的声音。2.音频输入/AudioInput一个AudioInput对象控制一个声道。在DMA通道的帮助下,通过麦克风记录一个音频块并将其进行压缩。3.音频输出/AudioOutput 一个AudioOutput对象控制一个声道,能够通过扬声器播放一个音频块。,13.3 数码录音机中的状态图,4.麦克风/MicrophoneMicrophone对象是硬件麦克风的包装类,它具有一个可开关的输入放大器,当麦克风打开的时候,它能够周期性的捕获声音采样。5.扬声器/Speaker Speak

13、er对象是扬声器的包装类,它具有一个可开关的输出放大器。6.时钟/Timer 一个硬件时钟负责测量时间,Timer对象是时钟的包装类。,13.4数码录音机中的系统架构,数码录音机系统涉及很多的硬件资源,下面将对系统中的所有硬件资源进行描述。,13.4.1 物理构架,主处理器采用Hitachi SH7032 16MHz工作主频,带8Kb内置RAM,内核采用常规的RISC整数管道技术,负责运行机器指令。系统内置外设包括一个模数转换器、一些定时器和计数器、DMA通道和一个监控器。,13.4.2 构架模式,系统对软件没有安全和可靠性方面的要求,也不支持硬件容错。或许会出现在设备报废之前,由于用户使用不

14、慎,如进水或掉到地上而造成某些部件损坏的情况。监控器负责在发生障碍的情况下重新启动系统。监控器重新启动系统会造成内存中内容的丢失。因为是封闭式嵌入系统,所以数码录音机不具备与其它系统进行通信的功能。同时,也没必要提供仅供测试和诊断使用的通信功能,因为系统很简单,通过屏幕所显示的提示进行测试即可。事实上,本系统在设计上就是不能测试和维修的。处理器通过内存地址空间访问外设,它们被紧密的结合在一起,根本就不需要任何特殊的通信机制。,13.4.3 并行性设计,并行模式必须明确软件中所使用的线程以及线程之间的通信机制。为了使设计尽可能简单,我们决定在当前的设计中不采用实时操作系统而在将来的设计中采用。在

15、当前设计中,有两个可执行线程。用户线程是一个交互线程,用来管理使用者与系统之间通过按键和屏幕进行的交互行为。音频系统线负责调度响应对象和实时对象。,13.5 数码录音机中的协作图,下面将描述系统中不同的软件对象是怎样通过协作而完成各自的功能,即对象之间是怎样交换消息的。,13.5.1 硬件与反应对象之间的协作,我们可以将硬件视为一个参与者。硬件可以通过中断请求发送给运行程序一个事件。当一个硬件设备需要给程序发送事件的时候便会产生一个中断请求,在某个时间点处理器会接受中断请求,并停止当前正在执行的程序流程,然后调用中断处理过程。中断处理过程处理硬件请求后必须尽快返回,继续进行。由于中断服务程序不

16、能是一个对象的方法,所以,设计者必须建立一个将硬件中断请求转换为对象信息的机制。本系统将这种机制封装在ISR抽象类中。ISR类的子类就可以像实现普通方法那样实现中断服务程序。,13.5.2 反应对象与用户接口之间的协作,键盘、电量表、闹钟、音频控制器与用户接口之间的协作遵循条件反应模式。反应对象只向事件代理发送事件,并不需要等待用户接口读取事件。用户接口定期检查事件代理中是否有新事件。一旦发现有新事件则委托屏幕和控制器产生响应。,13.5.3 Scheduler 和 Alarm Clock,Keyboard和Battery Level Meter之间的协作,Scheduler对象为依赖时间信息

17、的类提供精确定时和时序安排。AlarmClock从Scheduler类订阅信息。每秒钟Scheduler都会通报AlarmClock类有一秒钟时间已经结束。Keyboard对象需要定期取得物理键盘所有按键的状态。如果每秒钟检测10次键盘输入。那么用户按下并放开一个按键的时间小于1/20秒,则该按键输入会丢失。BatteryLevelMeter 类每5秒钟测量一次电池的电量。Scheduler负责周期性的激活Keyboard 和BatterylevelMeter类。图13.22显示了Scheduler是如何周期性的唤醒系统的反应类的。,13.5.4 MessageMemory、Message和A

18、udioController对象之间的协作,MessageMemory是Message对象的容器。这种协作关系遵循Container模式。AudioController在需要访问Message对象的时候会用到MessageMemory类。,13.5.5 SettingTimeUserMode,AlarmClock,Keyboard 和ClockView 对象之间的协作,AlarmClock为ClockView提供一个模型用来在显示屏上显示时间。UserMode对象控制系统与用户之间的交互行为。由于AlarmClock是反应对象,ClockView是交互对象。它们之间的协作将遵循Reactive

19、 Subject 模式。Keyboard对象向UserInterface类通告用户按键事件也遵循该模式。图13.23显示了当前用户模式为SettingTimeUserMode.时,用户按下up 键后所产生一系列消息的顺序过程。,13.5.6 UserInterface,AudioController,Messages 和AudioOutput 对象之间的协作,UserInterface 和AudioController 之间的协作采用了Reactive Subject 模式。AudioController,Message,AudioInput 和AudioOutput 之间的协作采用Obser

20、ver模式。图13.24显示了播放一条声音信息所的消息传递顺序。为了简化,声音信息用一个音频块表示。这种合作有点复杂但支持回放和录制两个不同的信息。同时,还支持录制和回放立体声声音,但每条信息将有两个音频块流组成。,13.6 详细设计,本部分主要包括:硬件的对象建模、音频压缩算法、使用直接内存访问通道、硬件资源的分配 和内存分配。,13.6.1 硬件的对象建模,一个硬件封装类是对一个硬件设备的软件对象化描述,是应用程序与硬件之间的接口。硬件封装类的构造函数将初始化硬件设备,然后该类所对应的硬件就可以使用了。可以通过封装类的方法对硬件进行配置、启动或停止等操作。由于硬件的状态将由封装类的状态表示

21、,通常情况下封装类都不会有太多的属性。详细设计和实现硬件封装类需要很准确的硬件方面的知识。本系统中的硬件封装类包括speaker、microphone、timer和keyboard对象。,13.6.2 音频压缩算法,一个很明确的需求就是,必须以8位采样样本,6Khz频率录制声音。这表示在录制过程中,每秒钟需要至少6KB内存。可以通过对输入信号的压缩处理来减少内存的需要量。最简单的音频压缩是适应性Delta脉冲编码调制技术(Adaptive Delta Pulse Code ModulationADPCM)。ADPCM很容易实现并且CPU占用率很低。,13.6.3 使用直接内存访问通道,在录制声

22、音信息的时候,一个AudioInput对象每秒钟需要从麦克风获得6000个样本。有多个途径可以完成这个任务。,图13.25记录一个音频块,图13.26 回放一个音频块,13.6.4 硬件资源的分配,系统将硬件和外设资源分配给不同的反应对象。由于中断向量、DMA通道、定时器和输入/输出端口的数量限制。因此,在设计时要仔细计划如何使用它们。,13.6.5 内存分配,MessageMemory对象的作用是分配和释放存储声音信息的内存空间。由于有效内存很有限而且系统没有虚拟内存,所以不得不设计一种能够保证内存的使用最佳化的机制。这包括通过内存碎片整理和对象排列技术来避免内存空间的浪费。当一个声音信息对

23、象被创建时,它将分配一个数组用来存储音频块,数组中的每个元素包含一个使用标记和一个指向信息流中下一个音频块的指针。通过内存块重用以及预分配技术避免出现内存碎片,不采用在每次录制声音信息的时候分配而在删除信息的时候释放内存的做法。通常情况下,内存分配函数只能由存储队列中分配尺寸确定的内存空间,音频块的尺寸是存储队列组成因子尺寸的整数倍。这样就可以保证不浪费一个字节。,13.7 数码录音机实现,考虑到嵌入式系统的最终软件产品不是软件映射到内存中,而是常驻在永久性内存中。因此,程序的所有连接库必须静态调用,必须为程序的所有符号分配绝对地址。程序中必须包含硬件初始化、硬件检查以及重新排列RAM中可执行程序的代码。程序能够初始化处理器堆栈,将只读存储器中的变量拷贝到随机存储器中,将未初始化的变量置为0。在目标原型产品中包含带有一个小型调试器的永久性内存。系统打开后调试器被激活,它等待从主机通过通信连接如串口线或网络连接下载主程序。主程序被下载后可以运行或对其进行调试。当软件开发完成后并通过测试后,可以保存在永久性内存中如ROM或EPROM。这些内存可以被插到目标机器上,只要机器启动程序就能运行。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号