810 likes | 1.03k Views
第 6 章 微机总线标准. 6.1 总线概述. 6.1.1 总线标准的概念与特性. ◆ 总线:是在模块和模块之间或设备与设备之间的一组进行互连和传输信息的 信号线 ,信息包括指令、数据和地址。. ◆ 总线标准 指芯片之间、扩展卡之间以及系统之间,通过总线进行连接和传输信息时,应该遵守的一些协议与规范。. 总线标准的特性. 1 .物理特性 : 2 .功能特性 : 3 .电器特性 : 4 .时间特性 :. 总线物理连接方式 ( 电缆式、蚀刻式),总线根数、插头和插座形状,引脚排列等。. 描述一组总线中每一根线的功能。.
E N D
6.1 总线概述 6.1.1 总线标准的概念与特性 ◆ 总线:是在模块和模块之间或设备与设备之间的一组进行互连和传输信息的信号线,信息包括指令、数据和地址。 ◆ 总线标准 指芯片之间、扩展卡之间以及系统之间,通过总线进行连接和传输信息时,应该遵守的一些协议与规范。
总线标准的特性 1.物理特性: 2.功能特性: 3.电器特性: 4.时间特性: 总线物理连接方式(电缆式、蚀刻式),总线根数、插头和插座形状,引脚排列等。 描述一组总线中每一根线的功能。 定义每根线上信号的传递方向以及有效电平范围。一般定义送入CPU的信号为输入信号,从CPU中送出的信号是输出信号。低电平有效的信号用信号名后带#来表示。如CS#、REQ# 定义每一根线在什么时候有效,这和总线操作的时序有关。
6.1.2 总线的分类 1) 按总线功能或信号类型划分为: • 数据总线:双向三态逻辑,线宽表示了总线数据传输的能力。 • 地址总线:单向三态逻辑,线宽决定了系统的寻址能力。 • 控制总线:就某根来说是单向或双向。控制总线最能体现总线特点,决定总线功能的强弱和适应性。
2) 按总线的分级结构分为: • CPU总线:微机系统中速度最快的总线,主要在CPU内部,连接CPU内部部件,在CPU周围的小范围内也分布该总线,提供系统原始的控制和命令。 • 局部总线:在系统总线和CPU总线之间的一级总线,提供CPU和主板器件之间以及CPU到高速外设之间的快速信息通道。 • 系统总线:也称为I/O总线,是传统的通过总线扩展卡连接外部设备的总线。由于速度慢,其功能已经被局部总线替代。 • 通信总线:也称为外部总线,是微机与微机,微机与外设之间进行通信的总线。
6.1.3 总线的主要性能参数 1.总线频率:MHz表示的工作频率,是总线速率的一个重要参数。 2.总线宽度:指数据总线的位数。 3.总线的数据传输率 总线的数据传输率=(总线宽度/8位)×总线频率 例:PCI总线的总线频率为33.3MHz,总线宽度为64位的情况下,总线数据传输率为266MB/s 。
6.1.4 总线操作和总线传送控制 一、总线操作的4个阶段 1.总线请求和仲裁阶段: 主模块向总线仲裁机构提出总线使用申请,总线仲裁机构决定使用总线的主模块。 2.寻址阶段: 拥有总线使用权的主模块发出本次要访问的从模块的地址及有关命令,该从模块被选中并启动。 3.数据传送阶段: 主模块和从模块间进行双(单)向数据传送。 4.结束阶段: 主、从模块均撤出总线。
clk 主 从 wait/ready 二、总线传送控制 clk 主 1.同步方式 从 优点:1)电路简单 2)适合高速设备的数据传输 缺点:高速设备和低速设备间只能用低速设备的速度来传输数据 2.半同步方式 wait/ready信号是单向的,不是互锁的。
4.分离方式 • 总线读周期分成两个子周期 • 寻址子周期 • 数据传送子周期 • 在两子周期之间,退出总线,从设备准备数据。 REQ clk address data ACK 3.异步方式 主 • 比同步方式慢 • 总线频带窄 • 总线传输周期长 从
6.2 PCI总线 6.2.1 PCI总线的特点 6) 采用同步操作 7) 支持两种电压下的扩展卡 8) 具有即插即用功能 9) 合理的管脚安排 10) 预留扩展空间 • 独立于处理器 • 2) 传输效率高 • 3) 多总线共存 • 4) 支持突发传输 • 5) 支持总线主控方式
6.2.2 PCI信号定义 • 系统接口信号 • CLK IN:PCI系统总线时钟 最高33MHz/66MHz,最低0Hz。PCI大部分信号在CLK的上升沿有效。
2.地址与数据接口信号 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]#进行奇偶校验的校验位
3.接口控制信号 • 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#信号无效表示传输进入最后一个数据期。
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.2.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.2.4 PCI总线命令 PCI总线命令表
6.2.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.2.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.2.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.2.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设备的配置空间可以在微处理器决定的地址空间中浮动,以便简化设备的配置过程。系统初始化代码在引导操作系统之前,必须建立一个统一的地址映射关系,以确定设备中有多少存储器和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、3MB、4MB等的边界上。 系统经过权衡后再向该基址寄存器写入实际映射的空间基址,该基址应该是2MB边界的,如:FFE00000H, FFC00000H, FE000000H等。 问:FFF00000H地址能不能做该设备存储基址?
举例2: 基址寄存器的值=FFFFFF01h • 位0=1,表示是一个I/O地址空间映射 • 位[31:2]第一个为1的是位8,表示映射的I/O空间为28=256。这意味着I/O映射的基地址应该是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) 配置空间访问的类型 • · 0类配置空间访问 • 对(正在运行的)当前PCI总线上的目标设备配置寄存器所进行的访问。 • 被配置访问的目标设备必须在地址期采样到其IDSEL输入信号有效,且AD[1∶0]必须为00。 • 地址期, AD[1∶0]必须为00; AD[10∶8]用于选择物理设备的八种功能之一 ;AD [7∶2]为选择该功能设备的配置寄存器号(双字号)。AD[31:11]可用于连接各设备的IDSEL信号 • 数据期, AD[31∶0]传送的是配置读/写数据。
· 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信号被设置有效。配置命令从第一级传递到第二级C/BE#总线。
(3) 配置访问的访问方法 针对x86兼容的系统,PCI协议定义了将处理器发出的I/O访问识别为配置访问,或将处理器发出的存储器访问转换为配置访问的转换机构,称为配置机构。 • 配置机构是利用两个32位的I/O端口寄存器来访问PCI设备的配置空间的。 • 配置地址端口寄存器(I/O地址为0CF8H~0CFBH) • 配置数据端口寄存器(I/O地址为0CFCH~0CFFH) 第一步,将要访问的总线号、设备号、功能号和寄存器号写到配置地址端口寄存器。(32位写) 第二步,执行一次对配置数据端口寄存器的读/写。
6.2.9 PCI BIOS 初始化程序只能通过PCI BIOS才能访问PCI配置寄存器。 PCI BIOS再通过配置地址端口寄存器和配置数据端口寄存器实现其功能。 1、16位PCI BIOS的调用 通过INT 1AH实现:AH=B1H,AL为子功能号。 2、32位PCI BIOS的调用 确认32位BIOS是否存在; 确认BIOS是否支持PCI BIOS,取得PCI BIOS入口地址; 通过对PCI BIOS入口地址的远程调用来实现:AH=B1H,AL为子功能号。
6.3 通用串行总线USB 6.3.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 08年将要推出的USB3.0速率将达到5Gb/s 高速 高速 高速 电话 显示器 集线器 高速 高速 高速 高速 扬声器 扬声器 键盘 麦克风 高速=480Mb/s(2.0) 全速=12Mb/s(1.1) 低速=1.5Mb/s(1.0) 低速 低速 麦克风 麦克风 USB的层次拓扑图
6.3.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集成器和设备的电阻连接