免费智能真题库 > 历年试卷 > 信息系统管理工程师 > 2022年下半年 信息系统管理工程师 上午试卷 综合知识
  第31题      
  知识点:   数据通信编码   编码   编码方案   数据信号   数字信号   信号
  关键词:   编码   二进制数   基带   计算机网络   码元   数据信号   数字信号   信号单元   二进制   数据   网络   信号        章/节:   协议和传输       

 
数字信号是离散的。每个脉冲代表一个信号单元,或称码元。在计算机网络中三要用二进制的数据信号,可用两种码元分别代表二进制数字符号1和0,也称为二元码。表示二进制数字的码元的形式不同,便产生出不同的编码方案。通常在基带方式下,数字信号编码有几种方式,下列(31)不属于这几种编码方式。
 
 
  A.  单极性码
 
  B.  门捷列夫码
 
  C.  曼彻斯特码
 
  D.  双极性码
 
 
 

  相关试题:协议和传输          更多>  
 
  第68题    2013年上半年  
   31%
5类非屏蔽双绞线(UTP)由(68)对导线组成。
  第26题    2016年上半年  
   47%
SNMP属于OSI/RM的(26)协议。
  第29题    2019年上半年  
   22%
TCP/IP是国际互联网(Internet)事实上的工业标准,它包含了多个协议,所以也称它为协议簇,或者协议栈。该协议簇的两个核心协议是..
   知识点讲解    
   · 数据通信编码    · 编码    · 编码方案    · 数据信号    · 数字信号    · 信号
 
       数据通信编码
        数字通信系统的任务是传输数字信息,数字信息可能来自数据终端设备的原始数据信号,也可能来自模拟信号经数字化处理后的脉冲编码信号。一般的,传输数字信息的方法是按传输波形来分类的。如何把数字信息用电信号的波形表示出来呢?一般采用基带方式和4B/5B编码,这里主要介绍基带方式。
        数字信号是离散的,每个脉冲代表一个信号单元,或称码元。在计算机网络中主要用二进制的数据信号,可用两种码元分别代表二进制数字符号1和0,也称为二元码。表示二进制数字的码元的形式不同,便产生出不同的编码方案。编码方式分为单极性码、双极性码和曼切斯特码。
        单极性码表示信号的电压或电流是单极性的,即逻辑“1”用高电平或正向电流表示,而逻辑“0”用零电平表示。它分为不归零型(NRZ)和归零型(RZ)两种,归零码(Return to Zero)指的是一个码元中,正电平到零电平的转换边表示0,而从负电平到零电平的转换边表示1。它的特点是噪声抑制特性比较好。不归零码(Non-Return to Zero)是在不归零码中,电平在两个码元间翻转表示1,不翻转表示0。它的特点是实现简单,费用低,如下图所示,这是最简单的用微机简单串行接口即能产生和检测的信号形式。
        
        单极性码
        双极性码指的是用正负电平来分别代表逻辑“1”和逻辑“0”。同样也有归零型和不归零型之分,如下图所示。
        
        双极性码
        常用的RS-232就是一种典型的不归零型双极性二元码接口电路。比起单极性码来,双极性码的可靠性要高,抗干扰性强。
        在每一个码元时间间隔内,当发送0时,在间隔的中间时刻电平从低向高跳变;当发送1时,在间隔的中间时刻电平从高向低跳变,这类码被称为曼切斯特码。这类码元的特点是在每一码元的时间间隔内,至少有一次跳变。改进一下,在每一个码元的时间间隔内,无论发送1还是0,在间隔的中间都有电平的跳变,但发送1时,间隔开始时刻电平不跳变,发送0时,间隔开始时刻电平会跳变。这类编码被称为差分曼切斯特码。它具有良好的抗干扰性能,如下图所示。
        
        曼切斯特码
        目前,曼彻斯特码和差分曼彻斯特码的应用很普遍,已成为局域网的标准编码。
        模拟信号通常由某一个频率或几个频率组成,它占用一个固有的频带,所以称为频带传输。数据编码方式根据调制参数的不同可分为幅移键控法、频移键控法、相移键控法三种方式。幅移键控法(Amplitude-Shift Keying, ASK)的调频方式是用基带信号来控制载波的振幅变化。频移键控法(Frequency-Shift Keying, FSK)的调频方式是用基带信号来控制载波的频率变化。相移键控法(Phase-Shift Keying, PSK)的调频方式是用基带信号来控制载波的相位变化。这里就不再具体介绍了。
 
       编码
               编码过程
               在给定了软件设计规格说明书后,下一步的工作就是编写代码。一般来说,编码工作可以分为四个步骤:
               (1)确定源程序的标准格式,制订编程规范。
               (2)准备编程环境,包括软硬件平台的选择,包括操作系统、编程语言、集成开发环境等。
               (3)编写代码。
               (4)进行代码审查,以提高编码质量。为提高审查的效率,在代码审查前需要准备一份检查清单,并设定此次审查须找到的bug数量。在审查时,要检查软件规格说明书与编码内容是否一致;代码对硬件和操作系统资源的访问是否正确;中断控制模块是否正确等。
               编码准则
               在嵌入式系统中,由于资源有限,且实时性和可靠性要求较高,因此,在开发嵌入式软件时,要注意对执行时间、存储空间和开发/维护时间这三种资源的使用进行优化。也就是说,代码的执行速度要越快越好,系统占用的存储空间要越小越好,软件开发和维护的时间要越少越好。
               具体来说,在编写代码时,需要做到以下几点:
               .保持函数短小精悍。一个函数应该只实现一个功能,如果函数的代码过于复杂,将多个功能混杂在一起,就很难具备可靠性和可维护性。另外,要限制函数的长度,一般来说,一个函数的长度最好不要超过100行。
               .封装代码。将数据以及对其进行操作的代码封装在一个实体中,其他代码不能直接访问这些数据。例如,全局变量必须在使用该变量的函数或模块内定义。对代码进行封装的结果就是消除了代码之间的依赖性,提高了对象的内聚性,使封装后的代码对其他行为的依赖性较小。
               .消除冗余代码。例如,将一个变量赋给它自己,初始化或设置一个变量后却从不使用它,等等。研究表明,即使是无害的冗余也往往和程序的缺陷高度关联。
               .减少实时代码。实时代码不但容易出错、编写成本较高,而且调试成本可能更高。如果可能,最好将对执行时间要求严格的代码转移到一个单独的任务或者程序段中。
               .编写优雅流畅的代码。
               .遵守代码编写标准并借助检查工具。用自动检验工具寻找缺陷比人工调试便宜,而且能捕捉到通过传统测试检查不到的各种问题。
               编码技术
                      编程规范
                      在嵌入式软件开发过程中,遵守编程规范,养成良好的编程习惯,这是非常重要的,将直接影响到所编写代码的质量。
                      编程规范主要涉及的三方面内容:
                      .命名规则。从编译器的角度,一个合法的变量名由字母、数字和下画线三种字符组成,且第一个字符必须为字母或下画线。但是从程序员的角度,一个好的名字不仅要合法,还要载有足够的信息,做到“见名知意”,并且在语意清晰、不含歧义的前提下,尽可能地简短。
                      .编码格式。在程序布局时,要使用缩进规则,例如变量的定义和可执行语句要缩进一级,当函数的参数过长时,也要缩进。另外,括弧的使用要整齐配对,要善于使用空格和空行来美化代码。例如,在二元运算符与其运算对象之间,要留有空格;在变量定义和代码之间要留有空行;在不同功能的代码段之间也要用空行隔开。
                      .注释的书写。注释的典型内容包括:函数的功能描述;设计过程中的决策,如数据结构和算法的选择;错误的处理方式;复杂代码的设计思想等。在书写注释时要注意,注释的内容应该与相应的代码保持一致,同时要避免不必要的注释,过犹不及。
                      性能优化
                      由于嵌入式系统对实时性的要求较高,因此一般要求对代码的性能进行优化,使代码的执行速度越快越好。以算术运算为例,在编写代码时,需要仔细地选择和使用算术运算符。一般来说,整数的算术运算最快,其次是带有硬件支持的浮点运算,而用软件来实现的浮点运算是非常慢的。因此,在编码时要遵守以下准则:
                      .尽量使用整数(char、short、int和long)的加法和减法。
                      .如果没有硬件支持,尽量避免使用乘法。
                      .尽量避免使用除法。
                      .如果没有硬件支持,尽量避免使用浮点数。
                      下图是一个例子,其中两段代码的功能完全一样,都是对一个结构体数组的各个元素进行初始化,但采用两种不同的方法来实现。下图(a)采用数组下标的方法,在定位第i个数组元素时,需要将i乘以结构体元素的大小,再加上数组的起始地址。下图(b)采用的是指针访问的方法,先把指针fp初始化为数组的起始地址,然后每访问完一个数组元素,就把fp加1,指向下一个元素。在一个奔腾4的PC上,将这两段代码分别重复10 700次,右边这段代码需要1ms,而左边这段代码需要2.13ms。
                      
                      算术运算性能优化的例子
 
       编码方案
        DOI的编码方案(即美国标准ANSI/NISO Z39.84-2000)规定,一个DOI由两部分组成:前缀和后缀,中间用“/”分割。前缀与后缀的字符长度没有任何限制,因此理论上DOI编码体系的容量是无限的。
 
       数据信号
        数据可分为模拟数据与数字数据两种。在通信系统中,表示模拟数据的信号称为模拟信号,表示数字数据的信号称为数字信号,二者可以相互转化。模拟信号在时间和幅度取值上都是连续的,其电平随时间连续变化,如下图所示。例如,语音是典型的模拟信号,其他由模拟传感器接收到的信号如温度、压力、流量等也是模拟信号。数字信号在时间上是离散的,在幅值上是经过量化的,它一般是由二进制代码0、1组成的数字序列,如下图所示,如计算机中传送的是典型的数字信号。
        
        模拟信号和数字信号
        传统的电话通信信道是传输音频的模拟信道,无法直接传输计算机中的数字信号。为了利用现有的模拟线路传输数字信号,必须将数字信号转化为模拟信号,将这一过程称为调制(Modulation)。在另一端,接收到的模拟信号要还原成数字信号,这个过程称为解调(Demodulation)。通常由于数据的传输是双向的,因此,每端都需要调制和解调,这种设备称为调制解调器(Modem)。
        模拟信号的数字化需要3个步骤,即采样、量化和编码。采样是指用每隔一定时间的信号样值序列来代替原来在时间上连续的信号,也就是在时间上将模拟信号离散化。量化是用有限个幅度值近似原来连续变化的幅度值,把模拟信号的连续幅度变为有限数量的有一定间隔的离散值。编码则是按照一定的规律,把量化后的值用二进制数字表示,然后转换成二值或多值的数字信号流,这样得到的数字信号可以通过电缆、光纤、微波干线、卫星通道等数字线路传输,在接收端则与上述模拟信号数字化过程相反,经过滤波又恢复成原来的模拟信号。上述数字化的过程又称为脉冲编码调制。
 
       数字信号
        在电报通信中,其电报信号是用“点”和“划”组成的电码(叫做莫尔斯电码)来代表文字和数字。如果用有电流代表“1”、无电流代表“0”,那么“点”就是1、0,“划”就是1、1、1、0。莫尔斯电码是用一点一划代表A,用一划三点代表B,所以A就是101110,B就是1110101010……这种离散的、不连续的信号,称为数字信号。
        数字信号的优越性主要体现在以下几个方面:
        (1)加强了通信的保密性。语音信号经A/D(Analog to Digital,模拟信号转换为数字信号)变换后,可以先进行加密处理,再进行传输,在接收端解密后再经D/A(Digital to Analog,数字信号转换为模拟信号)变换还原成模拟信号。例如,某图像信号X转换成为01110,可以通过某种加密算法,如向右循环移一位变成Y=00111,对方得到Y后很难反推到X。可见,数字化为加密处理提供了十分有利的条件,且密码的位数越多,破译密码就越困难。
        (2)提高了抗干扰能力。数字信号在传输过程中会混入杂音,可以利用电子电路构成的门限电压(称为阈值)去衡量输入的信号电压,只有达到某一电压幅度,电路才会有输出值,并自动生成整齐的脉冲(称为整形或再生)。较小杂音电压到达时,由于它低于阈值而被过滤掉,不会引起电路动作。因此再生的信号与原信号完全相同,除非干扰信号大于原信号才会产生误码。为了防止误码,在电路中设置了检验错误和纠正错误的方法,即在出现误码时,可以利用后向信号使对方重发。因而数字传输适用于较远距离的传输,也能适用于性能较差的线路。
        (3)可构建综合数字通信网。采用时分交换后,传输和交换统一起来,可以形成一个综合数字通信网。
        数字信号的主要缺点如下:
        (1)技术要求复杂,尤其是同步技术要求精度很高。接收方要能正确地理解发送方的意思,就必须正确地把每个码元区分开来,并且找到每个信息组的开始,这就需要收发双方严格实现同步,如果组成一个数字网的话,同步问题的解决将更加困难。
        (2)占用频带较宽。因为线路传输的是脉冲信号,传送一路数字化语音信息需占20~64kHz的带宽,而一个模拟话路只占用4kHz带宽,即一路PCM(Pulse Code Modulation,脉码调制)信号占了几个模拟话路。
        (3)进行A/D转换时会产生量化误差。
 
       信号
        任务间同步的另一种方式是异步信号。在两个任务之间,可以通过相互发送信号的方式,来协调它们之间的运行步调。
        所谓的信号,指的是系统给任务的一个指示,表明某个异步事件已经发生了。该事件可能来自于外部(如其他的任务、硬件或定时器),也可能来自于内部(如执行指令出错)。异步信号管理允许任务定义一个异步信号服务例程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次现场切换。
   题号导航      2022年下半年 信息系统管理工程师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第31题    在手机中做本题