免费智能真题库 > 历年试卷 > 嵌入式系统设计师 > 2020年下半年 嵌入式系统设计师 下午试卷 案例
  第2题      
  知识点:   触发器   信号   端口   模块设计

 
电子体温计可以快速、准确地进行体温测量,第一时间排查发热病人。李工通过AD模块设计体温采集电路,如图2-1所示,AD采集芯片使用ADC0809,单片机采用AT89S52。

对应的电路连接描述如下:
(1) ADC0809的DO-D7端口连接到AT89S52的P0口;
(2) ADC0809的A、B、C为AD输入IN0~IN7选择端,A为最高位,C为最低位;
(3) ADC0809的AD转换结束信号(EOC)连接到AT89S52的P3.2;
(4) ADC0809的AD转换启动信号(ST)受AT89S52的P1.4管脚控制;
(5) ADC0809的AD转换数据输出使能(OE)受AT89S52的P3.1管脚控制;
(6) ADC0809的时钟通过AT89S52的ALE输出控制,经过2个D触发器来生成;
(7) ADC0809的输入模拟电压范围是0-5V;
(8) AT89S52的P3.0管脚用来控制LED。
对于ADC0809而言,启动一次AD转换时,需要给ST—个短时的高电平。在AD转换过程中,EOC为低电平,当AD转换完毕后,EOC会变为高电平。在AD转换结束后,需要给OE一个短时高电平,在该期间内从DO-IT7读取AD转换后的数据。
 
问题:2.1   (3分)
AT89S52和ADC0809之间的连接线中,对ADC0809而言,下列信号中哪些为输入信号?
A. ST           B. EOC       C. OE       D. A         E. B          F. C
 
问题:2.2   (2分)
当外围的温度传感器模拟电压为1.2V时,ADC0809的输出值是多少?
 
问题:2.3   (2分)
若单片机AT89S52的ALE输出为2M的时钟频率,那么ADC0809的时钟是多少?
 
问题:2.4   (8分)
李工按照该电路的工作原理设计了如下程序,该程序以査询方式实现AD转换,读取AD转换后的数据。
请根据逻辑,在下面A到0中选择正确答案,完成(1)-(8)填空。

