Download presentation
Presentation is loading. Please wait.
1
第6章 微机总线标准
2
6.1 总线概述 6.1.1 总线标准的概念与特性 ◆ 总线:是在模块和模块之间或设备与设备之间的一组进行互连和传输信息的信号线,信息包括指令、数据和地址。 ◆ 总线标准 指芯片之间、扩展卡之间以及系统之间,通过总线进行连接和传输信息时,应该遵守的一些协议与规范。
3
总线标准的特性 1.物理特性: 总线物理连接方式(电缆式、蚀刻式),总线根数、插头和插座形状,引脚排列等。 2.功能特性: 3.电器特性:
4.时间特性: 总线物理连接方式(电缆式、蚀刻式),总线根数、插头和插座形状,引脚排列等。 描述一组总线中每一根线的功能。 定义每根线上信号的传递方向以及有效电平范围。一般定义送入CPU的信号为输入信号,从CPU中送出的信号是输出信号。低电平有效的信号用信号名后带#来表示。如CS#、REQ# 定义每一根线在什么时候有效,这和总线操作的时序有关。
4
6.1.2 总线的分类 1) 按总线功能或信号类型划分为: 数据总线:双向三态逻辑,线宽表示了总线数据传输的能力。
地址总线:单向三态逻辑,线宽决定了系统的寻址能力。 控制总线:就某根来说是单向或双向。控制总线最能体现总线特点,决定总线功能的强弱和适应性。
5
2) 按总线的分级结构分为: CPU总线:微机系统中速度最快的总线,主要在CPU内部,连接CPU内部部件,在CPU周围的小范围内也分布该总线,提供系统原始的控制和命令。 局部总线:在系统总线和CPU总线之间的一级总线,提供CPU和主板器件之间以及CPU到高速外设之间的快速信息通道。 系统总线:也称为I/O总线,是传统的通过总线扩展卡连接外部设备的总线。由于速度慢,其功能已经被局部总线替代。 通信总线:也称为外部总线,是微机与微机,微机与外设之间进行通信的总线。
6
6.1.3 总线的主要性能参数 1.总线频率:MHz表示的工作频率,是总线速率的一个重要参数。 2.总线宽度:指数据总线的位数。
3.总线的数据传输率 总线的数据传输率=(总线宽度/8位)×总线频率 例:PCI总线的总线频率为33.3MHz,总线宽度为64位的情况下,总线数据传输率为266MB/s 。
7
6.1.4 总线操作和总线传送控制 一、总线操作的4个阶段 1.总线请求和仲裁阶段:
主模块向总线仲裁机构提出总线使用申请,总线仲裁机构决定使用总线的主模块。 2.寻址阶段: 拥有总线使用权的主模块发出本次要访问的从模块的地址及有关命令,该从模块被选中并启动。 3.数据传送阶段: 主模块和从模块间进行双(单)向数据传送。 4.结束阶段: 主、从模块均撤出总线。
8
缺点:高速设备和低速设备间只能用低速设备的速度来传输数据
二、总线传送控制 clk 主 1.同步方式 从 优点:1)电路简单 2)适合高速设备的数据传输 缺点:高速设备和低速设备间只能用低速设备的速度来传输数据 2.半同步方式 主 clk 从 wait/ready wait/ready信号是单向的,不是互锁的。
9
在两子周期之间,退出总线,从设备准备数据。 4.分离方式
3.异步方式 REQ 主 比同步方式慢 总线频带窄 总线传输周期长 从 ACK 总线读周期分成两个子周期 寻址子周期 数据传送子周期 在两子周期之间,退出总线,从设备准备数据。 4.分离方式 clk address data
10
6.2 PCI总线 6.2.1 PCI总线的特点 独立于处理器 6) 采用同步操作 2) 传输效率高 7) 支持两种电压下的扩展卡
3) 多总线共存 4) 支持突发传输 5) 支持总线主控方式 6) 采用同步操作 7) 支持两种电压下的扩展卡 8) 具有即插即用功能 9) 合理的管脚安排 10) 预留扩展空间
11
6.2.2 PCI信号定义 系统接口信号 CLK IN:PCI系统总线时钟 最高33MHz/66MHz,最低0Hz。 PCI大部分信号在CLK的上升沿有效。
12
在FRAME#有效的第1个时钟,AD[31:00]上传送的是32位地址,称为地址期 。
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]#进行奇偶校验的校验位
13
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#信号无效表示传输进入最后一个数据期。
14
4.仲裁接口信号 5.错误报告接口信号 6.中断接口信号 REQ# T/S:总线占用请求信号 GNT# T/S:总线占用允许信号
PERR# S/T/S:数据奇偶校验错误报告信号 SERR# O/D:系统错误报告信号 6.中断接口信号 PCI有4条中断线,分别是INTA#、INTB#、INTC#、INTD# ,电平触发,多功能设备可以任意选择一个或多个中断线,单功能设备只能用INTA#。
15
7. 64位总线扩展信号 AD[63:32] T/S:扩展的32位地址和数据多路复用线
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:奇偶双字节校验
16
6.2.3 PCI插槽和PCI扩展卡 1. PCI插槽 连接卡口 5V 32位插槽 5V 64位插槽 3.3V 32位插槽
a. 4种PCI卡插槽 A1 外 内 A49 A52 B1 B49 B52 A62 B62 1.27 3.82 77.48 b. 5V32位PCI插槽
17
2.PCI插卡 IC 1.91 60.96 12.7 41.6 80 外边 里边
18
6.2.4 PCI总线命令 PCI总线命令表 命令类型说明 0000 中断响应 1000 保留 0001 特殊周期 1001 0010
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 存储器写并无效
19
6.2.5 PCI总线协议 1.PCI总线的传输控制遵循的管理规则: (1) FRAME#和IRDY#定义了总线的忙/闲状态。
11空闲、00数据、10最后一个数据、01等待状态。 (2) 一旦FRAME#信号被置为无效,在同一传输期间不能重新设置。 (3) 除非设置IRDY#信号,一般情况下不能设置FRAME# 信号无效。 (4) 一旦主设备设置了IRDY#信号,直到当前数据期结束为止,主设备一般不能改变IRDY#信号和FRAME#信号的状态。
20
表3.4 AD[1:0]和C/BE[3:0]#对应关系表
2.PCI总线的寻址(采用分散地址译码技术) (1) I/O地址空间 在I/O地址空间,32位AD线全部被用来提供一个完整的地址编码(字节地址)。 AD[1:0]和C/BE[3:0]指明传输的最低有效字节。 表3.4 AD[1:0]和C/BE[3:0]#对应关系表 AD1 AD0 C/BE3# C/BE2# C/BE1# C/BE0# × 1
21
(2) 内存地址空间 双字边界对齐的起始地址 (3) 配置地址空间 双字边界对齐的起始地址 31 2 1 00 地址递增
双字边界对齐的起始地址 00 地址递增 01 Cache行切换 1X 保留 (3) 配置地址空间 7 2 1 双字边界对齐的起始地址 00 选择该设备 01 访问该桥路后设备 1X 保留
22
3.字节使能 PCI总线上不能进行字节的交换。但是,具有64位通道的主设备可以进行DWORD(双字)的交换。 主设备可以在每个新数据期开始的时钟前沿改变字节使能信号,且在整个数据期中保持不变。 读缓冲中的数据可以不考虑字节使能信号,而传送所有的字节。 4.PCI总线的驱动与过渡 从一个设备驱动总线到另一个设备驱动PCI总线之间设置一个过渡期,又称为交换周期,以防止总线访问冲突。 在每个地址(数据)期中,所有的AD线都必须被驱动到稳定的状态(数据),包括那些字节使能信号表明无效的字节所对应的AD线。
23
5.设备选择 注意DEVSEL#与FRAME#、TRDY#的关系,无DEVSEL#信号时的处理。
CLK FRAME# IRDY# TRDY# DEVSEL# 1 2 3 4 5 6 7 8 FAST MED SLOW …… 设备选择的时序关系 注意DEVSEL#与FRAME#、TRDY#的关系,无DEVSEL#信号时的处理。 DEVSEL#由从设备共享使用,并由被选中的从设备驱动。
24
6.2.6 PCI总线数据传输过程 1.总线上的读操作 CLK FRAME# 1 2 3 4 5 6 7 8 9 AD C/BE#
IRDY# TRDY# DEVSEL# ADDRESS DATA1 DATA2 DATA3 BUSCMD BE#s 地址期 数据期 PCI读操作时序
25
2.总线上的写操作 CLK FRAME# 1 2 3 4 5 6 7 8 9 AD C/BE# IRDY# TRDY# DEVSEL#
ADDRESS DATA2 DATA1 DATA3 BUSCMD 地址期 数据期 PCI写操作时序 BEs1 BEs2 BEs3
26
3.传输的终止过程 (1) 由主设备提出的终止 传输结束 超时(GNT#信号在内部延时计数器满后仍无效) 撤消FRAME#,建立IRDY#,直到TRDY#有效后传输完最后一个数据 (2) 由从设备提出的终止 死锁后重试 断开(8个时钟周期内从设备不能对主设备做出响应)。 发出STOP#信号并保持其有效,直到FRAME#撤消为止。
27
PCI总线上的所有传输操作中,FRAME#、IRDY#、TRDY#和STOP#遵循的规则:
当STOP#信号有效时,FRAME#应该在其后的2~3个时钟周期内尽快撤消,但撤消时应使IRDY#有效,从设备应无条件的保持STOP#的有效状态直到FRAME#撤消为止。FRAME#撤消后,STOP#也应该紧跟着撤消。 在任何时钟的上升沿,如果STOP#和TRDY#同时有效,就表示是传输的最后周期,IRDY#要在下一个时钟的上升沿之前撤消,表示传输的结束。 对于被目标设备终止的传输,主设备要继续完成它,就必须用下一个未传输的数据的地址来重试访问。
28
6.2.7 总线仲裁 PCI总线采用集中式的同步仲裁方法 中央 仲裁器 PCI主设备B PCI主设备A REQ# REQ# GNT#
29
CLK FRAME# 1 2 3 4 5 6 7 AD GNT#-B IRDY# TRDY# GNT#-A 地址 数据 A存取 B存取 两个主设备之间的PCI总线仲裁 REQ#-B REQ#-A c a b d e f g
30
PCI总线配置 1、PCI设备的配置空间 在系统启动的时候由BIOS代码执行设备配置。一旦即插即用OS(如Windows2000/XP)启动后,控制就传递给OS,OS接管设备管理。 定义一个PCI总线配置空间的目的在于提供一套适当的配置措施,使之实现完全的设备再定位而无需用户干预安装、配置和引导,并由与设备无关的软件进行系统地址映射。 所有PCI设备都必须实现PCI协议规定必需的配置寄存器,以便系统加电的时候利用这些寄存器的信息来进行系统配置。对PCI的配置访问实际上就是访问设备的配置寄存器。
31
2、配置空间头区域及功能
32
(1)设备识别 头区域有7个寄存器(字段)用于设备的识别。 (2)设备控制 表现在命令寄存器为发出和响应PCI总线命令提供了对设备粗略的控制。 (3)设备状态 状态寄存器用于记录PCI总线有关操作的状态信息。注意:该寄存器的有些位是只可清不可置,对这些位的写,被解释为对该位清零。例如,为了清位14而不影响其他位,应向该寄存器写 B
33
为了使这种映射能够做到与相应的设备无关,在配置空间的头区域中安排了一组供映射时使用的基址寄存器。
(4)基址寄存器 PCI设备的配置空间可以在微处理器决定的地址空间中浮动,以便简化设备的配置过程。系统初始化代码在引导操作系统之前,必须建立一个统一的地址映射关系,以确定系统中有多少存储器和I/O控制器,它们需要占用多少地址空间。当确定这些信息之后,系统初始化代码便可以把I/O控制器映射到合理的地址空间并引导系统。 为了使这种映射能够做到与相应的设备无关,在配置空间的头区域中安排了一组供映射时使用的基址寄存器。
34
1 31 2 1 0 基 地 址 规范规定每个I/O基地址下的端口数不得大于256。 保留 I/O空间指针 31(63) 3 2 1 0
1 基 地 址 规范规定每个I/O基地址下的端口数不得大于256。 保留 I/O空间指针 31(63) 基 地 址 预取使能 存储空间指针 00 32位地址空间任意映射 01 32位地址空间1M字节以内映射(已经不用) 10 64位地址空间任意映射 11 保留 返回
35
具体实现的过程中,除了低四位满足上述要求外,高位部分实际设置位数视映射多大地址空间范围而定,根据地址范围,决定高多少位需要设置,这些位被设置成可写,高位部分的其它位用硬件使其为0,并只可读。基地址设置过程: 系统初始化程序向基地址寄存器写全1 系统初始化程序读出基地址寄存器的内容 系统初始化程序判断设备需要的地址空间大小 系统初始化程序分配基地址并写回到该基地址寄存器 如设备需要使用1MB的存储空间,硬件实现基地址寄存器的时候应该使位0,位4~位19由硬件使其保持为0
36
系统初始化向基址寄存器写全1后读出的值=FFF00000h
举例1: 系统初始化向基址寄存器写全1后读出的值=FFF00000h 位0=0,表示是一个存储器地址空间映射 位[2:1]=00b,它是32位存储器映射 位3=0,表示它不是预取存储器。 位[31:4] 第一个为1的是位20,表示映射的存储空间为220=1MB。 这意味着存储映射的基地址应该起始于1MB、2MB、3MB等的边界上。 系统经过权衡后再向该基址寄存器写入实际映射的空间基址,该基址应该是1MB边界的,如:FFF00000H, FFE00000H, FE000000H等。 问:FFF10000H地址能不能做该设备存储基址?
37
举例2: 基址寄存器的值=FFFFFF01h 位0=1,表示是一个I/O地址空间映射 位[31:2] 第一个为1的是位8,表示映射的I/O空间为28=256。 这意味着I/O映射的基地址应该是256的整数倍。
38
最大/最小映射地址空间是多少? 最大/最小存储映射地址空间 最小存储映射地址空间=16字节(24) 最大存储映射地址空间=2GB(231)
最大/最小I/O映射地址空间 最小I/O映射地址空间=4字节(22) 最大存储映射地址空间=256字节(协议规定) 转前
39
扩展ROM基地址寄存器 扩展ROM基地址=FFFF0001h 31 11 10 1 0 基 地 址 保 留 扩展ROM访问允许
基 地 址 保 留 扩展ROM访问允许 扩展ROM基地址=FFFF0001h 位0=1,表示扩展ROM访问允许 位[31:11] 第一个为1的是位16,表示映射的存储空间为64K。 这意味着ROM映射的基地址应该起始于64KB的边界
40
(5)头区域中其它寄存器 中断引脚寄存器 8位只读寄存器,指明设备使用了PCI的哪个中断引脚。1代表INTA#,2为INTB#…… 中断请求线寄存器 8位可读/写寄存器,指明设备的中断引脚和PC机的 8259A的哪个中断输入线连。 Min_Gnt/Max_lat寄存器 Min_Gnt用来指定设备需要多长的突发传输时间。 Max_lat用来表示对PCI总线进行访问的频繁程度。
41
2.配置空间的访问 (1) 配置空间访问时目标设备的选择 对于某一PCI设备, 1)只有当输入它的IDSEL信号有效, 2)并且在地址期内AD[1:0]为00时, 才能被作为配置访问的目标设备。
42
(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]传送的是配置读/写数据。
43
· 1类配置空间访问 对(通过PCI/PCI桥连接的)下一级PCI总线上的目标设备(配置寄存器)所进行的访问。 地址期 ,AD[1∶0]必须为01;AD[10∶8]作为选择物理设备的八种功能之一 。AD[7∶2]为选择该功能设备的配置寄存器号; AD[15∶11]用于存放第二级总线上被选中设备的IDSEL号,AD[23∶16] 放总线号。 桥片中也有桥配置空间寄存器,存放有总线号和次级总线号等信息。 一旦PCI/PCI桥检测到1类配置访问,就有三种情况,须分别进行处理。
44
如果要访问的总线号既不同于桥的第二级总线号,也不在桥的第二级总线号的下级总线范围内,那么桥将忽略本次访问。
如果总线号不同于桥的第二级总线,但在桥的第二级总线号的下级总线范围内,那么桥将本次访问作为1类配置访问传递给第二级总线。配置命令从第一级传递到第二级C/BE#总线。 桥A 桥B 设备 CPU总线 PCI总线0 PCI总线1 如果总线号与桥的第二级总线号相同,那么桥将本次访问作为0类配置访问传递给第二级总线。AD[10:2]直接从桥的第一级传递到第二级AD总线。AD[15:11 ]的设备号用于决定第二级总线上哪个设备的IDSEL信号被设置有效。配置命令从第一级传递到第二级C/BE#总线。
45
(3) 配置访问的访问方法 针对x86兼容的系统,PCI协议定义了将处理器发出的I/O访问识别为配置访问,或将处理器发出的存储器访问转换为配置访问的转换机构,称为配置机构。 配置机构是利用两个32位的I/O端口寄存器来访问PCI设备的配置空间的。 配置地址端口寄存器(I/O地址为0CF8H~0CFBH) 配置数据端口寄存器(I/O地址为0CFCH~0CFFH) 第一步,将要访问的总线号、设备号、功能号和寄存器号写到配置地址端口寄存器。(32位写) 第二步,执行一次对配置数据端口寄存器的读/写。
46
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为子功能号。
47
6.3 通用串行总线USB 1. USB的硬件 6.3.1 USB系统组成
USB主控制器/根集线器 主控制器负责将并行数据转换成串行,并将数据传给根集线器。根集线器控制USB端口的电源,激活和禁止端口,识别与端口相连的设备,设置和报告与每个端口相连的状态事件。 USB集线器(USB Hub) 完成USB设备的添加(扩展)、删除和电源管理等。 USB设备 HUB设备和功能设备(外设),外设含一定数量独立的寄存器端口(端点)。外设有一个惟一的地址。通过这个地址和端点号,主机软件可以和每个端点通信。数据的传送是在主机软件和USB设备的端点之间进行的。
48
2. USB的软件 USB设备驱动程序 在USB外设中,通过I/O请求包将请求发送给USB设备中的USB(从)控制器。 USB驱动程序 在主机中,当设置USB设备时读取描述器以获取USB设备的特征,并根据这些特征,在发生请求时组织数据传输。 USB驱动程序可以是捆绑在操作系统中,也可以是以可装载的驱动程序形式加入到操作系统中。 USB主控制器驱动程序 完成对USB事务交换的调度,并通过根Hub或其他的Hub完成对交换的初始化。
49
3. USB的拓扑结构 PCI总线 宿主机 USB主控制器/根Hub 高速 电话 显示器 集线器 麦克风 扬声器 键盘 低速
高速=480Mb/s 全速=12Mb/s 低速=1.5Mb/s USB的层次拓扑图
50
高/全/低速USB收发器(主机或集线器端口) 高/全速USB收发器(主机端口或高速设备) 高/全/低速USB收发器(主机或集线器端口)
1.接口信号线 +3.0~ 3.6vdc +5vdc 高/全/低速USB收发器(主机或集线器端口) 1.5KΩ 高/全速USB收发器(主机端口或高速设备) D+ D+ USB数据线 D- D- 15KΩ 地 15KΩ +3.0~ 3.6vdc +5vdc 高/全/低速USB收发器(主机或集线器端口) 1.5KΩ 低速USB收发器(低速设备) D+ D+ USB数据线 D- D- 15KΩ 地 15KΩ USB集成器和设备的电阻连接
51
USB常用信号电平(全速设备,低速设备电平相反)
总线状态 信 号 电 平 发送端 接受器端 差分“1” D+>2.8V并且D-<0.3V (D+)-(D-)>200mV并且D+>2.0V 差分“0” D->2.8V并且D+<0.3V (D-)-(D+)>200mV并且D->2.0V 单端点0(SE0) D+和D-<0.3V D+和D-<0.8V 数据J状态 差分“1”(不是逻辑1) 数据K状态 差分“0”(不是逻辑0) 恢复状态 闲置状态 N.A. D+>2.7V并且D-<0.8V
52
高速USB总线状态与其信号电平 总 线 状 态 发 送 端 接 收 端 高速差分“1”
360mV≤D+≤440mV; -10mV≤D-≤10mV 高速差分“0” 360mV≤D-≤440mV; -10mV≤D+≤10mV 高速J状态 高速K状态 Chirp J状态 700mV≤D+-D-≤1100mV Chirp K状态 -900mV≤D+-D-≤-500mV 高速闲置(Idle)状态 NA -10mV≤(D-, D+)≤10mV 高速包开始(HSSOP) 数据线从高速闲置状态转换到高速J状态或高速K状态 高速包结束(HSEOP) 数据线从高速J状态或高速K状态转换到高速闲置状态
53
设备接入到端口上的过程 D+或D-的电压上升到2.5(2.7)V 断开状态 闲置状态 维持2.5s以上 连接状态 设备从端口上断开过程 D+和D-的电压全部下降到0.8V并维持2.5s 连接状态 断开状态 信号线跳变到其反向逻辑电平 数据K状态 闲置状态 数据包传送开始过程 差分数据线按传送数据变换 传送状态 数据包传送结束过程 保持信号线2个位传输时间的SE0状态,之后保持1个位传输时间的J状态。 传送状态 闲置状态
54
高/全速设备被接入的判断 D+线电压上升,则首先判断为全速设备。
主机在识别到一个新设备后要求集线器复位(Reset)连接端口,此时数据线进入E0状态至少10ms。 复位期间,高速设备会发出一个Chirp K,集线器检测到该chirtp后,会回应一串ChirpK与J。 得到这个Chirp KJKJKJ序列后,设备断开D+线上的上拉电阻,使能高速终端,进入高速缺省状态。 如果在复位期间集线器一直没有检测到Chirp K,则说明接入的是全速设备。 如果高速设备发出Chirp K后一直得不到集线器回应的Chirp KJKJKJ序列,则说明集线器不支持高速设备,则设备依然回到全速状态。
55
2.电气特性 对地电源电压为4.75~5.25V,设备吸入的最大电流值为500mA 。第一次被主机检测到时,设备吸入的电流<100mA 自给供电 总线供给
56
3.NRZI编码 NRZI的编码方法不需独立的时钟信号和数据一起发送,电平跳变代表“0”,没有电平跳变代表“1”。在数据被编码前,在数据流中每6个连续的“1”后插入1个“0”,从而强迫NRZI码发生变化,也顺便让收发双放对准一次时钟,接收端必须去掉这个插入的“0”。 演示 原始 数据 空闲 填充 填充位 NRZI码 位填充和NRZI编码
57
6.3.3 USB数据流类型和传输类型 ◆ USB数据流类型有四种:控制信号流、块数据流、中断数据流、实时数据流。 ◆ USB有4种基本的传输类型 1.控制传输: 双向,用于配置设备或特殊用途,发生错误需重传。 当USB主机检测时,设备必须要用端点0完成和主机交换信息的控制传送。 2.批传输:单/双向,用于大批数据传输,要求准确,出错重传。时间性不强。 3.中断传输 :单向入主机,用于随机少量传送。采用查询中断方式,出错下一查询周期重新传。 4.等时传输:单/双向,用于连续实时的数据传输,时间性强,但出错无需重传。传输速率固定。
58
6.3.4 USB交换的包格式 帧结束间隔区 标志包 数据包 握手包 一次交换(事务处理) 等时传输无握手包 每次交换均由主机发起,对中断传输,亦由主机发送查询包取得中断信息。 交换完毕,进入帧结束间隔区发送方把D+和D-上的电压降低到0.8V以下,并保持2个位的传输时间,然后维持1个位传输时间的J状态表示包结束,之后进入闲置状态。
59
表3.6 包的类型(阴影部分是USB2.0规范) PID类型 PID名称 PID[3:0] 描述 标志包 OUT 0001b
具有PID、类型检查、设备地址、端点号和CRC域的宿主到功能设备的发送包 IN 1001b 功能设备到宿主的接收包,具有和发送包一样的域 SOF 0101b 帧开始包 SETUP 1101b 主机发给设备的设置包,用于控制传输的设置。 数据包 DATA0 0011b 数据包0 DATA1 1011b 数据包1 DATA2 0111b 为帧中高速、高带宽的等时交换的数据包 MDATA 1111b 为分离的高速和高带宽等时交换中的数据包
60
握手包 ACK 0010b 接收设备发的接受数据正确的应答包 NAK 1010b 接收设备无法接受数据或没有数据返回个宿主 STALL 1110b 设备已经被挂起,需要主机插手解决故障 NYET 0110b 接收器无应答 特殊包 PRE 1100b (Token)预告包,预告下面将以低速方式和低速设备通信 ERR (Handshake)分离交换错误的握手信号 SPLIT 1000b 高速分离交换标志 PING 0100b 为批或控制端点传输而设置的高速流控制探测 Reserved 0000b 保留
61
包的一般格式 所有数据发发送都时从低位开始向高位发送 SYNC:同步序列 数据为10000000B(1.1版本)
8位 n位 5位或16位 8位(32位) SYNC PID 包特定信息 CRC 所有数据发发送都时从低位开始向高位发送 SYNC:同步序列 数据为 B(1.1版本) 数据为 B(2.0版本) PID:包标识别,发送从低位到高位 PID0 PID1 LSb PID2 PID3 PID0# PID1# PID2# PID3# MSb 低4位放PID 高4位放PID的反码
62
1. 包的种类及格式 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 1 (1) 帧开始包(SOF)(一帧持续时间为1ms)
SYNC PID FRAME NUMBER CRC 8/32位 帧开始包格式 8位 11位 5位 LSb MSb 数据 编码 演示
63
根Hub广播接受包目标设备返回数据包根Hub发握手包。(等时传输无握手包)
(2) 接受包(IN) 接受交换包括了全部4种传输类型 接受交换: 根Hub广播接受包目标设备返回数据包根Hub发握手包。(等时传输无握手包) (3)发送包(OUT) 发送交换包括了除中断传输外的其他3种传输类型 发送交换: 根Hub广播发送包根Hub发数据包目标设备发握手包(批传输才有握手包) SYCN PID ADDR ENDP CRC 8/32位 接受和发送包的格式 8位 7位 4位 5位
64
2.数据包 (4)设置包(SETUP) 控制传输开始由主机发设置包,后面可能由一个或多个IN或OUT交换,或只包含一个从端点传到主机的状态
DATA CRC SYNC PID 8位 USB 1.1数据包格式 0~8184位(1023B) 16位 SYNC PID DATA CRC 32位 USB 2.0数据包格式 8位 0~8192位(1024B) 16位
65
主机希望与低速设备进行低速传输的时候发此包 PID域应该高速(全速)发送。 PID之后,在低速数据包传输之前要延迟4个高速字节时间
3.握手包 SYCN PID 8/32位 握手包的格式 8位 数据接受方发向数据发送方 4 .特殊包 只有SYNC和PID组成 主机希望与低速设备进行低速传输的时候发此包 PID域应该高速(全速)发送。 PID之后,在低速数据包传输之前要延迟4个高速字节时间 低速设备只支持控制传输与中断传输 与低速设备交换数据只有8字节
66
USB设备状态和总线枚举 主 机 7.1 按地址读设备配置信息 5.1 利用默认端点0读设备描述器 2 检测Hub,确认有接入 1.2 通知有设备接入 8.1 按地址设设备配置信息 6.1 给设备分发地址 3 使能该端口,发RESET命令 1.1 设备接入[连接状态] HUB 设 备 4 发RESET信号,供电[上电状态] 5.2 读设备描述器[地址默认状态] 6.2 分发地址[地址状态] 7.2 读配置信息 8.2 写配置信息[配置状态]
67
USB2.0的补充——OTG技术 USB On-The-Go(OTG)是对USB 2.0规范的有益的扩充。这类设备既可以作为USB设备与PC机相连,又可以作为USB主机连接其它USB设备。因此,这类设备可以抛弃PC,直接进行设备与设备之间的点对点(pear to pear)通信。 USB On-The-Go 在USB 规范基础上增加了以下几点 双重功能。设备既可用作主机也可用作外设 主机交流协议HNP 用于转换USB 主机和外设功能 对话请求协议 除小和大功率之外增加了微功率选择 超小连接器
68
USB On-The-Go 设备定义了一个新的称之为mini-AB 的袖珍插孔,它能接入mini-A 和mini-B 插头。连接器的不同定义设备的初始功能。
VBUS D+ D- GND ID ‘1’: Slave B设备 ‘0’: Master A设备 mini-B 插头 mini-A 插头 VCC USB On-The-Go 设备定义了一个新的称之为mini-AB 的袖珍插孔,它能接入mini-A 和mini-B 插头。mini-AB 插孔有一个ID 引脚上拉至电源端。mini-A 插头有一个与地连接好的ID, mini-B 插头有一个开路ID引脚。当两个On-The-Go 设备连接到一起时mini-A 插头边的ID 引脚会注入一个‘0’ 状态,mini-B 插头边的ID 引脚为‘1’ 。ID=0 的On-The-Go 设备默认为主机(A-Device),ID=1 的On-The-Go 设备默认为从机(B-Device)
69
两个OTG RTR(主/从双角色)设备相连,可以用主机交流协议(HNP)随时切换主机角色。步骤如下:
A设备发出SET_FEATURE命令后,B设备可请求总线控制权。 A设备挂起总线,通知B设备可占用总线。 B设备发送信号,断开A设备连接。 A设备启动D+线本方的上拉电阻,将D+置高。此时A设备成为外设,B设备成为主机。 B设备完成对总线控制后,启动D+线本方的上拉电阻,放弃对总线的控制。 在以上电平变换的同时,通过软件实现真正的对总线的控制权变化。
70
6.3.7 开发具有USB功能的设备的先期准备 1.分清开发的设备类型 嵌入式USB主机 USB Hub
基于HID(人机接口设备)的USB设备 USB OTG设备 2.选择合适的控制芯片 内嵌USB模块和嵌入式CPU核的SOC芯片 内嵌单片机内核的USB控制芯片 可与其它嵌入式CPU相连的单独USB控制芯片
71
3.一般的开发步骤 根据选择的器件和要实现的功能,设计相关电路。 编制软件(根据不同应用,设计其中部分或全部软件)。 - 设备驱动程序(对USB设备,或OTG设备) - USB主机设备的控制程序(对主机或OTG设备,如完成枚举功能等) - 主机和设备的角色切换驱动(对OTG设备) - 编写相关的PC端软件 4.目前常见的控制芯片 SL811HS 是Cypress公司的产品,ISP系列是PHILIPS公司产品,OTG243是TransDimension公司的产品。 GL652USB是Genesys Logic公司的产品。 OTG芯片:ISP1362,OTG243 主机/设备芯片: SL811HS,ISP1161 设备芯片:PDIUSBD12,ISP1581 HUB芯片:GL652USB
72
6.4 PCI-Express总线 6.4.1 PCI-Express总线的主要性能特点
73
5、具有更高的数据传输速率(2.5Gbit/s的单向单线连接传输速率 ) 6、拥有存储器地址空间、IO地址空间和配置地址空间
1、串行的点对点互连 2、使用差动信号 3、使用交换器来互连多台设备 4、采用基于数据包的协议 5、具有更高的数据传输速率(2.5Gbit/s的单向单线连接传输速率 ) 6、拥有存储器地址空间、IO地址空间和配置地址空间 7、采用层次结构 8、热插拔支持 9、与PCI兼容的软件模型 PCI Express的基本结构包括根组件(Root Complex)、交换器(Switch)和各种终端设备(Endpoint)。根组件可以集成在北桥芯片中,用于处理器和内存子系统与I/O设备之间的连接,而交换器的功能通常是以软件形式提供的,它包括两个或更多的逻辑PCI到PCI的连接桥(PCI-PCI Bridge),以保持与现有PCI兼容。当然,像PCI Express-PCI的桥设备也可能存在。在PCI Express架构中的新设备是交换器(Switch),它取代了现有架构中的I/O桥接器,用来为I/O总线提供输出端。交换器支持在不同终端设备间进行对等通信。下图1就是PCI Express 1.0的拓扑结构图。
74
6.4.2 PCI-Express总线结构
76
(1)根联合体 集成了多种控制器,替CPU产生事务请求,它还可以代表CPU发起配置事务请求、生成存储器和I/O请求和锁定事务请求。 根联合体发送数据包离开其端口,或从其端口接收数据并转发至存储器。 根联合体初始化用来形成请求者或完成者的设备ID,通常由总线号、设备号和功能号组成。根联合体的总线、设备及功能号都被初始化全为0。
77
(2)交换器 交换器利用基于存储器、I/O或配置地址的路由方法转发数据包。 交换器根据下面3种路由机制之一转发这些数据包:地址路由、ID路由或隐式路由。 交换器能实现两种仲裁机制:端口仲裁和VC仲裁,并且依据仲裁机制确定将入端口数据包转发至出端口的优先级。交换器支持锁定请求。
78
(3)端点 端点可以作为请求者发起事务,或者作为完成者对事务做出响应。 端点有PCI Express端点和传统端点两种。传统端点支持I/O事务,而且可以作为完成者支持锁定事务语义,还可以利用消息请求产生传统中断信号,但另外还必须支持产生利用存储器写事务的MSI。 PCI Express端点必须在可预取存储地址空间内支持64位存储器寻址能力。 两种类型的端点都实现了0类 PCI配置头,并且作为完成者对配置事务做出响应。
79
6.4.3 PCI Express事务简介 事务:为请求者和完成者之间完成一次信息传送需要完成的一系列一个或多个数据包传送的过程。
PCI Express事务可以分成4大类:存储器事务、I/O事务、配置事务和消息事务。
80
6.4.4 PCI-Express的层次结构 PCI Express 设备A PCI Express 设备B 设备核心 设备核心
核心逻辑接口 PCI Express 核心逻辑接口 发送 接收 发送 接收 事务层 事务层 数据链路层 数据链路层 物理层 物理层
81
(1)设备核心/软件层 设备核心是由根联合体核心逻辑或诸如以太网控制器、SCSI控制器、USB控制器等端点核心逻辑组成。 设备核心逻辑与本地软件一起提供PCI Express设备生成TLP所需的必要信息。 (2)事务层 事务层主要负责生成出站TLP流量和接收入站TLP流量。 (3)数据链路层 数据链路层的主要功能是保证在各链路上发送和接收数据包时数据的完整性。 (4)物理层 TLP和DLLP类型的数据包从数据链路层发送至物理层,并通过物理链路传送。物理层也从链路上接收数据包并将其发送至数据链路层。
Similar presentations