pci总线与初始化
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
32位微机实验仪接口
PCI总线与初始化设计的说明
目录
前言
一、PCI总线概述
1.PCI总线引脚信号图
2. PCI总线的特点及其插卡设计注意点
二、PCI总线接口控制卡(存贮映象设备)的工作方式及必须遵循的约定
1.设计要求
2.控制微机空间分配与中断请求
三、即插即用,配置寄存器与初始化程序数据
1.PCI总线主桥路地址配置寄存器(含设备号检测确定)
2.目标卡(设备)内部配置寄存器(包括定义,寄存器设置与数据)
00 H:设备标与销售商标识码
04 H:状态与命令
08 H:类别码与版本
0C H:首部类型等
10 H:基地址寄存器#0(含空间范围大小及其性质检测确定、巧妙的硬件设计)
14 H:基地址寄存器#1
18 H:基地址寄存器#2
1C H:基地址寄存器#3
20 H:基地址寄存器#4
24 H:基地址寄存器#5
28 H:PCMCIA(笔记本电脑)的卡总线结构指针器
2C H:子系统与版本标识码
30 H:PCI总线局部扩充ROM基地址
34 H:新增能力指针
38 H:保留
3C H:主(控)设备要求和中断输入配置寄存器
3.配置初始化程序说明
四、PCI总线信号的选用
1.信号表
2.说明
五、补充说明
一、PCI总线概述
1.PCI总线引脚信号图TS—三态,STS—维持三态,OC—集电极开路
2.PCI总线的特点及其插卡设计注意点(根据PCI规范版本2.0-2.2)※ PCI总线速度
PCI总线CLK周期在33MHz为 30 ns、66MHz为 15 ns。
猝发Burst方式下,在FRAME 有效,源IRDY、目TRDY有效下,每个周期可传送一个长字,因此,理论最大传送速度速度为132M/262M(32bit)或264M/524M(64bit)字节。
其中目标准备好TRDY所需等待周期与目标(如存贮器)速度相关,如果存贮器(或设备)的读周期 + 读出数据返回CPU时间,小于CLK周期,那么必须使用TRDY信号;源准备好IRDY,除与主存速度有关,还与更高级操作、主存刷新、时钟中断等有关。
此外程序中的一次连续的读或写操作,也会因更高级操作请求、主存刷新、时钟中断等而分若干次。
因此,实际速度要比理论小许多。
所有信号的采样都要在总线CLK的上升沿进行。
PCI总线和ISA总线在信号使用上最大的不同是:ISA总线信号在逻辑设计中是直接连接使用,而PCI总线信号必须按时序要求寄存、译码、组合产生所需的新信号来使用,而不能直接使用。
下面将叙述到这个问题。
※复用信号与寄存、组合
1)PCI总线地址、数据ADi共点复用,分地址和数据周期传送,i最大64位。
因此,无论是配置操作,还是通常操作,目标必须在FRAME有效后的第一个周期即地址周期寄存地址(配置操作实际是设备功能号和配置寄存器地址)及和设备总基地址空间一致的高位地址译码即设备选中DEVSEL,并保持到FRAME无效后的最后一个传送结束。
注意,在总线每次对目标读第一数时,多一个转换周期。
对数据是否要寄存,主要取决于目标是否需要。
2)总线传送方式与类型命令和数据宽度(字节数)C/BEi共点复用,因此,目标必须在FRAME有效后的第一个周期寄存命令码,并保持到FRAME无效后的最后一个传送结束。
寄存的命令码必须与CLK、FRAME、DEVSEL(配置用IDSEL)、IRDY、TRDY 等组合形成对目标(如存贮器或设备配置寄存器等)的读令或写令、片选、允许等,通常利用读或写令的后沿对Burst猝发用地址计数器加1。
当目标不使用高速缓冲存贮命令时,要将其当作一般存贮器命令处理。
猝发地址顺序为线性增加(AD0=AD1= 0)。
设备选中DEVSEL#信号是目标回答系统主设备(如CPU等)目标设备所用被分配的空间已选中(现行地址基地址部分和和基地址寄存器比较相等信号),在返送PCI总线时,必须”或”上经延迟的配置空间选中IDSEL ,以控制配置数据的读/写和向PCI总线控制器桥路作应答,DEVSEL#信号必须在FRAME有效后的第7个周期前有效,否则被认为总线(该插槽上)无实际目标设备(系统桥路检测定时这样约定)。
配置空间选中IDSEL是读写配置寄存器选中信号,同时的FRAME有效时的地址周期,AD7:2为配置寄存器地址(如有设备号必须包括设备号地址部分), AD1:0必须为0, 命令周期C3:0是读/写(1010/1011)命令。
如果配置读00单元长字为全“1”,认为总线(该插槽上)无目标设备(系统BIOS这样约定)。
※PCI总线传送类型
1)PCI总线的基本传送是高速的Burst即猝发性操作,其不直接支持DMA传送方式。
总线的主桥路可自动将处理器对存贮器的连续双字及其以上的读或写传送合并到一个猝发传送中去,且对一个连续的数据段,只发其首地址,因此在猝发操作时目标不仅要寄存首地址,还必须在每个数据传送完即进行地址加1。
除猝发操作外,也可进行单个的操作。
2)除通常的存贮器、I/O、配置访问的猝发或单个读、写传送外,还有快速背对背,锁定操作(适时要求)、高速缓存型等,对设计的目标如插卡来说,又有主动、从动之分。
详见PCI规范版本。
注:背对背传送是一种不使用CPU指令即数据传送不经过CPU寄存器(但经过PCI桥路)的快速传送。
许多设备有的可能同处在一PCI插槽上,也可能在不同的PCI插槽上,还有可能在不同总线号上的PCI插槽上,也还有可能是同一或不同总线号上的嵌入设备,这些设备中的任意两个设备间的数据直接交换,或者PCI插槽上主设备或与主存贮器数据的直接交换,都属于这种传送,很类似DMA。
但两个设备中至少必须有一个具备主控功能,且在使用总线上,不可与其它的传送产生竞争或冲突,这就要进行仲裁。
3)PCI总线在传送中支持予取功能,如果目标设备具备予取的FIFO缓冲和控制,并在配置寄存器配置该功能位。
4)终止传送:CPU总线主控、目标都可以终止传送。
主控终止原因之一是完成传
送,之二是CPU及其总线主桥路所限定的时间溢出或故障PERR、SERR;目标(如插卡)终止原因是其处于不能即时应答或不能处理传送的状态,或者具有传送长度计数器是最后一次,此时必须向总线发出停止信号STOP,并保持到FRAME结束。
5)传送时序,请参照PCI局部总线规范2.0-2.2版
在使用PCI接口芯片PLX 9052等或相应的核core时,主要考虑的是目标准备好和目标的最后一次传送。
PCI接口芯片PLX 9052等或相应的核core,将专门叙述。
※错误检测功能
PCI总线错误反应功能较强,在地址周期,不论主、从均可检查发生的地址奇偶校验错误;在数据传送期间,主控反映读数据奇偶校验错误,从动目标反映写入数据奇偶校验错误。
配置传送也同样如此。
参与总的奇偶校验的信号除ADi外,还包括C/BE i及总线奇偶校验信号PAR,其产生的奇偶校验结果,偶数个“1”正确,奇数个“1”错误。
在地址周期,奇数个“1”的错误,将在下一个CLK生成总线报系统错误信号SERR;在写数据传送期间,从动目标校出的奇数个“1”的错误时,于下一个CLK生成总线数据错误信号PERR;SERR、PERR都保持到FRAME结束后一个周期;在读数据传送期间,从动目标仅校验Adi、C/BEi,(PAR不参与校验逻辑)
所产生的校验信号即总线信号PAR。
通常对设计从控性的插卡,可以不考虑PERR、SERR,但被读时,必须产生的校验信号位PAR,否则总线主桥路校验必产生错误,致使插卡无法工作。
除非在配置寄存器设置不允许。
※电源管理功能
PCI插卡上电源管理是新增功能,通过PME,3.3Vaux,PRSN1(B9)、PRSN2信号和相关的特别配置寄存器和新能力指针实现,控制包括供电的电流(功率)、电压、热拔插、节电与低功耗措施等。
特别配置寄存器,由BIOS中嵌入的中断路由表确定,在F0000-FFFFF H以“$PIR”字符串开始,偏移地址32字节。
(PCI系统结构C-134页)。
插槽的识别号由新能力指针指向的配置空间ID=04H 。
※PCI总线的级联
通过主/PCI、PCI-PCI等桥路,可实现多PCI总线级联(串、并)的各种拓扑结构。
总线号最多可达256个。
如多CPU的工作站就是PCI总线级联结构。
目前典型的PC结构是具有单个主/PCI桥路(北桥)的无级联PCI总线结构。
北桥的PCI BUS其总线号 = 0即PCI BUS 0,其上挂有:南桥 + 4个PCI插槽 + 集成网卡、声卡、显卡、SCSI、USB嵌入式设备等。
因负载问题,PCI设备号一般不会超过10。
(见下)北桥功能:连接CPU总线 + 转换为PCI总线0 + AGP显示接口 + 主存接口等
南桥功能:转换为ISA总线 + EIDE控制器(硬盘) + USB控制器 + 中断路由控制器
+ DMA控制器等
ISA总线连接:BIOS、串口COMi、并口LPT、软盘口、键盘口、鼠标口、声卡等
※负载与延迟
每个PCI总线信号可驱动10负载,要驱动更多的设备,对现有的具备PCI总线系统上,只有在PCI插槽上用PCI-PCI桥路向下级联方法,增加新的PCI BUS总线。
每个PCI插槽信号只能驱动一个负载,一个信号如要驱动卡上的多个输入,要经驱动门,再去驱动。
并规定:信号(从主板与插槽针脚连接点)到负载的线长≦4cm(1.5”),PCI
总线自身延迟为10ns(33MHz),作为自设计逻辑接口延迟参考。
在设计PCI插卡PCB时,要按推荐的PCI接口器件引脚顺序(PCI系统结构一书C-201页)布局,用FPGA/CPLD设计时,也要按其要求分配引脚顺序。
32位微机(含单片机)实验平台在与微机连接上将采用有一个下级的级联PCI总
线扩充结构。
※地址、数据步进式驱动
PCI总线支持地址、数据AD31:0的步进驱动(若配置中设置这个功能),其把32/64
位地址、数据分组分时驱动,最后全部达到所需的电平。
这样的技术措施大大减少驱动浪涌电流和相互干扰,提高了系统的稳定性。
缺点是速度降低。
通常32位分4组, 1组:0,4,8…2组:1,5,9…3组:2,6,10…4组:3,7,11…
在A/D周期驱动的CLK: 第1个CLK 第2个CLK 第3个CLK 第4个CLK ※即插即用与其配置
1)配置机制、类型
机制:机制1----新方式,配置空间用, PCI总线插卡用这种方式
I/O长字:CF8 H,CFC H + 设备配置寄存器空间
机制2----向后兼容方式,CPU直接I/O配置空间,
I/O字节:CF8 H,CFA H,C000—CFFF H 类型:TYPE0----配置本极桥路直接连接的PCI设备。
无总线号字段
TYPE1----配置桥路的下级桥路连接的PCI设备,具备总线号字段设备配置空间选择送给方法:
a设备号译码送总线上Ad31:11某一位,即线选法,IDSEL信号忽略
多为系统板集成设备用。
b设备号译码送各插槽IDSEL
2)配置用双字I/O : CF8 H 配置地址寄存器,读或写(含总线、设备、功能号) CFC H 配置数据寄存器,读或写(含功能号)3)微机主板PCI桥路机制 1配置寄存器内容与关系图:31位允许必须 = 1
CFC H对数据寄存器操作时,地址周期:PCI插槽IDSEL脚
R/W I/O长字操作AD1:0 为00(仅读)。
AD7:2为设备配置寄存器地址
AD10:8为设备配功能号
数据周期:其内容就是该指令后所带配置数据
机制1的类型0/1配置周期传送
说明:
a)设备号……一个PCI BUS最多可设计32个设备,每个设备可有8个功能
线选实际为21,即AD31:11分别为“1”个。
如仅一个设备,通常为设备号值= 00 H
在典型微机主板上,通常集成设备号译码0,1,2……的直接连
AD16,17,18……
b)总线号……0-255个PCI BUS 。
具体有效的总线号数与多级桥路链结构的“桥”数相
关,通常相等。
在典型微机主板上,是单个主/PCI桥。
PCI BUS号 = 0,设备号10以内,
包括PCI插槽。
但到P4,已增加PCI_PCI将PCI BUS0和BUS1留给主板集成设备,而PCI
插槽则使用PCI BUS2
C)类型转换…在多级桥路链PCI总线结构中,配置初始化时,如果要配置本极桥路的下
级桥路连接的PCI设备,必须用类型1。
但在总线编号寄存器相匹配桥路
内类型1将自动转换类型0后,才来配置与该桥路直接连接的PCI设备。
因此时
在类型1的配置地址内容中,其总线号必须和多级链桥路结构某桥路的总线编号寄存器的值匹配,即等于或小于该桥路的第二总线编号寄存器的值。
否则是
无效的。
4)64个长字的配置寄存器,可读可写,但实际有许多要设计成固定的设置而写也无妨的逻辑。
通过先写在桥路上的地址(CF8 H)寄存器(读其内容是主桥路功能需要),后写(即设置)或读在插卡(设备)上的配置寄存器,CPU通过程序就可控制插卡运行,知道插卡的功能。
如厂家、卡号、卡的类型、所用空间的首地址、存储容量及类型、中断情况、运行状态等等。
这就是即插即用功能所在。
具体配置内容见后面三
二、PCI总线接口控制卡(存贮映象设备)的工作方式及必须遵循的约定
1.设计要求
1)接口卡作为PCI总线的目标而工作于从方式,但保留主动方式工作的设计可能。
a该卡是插在目前典型的PC结构即具有单个主/PCI桥路(北桥)的微机具体的PCI 插槽上工作的。
★ CPU设计实验平台接口PCI卡是采用PLX 9052接口芯片
注意,使用PLX 9052仅为从方式,未用REQ、GNT信号。
★ 32位微机实验平台接口方式;设备号或功能号区别不同目标或插槽
PCI插槽缓冲驱动卡→电缆→PCI-PCI桥路(core)→
→PCI接口(core)+ Slot1 + Slot2
PCI接口(core)→局部BUS →存贮器(SRAM,Flash,BIOS)
+ 平台实验主逻辑(CPU、I/O 82xx的core)
+ 外围设备接口
如不采用PCI-PCI桥路,可用功能号区别不同目标或插槽,比较简单。
功能0/1/2/3分别是PLX 9052/FPGA/ Slot1/ Slot2
所有的IP core均用FPGA/CPLD(30万门)编程
b微机PCI总线插卡物理电气特性要求:
5V 、7.5W 小卡即PRSN1(B9)与PRSN2(B11)接地,码键缺口远离后板。
器件在B面
2)操作数据宽度与速度
CPU设计实验平台:8位
32位微机实验平台:8/16/32操作都可,或PLX 9052的局部BUS/ISA;
设计的最大传送速,与选用的存贮芯片速度有关,对实验系统,为了降低成本,存贮芯片速度55-100ns左右,由于控制逻辑的门延迟,目标TRDY(PLX 9052的LRDY)必须有4(33M)~8(66M)个等待周期或降低PLX 9052的局部BUS频率(CLK/4)。
3)传送方式,存贮映象I/O控制操作采用单个操作:一个地址,一个数据
写Flash存贮器采用单个操作
读写SRAM或读Flash存贮器采用为猝发方式
猝发方式要寄存首地址,通常要设计传送长度计数器。
不使用高速缓存命令操作,以简化设计。
闭锁LOCK可供采用(非执行性存贮器可不用),
仅读的背对背传送也不用。
4)插卡被主控读时(包括读缓冲存贮器、存贮I/O、配置读),必须校验产生PAR,否则配置中要设置禁止。
对PERR.SERR保留设计条件。
5)操作类型:通过存贮I/O空间用MOVE方式对插卡发送控制命令、参数或读取状态、有关信息;通过存贮空间用MOVE方式对插,卡缓冲存贮器读或写;32位微机实验平台对82xx接口操作用I/O空间。
6)即插即用,配置寄存器根据实际情况选用,但至少要用第0-4和第15长字单元,其中部分可根据需要设置即可写可读或由设计逻辑固定编码到“0”/“1”的读。
仅读的位不设置寄存器。
2.控制微机空间分配与中断请求
1)总的存贮空间分配(扩充)
基地址:7000 0000 H 可设置改变,中断为INTA
★ CPU设计实验平台:700D 0000 H,PLX 9052 使用局部BUS的CS0空间
64Kbyte 空间具体分配见CPU设计实验系统资料★ 32位微机实验平台:
PLX 9052是二次映射的局部总线空间LBUS_SPACEi形式,设备功能号=0
FPGA使用直接映射,当连接PCI总线时, 设备功能号=1
PLX 9052 FPGA (IP core或自设计的PCI接口)
①局配M 7800 0000 H 7600 0000 H “760”用于访问FPGA内部RAM
PCI_BAR0 PCI_BAR0 目标主存
②局配I/O 不用 7680 0000 H “768”用于访问FPGA内部RAM
PCI_BAR1 PCI_BAR1 目标微存
③SRAM 7000 0000 H 7100 0000 H Lmax=8Mbyte 32位宽
PCI_BAR4 PCI_BAR4 微机可32/16/8位访问
LBUS_SPACE2
控制、收空间定义在8Mbyte之后,见⑥
ISA 0080 0000 H 不用 Lmax=4Mbyte 8/16位宽
PCI_BAR2
LBUS_SPACE0
④Flash1 7200 0000 H 7300 0000 H Lmax=4Mbyte 32位宽
PCI_BAR5 PCI_BAR5 微机可32/16/8位访问
LBUS_SPACE3
ISA 00C0 0000 H 不用 Lmax=2Mbyte 8/16位宽
PCI_BAR2
LBUS_SPACE0
对FPGA访问:7280 0000 H
PCI_BAR5
LBUS_SPACE3
⑤Flash2 7400 0000 H 7500 0000 H Lmax=1Mbyte
PCI_ERBAR5 8位宽 (相当BIOS EPROM)
LBUS_EX_ROM
或7240 0000 H 对PLX 9052如果和串行EEPROM冲突
PCI_BAR5
LBUS_SPACE3
ISA 00E0 0000 H 不用 Lmax=1Mbyte 8位宽
PCI_BAR2
LBUS_SPACE0
⑥控制回收 7080 0000 H 7180 0000 H Lmax=64Kbyte 32宽,仅用低8位
PCI_BAR4 PCI_BAR4 和③SRAM是相同的基地址寄存器
LBUS_SPACE2 范围扩大64Kbyte
控制、状态、通讯I/O A15=0,通讯I/O是指微机和实验平台CPU的通讯
跟踪回收 A15=1
仅用低8位,程序地址每次+4操作,这样在控制回收中,最低两位不参加地址译码,因此读/写控制、参数寄存器或读回收信息,就与总线类型和宽度无
关,保证控制、读/写的正确。
具体见32位微机实验平台控制、回收信息定义
⑦平台PCI Slot1 7C00 0000 H Lmax=4Mbyte 32位宽,设备功能号=2
微机可32/16/8位访问
⑧平台PCI Slot2 7E00 0000 H Lmax=4Mbyte 32位宽,设备功能号=3
微机可32/16/8位访问
存贮器都有两个访问源:
微机CPU 直接读/写,可通过PLX 9052或FPGA的PCI接口逻辑
实验平台的CPU(core)或主控设备直接读/写,
CPU 8086 8/16 位,MOVE 与 DMA(8237)传送
单片机8051/87C52(兼容51系列) 8位
单片机PIC16C77 8位
2)I/O空间:定义在PCI_BAR3(bit0=1),LBUS_SPACE1,
用于8086接口芯片82xx等实验
ISA----PCI基地址:0200 H 可改变设置
LBUS---PCI基地址: 8200 H 可改变设置
3)备用:FPGA内设计的PCI接口:
系统备用 PCI_BAR2 为 7700 0000 H
用户定义 PCI_BAR3 为 7780 0000 H
4)中断:插卡对CPU要求用中断方式请求。
用中断A,初始为IRQ5
三、即插即用,配置寄存器与初始化程序数据
有关配置部分的逻辑及初始化程序设计必须遵循:
1.PCI总线主桥路地址配置寄存器
采用机制:#1;
a类型:Type0/1,因bit1、0由桥路硬连线,写地址配置寄存器时,不必管;
b总线号:D23..16 =0 (即微机总线号0);
c配置允许允许:bit31=1
d功能号;只一种为bit 000
e设备号的检测确定过程:15:11(PCI总线体系结构C-195页)
问题是插卡配置编程者一般不知道32个设备中,哪个被占用或未占用,因此编程者在实际配置前,必须进行扫描(即计数设备号)查看配置地址为00 H寄存器的ID标志是否与插卡硬设置一致,若一致,此时的计数值就是插卡的设备号,程序如下:
对I/O CF8 H ,写微机主板PCI 桥路配置地址寄存器的数据为:
D31:24 = 8 H (D31允许=1,其余保留全“0”)
D23:16 = 00 H (总线号00 )
D15..8 = yyyy y000 b (设备号yyyy y b ,功能号 000 b ) D7..0 = xxxx xx00 b
其中 "x" 是将要送出的配置数据的地址,共64个双字
2.目标卡(设备)内部配置寄存器
本节请参阅《PCI 系统结构》19章 C-203页
对下面的配置寄存器写/读时,必须先I/O 3F8 H 写被配置数据寄存器的地址 然后用I/O CFC H ,写各长字的配置内容或数据
地 址(byte) 内 容 或 数 据
00 H :设备 标识码 (高16位) 销售商 标识码 (低16位)
使用PLX 9052 Device ID =9052 H Company ID = 10B5 H
(PLX 9052的串行EEPROM 上电加载)
FPGA 的PCI 接口 Device ID = "WJ" Company ID = "KD"
04 H :状态与命令
1.定义说明
2.数据 R为必须用寄存器,可读/写,“0/1”为逻辑硬连接(以下同)
1)32位微机实验平台的FPGA的PCI接口
S tatus register:33MHz
S15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R R R R R 0 1 R 0 0 0 0 0 0 0 0
C ommand register:
C15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 R R R R R R R R R
初始化写入:0200 0083 H 允许等待、存贮器及I/O操作,33MHz 可根据需要修改
2)PLX 9052:CPU设计和32位微机实验平台:
S tatus register:33MHz
S15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R R 0 0 R 0 1 0 0 0 0 0 0 0 0 0
C ommand register:
C15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 1 R 0 R 0 0 0 0 R R
初始化写入:0200 0003 H 允许存贮器及I/O操作
08 H:类别码与版本
类别码是指设备的类型与性质:如存贮器控制、网络设备、桥、显示控
制、通信、CPU、外部设备、无线、卫星等,各个又分许多子类,如大容量
外设硬盘又分EIDE、SCSI、阵列等;网络又分以太、令牌、ATM、ISDN等。
定义名称基类型子类型 IDE编程接口版本ID
数据位 31:24 23:16 15:8 7:0
PLX 9052 06特桥 80特桥 00 9052硬接
FPGA的PCI接口 04多媒体 80 其它 00 02
PLX 9052的串行EEPROM上电加载
当32位微机实验平台不采用PCI-PCI桥,由实验大类确定,
请参阅《PCI系统结构》19章 C-206到C-212页。
实验平台也可是基类型:05H存贮器控制
子类型:00SRAM/01Flash/80其它
PCI Slot 上卡由插卡的设备类型确定。
0C H:首部类型等
BITS自测无,首部类型 00,高速缓存线范围不用
定义名称 BITS自测试程序首部类型延迟定时高速缓存线范围
数据位 31:24 23:16 15:8 7:0
PLX 9052 00 00 注1 00 00 全仅读
FPGA_PCI 00 00 见注2 00
注1:首部类型 01 指PCI-PCI桥配置寄存器
02 指PCI-CardBus配置寄存器
00 指其它(包括本设计设备)
注2:总线猝发时间控制即延迟计时初值设置
高5位用寄存器可设置 Lateny[7:3] = R[7:3]
低3位固定 Lateny[2:0] = 7
注意,(PLX 9052 不支持),均为“0”
不用 Cache size = 00 H
10 H:基地址寄存器#0 BAR0
有关基地址寄存器的共同问题首先说明两点:(后面的相同)
●格式定义:位数 31:4 3 2:1 0
定义基地址予取空间所处位置存贮器或I/O =1予取 00 32位空间任意 =0 存贮器
31:2 01 低1M内 =1 I/O
10 64位空间任意
3:0位通常是根据需要硬连接到“0”/“1”的。
当然也可设计为寄存器
Bit0=1,是I/O空间, 基地址为31:2 ,Bit1=0 保留
●空间范围(或称区域)表示及其大小与性质的检测确定
a)范围表示的方式----以2进制数某一位的权值表示,因位3:0已作上面
的定义,所以至少要大于16字节。
但存贮器范围要≥4K字节。
b)软硬确定需要的空间范围
在配置寄存器空间分配上,仅有基地址寄存器,而无相应的范围寄存器。
为此采用软件和简单硬连线结合的方法,可不要范围寄存器。
这是因为这里的基地址实际是产生存贮器片选的高位地址部分,其以下地址空间容量就是相应的范围。
因此仅将满足需要的高位地址位设计成寄存器即基地址寄存器(复位为0),而其以下地址位并无寄存器而是硬连接到“0”(除3:0)。
如基地址=7000 0000 H,1M范围,只要将31:20设计成为寄存器即可(巧妙的设计可将30:28设计成为寄存器),以下19:4为硬编码到“0”。
这样,配置初始化程序如果写全“1”到基地址寄存器,然后读,从低4位起到高31位逐位判别,其首个“1”的权值即是有效地址空间范围。
然后再次写入所需的基地址。
C)举例
如基地址=7000 0000 H、1M范围、不予取、32位空间、存贮访问,只要将31:20设计成为寄存器即可(巧妙的设计只要将30:28设计成为寄存器),以下19:4为硬编码到全“0”,3:0位硬编码到“0001”。
配置寄存器地址=10 H ,其它同写PCI总线主桥路地址配置寄存器。
配置基地址初始化程序如下:
①OUT 3F8, 1000 0000 0000 0000 yyyy y000 0001 0000 b;
②OUT 3FC, FFFF FFFF H;
③IN 3FC ;(3FC)=FFF0 0000 H;
④判别程序:首个“1”是Bit20,权=1048576=1M byte
⑤OUT 3FC,7000 0000 H;
如是I/O空间,第③步读出(3FC)=FFFF FF81 H
2—31中首个“1”是Bit7,其权即所要求的I/O空间=128 byte
D)配置寄存器巧妙的逻辑设计(如自己设计或修改core时)
为了减少的寄存器数目即硬件资源,如果各配置寄存器的内容不要修改,则按要求值用硬连接编码,为仅读。
如果各配置寄存器的内容有的要修改,哪位要修改,则哪位用寄存器。
其它位则按要求值用硬连接编码。
对基地址寄存器,因要上述的方法,确定空间范围,为了不设计或尽量少设计寄存器,可以在写全“1”时,建立写全“1”标志寄存器Flag→1,
再由Flag或/Flag编码到空间范围,以供在Flag=1时,由IN 3FC读取用以
判别空间范围。
在写全“1”后,接着第一个读的后沿,或者在写非全“1”
时,Flag→0,此后的读出值=实际的基地址。
●注意2.2规范不支持最低的1MB空间,但现仍可用
●共有6个连续的双字基地址寄存器BAR0--BAR5
※使用
1)32位微机实验平台:
PLX 9052 :用作其局部配置寄存器的存贮空间基地址
写全”1”后,读出 = FFFF FF70 H, 应是8(见12/C-222页)
空间范围是128字节的存贮空间,其它同上。
(BAR0) = 7800 0000 H
FPGA内设计的PCI接口:用于访问目标主存FPGA内部RAM
(BAR0) = 7600 0000 H 2)CPU设计实验平台PLX 9052 :
用作其局部配置寄存器的存贮空间基地址
(BAR0) = 7800 0000 H/78FF FF80 H
14 H: PCI基地址寄存器#1 BAR1
定义与使用,同BAR0
1)32位微机实验平台: (BAR1) = 7100 0000 H
PLX 9052 :用作其局部配置寄存器的I/O空间基地址
写全”1”后,读出 = FFFF FF71 H, 应是8(见12/C-222页)
空间范围是128字节的存贮空间,其它类同BAR0。
(BAR1)不用
FPGA内设计的PCI接口:用于访问目标微程FPGA内部RAM
(BAR0) = 7700 0000 H 系统备用
2)CPU设计实验平台的PLX 9052不用BAR1
18 H: PCI基地址寄存器#2 BAR2
定义与使用,同BAR0
1)32位微机实验平台:
PLX 9052 :用作存贮器访问局部地址空间0(LBUS_SPACE0)
则必须与局部地址空间0范围、基地址、描述寄存器
LAS0RR、LAS0BR 、LAS0BRD、CS0BASE一致。
ISA模式下:
(BAR2) = 0080 0000 H
0080 0000 ~ 00BF FFFF H SRAM 4Mbyte 8/16位宽
00C0 0000 ~ 00DF FFFF H Flash1 2Mbyte 8/16位宽
00E0 0000 ~ 00EF FFFF H Flash1 1Mbyte 8位宽
FPGA内设计的PCI接口:
(BAR2) = 7780 0000 H 用户定义
2)CPU设计实验平台:(BAR2) = 700D 0000 H (主空间)
原DOS下D段
1C H: PCI基地址寄存器#3 BAR3
定义与使用,同BAR0
1)32位微机实验平台:
PLX 9052 :用作存贮器访问局部地址空间1的基地址
则必须与局部地址空间1范围、基地址、描述寄存器
LAS1RR、LAS1BA、LAS1BRD、CS1BASE一致。
I/O空间:用于接口芯片82xx等实验
ISA 模式为(BAR3)= 0000 0201 H 可改变设置。
LBUS模式为(BAR3)= 0000 8001 H 可改变设置。
FPGA内设计的PCI接口:
(BAR2) = 7780 0000 H 用户控制回收
2)CPU设计实验平台的PLX 9052不用BAR3
20 H: PCI基地址寄存器#4 BAR4
定义与使用,同BAR0
1)32位微机实验平台:
仅用存贮空间 0位 = 0,
存贮器可放32位地址空间任一处 2:1位=00
可访问16 M byte空间
PLX 9052:用作访问局部地址空间2
(BAR4) = 7000 0000 H
访问8M byte SRAM:7000 0000~707F FFFF H
控制回收访问: 7080 0000~7080 FFFF H
必须与局部地址空间2范围、基地址、描述寄存器
(LAS2RR、LAS2BA、LAS2BRD、CS2BASE)一致。
FPGA内设计的PCI接口:用作访问存贮空间
至少须8位寄存器31:23,其它位均固定为“0“(写无效),
(BAR4) = 7100 0000 H
访问8M byte SRAM:7100 0000~717F FFFF H
系统控制回收访问: 7180 0000~7180 FFFF H
如果调试需要最低的1MB空间,
则2:1位可设置为01,用设计1位寄存器。
2)CPU设计实验平台不用BAR4
24 H: PCI基地址寄存器#4 BAR5
1)32位微机实验平台:
仅用存贮空间 0位 = 0,
存贮器可放32位地址空间任一处 2:1位=00
可访问16 M byte空间
PLX 9052:用作访问局部地址空间2
(BAR5) = 7200 0000 H
访问4M byte Flash:7200 0000~723F FFFF H
或访问1M byte Flash:7240 0000~724F FFFF H
对PLX 9052如果和串行EEPROM冲突时用
必须与局部地址空间3范围、基地址、描述寄存器
(LAS3RR、LAS3BA、LAS3BRD、CS3BASE)一致。
访问FPGA:7280 0000~728F FFFF H 1M byte
FPGA内设计的PCI接口:用作访问存贮空间
至少须8位寄存器31:23,其它位均固定为“0“(写无效),
(BAR5) = 7300 0000 H
访问4M byte Flash:7300 0000~733F FFFF H
2)CPU设计实验平台不用BAR5
28 H:PCMCIA(笔记本电脑)的卡总线结构指针器,均不用。
2C H:子系统ID(高字)与版本(低字)
1)32位微机实验平台:
FPGA:“SY32”,PLX 9052:“TEST“
2)CPU设计实验平台:PLX 9052为“MCPU”,
由串行EEPROM上电加载
30 H:PCI总线局部扩充ROM基地址寄存器ERBAR
(31:24=00),23:11设置基地址,10:1=全“0”保留,Bit0允许
PLX 9052的局部BUS扩充ROM空间(LBUS_EX_ROM)
的EROMRR,EROMBA,EROMBRD寄存器和ERBAR对应
※规范说明:详见《PCI体系结构》第20章 C-237页
1)ROM建立与访问必要条件:
允许访问位Bit0=1 ,可程序清“0”
有基地址寄存器存在,并可确定空间范围(方法同前),写基地址
最大16M byte
与设备的类别码(配置09-0B H)相应,如VGA、SCSI、VDP(固件forch)
网卡等其它自设计须配置ROM的设备
读ROM前两个字节为OO H=55,O1 H = AA H
2)ROM代码格式与执行:
格式--头段,数据结构段,适时程序段(目标码或自然语言)
初始化程序代码段。
执行—在读到AA55 H后→继续读代码的长度(1个字节,以512字节
递增)→短转、POST远调用始化设备的数据→拷贝ROM代码到主
存(从03 H开始)→执行初始化程序代(完成后删除)→执行适
时程序并驻留。
※使用:
1)32位微机实验平台:
作为平台上组成8086小微机系统的BIOS或特殊设备需要用,
用Flash存贮器 Lmax=1Mbyte 8位宽
PLX 9052:(ERBAR)= 7400 0000 H,
对PLX 9052如果和串行EEPROM冲突时,则不用
FPGA内设计的PCI接口:(ERBAR)= 7500 0000 H,。