第四章 微机总线与接口标准
Post on 31-Dec-2015
120 Views
Preview:
DESCRIPTION
Transcript
1
第四章 微机总线与接口标准
2
第一节 总线与接口概述 一、总线和接口及其标准的概念 总线:是在模块之间或设备之间的一组进行互连和传输信息的信号线,信息包括指令、数据和地址。 总线标准:指芯片之间、扩展卡之间以及系统之间,通过总线进行连接和传输信息时,应该遵守的一些协议与规范。 接口标准:指与外设接口的规范,涉及接口信号线定义、信号传输速率、传输方向和拓扑结构,以及电气特性和机械特性等多个方面。
3
总线与接口的区别:
总线 接口通用性 公用 专用物理特性 扩展槽形式 插座 ( 头 ) 形式传输类型 并行传输 并行或串行传输信号线数量 多 少
信号线类型 分离的控制、数据、地址线
共用 ( 有时分离 ) 的数据、控制线
4
二、总线的分类1 、按总线功能或信号类型划分 数据总线、地址总线、控制总线
2 、按总线的层次结构分 CPU 总线、局部总线、系统总线、通信总线
思考:局部总线与系统总线的根本区别是什么?
5
三、总线的主要性能参数1 、总线频率2 、总线宽度
3 、总线数据传输率 总线数据传输率 =( 总线宽度 /8 位 )× 总线频率
例: PCI 总线的总线频率为 33.3MHz ,总线宽度为64 位的情况下,总线数据传输率为 266MB/s 。
6
四、总线标准的特性1 、物理特性 包括总线根数,插头及插座的尺寸、排列等。2 、功能特性 包括每根信号线的功能。3 、电气特性 包括驱动功率、有效电平等。4 、时间特性 包括每根信号线的有效时间及信号线间的时序等。注意:总线的功能特性不能代表总线标准。
7
五、总线操作与控制1 、总线操作过程
1 )总线请求和仲裁阶段 2 )寻址阶段3 )数据传送阶段 4 )结束阶段
2 、总线传送控制1 )同步方式 2 )异步方式 3 )半同步方式 4 )分离方式思考: 1 )同步方式与半同步方式的区别? 2 )异步方式的 4 个步骤?
8
第二节 系统总线 一、 ISA 总线1 、 ISA 总线的信号 支持 24 位地址, 16 位数据线,总线频率≤ 8MHz ,最大数据传输率≤ 16MB/s(=8×16
位 /8) 。2 、 ISA 总线扩展卡的设计 1 ) ISA 总线扩展卡的物理尺寸 2 ) ISA 总线扩展卡的地址分配和中断号分配
9
二、其他总线1 、 EISA 总线 EISA 总线支持 32 位地址、 32 位数据总线,总线频率 8.33MHz ,最大数据传输率 33.3MB/s(8.33
×32 位 /8) 。 结构与 ISA 兼容, EISA 总线插槽与 ISA 插槽等长等宽,内部被设计成为双层引脚。2 、 PC104 总线 采用超小尺寸插卡,自叠总线结构,总线驱动电流小,功耗低。3 、 STD 总线
10
第三节 PCI 总线 一、 PCI 总线特点
1) 独立于处理器2) 传输效率高3) 多总线共存4) 支持突发传输 5) 支持总线主控方式
突发传输原理:启动机制、停止机制是关键
地址期 数据期 地址期 数据期 ( a )常规传输
( b )突发传输
地址期 数据期 数据期 数据期
6) 采用同步操作 7) 支持两种电压下的扩展卡 8) 具有即插即用功能 9) 合理的管脚安排 10) 预留扩展空间
11
PCI 总线标准知识点: 功能→命令( I/O 、 MEM 、配置等) 空间→ I/O 、 MEM 、配置空间,字节对齐单 CPU 启动控制 寻址 操作 响应 →协议(信号时序) 数据 终止多 CPU 控制→总线请求与仲裁
回 17 页 回 18 页 回 22 页 回 29 页
12
二、 PCI 总线信号定义 主设备、从设备使用的信号有一部分不同。1 、系统接口信号 CLK IN : PCI 系统总线时钟
PCI 大部分信号在 CLK 的上升沿有效。2 、地址与数据接口信号 AD[31:00] T/S :地址、数据多路复用信号 地址期为 A[31:00] ,数据期为 D[31:00] 。 C/BE#[3:0] T/S :总线命令、字节使能复用信号 地址期内表示总线命令,数据期内表示字节使能信号。 PAR T/S :针对 AD[31:00] 和 C/BE[3:0]# 进
行奇偶校验的校验位 回下页
13
3 、接口控制信号 FRAME# S/T/S :帧周期信号 FRAME# 信号无效→有效,表示一帧传输开始; FRAME# 有效的第 1 个时钟为地址期,其后为若干数据期; FRAME# 信号有效→无效,表示传输进入最后一个数据期。 IRDY# S/T/S :主设备准备好信号 TRDY# S/T/S :从设备准备好信号 STOP# S/T/S :从设备发出的要求主设备终止当前的数据传送信号
LOCK# S/T/S :锁定信号 IDSEL IN :初始化设备选择 ( 配置片选 ) 信号 DEVSEL# S/T/S :设备选择信号
回 16 页转上页
14
4 、仲裁接口信号 REQ# T/S :总线占用请求信号 GNT# T/S :总线占用允许信号5 、错误报告接口信号 PERR# S/T/S :数据奇偶校验错误报告信号 SERR# O/D :系统错误报告信号 6 、中断接口信号 PCI 有 4条中断线,分别是 INTA# 、 INTB# 、INTC# 、 INTD#
回 16 页
15
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
8 、主、从设备连接 PCI 信号线示意图
转 14 页 转 13 页 回 30 页 回 36 页
主设备1
PC
I
总线控制器
AD[31:0]
C/BE#[3:0]
从设备
FRAME#IRDY#LOCK#
AD[31:0]
IDSEL
DEVSEL# TRDY#STOP#
未连接信号线: REQ# 、 GNT# 、 IDSEL
REQ#
GNT#
频率发生器
CLK
AD15AD14AD13AD12AD11 IDSEL
AD24…
AD16
PC
I
桥
共用信号线
INTA~H#PCI 中断控制器
控制 /状态地址 / 数据
主设备2 REQ#
GNT#
控制 /状态地址 / 数据
设备ID
译码器 …
总线号
译码器 P
CI
桥
…
从设备
17
三、 PCI 总线命令 C/
BE#[3:0] 命令类型 C/BE#[3:0] 命令类型
0000 中断响应 1000 保留
0001 特殊周期 1001 保留
0010I/O读
( 从 I/O端口地址中读数据 )1010 配置读
0011I/O写
( 向 I/O端口地址中写数据 )1011 配置写
0100 保留 1100 存储器多行读0101 保留 1101 双地址周期
0110存储器读
( 从内存空间映像中读数 )1110 存储器行读
0111存储器写
( 向内存空间映像中写 )1111 存储器写并无效转 11 页 回 21 页
18
四、 PCI 总线协议之一 -- PCI 总线的寻址1 、字节对齐 AD[31:00] 一次只能进行 32 位数据交换 ( 不能进行字节交换 );有 64 位通道的主设备可进行 64 位数据交换。 字节交换办法: 主设备在每个新数据期开始的时钟前沿改变字节使能信号 (见 I/O 寻址 ) ,且在该数据期中保持不变。 对可缓冲的存储器的数据可不考虑字节使能信号,而传送所有的字节 ( 总线宽度 ) 。
转 11 页 回下页
19
2 、 I/O 地址空间 32 位 AD 线表示的地址空间 (A31~A16 表示总线号 ); 最低寻址 ( 或访问 )精度为字节。 从设备的处理: 地址期对 AD[15:0]译码 ,决定是否产生DEVSEL#; 数据期检查 AD[1:0] 和 C/BE#[3:0]校验传输的最低有效字节和数据宽度:AD[1:0
]C/
BE#[3:0]
00 ××× 0
01 ×× 0 1
10 × 0 1 1
11 0 1 1 1
如:当 AD[1:0]=01 时; 若 C/BE#[3:0]=1101 ,为字节传输; 若 C/BE#[3:0]=1001 ,为字传输; 若 C/BE#[3:0]=1011 等,操作错误,中止传输。
转上页
20
3 、内存地址空间 最低寻址 ( 或访问 )精度为双字。 A1A0必须为 00( 或不译码 ) ,可作它用!
31
双字边界对齐的起始地址2 1 0
00 地址递增01 Cache 行切换1X 保留
…
00000000H
00000004H
00000008H
4 字节
MEM 地址空间
4 、配置地址空间 最低寻址 ( 或访问 )精度为双字。
7
双字边界对齐的起始地址2 1 0
00 选择该设备01 选择该桥路后 设备1X 保留
回 32 页 回下页
21
思考:软件层次如何访问三种地址空间?
MEM I/O
232-1
0
216-1
0 I/O1 配置255
0I/On 配置
255
0…
总线命令: 0110/0111 0010/0011 1010/1011
转 17 页
接口识别: 命令 + 地址 命令 + 地址 配置空间片选① + 地址
①配置空间片选:同一配置命令,只有一个接口响应总线命令
软件指令: MOV IN/OUT IN/OUT②
②IN/OUT :配置命令使用频率较低,借用 I/O 指令通过间接访问实现
采用特殊方法区分地址对应的不同空间,如在 I/O 空间中开辟特殊区域
转上页
22
1 、 PCI 总线的传输控制规则 (1) FRAME# 和 IRDY# 定义了总线的忙 /闲状态。 11 空闲、 00 数据、 10 最后一个数据、 01 启动或等待状态
( 0 表示低电平信号有效)(2) 一旦 FRAME# 信号被置为无效,在该传输期
(帧 ) 不能重新设置。(3) 除非设置 IRDY# 信号有效,一般情况下不能设置 FRAME# 信号无效 ( 即 FRAME# 在 IRDY#有效时设置 ) 。(4) 数据期内设置 IRDY# 或 TRDY# 信号无效,表示主或从设备插入了等待周期。
五、 PCI 总线协议之二 -- 传输控制协议
转 11 页
23
2 、 PCI 总线的驱动与过渡
在每个地址 ( 数据 ) 期中,所有 AD 线 ( 包括字节使能信号表明无效字节所对应的 AD 线 )都必须被驱动到稳定的状态,才可进行交换。
一个设备驱动总线到另一个设备驱动总线之间需设置一个过渡期,又称为交换周期,以防止总线访问冲突。 (例如读操作)
24
3 、设备选择 CLK
FRAME#
IRDY#
TRDY#
DEVSEL#
1 2 3 4 5 6 7 8
FAST MED SLOW……
所有从设备共用 PCI 总线的 DEVSEL# 信号。 从设备设置 DEVSEL#后,传输完成前不能撤消它。
25
4 、总线上的读操作传输过程 CLK
FRAME#
1 2 3 4 5 6 7 8 9
AD
C/BE#
IRDY#
TRDY#
DEVSEL#
ADDRESS DATA1 DATA2 DATA3
BUSCMD BE#s
地址期 数据期 数据期 数据期
一帧中最多只有一个从设备设置 DEVSEL# 有效; TRDY#无效,表示从设备插入了等待周期。
26
5 、总线上的写操作传输过程 CLK
FRAME#
1 2 3 4 5 6 7 8 9
AD
C/BE#
IRDY#
TRDY#
DEVSEL#
ADDRESS DATA2DATA1 DATA3
BUSCMD
地址期 数据期 数据期 数据期
BEs1 BEs2 BEs3
27
1 、由主设备提出的终止
2 、由从设备提出的终止
原因:传输结束,或超时 (DEVSEL#无效 )
处理: 传输结束—建立 IRDY# ,撤消 FRAME# ,直到TRDY# 有效后传输完最后一个数据后,撤消IRDY#; 超时—建立 IRDY# ,撤消 FRAME# ,撤消IRDY# 。 原因:死锁,或 8 个时钟内来不及响应 处理:发 STOP#
六、 PCI 总线协议之三 -- 传输中止协议
28
⑴当 STOP# 有效时, FRAME# 应在其后 2~3
个 TC 内撤消 (撤消时应使 IRDY# 有效 );从设备应无条件地保持 STOP# 有效直到 FRAME#撤消为止 (STOP#紧跟着撤消 ) 。
PCI 总线上传输终止遵循的规则:
⑵在任何时钟的上升沿,若 STOP# 和 TRDY#
同时有效,就表示是传输的最后周期, IRDY# 要在下一个时钟的上升沿之前撤消,表示传输的结束。 ⑶对于被目标设备终止的传输,主设备若要继续完成它,就必须用下一个未传输的数据的地址来重试访问。
29
七、 PCI 总线协议之四 --PCI 总线仲裁 CLK
FRAME#
1 2 3 4 5 6 7
AD
GNT#-B
IRDY#
TRDY#
GNT#-A
地址 数据
A 存取 B 存取
REQ#-B
REQ#-A
地址数据
c
a b
d e
f g
主设备必须等到总线空闲时,方可置 FRAME# 。
转 11 页
30
九、 PCI 总线配置 1 、 PNP 过程 ⑴BIOS检查所有 PNP 卡的 ID 及所需资源; ⑵系统配置程序检查非 PNP 卡 ID 及所需资源; ⑶管理程序汇总信息构成硬件树; ⑷统一配置资源到卡。 基础知识: ①一个扩展卡 (PCI 物理设备,简称设备 )可包含多个功能
设备 (简称功能, PCI 总线标准规定最多有 8 个功能 );
②每个设备 (所有功能 )只有一个 IDSEL 引脚信号。
转 16 页回下页
31
2 、 PCI 设备及其配置空间 存在问题: ①所有设备均没有 I/O 地址 (尚等待管理程序分配 ) ,如何
选择某个设备以读取资源需求和分配资源? ②在没有 I/O 地址时,如何选择某个功能? ③在没有 I/O 地址时,如何读取不同厂家功能设备的资源需
求? 处理方法: ①通过 IDSEL选择设备 ( 同一时刻只有一个设备被选择 ); ②选择设备的同时,用功能号选择具体功能; ③每个功能有一个配置空间,前面部分的格式统一。
转 16 页转上页
32
配置空间: 大小— 256B ,前 64B(称头区域 )格式统一; 寻址精度—双字 (32 位 ) , A1A0可作他用。
功能 1255
0
… 功能 n255
0
功能 1255
0
… 功能 m255
0
…
设备 1 设备 k
关键问题: ①如何实现配置空间选择 ( 总线、设备和功能 ); ②如何利用 I/O 空间命令进行配置空间访问; ③如何实现配置空间信息的读取与分配。
转 20 页
33
3 、 PCI 设备的配置空间选择方法—总线级
PCI桥
PCI桥
一级总线00000000
二级总线 000000 10
000000 01
HOST-PCI桥
CPU
PCI桥
PCI桥三级总线 0000
01010000 1001
I/O 命令 (IN/OUT 指令 )配置命令
目标桥
目标桥的中间桥
目标总线
回下页 回 35 页 回 36 页 回 39 页
PCI桥应具有功能: ( 总线号译码 功能 ) 根据命令中地址 , 识别目标总线是否包含在自己桥下; 根据命令中地址,识别目标是否在本级桥总线上。
34
HOST-PCI桥发出的配置命令地址期总线信号: C/BE#[3:0]=1010/1011;—配置读 /写操作码 AD[31:0]= AD[31:24]—保留; AD[23:16]—选择的目标总线号; AD[10:8]—所选目标设备的功能号; AD[7:2]— 配置空间 REG 地址 (精度为双字 ); AD[1:0]—00 表示目标设备在一级总线上, 01 表示目标设备在下级总线上。
转上页
总线号编码规则: 采用分段式编码表示各级总线号,段 i值为 0 时表示该总线为 i级总线 (硬件习惯于从右开始编号 )
总线号 n级总线号 … 二级总线号 一级总线号
35
( 1 ) PCI桥对是否被选中的检测 选中类型:自己为目标桥,或目标桥的中间桥。 选中检测:
PCI桥的上级总线信号AD[23:16]=cdA 、 AD[1:0
]
PCI桥包含的总线号(efB)
目标桥 B=A 、 cd=ef ,且AD[1:0]=01
目标桥的中间桥 B=A 、 cd≠ef ,且AD[1:0]=01
未选中 B≠A ,或 AD[1:0]=00
被选中时的处理:
目标桥 对上级总线信号,将 AD[1:0]改为 00后,传至所连总线上
目标桥的中间桥 直接将上级总线信号传至所连总线上未选中 无任何动作 (忽略本次操作 )
转 33 页回 38 页
36
( 2 ) PCI 设备对是否被选中 ( 作为目标设备 ) 的检测 选中条件 ( 地址期 ) : ① C[3:0] 为配置操作; ②它的 IDSEL 引脚信号有效; ③AD[1:0]=00 。 检测原理: ①所连总线为目标总线,即 AD[1:0]=00; ②在目标总线上被选中 (目标总线上所有设备的 IDSEL 引脚信号应只有一个有效 ) 。
IDSEL 引脚连接方法: ①AD[15:11] 分别连接到同一总线上各设备的 IDSEL引脚 ( 即总线上设备数≤ 5); ②PCI桥对 AD[15:11]译码 ,产生分离信号到同一总线上各设备 IDSEL 引脚 ( 即总线上设备数≤ 32 , PC 机采用该方案 ) 。 转 33 页 转 16 页
37
( 3 ) PCI 设备对某功能是否被选中的检测 选中条件 ( 地址期 ) : C[3:0] 为配置操作、 IDSEL 引脚信号有效、 AD[1:0]=00; 它具备的功能 ( 功能设备 ) 数> AD[10:8] 。
PCI桥用AD[23:16] 、 AD[1:0] 判断是否为目标桥 / 中间桥
PCI 设备用 C/BE#[3:0] 、 AD[15:11] 、 AD[1:0]判断是否为目标设备
PCI桥
PCI桥
HOST-PCI桥
CPU
PCI桥
PCI桥
I/O 命令 (IN/OUT 指令 )配置命令 (C/BE#[3:0] 、 AD[31:0])
PCI 设备用AD[10:8]选择目标功能及有无
PCI桥用 AD[1:0]指明对应总线是否为目标总线 ( 设备判断需用 )
38
( 4 )配置空间访问的类型 0 类配置空间访问( AD[1:0]=00 ) 对当前 PCI 总线上的目标设备的功能设备的配置 REG 进行访问。
1 类配置空间访问( AD[1:0]=01 ) 通过 PCI桥对下一级 PCI 总线上的目标设备的功能设备的配置 REG 进行访问。 PCI桥处理:到达目标总线前,转发 1 类访问操作 到达目标总线时, 1 类访问→ 0 类访问操作 HOST-PCI桥发出的配置访问类型: 对一级总线上的设备用 0 类访问类型; 对二级以后 (含二级 ) 总线上的设备用 1 类访问类型。
转 35 页
39
例: PCI 总线操作地址期总线信号如下: C/BE#=1011 ,AD=00011005H ,该操作访问几号桥下几号设备何REG ? 解: C/BE#=1011 ,表示总线操作为配置写操作, AD=00000000 00000001 00010 000 000001
01 ,表示访问 1# 总线上、 2 号设备、 0 号功能配置空间的从 000001 00B开始的 32 位寄存器。
( 5 ) PNP 时取得所有设备配置信息的过程 对所有总线 ( 最多 28 个 ) 处理 {
对当前总线的所有设备 ( 最多 5 个 ) 处理 {
对当前设备的所有功能 ( 最多 8 个 ) 处理 {
对当前功能头区域所有 REG(16 个 ) 处理 {
配置访问 ( 一级总线为 0 类访问 )}}}}
注:配置访问 8 个 Clock 内 DEVSEL#无效时,进行下一个访问 转 33 页
40
4 、配置空间访问的实现—总线级和指令级( 1 ) HOST-PCI桥访问配置空间的实现—直接访问 C/BE#[3:0]= 配置读 / 配置写 (1010/1011); AD[31:24]=保留; AD[23:16]=选择的目标总线 (目标设备所在的总线 ); AD[15:11]=选择的目标设备 IDSEL(只有一个有效 ); AD[10:8]=选择的目标设备的功能; AD[7:2]=选择的目标功能的配置空间中 REG 的索引; AD[1:0]=目标设备在一级总线上时为 00 , 目标设备在其他总线上时为 01 。
41
( 2 ) CPU访问配置空间的实现—间接访问 访问配置空间的指令: (OUT+IN/OUT 指令对 )
先用 OUT 指令写总线级配置访问地址期的地址; 再用 IN/OUT 指令传送总线级配置访问的数据。 I/O 指令的端口地址: (0CF8H~0CFFH)
配置地址端口 (OUT 指令的地址 ) 为 0CF8H; 配置数据端口 (IN/OUT 指令的地址 ) 为0CFCH 。 I/O 指令到 PCI 总线配置命令的转换: HOST-PCI桥中的配置机构保存配置操作所需的地址和数据,第二个 I/O 指令时进行配置转换。
回下页
42
( 3 )配置机构工作原理 ①保存配置信息;②实现配置转换。
HOST-PCI桥中配置机构
过滤器
0000H
FFFFH
I/O 地址空间…
00H
FFH
目标功能设备配置空间
3FH
头区域
自由区域
目标物理设备 IDSEL
……
OUT DX ,EAXOUT DX ,EAX
DX=0CF8HDX=0CFCH
DX 在 0CF8H-0CFFH 间Y
N 产生总线的 I/O 操作
操作为 OUT , EAX 最高位为 1
N
Y
配置数据REG←EAX
D31-D0
配置地址REG←EAX
配置地址 REG:
配置数据 REG:
产生总线的配置操作 命令结束
A31-A16 A15-A11 A10-A8 A7-A0
转上页
43
5 、配置空间头区域信息的读取与分配(1) 设备识别信息 厂商、设备、版本、分类等(2) 设备控制信息 I/O访问、 MEM访问、特殊周期、错误响应、等待周期等(3) 设备状态信息 运行环境、错误标志、 DEVSEL#时序等
回 48 页
44
(4)基址寄存器 31 01
基地址2
规范规定:每个 I/O基地址下的端口数不得大于 256 。
I/O 空间映射保留
1
思考:如何利用一个 REG解决请求和分配问题?31(63) 01
基地址2
存储空间映射预取使能
0
00 32 位地址空间任意映射01 32 位地址空间 1M 字节以内映射 (已不用 )10 64 位地址空间任意映射 11 保留
3
回下页 回下二页
45
例 1 :基址寄存器的值=FFF00000h
D0=0— 表示是一个 MEM 地址空间映射 D[2:1]=00B— 表示使能 32 位 MEM映射 D3=0— 表示该功能设备不是预取MEM
D[31:4]— 第一个为 1 的位是 D20 ,表示映射的 MEM 空间为 1MB=220;即将分配的 MEM 空间的基址应该为 1MB 的整数倍 系统管理程序经过权衡后再向该基址寄存器写入实
际映射的空间基址 (满足边界对齐原则 ) 。 基址寄存器是为简化设备配置过程、达到配置空间的映射与设备无关的目标而设计的。
转上页
46
例 2 :基址寄存器的值=FFFFFF01H
D0=1— 表示是一个 I/O 地址空间映射 D[31:2]— 第一个为 1 的是 D8 ,表示映射的
I/O 空间为 256B;即将分配的 I/O
空间的基地址应该为 256 的整数倍
最大 / 最小存储映射地址空间— 最小存储映射地址空间 =16 字节 最大存储映射地址空间 =2GB
最大 / 最小 I/O映射地址空间— 最小 I/O映射地址空间 =4 字节 最大存储映射地址空间 =256 字节
转上二页
47
(5) 扩展 ROM基地址寄存器
扩展 ROM访问允许
31 01
基地址11
保留10
例 3 :扩展 ROM基址寄存器的值=FFFF0001H
D0=1— 表示扩展 ROM访问允许 D[31:11]— 第一个为 1 的是 D16 ,表示映射的
ROM 空间为 64K;即将分配的ROM 空间的基地址应该为 64K 的整数倍(6) 头区域中其它寄存器
Cache 、中断引脚、中断请求 REG 等。
48
例 4 :读 0 号 PCI 总线的 1 号扩展槽设备的 2
号功能的基址 REG0 。MOV DX , 0CF8H MOV EAX , 80000A10HOUT DX , EAXMOV DX , 0CFCHMOV EAX , FFFFFFFFHOUT DX , EAXMOV DX , 0CF8H MOV EAX , 80000A10HOUT DX , EAXMOV DX , 0CFCHIN EAX , DX
例 5 :给 2 号 PCI 总线的 3 号扩展槽设备的 0
号功能的基址 REG0 分配从 1A00H开始的 8 个地址 I/O 空间。MOV
DX , 0CF8HOUT DX , 80022011HMOV DX , 0CFCHOUT DX , 00001A00H
转 43 页
49
十、 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入口地址; 通过 INT 1AH实现: AH=B1H , AL 为子功能号。
50
第四节 通用串行总线 USB
一、 USB 系统的组成1 、 USB 系统连接模式( 1 )拓扑结构:树型结构,最多可连接 127 个设备。
主机USB 主控制器 / 根Hub
全速电话
高速
显示器 (含集线器 )
高速集线器
扬声器扬声器 键盘 (含集线器 )
低速麦克风 麦克风
低速高 速→ 480Mb/s全 速→ 12Mb/s低 速→ 1.5Mb/s
MEMUSB总线
USB端口
PCI 总线
回下页 回 52 页 回 53 页
51
( 2 )基本概念 USB 总线:由 VCC 、 GND 、 D+ 、 D- 四根线组成, D+ 和 D- 通过差分方式作为一根数据线 ( 半双工 ) 使用; USB事务: USB 总线上最基本的一次数据交换操作; USB逻辑地址:—逻辑地址不通过连线实现 每个 USB集线器和 USB 设备 ( 不连接到 PCI 总线 ) ,均不占用 I/O 地址空间 (无 I/O 地址 ) ,只具有一个惟一的 USB逻辑地址 (USB 系统自动配置所分配 ); USB端口:连接 USB 总线的连接器; USB端点:集线器或设备的内部寄存器 (仿照 I/O
端口起名,又要与 USB端口区分 ) ,编号在 0~15
之间。转上页
52
2 、 USB 系统的硬件 ( 1 ) USB 主控制器 / 根集线器 (Host Ctrl/Root
Hub)
由主控制器和根集线器组成。 主控制器: —连接到 PCI 总线 可作为主设备通过 PCI 总线直接与 MEM交换数据; 功能—实现并 - 串转换、创建USB事务、管理USB事务传输过程 ( 在根集线器与主机 MEM 间传递结果 ) 。 占用一定数量 I/O 地址空间,受 CPU 控制。
根集线器:—连接到主控制器 功能—控制 USB端口电源、启用 /禁止 USB端口、识别连接的设备、设置和报告端口的状态等。 只占用一个 USB逻辑地址 (0) ,受主控制器控制。 转 50 页
53
( 2 ) USB集线器 (USB Hub)
由控制器和中继器组成,最多支持 4 个 USB端口; 有高速 ( 支持 USB2.0) 和全速 (USB1.x)2 种类型; 可集成在 USB 设备内部,不作为独立硬件出现。 每个 USB HUB占用一个 USB逻辑地址; 每个 USB HUB 具有一定数量 (≤16) 的 USB端点。
( 3 ) USB 设备 可分为 HUB 设备 (USB集线器 ) 和功能设备两种。 功能设备类型:有高速、全速或低速三种类型。 每个 USB 设备占用一个 USB逻辑地址; 每个 USB 设备具有一定数量 (≤16) 的 USB端点。 转 50 页
54
3 、 USB 系统的软件( 1 ) USB 设备驱动程序 将某用户操作请求转换成几个 IRP(I/O 请求包 ) ,以 IRP 形式送给USB 驱动程序。( 2 ) USB 驱动程序 功能:将 I/O 系统的操作转换成 USB 系统的操作; 实现:根据 USB 设备特性、 IRP 类型等特征,将IRP 组织 (转换 ) 成几个 USB事务 ( 用 USB事务的传输描述符表示 ) ,送给USB 主控制器驱动程序。 传输描述符— 包括 USB 设备地址、 USB事务类型 (I/O/S 等 ) 、传输数据大小、处理速度 ( 传输速度 ) 、内存缓冲区位置等回下页
55
( 3 ) USB 主控制器驱动程序 将这些 USB事务调度到一系列事务列表中; USB 主控制器定时读取一个列表信息并执行。 a.调度思想: 各USB 设备在一定时长内得到服务的机会均等。 b.调度方法: 一定时长—USB 1.x 为 1ms , USB 2.0 为125μs; 定义:该时长称为帧 / 微帧 机会均等—一定时长内的事务可为不同设备的事务,即各事务占时有限 (1 个 IRP→ 多个 USB事务的原因 ) 。 c.调度依据: 设备速度和事务类型、已等待事务类型和数量等。
转上页
56
二、 USB 系统的通信1 、 USB 系统的通信模型 I/O 系统通信→ USB 系统通信,并行通信→串行通信。
USB 设备驱动程序
USB 驱动程序USB 主控制器驱动程
序
主机系统USB 功能设
备
USB 设备
USB 功能设备
USB逻辑设备
USB逻辑设备
USB 总线USB 总线
非USB格式数据
USB格式数据
USB格式数据
缓冲区
事务描述符
调度与传递
主控制器
根集线器帧内处理
USB格式
…USB线
缺省管道
管道
总线层
设备层
功能层
通信核心: USB 主控制器 --DMA 方式与 MEM交换数据; 串行处理帧内各事务。回下页 回 58 页
57
2 、 USB 系统的通信原理 ①USB 驱动程序将 IRP 分解为几个 USB事务 (描述符 ); 每个事务所用时长不能太长 (≤800ns)
USB 驱动程序
USB 设备驱动程序
IRP1 IRP2
IRP1事务 1-0 事务 1-1
IRP2事务 2-0 事务 2-1 事务 2-2
②USB 主控制器驱动程序将这些事务调度到各帧中; 调度依据—根据已请求事务特征 ( 类型和速度等 ) 、当前事务特征等进行调度; 帧内事务数量—根据各事务耗时的多少确定(数量不固定),保证每帧执行时长≤ 1ms 。
主控制器驱动程序帧 1(事务列表
1)事务 1-0 事务 2-0帧 2(事务列表
2)事务 1-1 事务 2-1…… ……
转上页
58
③USB 主控制器在规定时间内串行执行完帧中事务; 每帧内从根 HUB各端口→ HUB→ 设备的空闲时间越来越长
USB 设备1
USB 设备2
USB 设备3
1-0 空闲 3-0 空闲 1-1 空闲 …根集线器 端口 0端口 1
主控制器 时间帧 1 帧 2
空闲 2-0 空闲 … 2-1 空闲
1-0 空闲 1-1 空闲空闲 2-0 空闲 2-1 空闲空闲 3-0 空闲
1-0 2-0 3-0 … 1-1 2-1 …
④每个事务的执行通过 1~3 个包交换完成。 包类型:有标志包、数据包、握手包、特殊包四种; 事务与包:每个事务均有标志包或特殊包,全部由主控制器发出; 设备与事务:只有标志包具有USB 设备地址、端点号、事务类型。
USB 主控制器
①标志包或特殊包
USB设备
②数据包
③握手包
转 56 页
59
3 、 USB 设备端点、管道与数据流类型 USB 系统能够实现即插即用 (PNP 方式 ) 。 USB 设备端点: 每个设备最多有 16 个端点; 配置前,端点 0 为默认端点。 管道:—设备驱动程序与设备端点间的逻辑连接 管道类型 (端点类型 ) 有流管道、消息管道 2 种。 数据流类型: 有控制信号流、块数据流、中断数据流、实时数据流 4 种; 不同数据流类型采用不同类型管道进行通信。
回下页
60
4 、 USB 的基本传输类型 ( 流类型 )
( 1 )控制传输:双向,用于配置设备或特殊用途,出错时重传。
( 2 )批传输:单 / 双向,用于大批量数据传输,要求准确,出错时重传,时间性不强。
( 3 )中断传输:单向,用于查询USB 设备有无中断请求,出错时在下一查询周期重传。( 4 )等时传输:单 / 双向,用于连续实时数据传输,
时间性强,出错时不重传,速率固定。
转上页
所有传输类型均为主、从式传输 ( 主控制器发起 ) 。 思考:两个 PCI 机的 USB端口能否通信?
61
三、 USB 总线的接口信号和电气特性 1 、接口信号线
高 / 低速USB收发器( 主机或集线
器端口 )
高速 USB收发器 ( 主机端口或高速
设备 )
+5vdc
D+
D-
地15KΩ
15KΩ
+3.0~3.6vdc
1.5KΩD+
D-
高 / 低速USB收发器( 主机或集线
器端口 )
低速 USB收发器 ( 低速
设备 )
+5vdc
D+
D-
地15KΩ
15KΩ
+3.0~3.6vdc
1.5KΩD+
D-USB 数据线
USB 数据线
回下页
62
2 、电气特性 ( 1 )供电特性 HUB收发器:提供 4.75~5.25V 电压、 500mA 电流, D+ 、 D- 上不加电压; USB 设备:高 /全速设备在 D+ 线加 3.0~3.6V电压, 低速设备反之 (D- 线 ) 。( 2 ) D+ 、 D- 线电压特性 (低速设备反之) 发送端:VOH(max)=3.6V , VOH(min)=2.8V; VOL(max)=0.3V , VOL(min)=0.0V 。 接收端:VIHZ(min)=2.7V , VIH(min)=2.0V; VIL(max)=0.8V , VIL(min)=0.0V 。
转上页 回下页
63
3 、 USB 总线状态 (低速设备反之)发送端 ( 高速设备 ) 接收端 ( 高速设备 )
差动信号“ 1”
VD+> VOH(min)且 VD-<VOL(max)
VD+- VD-> 200mV且VD+> VIH(min)
差动信号“ 0”
VD-> VOH(min)且 VD+<VOL(max)
VD-- VD+> 200mV且 VD-
> VIH(min)单端零(SE0)
VD+ 和 VD-< VOL(max) VD+ 和 VD-< VIL(max)
数据 J状态 差动信号“ 1”数据 K状态 差动信号“ 0”空闲状态 NA VD+> VIHZ(min)且 VD-<
VIL(max)
连接状态NA
VD+> VIHZ(min)且 VD-<
VIL(max) ,时间> 2.5μs断开 (未连接 )状态
NA SE0 ,时间> 2.5μs
重置状态 SE0 ,时间> 10ms SE0 ,时间> 2.5μs包起始符SOP
从空闲状态转换到 K状态
包结束符EOP
2 位 SE0+1 位 J状态 ≥1 位 SE0+1 位 J状态
转上页 回下页
64
( 1 )总线状态转换 未连接状态、连接状态、空闲状态均针对接收端而言。
重置状态未连接状态
空闲状态
连接状态
工作状态安全删除
( 2 ) USB 设备包含状态 连接状态,重置状态,上电状态,地址默认状态 , 地址状态,配置状态,空闲状态,工作状态 。
转上页 回下页
65
4 、 USB 设备状态和总线枚举 主机
HUB
连接状态上电状态地址默认状态地址状态
配置状态工作 / 空闲状态
US
B
设备
1.1 设备接入 [ 连接状态 ]
1.2 通知有设备接入2 检测Hub,确认有接入
3 使能该端口,发 RESET 命令
4 发 RESET 信号,供电 [重置状态 ]
5.2 读设备的描述器信息 [工作状态 ]
5.1读设备的描述器信息6.1 给设备分发地址
6.2 分发地址 [工作状态 ]
7.1 按地址读设备配置信息
7.2 读配置信息 [工作状态 ]
8.1 按地址写设备配置信息
8.2 写配置信息 [工作状态 ]
[工作 / 空闲状态 ]
转上页
66
5 、数据位表示 --NRZI编码 ( 双向不归零编码 )
无独立时钟,需通过数据变化反映时钟宽度。 数据表示: 逻辑 0— 在时钟宽度内,电平产生跳变 ( 从差动信号“ 1”/“0”到差动信号“ 0”/“1”); 逻辑 1— 在时钟宽度内,电平不变。 时钟宽度确定:信息包的开始几位为逻辑“ 0” 。 填充规则: 发送方在数据的连续 6 个“ 1”后插入 1
个“ 0”; 接收方将所收数据的连续 6 个“ 1”后 1
个“ 0”去掉。 目的: 提高信号的准确性 (防止漂移 ) 。
回下页 回 69 页
67
NRZI编码示 例:原始数据
(TTL 电平 )空闲
填充数据(TTL 电平 )
填充位
USB 总线数据
(NRZI码 )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
0 0 0 1 1 1 1 1 1 1 1 0 1 1
转上页
68
四、 USB交换的包格式 USB事务的执行通过包交换 ( 一次传输 )完成。 一个 USB事务由 1~3 个 USB 包组成,包的数量由传输类型决定。
IRP 请求
事务
标志包
IRP 请求 IRP 请求
事务 事务
数据包 握手包
通信帧 ( 定长 ) :由帧开始包和若干事务的包组成。
帧开始包 标志包 数据包 握手包 标志包 数据包 …
事务 1 事务 2
1ms 或125μs
69
1 、包的一般格式
SYNC PID 包正文信息 CRC 包结束符8 位 8 位 n 位 5 位或 16 位 ≥ 2 位
所有信息段 (CRC除外 )均是从低位→高位发送; 如 SYNC 、 PID 、包正文信息等的各字符均从 bit0→bit
x SYNC :同步序列,并行数据为 10000000;
NRZI编码:
(D+ 、 D-线 )
空闲 0 0 0 0 0 0 0 1 x x x串行数据:
PID :包分类码,由 PID 类型码及其反码组成,串行数据如下图所示;
PID0 PID1 PID2 PID3 PID0# PID1# PID2# PID3#
PID PID反码回 71 页转下页 转 66 页
70
PID 类型
PID名称 PID[3:0]
描述
Token
OUT 0001b 具有 PID 、类型检查、设备地址、端点号和 CRC域的宿主到功能设备的发送包
IN 1001b 功能设备到宿主的接收包,具有和发送包一样的域SOF 0101b 帧开始包SETUP 1101b 主机发给设备的设置包,用于控制传输的设置
Data
DATA0 0011b 数据包 0
DATA1 1011b 数据包 1
DATA2 0111b 在微帧中高速、高带宽的等时交换的数据包MDATA 1111b 为分离的高速和高带宽等时交换中的数据包
Hand-shake
ACK 0010b 接收设备发的接受数据正确的应答包NAK 1010b 接收设备无法接受数据或没有数据返回个宿主STALL 1110b 设备已经被挂起,需要主机插手解决故障NYET 0110b 接收器无应答
Special
PRE 1100b(Token) 预告包,预告将以低速方式与低速设备通信
ERR 1100b (Handshake) 分离交换错误的握手信号SPLIT 1000b 高速分离交换标志PING 0100b 为批或控制端点传输而设置的高速流控制探测Reserved 0000b 保留
回上页
71
2 、标志包 类 型:帧开始包、接收包、发送包、设置包。 发送方:主机 ( 主控制器 ) 。(1)帧开始包 (SOF)
发送方:主机
SYNC PID FRAME NUMBER CRC 包结束符
8 位 8 位 11 位 5 位 ≥ 2 位
NRZI编码:
0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 1数 据:
每一帧均以主机广播帧开始包表示一帧的开始。
转 69 页 回下页 回 74 页 回 75 页
72
(2) 接收包 (IN)
发送方:主机
SYNC PID ADDR ENDP CRC 包结束符
8 位 8 位 7 位 4 位 5 位 ≥ 2 位
说明: ADDR—USB 设备的 USB 地址; ENDP—USB 设备端点编号
控制、批、中断传输交换 (事务 ) :主机: 空闲设备: 空闲
接收包数据包
握手包 空闲空闲
等时传输交换 (事务 ) :主机: 空闲设备: 空闲
接收包数据包
空闲空闲
回下页转上页
73
(3) 发送包 (OUT)
发送方为主机,包格式与接收包一致, PID 不同。 控制、批、等时传输交换 : (批传输才有握手包,中断传输归接收包)
主机: 空闲设备: 空闲
发送包 数据包握手包
空闲空闲
(4) 设置包 (SETUP)
发送方为主机,包格式与接收包一致, PID 不同。 控制传输交换: (无批、等时、中断传输)
主机: 空闲设备: 空闲
设置包 数据包握手包
空闲空闲
转上页
74
3 、数据包 发送方:主机或设备。
SYNC PID DATA CRC 包结束符8 位 8 位 0~1023 位 16 位 ≥ 2 位
USB 1.1 数据包格式
SYNC PID DATA CRC 包结束符8 位 8 位 0~8191 位 16 位 ≥ 2 位
USB 2.0 数据包格式 注意: CRC 为 16 位,标志包中为 5 位 ( 数据长
度 ) 。 思考:为什么数据包中无USB 设备地址?
转 71 页
75
4 、握手包 发送方:主机或设备,即数据的接收方发送。
SYNC PID 包结束符
8 位 8 位 ≥ 2 位
5 、特殊包 发送方:主机。 包格式:与握手包相同, PID 不同。
转 71 页
top related