




kok电子竞技权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
kok电子竞技:文档简介
第15章输入输出接口及设计天道酬勤主要内容I/O系统概述I/O系统的性能I/O系统的功能I/O设备概述I/O设备的通用模型I/O接口的分类I/O控制器的结构I/O端口的概念I/O设备的寻址I/O设备、I/O总线、I/O接口、I/O控制器的连接I/OSystem的性能两个常用的性能指标:Throughput:I/Obandwidth(吞吐率,即:I/O带宽)单位时间内从系统输入/输出多少数据?单位时间内实现了多少次输入/输出操作?(服务器更关注)Responsetime:Latency(响应时间,即:等待延迟):在多长时间内完成请求的任务?(台式机和嵌入式更关注)不同的任务对性能的要求不同:要求吞吐量高的场合:如:多媒体应用(音/视频的播放要流畅。┮笙煊κ奔涠痰某『:如:事务处理系统(存/取款的速度要快。┮笸掏侣矢咔蚁煊κ奔涠痰某『:如:ATM、文件服务器、Web服务器等I/OSystem的功能输入/出系统的功能解决各种形式信息的输入和输出
即:用户如何将所需的信息(文字、图表、声音、视频等)通过不同的外设输入到计算机中,以及计算机内部处理的结果信息如何通过相应的外设输出给用户要实现上述功能需解决以下一系列的问题怎样在CPU、主存和外设间建立一个信息传输“通路”怎样将用户的I/O请求转换成设备的命令如何对外设进行编址怎样使CPU方便地寻找到要访问的外设I/O硬件和操作系统如何协调完成主机和外设之间的数据传送,
等等15.1I/O接口概述I/O接口:I/O设备与I/O控制器之间的连接器包括:插头/插座的形式、通讯规程和电器特性等分类:从数据传输方式来分:串行(一次只传输1位)并行(多位一起进行传输)从是否能连接多个设备来分:总线式(可连接多个设备)独占式(只能连接1个设备)从是否符合标准来分:标准接口(通用接口)专用接口(专用接口)按功能选择的灵活性来分:可编程接口不可编程接口串行口并行口I/O设备接口串行口9针并行口VGA视频口键盘接口双绞线接口PS/2接口并行口25针同轴电缆网络接口显示器接口麦克风音箱键盘接口并行口USB接口以太网双绞线接口串行口鼠标器接口(安装在主板上的I/O设备接口)I/O总线,I/O控制器,I/O接口与I/O设备的关系I/O设备通常都是物理上相互独立的设备,它们一般通过I/O接口与I/O控制器连接打印机扫描仪显示器麦克风网线I/O总线I/O接口硬盘光驱I/O设备CPU主板I/O设备I/O控制器(扩充卡)机箱插座板卡插座I/O控制器PCI插槽内存主板插槽机箱芯片组IDE接口机箱插座I/O设备键盘鼠标器多数教材把I/O控制器和插座合起来称为I/O接口。yALU寄存器组CPU总线接口R6CPU(前端)总线I/O总线主板扩展槽PCI接口南桥芯片I/O总线磁盘控制器以太网卡USB控制器和接口鼠标器键盘网线disk声卡视频卡光驱主存储器0A北桥芯片y存储器总线显卡I/O总线,I/O控制器,I/O接口与I/O设备的关系I/O控制器通过扩展卡或者南桥芯片与I/O总线连接I/O总线经过北桥芯片与内存、CPU连接I/O接口(I/O控制器)的职能数据缓冲
提供数据缓冲寄存器,以达到主机和外设工作速度的匹配错误或状态检测
提供状态寄存器,以保存各种错误或状态信息供CPU查用控制和定时
提供控制和定时逻辑,以接受从系统总线来的控制定时信号数据格式转换
提供数据格式转换部件使通过外部接口得到的数据转换为内部接口需要的格式,或在相反的方向进行数据格式转换与主机和设备通信
上述功能通过I/O接口与主机之间、I/O接口与设备之间的通信来完成I/O接口(I/O控制器)的结构I/O控制器的一般结构通过I/O控制寄存器发送命令字来向设备发送命令通过从状态寄存器读取状态字来获取外设或I/O控制器的状态信息通过向I/O控制器发送或读取数据来和外设进行数据交换将I/O控制器中CPU能够访问的各类寄存器称为I/O端口对外设的访问通过向I/O端口发命令、读状态、读/写数据来进行15.1.1I/O地址空间和I/O指令(1)统一编址方式(内存映射方式)
与主存统一编址,将主存空间分出一部分地址给I/O端口进行编号(因该方法是将I/O端口映射到主存空间的某区,故也被称为“存储器映射方式”)
例如,Motorola公司生产的处理器就采用该方案(2)独立编址方式(特殊I/O指令方式)不和主存单元一起编号,单独编号,成为一个独立的I/O地址空间(因需专门I/O指令,故也称为“特殊I/O指令方式”)
例如,Intel公司和Zilog公司的处理器就是独立编址方式对I/O端口读写,就是向I/O设备送出命令或从设备取得状态或读/写设备数据一个I/O控制器可能会占有多个端口地址I/O端口必须编号后,CPU才能访问I/O设备的寻址方式就是I/O端口的编号方式统一编址方式CPU不直接通过读写控制信号IOR#、IOW#对I/O端口读写,而是根据I/O端口在地址空间的位置,通过地址译码来实现地址线的高位参与片选控制逻辑无需设置专门I/O指令,只要用一般访存指令就可存取I/O端口I/O模块MemR#或MemW#命令由访存指令发出,IOR#和IOW#命令怎样呢?也是访存指令,只是访问的地址范围不同!统一编址方式优点与访存指令一致的存/取指令减少对专门I/O指令的设计利用丰富的访存指令进行I/O操作(不仅可对端口进行数据传送,而且还可直接对端口进行移位、测试等)便于扩大系统吞吐率外设或I/O寄存器数目几乎不受限制,而只受总存储容量的限制。在大型控制或数据通信系统等特殊场合很有用读写控制逻辑简单缺点主存空间减少。因为被I/O占用了存储空间外设寻址时间长。为了识别I/O端口,全部地址线都需参与地址译码,使译码电路复杂并需花很长时间独立编址方式通过不同的读写控制信号IOR#、IOW#和MEMR#、MEMW#来实现对I/O端口和存储器的读写一般I/O端口比存储器单元少,选择I/O端口时,只需少量地址线指令系统必须设计专门的I/O指令是专门的I/O指令,指令中给的地址可能相同,但操作命令不同!MemR#或MemW#命令由访存指令发出,IOR#和IOW#命令怎样呢?独立编址方式优点I/O端口地址不占用存储器地址空间,故主存空间不受I/O地址的影响I/O地址线较少,所以I/O端口译码简单,寻址速度快使用专用I/O指令,程序清晰,便于理解和检查缺点专用I/O指令类型少,只提供简单的传输操作,故程序设计灵活性差要求处理器提供两组读写命令(MEMR/MEMW、IOR/IOW),增加了控制逻辑的复杂性和处理器引脚数15.1.2I/O查询与中断I/OPolling(轮询,查询):
最简单的I/O方式I/O设备(包括I/O接口)将自己的状态放到一个状态寄存器中OS阶段性查询状态寄存器中的特定状态,决定下一步的动作OS主动查询,也称为程序查询方式或程序直接控制方式在传送数据前,需要查询了解外设的工作状态。只有查询的状态满足条件时,才执行本次传送。这种方式又称之为条件传送或状态驱动传送方式。
程序程序查询方式举例:用程序直接控制方式控制打印输出开始读接口状态输出一个字符就绪否读打印机状态忙否启动打印读打印机状态完成否结束出错处理NYNY出错否YNNY……问题:这里“就绪”的含义是什么?打印控制器的数据缓冲中内容已被取走打。衷谖翱铡,可以接收新打印字符程序控制I/O(程序查询I/O)特点简单、易控制、外围接口控制逻辑少CPU与外设串行工作,效率低、速度慢,适于慢速设备查询开销极大(CPU完全在等待“外设完成”)工作方式:完全串行工作方式或部分串行仅用于CPU速度不高、外设配备不多的情况外设CPU启动探询完成启动探询完成“踏步”现象工作工作“探询”期间,可以一直不断查询(原地“踏步”),也可以定时查询(但要保证数据不丢失!)。I/O中断I/OInterrupt(中断I/O):
绝大多数系统都支持的中断I/O方式若一个I/O设备需要CPU干预,它就通过中断请求通知CPUCPU中止当前程序的执行,调出OS(中断处理程序)来执行处理结束后,再返回到被中止的程序继续执行OS被动调出,也称为中断驱动I/O方式中断I/O方式基本思想:
当外设准备好时,便向CPU发中断请求,CPU响应后,中止现行程序的执行,转入一个“中断服务程序”进行输入/出操作,实现主机和外设接口之间的数据传送,并启动外设工作。“中断服务程序”执行完后,返回原被中止的程序断点处继续执行。此时,外设和CPU并行工作。外设CPU启动完成启动完成工作工作工作请求响应启动请求响应中断服务程序返回15.1.3DMA输入/出方式DMA的全称直接存储器存取(DirectMemoryAccess)为什么要引入DMA方式?程序直接控制方式受“踏步”现象的限制,效率低下,不适合高速设备和主机间的数据传送中断控制方式虽比程序直接控制方式有效,CPU和外设有一定的并行度,但由于下列原因也不适合高速设备和主机间的数据传送对I/O请求响应慢。每传送一个数据都要等待外设的中断请求,并增加许多中断响应和中断处理前、后的附加开销(保护断点、现场等),不能及时响应I/O请求。因单位数据之间的间隔短,甚至无法再利用,必须让一批数据交换完,这样交换数据便完全占用主机,又回到完全串行工作状态数据传送速度慢。数据传送由软件完成(由CPU执行相应的中断服务程序来完成),速度慢,由于单位数据不断完成交换的准备,便可能冲掉信息而造成数据丢失DMA概述DMA方式的基本思想在高速外设和主存之间直接传送数据由专门硬件(即:DMA接口)控制总线进行传输DMA方式适用场合高速设备(如:磁盘、光盘等)成批数据交换,且单位数据间的时间间隔较短采用“请求-响应”方式每当高速设备准备好数据,就进行一次“DMA请求”,DMA控制器接受到DMA请求后,申请总线使用权DMA控制器的总线使用优先级比CPU高,为什么?与中断控制方式结合使用DMA传送前,“寻道”“旋转”等操作结束时,通过“中断”告知CPUDMA控制器控制总线传送数据时,CPU执行其他程序DMA传送结束时,要通过“DMA结束中断”告知CPU与中断控制方式结合使用举例:用于磁盘和主存间数据交换时寻道旋转连续读写结束、校验中断方式中断方式DMA方式中断方式DMA和程序中断两种方式的数据通路DMA概述CPU主存AC
中断接口DMA接口I/O
设备中断方式数据传送通路输入指令输出指令DMA方式数据传送通路DMA传送是以主存为中心,它在外设主存间开辟了直接数据传输通路,且该通路是完全用硬件实现的。主存启动地址的确定、传输长度的计数与控制、主存与外设间的数据传送等均由DMA接口的逻辑电路完成。
程序中断传送的数据传送必须通过CPU寄存器和使用CPU的指令,是以CPU为中心的。DMA方式的特点外围设备访问请求直接发往主存储器不需要CPU做保存现场和恢复现场等工作DMA控制器中,需要设置数据寄存器、设备状态或控制寄存器、主存地址寄存器、设备地址寄存器和数据交换个数计数器DMA开始和结束时,需要处理机进行管理在DMA方式开始前,对DMA控制器进行初始化。传送主存缓冲区首地址、设备地址、数据块的长度等,并启动设备开始工作在DMA方式结束后,向CPU申请中断,对数据缓冲区进行后处理DMA执行中,数据传送过程不需要CPU干预DMA概述
直接存储器访问DMACPU DMA控制器 (DMAC)c存储器硬盘控制器硬盘直接传输数据请求使用总线允许使用总线DMA控制器的操作步骤DMA操作步骤(1)DMA控制器的预置(初始化)—软件实现准备内存设置参数启动外设
(2)DMA数据传送—硬件实现DMA请求:选通→DMA请求→总线请求DMA响应:总线响应(CPU让出总线)→DMA响应DMA传送:DMA控制总线进行数据传送(3)DMA结束处理—软件实现根据计数值为“0”,发出DMA结束信号去接口控制产生DMA中断请求信号,转入中断服务程序,做一些数据校验等后处理工作。I/O设备与主机进行数据交换的三种基本方式I/OPolling(轮询,查询):I/OInterrupt(中断I/O):DirectMemoryAccess(DMA方式):
磁盘等高速外设特有的I/O方式磁盘等高速外设成批地直接和主存进行数据交换需要专门的DMA控制器控制总线,完成数据传送当外设准备好数据后,向DMA控制器发DMA请求信号,DMA控制器再向CPU发总线请求,CPU让出总线后,由DMA控制器控制总线进行传输,无需CPU干涉小结
DMA方式与程序中断方式的比较(1)数据传送(2)响应时间(3)处理异常情况(4)中断请求(5)优先级中断方式DMA方式程序硬件指令执行结束存取周期结束能不能低高传送数据结束处理小结三种I/O方式的CPU工作效率比较存取周期结束CPU执行现行程序CPU执行现行程序DMA请求启动I/OI/O准备I/O准备一个存取周期实现I/O与主存之间的传送CPU
执行现行程序CPU查询等待并传输I/O数据CPU执行现行程序启动I/OI/O准备及传送指令执行周期结束CPU执行现行程序CPU执行现行程序启动I/O中断请求I/O准备I/O准备CPU处理中断服务程序实现I/O与主机之间的传送间断启动I/O启动I/OI/O准备中断请求启动I/OI/O准备一个存取周期DMA请求程序查询方式程序中断方式DMA方式I/O准备及传送CLKDATAR/W (a)同步传送DATAR/WRDY (b)异步传送c15.1.4总线和总线的同步方式在同步通信方式下,通信双方由统一的时钟控制数据传送,该时钟通常是由CPU发出的,并传送到总线上的所有部件。由于采用了公共时钟,各个功能部件何时发送或接收信息都由统一时钟规定,因此同步通信具有较高的数据传输率。异步通信方式是指利用数据发送部件和接收部件之间的相互“握手”信号(非统一时钟)来实现总线数据传送的方式。异步通信方式优点:总线周期长度可变,便于实现不同速度部件之间的数据传送。缺点:会增加总线的复杂性和成本。15.2数据错误检测及校正三种常用的检错纠错码:奇偶检错码,用于并行数据传送中海明检错与纠错码,用于并行数据传送中循环冗余码,用于串行数据传送中编码过程译码过程传送原始数据码字结果数据形成校验位的值,加进特征检查接送的码字,发现/改正错误能检验奇数位错误纠错码,能纠正1位错误校验码概述定义:是一种具有发现某些错误或自动改正错误能力的一种数据编码方法。目的:用于检查或纠正在存取、读写和传送数据过程中可能出现的错误。基本思想:“冗余校验”,即通过在有效信息代码的基础上,添加一些冗余位来构成整个校验码。构成:有效信息+校验位概念过程有效信息校验码编码器校验码校验位校验码发送/写/存接收/读/取有效信息校验位有效信息校验位校验码译码器正确错误输出校验码概述概念形成校验位的值,加进特征检查接收的码字,发现/改正错误15.2.1奇偶校验偶校验奇校验校验位用于并行码检错原理:在n位数据码之外增加1位校验位,使n+1位码字中取值为1的位数总保持为偶数(偶校验)或奇数(奇校验)。例如:
00011000100001
01010010110101
原有数字位两个新的码字
数据编码、传送及检错过程:设原始数据为d6d5d4d3d2d1d0,增加1个偶校验位d7,构成8位偶校验编码。d7=d6⊕d5⊕d4⊕d3⊕d2⊕d1⊕d0式中⊕为异或运算。发送方把8位的偶校验码d7d6d5d4d3d2d1d0
发送出去。接收方收到8位偶校验码d7d6d5d4d3d2d1d0
。校验电路用来检查8位数据中取值1的个数是否为偶数。若是,则没有出错,否则,出现了错误。check=d7⊕d6⊕d5⊕d4⊕d3⊕d2⊕d1⊕d0奇校验位形成偶校验位出错奇校验位出错偶校验位形成XYG8G7G6G5G4G3G2G1G校奇偶校验码奇偶校验位的形成及校验电路奇偶校验又分为垂直校验水平校验水平垂直校验1、垂直(纵向)奇偶校验以七单位码数字0--9为例说明垂直奇偶校验码表1七单位数字的垂直奇偶校验码(偶校验)0123456789B70000000000B61111111111B51111111111B40000000011B30000111100B20011001100B10101010101校验01101001102、水平(横向)奇偶校验对一组信息内各字符的同一位进行奇偶校验时,称为水平奇偶校验。仍以七单位码为例并用表2-2来说明。传送时是按列传送字符。表2水平奇偶校验(偶校验)0123456789校验B700000000000B611111111110B511111111110B400000000110B300001111000B200110011000B1010101010113、水平垂直奇偶校验同时进行水平和垂直奇偶校验的方式称为水平垂直奇偶校验。仍以七单位码为例来说明,如表3。0123456789校验B700000000000B611111111110B511111111110B400000000110B300001111000B200110011000B101010101011校验01101001101表3水平垂直奇偶校验水平校验码和垂直校验码只能发现奇数个错,不能发现偶数个错。水平垂直校验码具有较强的检错能力,它不但能发现所有一位、二位和三位错误,而且能改正一位错误。练习题1.设有8位信息为11000001,奇校验码是何值?偶校验码又是何值?要求写出计算的过程,并分析检错与纠错能力。15.2.2错误纠正码ECC
海明码海明校验码的原理是在数据中加入几个校验位,并把数据的每一个二进制位分配在几个奇偶校验组中。当某一位出错后,就会引起有关几个校验位的值发生变化,这不但可以发现错误,还能指出是哪一位出错。在此介绍纠正一位错误的编码。n位信息k位校验码海明校验码构成m位k=?校验位的状态应当有m+1种(含无错),以便能指出m位中的任何一位有错或无错。所以增添的奇偶校验位数k应满足:
2k≥m+1=n+k+1不同位数的数据编成海明码所需的最小校验位数,如表4。表4不同位数的数据所需海明码的最小校验位数nk1~33
4~104
11~255
27~576
58~1207若要求发现2位错误,则校验码应当在前述基础上再增加1位校验位。即用(k-1)代替上式中的k。若海明码的最高位号为m,最低位号为1。DmDm-1······D2D1海明码的编码规则:(1)、校验位位数与数据位位数之和为m,每个校验位Pi在海明码中被分在位号2i-1的位置,其余各位为数据位,从低位向高位依次排列。(2)、海明码的每一位Di(包括数据位和校验位本身)由多个校验位校验,其关系:
被校验的每一位位号=∑2i-1(i=1…)(3)、在增大合法码的码距时,使所有码的码距尽量均匀地增大,以保证对所有码的检错能力平衡提高。D13D12D11D10D9D8D7D6D5D4D3D2D1P0A8A7A6A5P8A4A3A2P4A1P2P1例如对一个字节进行海明编码。每个字节由8个二进制位组成(n=8),根据表4可知k=4,再加上一位对整个信息的校验位(分清是两位出错还是一位出错),故海明码的位数为13,表示:由编码规则(2),得出如表5。表5海明码位号与校验位的位号关系海明码位号数据位/校验位参与校验的校验位位号海明码位号=位号之和D1P111=1D2P222=2D3A11,23=1+2D4P444=4D5A21,45=1+4D6A32,46=2+4D7A41,2,47=1+2+4D8P888=8D9A51,89=1+8D10A62,810=2+8D11A71,2,811=1+2+8D12A84,812=4+8D13
P01313=13从表5求出Pi值的偶校验的结果:P1=A1⊕A2⊕A4⊕A5⊕A7P2=A1⊕A3⊕A4⊕A6⊕A7P4=A2⊕A3⊕A4⊕A8P8=A5⊕A6⊕A7⊕A8P0=A1⊕A2⊕A3⊕A4⊕A5⊕A6⊕A7⊕A8⊕P1⊕P2⊕P4⊕P8对接收到的海明码形成新的校验位Ci,对按配偶(或奇)原则配置的海明码,若各Ci均为0(或1),则传送过程正确;否则根据各Ci形成的值可指出错误的位置。Ci的形成过程C1=P1⊕A1⊕A2⊕A4⊕A5⊕A7C2=P2⊕A1⊕A3⊕A4⊕A6⊕A7C4=P3⊕A2⊕A3⊕A4⊕A8
C8=P4⊕A5⊕A6⊕A7⊕A8C0=P0⊕P8⊕P4⊕P2⊕P1⊕A1⊕A2⊕A3⊕A4⊕A5⊕A6⊕A7⊕A8海明码海明码的纠错例如对字符C(8位)进行海明校验,其海明码如下:从上述公式可知P1=A1⊕A2⊕A4⊕A5⊕A7=1
⊕1
⊕0
⊕0
⊕1=1P2=A1⊕A3⊕A4⊕A6⊕A7=1
⊕0
⊕0
⊕0
⊕1=0P4=A2⊕A3⊕A4⊕A8=1
⊕0
⊕0
⊕0=1P8=A5⊕A6⊕A7⊕A8=0
⊕0
⊕1
⊕0=1P0=0海明码为:0010010011101D13D12D11D10D9D8D7D6D5D4D3D2D1P50100P8001P41P2P1设其中一位出错,如第八位接收到的编码为:D13D12D11D10D9D8D7D6D5D4D3D2D10010000011101校验结果:C1=P1⊕A1⊕A2⊕A4⊕A5⊕A7=0C2=P2⊕A1⊕A3⊕A4⊕A6⊕A7=0C4=P4⊕A2⊕A3⊕A4⊕A8=0C8=P8⊕A5⊕A6⊕A7⊕A8=1C0=1由于C8C4C2C1不为0000,所以有错,错误位在C8C4C2C1=1000处。至于其它情况,可以类推。(12,8)分组码海明校验线路=1A8D12
11000111=1A4D7=1A3D60110=1A2D50101=1A1D30011=1A5D91001=1A6D101010=1A7D1110110000无错有错4~16译码器D12D11D10D9D8D12D7D6D5D4D11D10D7D6D3D2D11D9D7D5D3D1奇偶形成线路C8奇偶形成线路C4奇偶形成线路C2奇偶形成线路C1C8C4C2C1海明码设要传送的数据A4A3A2A1=0101,则需增添检测位k=3,其位置安排为A4A3A2P3A1P2P1。按配偶原则得各校验位:P1=A4⊕A2⊕A1=0⊕0⊕1=1P2=A4⊕A3⊕A1=0⊕1⊕1=0P4=A4⊕A3⊕A2=0⊕1⊕0=1故0101的海明码应为:A4A3A2P4A1P2P1=0101101海明码例题若接收到的海明码为0101111,其纠错过程如下:新的检测位为:C4
=P4⊕A4⊕A3⊕A2=1⊕0⊕1⊕0=0C2=P2⊕A4⊕A3⊕A1=1⊕0⊕1⊕1=1C1=P1⊕A4⊕A2⊕A1=1⊕1⊕0⊕1=0其中C2不为0,出了错,出错位置在C4C2C1=010,即第2位,计算机自动将“1”改为“0”。海明码一般用在能纠错1位的场合。对任意n位信息,先求出需增加的检测位数k,再确定Pi的位置,按奇或偶原则来配置Pi各位的值即可。海明码例题15.2.3循环冗余校验(CRC码)循环冗余校验码主要用于传输纯二进制串行信息的情况。循环冗余校验码由信息位(n位)加上校验位(k位)构成。即n位信息位k位校验位应用CRC码的关键是如何从n位信息得到k位校验位,以及如何从n+k位信息码判断是否出错。n+k位1、模2四则运算模2运算是指按位模2相加为基础的四则运算,运算时不考虑进位和借位。(1)模2加减法
0+0=0
0+1=1
1+0=1
1+1=0
0-0=0
0-1=1
1-0=1
1-1=0结论:减去一个数等于加上该数。加、减法都是异或。(2)模2乘法——按模2加求部分积。例1011
110
————————
0000
1011
1011
——————————
111010(3)模2除法——按模2减求余数。例101
|——————
101|10000
101
——————
010
000
——————
100
101
——————
01
···余数循环冗余校验码①
模2加减的结果相同:即按位加,可用异或逻辑实现0±0=0、0±1=1、1±0=1、1±1=0②
模2乘:按模2加求部分积之和③模2除:按模2减求部分余数。
101……
商每求一位商应使部分余数减少一
10110000位,上商的原则是:当部分余数
101的首位为1时,商取1;当部分
010余数的位数少于除数的位数时,
000该余数即为最后余数。
100101
01…余数模2运算设待编码的信息为Dn-1Dn-2···D1D0。将待编码的n位有效信息位组表示为多项式M(x);
M(x)=Dn-1xk-1+Dn-2xk-2+···+D1x+D0由于CRC码(M位)是由信息位(n位)加上校验位(k位)构成,故相当于将M(x)左移了k位,即M(x)*xk,这样就可以空出k位来拼接k位校验位。2、CRC码编码方法00……0Dn-1Dn-2···D1D0k位首先将有效信息位M(x)左移k位形成M(x)·xk,右边空出的k位用于拼接校验位,然后用多项式M(x)·xk除以生成多项式G(x),得到一个商和一个余数(校验位),把余数紧跟在数据位之后发送。
M(x)·xk+R(x)=[Q(x)·G(x)+R(x)]+R(x)=[Q(x)·G(x)]+[R(x)+R(x)]按模2加,得CRC码
=Q(x)·G(x)当接收端收到信息时,用同样的方法也除出一个余数。若余数为0,则传送正确;若余数不为0,由该余数可指出哪一位出错,并纠正。注意:除法为模2除法。
CRC码的校验位生成方法例:对四位有效信息(1100),求CRC码,生成多项式为1011。M(x)*x3=(x3+x2)*x3=x6+x5=1100000111|————————1011|11000001011——————————11101011——————————10101011—————————010CRC码=M(x)*x3+010=1100010大家可除以G(x)看余数是否为0。上述CRC码称为(7,4)码,M=7,n=43、CRC的译码与纠错通过上例求出一位出错模式如表6表6
(7,4)循环码的出错模式(生成多项式G(x)=1011)a1
a2
a3
a4
a5
a6
a7余数出错位正确1
100010000无错误11000110017110000001061100110100511010100114111001011031000010111201000101011如果循环码有一位出错,用G(x)做模2除将得到一个不为0的余数。如果对该余数补0继续除下去,将会发现一个有趣的结果:各次余数将按表6顺序循环。这就是“循环码”名称的由来。并不是任何一个(r+1)位多项式都可以作为生成多项式。从检错及纠错的要求出发,生成多项式应能满足下列要求:①任何位发生错误都应使余数不为0。②不同位发生错误应当使余数不同。③对余数继续作模2除,应使余数循环。循环冗余校验码关于生成多项式4、实现模2除法的线路循环码校验的逻辑线路核心是模2除法线路。模2除的分解步骤归纳为两种类型:如果余数(包括被除数)最高位为0,则将余数左移一位;如果余数最高位为1,则对生成多项式G(x)作模2加法(异或),然后余数左移一位。电路如图2所示。图2模2除逻辑图图2实现G(X)=1011的(7,4)码模2除线路图由于G(x)固定不变,故G2可省去;只求其余三位,故G3和T0也失去意义。可简化为图3(a)。判断题1、使用检错/纠错码会增加硬件成本,因而只适用于发生故障概率比较高的地方2、奇偶校验码只能发现错误,不能纠错3、海明码只能发现错误,不能纠错4、CRC码只能发现错误,不能纠错错对错错补充题1.有一个(8,4)码,生成多项式为G(X)=X4+X3+X2+1,写出代码1011的CRC校验码,要求写出计算的过程。2.设有16位信息为1100001101101101,海明码是何值?说明编码方法,写出计算的过程,并分析所选方案具有怎样的检错与纠错能力。3.设有8位信息为11000001,奇校验码是何值?偶校验码又是何值?要求写出计算的过程,并分析检错与纠错能力。15.4PS/2接口startd0d1d2d3d4d5d6d7paritystopps2_dataps2_clkPS/2键盘送数据给主机的时序图管脚说明:只需接4根线,VCC要+5V,时钟和数据线要用双向口线,FPGA可以不用外接上拉电阻。另外,USB键盘也可以用,只要用一个转接头转成PS2即可。15.4.1PS/2键盘例如,按下“L”键再放开,则送出4BF04B(扫描码是4B)又如,按下 “Delete”键再放开,则送出E071E0F071(E0:扩展键;71:扫描码)。
如果长时间按下“L”键再放开,则送出4B4B...4BF04B多个键可以同时被按下,比如先按左“Shift”(扫描码为12),按下“L”键再放开“L”键,再放开“Shift”键,则送出124BF04BF012c当你按下一个一般的键,键盘侧送出相应的扫描码;松开时,送出F0接着又是扫描码。前者称为MakeCode(通码),后者称为BreakCode(断码)。扩展键,在二者最前面又加上E0。PS/2键盘扫描码扫描码有两种不同类型的通码和断码当一个键被按下或按。头⑺屯耄ㄒ桓鲎纸,但扩展按键的通码是两字节或四字节宽,这类的通码第一个字节总是为E0H。);当一个键被释放,就发送断码(两字节长,第一个字节是F0H)。No.KEY通码断码1"A"1CF01C2"5"2EF02E3"F10"09F0094RightALTE0
11E0F0115Right"Ctrl"E014E0F014第二套扫描码基本按键断码,键盘会发送“F0”+“通码”
扩展按键断码,则发送“E0”+“F0”+“通码”
PS/2发送数据到PC的时序在时钟的下降沿读取数据。(a)键盘发送时序 (b)键盘接收时序数据格式如果数据位中1的个数为偶数,校验位就为1;如果数据位中1的个数为奇数,校验位就为0;总之,数据位中1的个数加上校验位中1的个数总为奇数,因此总进行奇校验。1个起始位总是逻辑08个数据位(LSB)低位在前1个奇偶校验位奇校验1个停止位总是逻辑11个应答位仅用在主机对设备的通讯中ps2_keyboard.v
moduleps2_keyboard(clk,clrn,ps2_clk,ps2_data, rdn,data,ready,overflow,count); inputclk,clrn,ps2_clk,ps2_data; inputrdn; output[7:0]data; outputready; outputoverflow; output[3:0]count;//internalsignal,fortest regoverflow;//fifooverflow reg[3:0]count;//countps2_databits reg[9:0]buffer;//ps2_databits reg[7:0]fifo[7:0];//datafifo reg[2:0]w_ptr,r_ptr;//fifowriteandreadpointers reg[2:0]ps2_clk_sync; always@(posedgeclk)begin ps2_clk_sync<={ps2_clk_sync[1:0],ps2_clk}; end wiresampling=ps2_clk_sync[2]&?ps2_clk_sync[1]; always@(posedgeclk)begin if(clrn==0)begin count<=0; w_ptr<=0; r_ptr<=0; overflow<=0;cps2_keyboard.v
endelseif(sampling)begin if(count==4’d10)begin if((buffer[0]==0)&&//startbit (ps2_data)&&//stopbit (?buffer[9:1]))begin//oddprity fifo[w_ptr]<=buffer[8:1];//kbdscancode w_ptr<=w_ptr+3’b1; overflow<=overflow| (r_ptr==(w_ptr+3’b1)); end count<=0;//fornext endelsebegin buffer[count]<=ps2_data;//storeps2_data count<=count+3’b1;//countps2_databits end end if(!rdn&&ready)begin r_ptr<=r_ptr+3’b1; overflow<=0; end end assignready=(w_ptr!=r_ptr); assigndata=fifo[r_ptr]; endmodulecPS/2键盘仿真波形cY上溢X上溢Y8X81中按钮右按钮左按钮X7X6X5X4X3X2X1X0Y7Y6Y5Y4Y3Y2Y1Y0
Z7
Z6
Z5
Z4
Z3
Z2
Z1
Z015.4.2PS/2鼠标
PS/2鼠标送移动信息及按钮的状态信息给主机。76543210Byte1Byte2Byte3Byte4左右移动量用9位补码表示的带符号数X8...X0表示,鼠标向左移为负,右移为正;上下移动量用9位补码表示的带符号数Y8...Y0表示,鼠标向下移为负,上移为正;小轮子的转动用Z7...Z0表示。第一个字节中除了X8和Y8,其它位的意义如下:X、Y上溢分别表示水平、垂直移动量超出表数范围,左、中、右按钮按下时相应的位为1。
cPS/2鼠标控制器信号连接关系startd0d1d2d3d4d5d6d7paritystopps2_dataps2_clkPS/2鼠标送数据字给主机的时序图
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
kok电子竞技:最新文档
- 营运车辆买卖合同协议
- 8《安全记心上》第2课时 教学设计-2023-2024学年道德与法治三kok电子竞技上册统编kok电子竞技
- 信息技术(财经商贸类) 试卷 教学检测二
- 3《公民意味着什么》(第1课时)(教学设计)2024-2025学年统编kok电子竞技道德与法治六kok电子竞技上册
- 劳动合同样本
- 3 我们班他们班(教学设计)2024-2025学年统编kok电子竞技道德与法治四kok电子竞技上册
- 14健康过冬天(教学设计)-部编kok电子竞技道德与法治一kok电子竞技上册
- 6-1《老子》四章(教学设计)高二语文同步高效课堂(统编kok电子竞技 选择性必修上册)
- 12 盘古开天地 教学设计-2024-2025学年语文四kok电子竞技上册统编kok电子竞技
- 20《肥皂泡》教学设计-2023-2024学年统编kok电子竞技语文三kok电子竞技下册
- 深度学习架构创新-深度研究
- 供应链韧性提升与风险防范-深度研究
- 基层医疗卫生服务能力提升考核试卷
- 2025年江苏连云港市赣榆城市建设发展集团有限公司招聘笔试参考题库附带答案详解
- 砥砺前行决心谱写华章
- 2025年开学教导处发言稿(5篇)
- 机电设备安装旁站监理方案
- 2025年度民政局离婚协议书范本模板官方修订2篇
- 《百达翡丽名表介绍》课件
- 《集装箱标识辨识》课件
- 2024年临床输血管理委员会年终的工作总结
评论
0/150
提交评论