A. LED=0         B. LED=1          C. OE =1         E.ST=O       F.ST=1       G. P0=0xF8      H. P0=0xFC      I.while (EOC==0)         J. while (EOC===l)       K.ADdata=P0                      L. P0=ADdata      M. if(ADdata>128)             N. if (ADdata < 128)             O. LED=1 
 
 
 

   知识点讲解    
   · 触发器    · 信号    · 端口    · 模块设计
 
       触发器
        触发器种类很多。按时钟控制方式来分,有电位触发、边沿触发、主-从触发等方式。
        按功能分类,有R-S型、D型、J-K型等功能。同一功能触发器可以由不同触发方式来实现。对使用者来说,在选用触发器时,触发方式是必须考虑的因素。因为相同功能的触发器,若触发方式选用不当,系统达不到预期设计要求。这里将以触发方式为线索,介绍几种常用的触发器。
        (1)电位触发方式触发器。当触发器的同步控制信号E为约定“1”或“0”电平时,触发器接收输入数据,此时输入数据D的任何变化都会在输出Q端得到反映;当E为非约定电平时,触发器状态保持不变。鉴于它接收信息的条件是E出现约定的逻辑电平,故称它为电位触发方式触发器,简称电位触发器。
        电位触发器具有结构简单的优点。在计算机中常用它来组成暂存器。
        (2)边沿触发方式触发器。具有如下所述特点的触发器称为边沿触发方式触发器,简称边沿触发器。触发器是时钟脉冲CP的某一约定跳变(正跳变或负跳变)来到时的输入数据。在CP=1及CP=0期间以及CP非约定跳变到来时,触发器不接收数据。
        常用的正边沿触发器是D触发器,下图给出了它的逻辑图及功能表。
        
        D触发器逻辑图
        下面比较边沿触发器和电位触发器。
        电位触发器在E=1期间来到的数据会立刻被接收。但对于边沿触发器,在CP=1期间来到的数据,必须“延迟”到该CP=1过后的下一个CP边沿来到时才被接收。因此边沿触发器又称延迟型触发器。
        边沿触发器在CP正跳变(对正边沿触发器)以外期间出现在D端的数据和干扰不会被接收,因此有很强的抗数据端干扰的能力而被广泛应用,它除用来组成寄存器外,还可用来组成计数器和移位寄存器等。
        至于电位触发器,只要E为约定电平,数据来到后就可立即被接收,它不需像边沿触发器那样保持到约定控制信号跳变到来才被接收。
        (3)触发器的开关特性。描述触发器的参数很多,其中既有描述传输延迟的参数,也有描述各输入波形宽度要求的参数,还有描述各输入波形之间时间配合要求的参数。如果在使用时不能满足参数的要求,电路就不能正常地工作。
 
       信号
        任务间同步的另一种方式是异步信号。在两个任务之间,可以通过相互发送信号的方式,来协调它们之间的运行步调。
        所谓的信号,指的是系统给任务的一个指示,表明某个异步事件已经发生了。该事件可能来自于外部(如其他的任务、硬件或定时器),也可能来自于内部(如执行指令出错)。异步信号管理允许任务定义一个异步信号服务例程ASR(Asynchronous Signal Routine),与中断服务程序不同的是,ASR是与特定的任务相对应的。当一个任务正在运行的时候,如果它收到了一个信号,将暂停执行当前的指令,转而切换到相应的信号服务例程去运行。不过这种切换不是任务之间的切换,因为信号服务例程通常还是在当前任务的上下文环境中运行的。
        信号机制与中断处理机制非常相似,但又各有不同。它们的相同点是:
        .都具有中断性:在处理中断和异步信号时,都要暂时地中断当前任务的运行;
        .都有相应的服务程序;
        .都可以屏蔽响应:外部硬件中断可以通过相应的寄存器操作来屏蔽,任务也能够选择不对异步信号进行响应。
        信号机制与中断机制的不同点是:
        .中断是由硬件或特定的指令产生,而信号是由系统调用产生;
        .中断触发后,硬件会根据中断向量找到相应的处理程序去执行;而信号则通过发送信号的系统调用来触发,但系统不一定马上对它进行处理;
        .中断处理程序是在系统内核的上下文中运行,是全局的;而信号处理程序是在相关任务的上下文中运行,是任务的一个组成部分。
        实时系统中不同的任务经常需要互斥地访问共享资源。当任务试图访问资源时被正使用该资源的其他任务阻塞,可能出现优先级反转的现象,即当高优先级任务企图访问已被某低优先级任务占有的共享资源时,高优先级任务必须等待直到低优先级任务释放它占有的资源。如果该低优先级任务又被一个或多个中等优先级任务阻塞,问题就更加严重。由于低优先级任务得不到执行就不能访问资源、释放资源。于是低优先级任务就以一个不确定的时间阻塞高优先级的任务,导致系统的实时性没有保障。下图为是一个优先级反转的示例。
        
        一个优先级反转的示例
        如上图所示,系统存在任务1、任务2、任务3(优先级从高到低排列)和资源R。某时,任务1和任务2都被阻塞,任务3运行且占用资源R。一段时间后,任务1和任务2相继就绪,任务1抢占任务3运行,由于申请资源R失败任务1被挂起。由于任务2的优先级高于任务3,任务2运行。由于任务3不能运行和释放资源R,因此任务1一直被阻塞。极端情况下,任务1永远无法运行,处于饿死状态。
        解决优先级反转问题的常用算法有优先级继承和优先级天花板。
               优先级继承协议
               L. Sha、R. Rajkumar和J. P. Lehoczky针对资源访问控制提出了优先级继承协议(Priority Inheritance Protocol,PIP)。
               PIP协议能与任何优先级驱动的抢占式调度算法配合使用,而且不需要有关任务访问资源情况的先验知识。优先级继承协议的执行方式是:当低优先级任务正在使用资源,高优先级任务抢占执行后也要访问该资源时,低优先级任务将提升自身的优先级到高优先级任务的级别,保证低优先级任务继续使用当前资源,以尽快完成访问,尽快释放占用的资源。这样就使高优先级任务得以执行,从而减少高优先级任务被多个低优先级任务阻塞的时间。低优先级任务在运行中,继承了高优先级任务的优先级,所以该协议被称作优先级继承协议。
               由于只有高优先级任务访问正被低优先级任务使用的资源时,优先级继承才会发生,在此之前,高优先级任务能够抢占低优先级任务并执行,所以优先级继承协议不能防止死锁,而且阻塞是可以传递的,会形成链式阻塞。另外,优先级继承协议不能将任务所经历的阻塞时间减少到尽可能小的某个范围内。最坏情况下,一个需要μ个资源,并且与v个低优先级任务冲突的任务可能被阻塞min(μ,v)次。
               优先级冲顶协议
               J. B. Goodenough和L. Sha针对资源访问控制提出了优先级冲顶协议(Priority Ceiling Protocol,PCP)。
               PCP协议扩展了PIP协议,能防止死锁和减少高优先级任务经历的阻塞时间。该协议假设所有任务分配的优先级都是固定的,每个任务需要的资源在执行前就已确定。每个资源都具有优先级冲顶值,等于所有访问该资源的任务中具有的最高优先级。任一时刻,当前系统冲顶值(current priority ceiling)等于所有正被使用资源具有的最高冲顶值。如果当前没有资源被访问,则当前系统冲顶值等于一个不存在的最小优先级。当任务试图访问一个资源时,只有其优先级高于当前系统冲顶值,或其未释放资源的冲顶值等于当前系统冲顶值才能获得资源,否则会被阻塞。而造成阻塞的低优先级任务将继承该高优先级任务的优先级。
               已经证明,PCP协议的执行规则能防止死锁,但其代价是高优先级任务可能会经历优先级冲顶阻塞(Priority ceiling blocking)。即高优先级任务可能被一个正使用某资源的低优先级任务阻塞,而该资源并不是高优先级任务请求的。这种阻塞又被称作回避阻塞(avoidance blocking),意思是因为回避死锁而引起的阻塞。即使如此,在PCP协议下,每个高优先级任务至多被低优先级任务阻塞一次。使用PCP协议后,能静态分析和确定任务之间的资源竞争,计算出任务可能经历的最大阻塞时间,从而能分析任务集合的可调度性。在PCP协议下,高优先级任务被阻塞时会放弃处理器,因此,访问共享资源的任务可能会产生4次现场切换。
 
       端口
        在TCP/IP网络中,传输层的所有服务都包含端口号,它们可以唯一区分每个数据包包含哪些应用协议。端口系统利用这种信息来区分包中的数据,尤其是端口号使一个接收端计算机系统能够确定它所收到的IP包类型,并把它交给合适的高层软件。
        端口号和设备IP地址的组合通常称作插口(socket)。任何TCP/IP实现所提供的服务都用知名的1~1023之间的端口号。这些知名端口号由Internet号分配机构(Internet Assigned Numbers Authority, IANA)来管理。例如,SMTP所用的TCP端口号是25,POP3所用的TCP端口号是110,DNS所用的UDP端口号为53,WWW服务使用的TCP端口号为80。FTP在客户与服务器的内部建立两条TCP连接,一条是控制连接,端口号为21;另一条是数据连接,端口号为20。
        256~1023之间的端口号通常由UNIX系统占用,以提供一些特定的UNIX服务。也就是说,提供一些只有UNIX系统才有的而其他操作系统可能不提供的服务。
        在实际应用中,用户可以改变服务器上各种服务的保留端口号,但要注意,在需要服务的客户端也要改为同一端口号。
 
       模块设计
        模块设计阶段中,在系统内部划分成各个基础部分——模块结构,确定系统的总体结构。总体结构与各个分层模块结构的关系是程序实施的重要依据。模块结构采用模块结构图来表示。模块结构图是采用HIPO图形式绘制而成的框图。
        .名称,列出系统中各主要功能的结构图名称和它们之间的关系。
        .功能,用文字简单说明主要模块结构应具有的功能。
        .功能说明,说明是用伪码形式还是用结构化语言形式,或者其他自然语言形式描述模块结构图的。
        .评价。
        .验收,指设计人员验收的决定和处理情况。
   题号导航      2020年下半年 嵌入式系统设计师 下午试卷 案例   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
 
第2题    在手机中做本题