610 likes | 794 Views
第 6 章 微机总线标准. 总线知识的回顾(自习). 什么是总线?什么是总线标准? 总线标准的特性有哪些? 总线按信号功能分为哪 3 类? 总线按照从 CPU→ 外设分层次,分为哪几类? 总线的主要性能指标有哪些? 总线操作分为哪 4 步? 为什么要总线仲裁?有几种仲裁方式? 总线传送控制方式(定时方式)有哪几种?. 6.1 PCI 总线. 6.1.1 PCI 总线的特点. 6) 具有即插即用功能 7) PCI2.2 后支持热插拔 8) 合理的管脚安排 9) 预留扩展空间. 独立于处理器 2) 多总线共存 3) 支持突发传输
E N D
总线知识的回顾(自习) • 什么是总线?什么是总线标准? • 总线标准的特性有哪些? • 总线按信号功能分为哪3类? • 总线按照从CPU→外设分层次,分为哪几类? • 总线的主要性能指标有哪些? • 总线操作分为哪4步? • 为什么要总线仲裁?有几种仲裁方式? • 总线传送控制方式(定时方式)有哪几种?
6.1 PCI总线 6.1.1 PCI总线的特点 6)具有即插即用功能 7) PCI2.2后支持热插拔 8) 合理的管脚安排 9) 预留扩展空间 • 独立于处理器 • 2) 多总线共存 • 3) 支持突发传输 • 4) 支持总线主控方式 • 5) 采用同步操作
6.1.2 PCI信号定义 • 系统接口信号 • CLK IN:PCI系统总线时钟 最高33MHz/66MHz,最低0Hz。PCI大部分信号在CLK的上升沿有效。
2.接口控制信号 • FRAME# S/T/S:帧周期信号 • IRDY# S/T/S:主设备准备好信号 • TRDY# S/T/S:从设备准备好信号 • STOP# S/T/S:从设备发出的要求主设备终止当前的数据传送的信号。 • LOCK# S/T/S:锁定信号 • IDSEL IN:初始化设备选择信号,访问配置空间的时候作为从设备的片选 • DEVSEL# S/T/S:设备选择信号,由常规访问期间被选中的从设备驱动 • FRAME#信号上升沿表示传输进入最后一个数据期
3.地址与数据接口信号 AD[31:00] T/S:它们是地址、数据多路复用的输入/输出信号 • 在FRAME#有效的第1个时钟,AD[31:00]上传送的是32位地址,称为地址期 。 • 在IRDY#和TRDY#同时有效时,AD[31:00]上传送的为32位数据,称为数据期。 C/BE[3:0]# T/S:它们是总线命令和字节使能多路复用信号线 • 地址期内是总线命令,数据期内是字节使能信号。 PAR T/S:针对AD[31:00]和C/BE[3:0]#进行奇偶校验的校验位
4.仲裁接口信号 REQ# T/S:总线占用请求信号 GNT# T/S:总线占用允许信号 5.错误报告接口信号 PERR# S/T/S:数据奇偶校验错误报告信号 SERR# O/D:系统错误报告信号 6.中断接口信号 PCI有4条中断线,分别是INTA#、INTB#、INTC#、INTD# ,电平触发,多功能设备可以任意选择一个或多个中断线,单功能设备只能用INTA#。
7. 64位总线扩展信号 AD[63:32] T/S:扩展的32位地址和数据多路复用线 C/BE[7:4]# T/S:总线命令和字节使能多路复用扩展信号线 REQ64# S/T/S,64位传输请求信号 ACK64# S/T/S:64位传输允许信号 PAR64 T/S:奇偶双字节校验
5V 32位插槽 连接 卡口 5V 64位插槽 3.3V 32位插槽 3.3V 64位插槽 a. 4种PCI卡插槽 A1 A62 A52 A49 外 内 B52 B49 B62 B1 1.27 3.82 77.48 b. 5V32位PCI插槽 6.1.3 PCI插槽和PCI扩展卡 1. PCI插槽
IC IC 里边 外边 IC 1.91 60.96 41.6 12.7 80 2.PCI插卡
C/BE[3:0]# 命令类型说明 C/BE[3:0]# 命令类型说明 0000 中断响应 1000 保留 0001 特殊周期 1001 保留 0010 I/O读(从I/O端口地址中读数据) 1010 配置读 0011 I/O写(向I/O端口地址中写数据) 1011 配置写 0100 保留 1100 存储器多行读 0101 保留 1101 双地址周期 0110 存储器读(从内存空间映像中读数) 1110 存储器行读 0111 存储器写(向内存空间映像中写) 1111 存储器写并无效 6.1.4 PCI总线命令 PCI总线命令表
6.1.5 PCI总线协议 1.PCI总线的传输控制遵循的管理规则: (1) FRAME#和IRDY#定义了总线的忙/闲状态。 11空闲、00数据、10最后一个数据、01等待状态。 (2) 一旦FRAME#信号被置为无效,在同一传输期间不能重新设置。 (3) 除非设置IRDY#信号,一般情况下不能设置FRAME# 信号无效。 (4) 一旦主设备设置了IRDY#信号,直到当前数据期结束为止,主设备一般不能改变IRDY#信号和FRAME#信号的状态。
AD1 AD0 C/BE2# 0 0 × × × 0 0 1 × × 0 1 1 0 × 0 1 1 表3.4 AD[1:0]和C/BE#[3:0]对应关系表 1 1 0 1 1 1 C/BE1# C/BE0# C/BE3# 2.PCI总线的寻址(采用分散地址译码技术) (1) I/O地址空间 • 在I/O地址空间,32位AD线全部被用来提供一个完整的地址编码(字节地址)。 • AD[1:0]和C/BE#[3:0]指明传输的最低有效字节。
(2) 内存地址空间 31 2 1 0 双字边界对齐的起始地址 00 地址递增 01 Cache行切换 1X 保留 (3) 配置地址空间 7 2 1 0 双字边界对齐的起始地址 00 选择该设备 01 访问该桥路后设备 1X 保留
3.字节使能 PCI总线上不能进行字节的交换。但是,具有64位通道的主设备可以进行DWORD(双字)的交换。 主设备可以在每个新数据期开始的时钟前沿改变字节使能信号,且在整个数据期中保持不变。 读缓冲中的数据可以不考虑字节使能信号,而传送所有的字节。 4.PCI总线的驱动与过渡 从一个设备驱动总线到另一个设备驱动PCI总线之间设置一个过渡期,又称为交换周期,以防止总线访问冲突。 在每个地址(数据)期中,所有的AD线都必须被驱动到稳定的状态(数据),包括那些字节使能信号表明无效的字节所对应的AD线。
CLK 8 1 7 6 2 3 4 5 FRAME# IRDY# TRDY# …… DEVSEL# MED SLOW FAST 设备选择的时序关系 5.设备选择 注意DEVSEL#与FRAME#、TRDY#的关系,无DEVSEL#信号时的处理。 DEVSEL#由从设备共享使用,并由被选中的从设备驱动。
CLK 9 8 1 7 6 2 3 4 5 FRAME# DATA3 DATA1 AD ADDRESS DATA2 C/BE# BUSCMD BE#s IRDY# TRDY# DEVSEL# 数据期 数据期 地址期 数据期 PCI读操作时序 6.1.6 PCI总线数据传输过程 1.总线上的读操作
CLK 9 8 1 7 6 2 3 4 5 FRAME# ADDRESS AD DATA1 DATA2 DATA3 C/BE# BEs3 BEs2 BUSCMD BEs1 IRDY# TRDY# DEVSEL# 地址期 数据期 数据期 数据期 PCI写操作时序 2.总线上的写操作
3.传输的终止过程 (1) 由主设备提出的终止 • 传输结束 • 超时(GNT#信号在内部延时计数器满后仍无效) 撤消FRAME#,建立IRDY#,直到TRDY#有效后传输完最后一个数据 (2) 由从设备提出的终止 • 死锁后重试 • 断开(8个时钟周期内从设备不能对主设备做出响应)。 发出STOP#信号并保持其有效,直到FRAME#撤消为止。
PCI总线上的所有传输操作中,FRAME#、IRDY#、TRDY#和STOP#遵循的规则:PCI总线上的所有传输操作中,FRAME#、IRDY#、TRDY#和STOP#遵循的规则: • 当STOP#信号有效时,FRAME#应该在其后的2~3个时钟周期内尽快撤消,但撤消时应使IRDY#有效,从设备应无条件的保持STOP#的有效状态直到FRAME#撤消为止。FRAME#撤消后,STOP#也应该紧跟着撤消。 • 在任何时钟的上升沿,如果STOP#和TRDY#同时有效,就表示是传输的最后周期,IRDY#要在下一个时钟的上升沿之前撤消,表示传输的结束。 • 对于被目标设备终止的传输,主设备要继续完成它,就必须用下一个未传输的数据的地址来重试访问。
6.1.7 总线仲裁 PCI总线采用集中式的同步仲裁方法 中央 仲裁器 REQ# REQ# PCI主设备B PCI主设备A GNT# GNT#
CLK 1 7 6 2 3 4 5 REQ#-A a b REQ#-B d e c GNT#-A f g GNT#-B FRAME# IRDY# TRDY# 地址 数据 数据 地址 AD B存取 A存取 两个主设备之间的PCI总线仲裁
6.1.8 PCI总线配置 1、PCI设备的配置空间 在系统启动的时候由BIOS代码执行设备配置。一旦即插即用OS(如Windows2000/XP)启动后,控制就传递给OS,OS接管设备管理。 定义一个PCI总线配置空间的目的在于提供一套适当的配置措施,使之实现完全的设备再定位而无需用户干预安装、配置和引导,并由与设备无关的软件进行系统地址映射。 所有PCI设备都必须实现PCI协议规定必需的配置寄存器,以便系统加电的时候利用这些寄存器的信息来进行系统配置。对PCI的配置访问实际上就是访问设备的配置寄存器。
(1)设备识别 头区域有7个寄存器(字段)用于设备的识别。 (2)设备控制 表现在命令寄存器为发出和响应PCI总线命令提供了对设备粗略的控制。 (3)设备状态 状态寄存器用于记录PCI总线有关操作的状态信息。注意:该寄存器的有些位是只可清不可置,对这些位的写,被解释为对该位清零。例如,为了清位14而不影响其他位,应向该寄存器写0100 0000 0000 0000B
(4)基址寄存器 PCI设备的配置空间可以在微处理器决定的地址空间中浮动,以便简化设备的配置过程。系统初始化代码在引导操作系统之前,必须建立一个统一的地址映射关系,以确定PCI设备中有多少存储器和I/O控制器,它们需要占用多少地址空间。当确定这些信息之后,系统初始化代码便可以把I/O控制器映射到合理的地址空间并引导系统。 为了使这种映射能够做到与相应的设备无关,在配置空间的头区域中安排了一组供映射时使用的基址寄存器。
31 2 1 0 0 1 基 地 址 规范规定每个I/O基地址下的端口数不得大于256。 保留 I/O空间指针 31(63) 3 2 1 0 0 基 地 址 预取使能 存储空间指针 00 32位地址空间任意映射 01 32位地址空间1M字节以内映射(已经不用) 10 64位地址空间任意映射 11保留 返回
具体实现的过程中,除了低四位满足上述要求外,高位部分实际设置位数视映射多大地址空间范围而定,根据地址范围,决定高多少位需要设置,这些位被设置成可写,高位部分的其它位用硬件使其为0,并只可读。基地址设置过程:具体实现的过程中,除了低四位满足上述要求外,高位部分实际设置位数视映射多大地址空间范围而定,根据地址范围,决定高多少位需要设置,这些位被设置成可写,高位部分的其它位用硬件使其为0,并只可读。基地址设置过程: 系统初始化程序向基地址寄存器写全1 系统初始化程序读出基地址寄存器的内容 系统初始化程序判断设备需要的地址空间大小 系统初始化程序分配基地址并写回到该基地址寄存器 如设备需要使用1MB的存储空间,硬件实现基地址寄存器的时候应该使位0,位4~位19由硬件使其保持为0
举例1: 系统初始化向基址寄存器写全1后读出的值=FFE00000h • 位0=0,表示是一个存储器地址空间映射 • 位[2:1]=00b,它是32位存储器映射 • 位3=0,表示它不是预取存储器。 • 位[31:4] 第一个为1的是位21,表示映射的存储空间为221=2MB。这意味着存储映射的基地址应该起始于2MB、4MB、6MB等的边界上。 系统经过权衡后再向该基址寄存器写入实际映射的空间基址,该基址应该是2MB边界,并且具有连续2MB空闲空间的地址,如:FFE00000H, FFC00000H, FE000000H等。 问:FFF00000H地址能不能做该设备存储基址?
举例2: 基址寄存器的值=FFFFFF01h • 位0=1,表示是一个I/O地址空间映射 • 位[31:2]第一个为1的是位8,表示映射的I/O空间为28=256。 这意味着I/O映射的基地址应该是256的整数倍,并有连续256个空闲的端口地址区域的首地址。
最大/最小映射地址空间是多少? 最大/最小存储映射地址空间 最小存储映射地址空间=16字节(24) 最大存储映射地址空间=2GB(231) 最大/最小I/O映射地址空间 最小I/O映射地址空间=4字节(22) 最大存储映射地址空间=256字节(协议规定) 转前
扩展ROM基地址寄存器 31 11 10 1 0 基 地 址 保 留 扩展ROM访问允许 扩展ROM基地址=FFFF0001h • 位0=1,表示扩展ROM访问允许 • 位[31:11]第一个为1的是位16,表示映射的存储空间为64K。这意味着ROM映射的基地址应该起始于64KB的边界
(5)头区域中其它寄存器 中断引脚寄存器 8位只读寄存器,指明设备使用了PCI的哪个中断引脚。1代表INTA#,2为INTB#…… 中断请求线寄存器 8位可读/写寄存器,指明设备的中断引脚和PC机的 8259A的哪个中断输入线连。 Min_Gnt/Max_lat寄存器 Min_Gnt用来指定设备需要多长的突发传输时间。 Max_lat用来表示对PCI总线进行访问的频繁程度。
2.配置空间的访问 (1) 配置空间访问时目标设备的选择 对于某一PCI设备, 1)只有当输入它的IDSEL信号有效, 2)并且在地址期内AD[1:0]为00时,才能被作为配置访问的目标设备。
(2) PCI设备与功能号 PCI总线可以由多条总线组成,每个总线上又有多个设备,因此它把各种设备划分到几条总线的某一条上,在这一条总线上又指定属于哪个逻辑设备,每个逻辑设备又分各种功能。 比如PCI-to-PCI桥是总线0,设备30,功能0(简写为B0:D30:F0)。 ICH8的电源管理模块是(B0:D31:F0)。 PCI-to-LPC桥(B0:D31:F0 ),包含控制LPC、电源管理、系统管理、通用I/O、处理器接口、实时时钟、中断、时钟和DMA的控制器
(2) 配置空间访问的类型 • · 0类配置空间访问 • 对(正在运行的)当前PCI总线上的目标设备配置寄存器所进行的访问。 • 被配置访问的目标设备必须在地址期采样到其IDSEL输入信号有效,且AD[1∶0]必须为00。 • 数据期, AD[31∶0]传送的是配置读/写数据。 • 地址期, AD[1∶0]必须为00; AD[10∶8]用于选择物理设备的八种功能之一 ;AD [7∶2]为选择该功能设备的配置寄存器号(双字号)。AD[31:11]可用于连接各设备的IDSEL信号
· 1类配置空间访问 • 对(通过PCI/PCI桥连接的)下一级PCI总线上的目标设备(配置寄存器)所进行的访问。 • 地址期 ,AD[1∶0]必须为01;AD[10∶8]作为选择物理设备的八种功能之一 。AD[7∶2]为选择该功能设备的配置寄存器号; AD[15∶11]用于存放第二级总线上被选中设备的IDSEL号,AD[23∶16] 放总线号。 • 桥片中也有桥配置空间寄存器,存放有总线号和次级总线号等信息。 • 一旦PCI/PCI桥检测到1类配置访问,就有三种情况,须分别进行处理。
CPU总线 桥A PCI总线0 设备 桥B PCI总线1 设备 • 如果要访问的总线号既不同于桥的第二级总线号,也不在桥的第二级总线号的下级总线范围内,那么桥将忽略本次访问。 • 如果总线号不同于桥的第二级总线,但在桥的第二级总线号的下级总线范围内,那么桥将本次访问作为1类配置访问传递给第二级总线。配置命令从第一级传递到第二级C/BE#总线。 • 如果总线号与桥的第二级总线号相同,那么桥将本次访问作为0类配置访问传递给第二级总线。AD[10:2]直接从桥的第一级传递到第二级AD总线。AD[15:11 ]的IDSEL号用于决定第二级总线上哪个设备的IDSEL信号设置有效。配置命令从第一级传到第二级C/BE#总线。
(3) 配置访问的访问方法 针对x86兼容的系统,PCI协议定义了将处理器发出的I/O访问识别为配置访问,或将处理器发出的存储器访问转换为配置访问的转换机构,称为配置机构。 • 配置机构是利用两个32位的I/O端口寄存器来访问PCI设备的配置空间的。 • 配置地址端口寄存器(I/O地址为0CF8H~0CFBH) • 配置数据端口寄存器(I/O地址为0CFCH~0CFFH) 第一步,将要访问的总线号、设备号、功能号和寄存器号写到配置地址端口寄存器。(32位写) 第二步,执行一次对配置数据端口寄存器的读/写。
6.2 通用串行总线USB 6.2.1 USB系统组成 1. USB的硬件 • USB主控制器/根集线器主控制器负责将并行数据转换成串行,并将数据传给根集线器。根集线器控制USB端口的电源,激活和禁止端口,识别与端口相连的设备,设置和报告与每个端口相连的状态事件。USB集线器(USB Hub) 完成USB设备的添加(扩展)、删除和电源管理等。USB设备 HUB设备和功能设备(外设),外设含一定数量独立的寄存器端口(端点)。外设有一个惟一的地址。通过这个地址和端点号,主机软件可以和每个端点通信。数据的传送是在主机软件和USB设备的端点之间进行的。
2. USB的软件 • USB设备驱动程序在USB外设中,通过I/O请求包将请求发送给USB设备中的USB(从)控制器。 • USB驱动程序 在主机中,当设置USB设备时读取描述器以获取USB设备的特征,并根据这些特征,在发生请求时组织数据传输。 USB驱动程序可以是捆绑在操作系统中,也可以是以可装载的驱动程序形式加入到操作系统中。 • USB主控制器驱动程序完成对USB事务交换的调度,并通过根Hub或其他的Hub完成对交换的初始化。
3. USB的拓扑结构 宿主机 PCI总线 USB主控制器/根Hub 高速 高速 高速 电话 显示器 集线器 高速 高速 高速 高速 扬声器 扬声器 键盘 麦克风 低速 低速 超速=5 Gb/s(3.0) 高速=480Mb/s(2.0) 全速=12Mb/s(1.1) 低速=1.5Mb/s(1.0) 麦克风 麦克风 USB的层次拓扑图
6.2.2 USB系统的接口信号和电气特性 1.接口信号线 +3.0~ 3.6vdc +5vdc 高/全速USB收发器(全速或高速设备) 1.5KΩ 高/全/低速USB收发器(主机或集线器端口) D+ D+ USB数据线 D- D- 15KΩ 地 15KΩ +3.0~ 3.6vdc +5vdc 低速USB收发器(低速设备) 高/全/低速USB收发器(主机或集线器端口) 1.5KΩ D+ D+ USB数据线 D- D- 15KΩ 地 15KΩ USB集成器和设备的电阻连接
闲置状态 连接状态 闲置状态 断开状态 传送状态 闲置状态 D+或D-的电压上升到2.5(2.7)V 维持2.5s以上 传送状态 数据K状态 设备从端口上断开过程 D+和D-的电压全部下降到0.8V并维持2.5s 数据包传送开始过程 断开状态 连接状态 差分数据线按传送数据变换 信号线跳变到其反向逻辑电平 数据包传送结束过程 保持信号线2个位传输时间的SE0状态,之后保持1个位传输时间的J状态。 设备接入到端口上的过程
高/全速设备被接入的判断 • D+线电压上升,则首先判断为全速设备。 • 主机在识别到一个新设备后要求集线器复位(Reset)连接端口,此时数据线进入SE0状态至少10ms。 • 复位期间,高速设备会发出一个Chirp K,集线器检测到该Chirp K后,会回应一串Chirp K与J。 • 得到这个Chirp KJKJKJ序列后,设备断开D+线上的上拉电阻,使能高速终端,进入高速缺省状态。 • 如果在复位期间集线器一直没有检测到Chirp K,则说明接入的是全速设备。 • 如果高速设备发出Chirp K后一直得不到集线器回应的Chirp KJKJKJ序列,则说明集线器不支持高速设备,则设备依然回到全速状态。
2.电气特性 对地电源电压为4.75~5.25V,设备吸入的最大电流值为500mA 。第一次被主机检测到时,设备吸入的电流<100mA • 自给供电 • 总线供给 USB电暖鞋 USB电暖鼠标垫 USB电暖手套
0 0 0 1 1 1 1 1 1 1 1 0 1 1 空闲 原始 数据 填充位 填充 数据 0 0 0 1 1 1 1 1 1 0 1 1 0 1 1 0 0 0 1 1 1 1 1 1 0 1 1 0 1 1 NRZI码 位填充和NRZI编码 3.NRZI编码 NRZI的编码方法不需独立的时钟信号和数据一起发送,电平跳变代表“0”,没有电平跳变代表“1”。在数据被编码前,在数据流中每6个连续的“1”后插入1个“0”,从而强迫NRZI码发生变化,也顺便让收发双方对准一次时钟,接收端必须去掉这个插入的“0”。 演示
6.2.3 USB数据流类型和传输类型 ◆USB数据流类型有四种:控制信号流、块数据流、中断数据流、实时数据流。 ◆USB有4种基本的传输类型 1.控制传输: 双向,用于配置设备或特殊用途,发生错误需重传。 当USB主机检测时,设备必须要用端点0完成和主机交换信息的控制传送。 2.批传输:单/双向,用于大批数据传输,要求准确,出错重传。时间性不强。 3.中断传输 :单向入主机,用于随机少量传送。采用查询中断方式,出错下一查询周期重新传。 4.等时传输:单/双向,用于连续实时的数据传输,时间性强,但出错无需重传。传输速率固定。