计算机应用系统实验指导书(共73页).doc
精选优质文档-倾情为你奉上计算机应用系统实验指 导 书薛 琳 高正中 信息与电气工程学院电工电子实验中心微机原理与接口技术实验室2007年8月山东科技大学学生实验守则1学生必须按时到实验室上实验课,不得迟到早退。2进入实验室要保持安静,不得高声谈笑,不准抽烟,不准随地吐痰和乱扔纸屑杂物。3. 不准动用与本实验无关的仪器设备和室内其它设施。4. 学生做实验前要预习,认真阅读实验指导书,复习有关基础理论,并接受教师的检查。5. 一切准备工作就绪后,须经指导老师同意,方可动用仪器设备,进行实验。6. 实验中要细心观察,认真记录实验数据,不准马虎从事,抄袭别人数据,不得擅自离开操作岗位。7. 实验中要注意安全,严格遵守操作规程,尽量节约水电与其它消耗材料。如损坏仪器设备等应立即向指导教师汇报,事后写出损坏报告,由实验室及校主管部门根据情况处理。8. 实验中如出现事故,要保持镇静,要及时采取措施(如断水、断电),防止事故扩大。9. 尊重实验室管理人员的职权,对不遵守操作规程又不听劝告者,实验室管理人员有权令其停止实验。对违章操作造成事故,要追究责任,损坏仪器要赔偿。10实验室一切物品(仪器、模型、标本、药品等)不得带离实验室,违者除追回物品外,要批评教育,丢失要赔偿。11实验完毕后,必须断电、断水,整理好仪器设备、标本、模型等,经老师允许后方可离开实验室。12学生要求重做实验或做规定外的实验,应征得指导老师同意后,方可进行实验,以免发生事故。13开放式实验室由任课教师提前安排好,按实验规则要求,由实验室管理人员具体执行。 二七年八月 实验要求课前要做好实验预习工作,课上认真完成每项实验,课上未完成的实验内容在课后实验室开放时间补上,实验报告书写要认真规范。实验报告书写要求:1、封面课程名称要准确,学院、专业、班级、学号要写全,不得简写。2、每项实验名称要准确。3、实验组别、实验日期以及同组实验者要真实。不允许出现同组实验者不同日期、组别和结果数据现象。4、指导教师名字要写全5、正文要求以下项目要齐全:(1)实验目的(2)实验设备(3)实验内容(4)实验电路图(硬件)(5) 实验步骤(6)实验流程图及程序(7)实验结果及结果分析。(8)实验小结。通过实验,简要分析你的收获、不足和问题。注意: 字迹要清晰、规范、工整,字迹颜色要一致,程序框图采用标准符号。 报告书写不合格须重写,实验不及格须重做。 所有的汇编语言源程序其文件名及文件夹长度不得超过8个字节。 文件夹、文件名不能包含汉字 源程序中符号地址、指令码、分隔符数字字符等使用半角英文输入。 否则出现会出现编译错误。目 录32位微机原理及应用实验一 数据传送实验5实验二 显示程序实验5实验三 综合程序设计实验7实验四 中断特性及8259单一中断应用实验8实验五 可编程定时器/计数器8254实验11实验六 用PCI BIOS获取设备配置资源实验17实验七 PCI中断应用实验18附录A PCI BIOS功能调用参数说明18附录B S5933管脚功能说明18附录C VtoolsD的安装及VC+ 6.0配置18附录D VxD调用接口说明18附录E QTHPCI 集成操作软件使用说明18附录F Turbo Debugger调试器的使用18单片机原理及应用实验一 数据传送指令18实验二 二进制数的运算18实验三 分支结构程序的设计18实验四 循环结构程序设计18实验五 子程序程序设计18实验六 外部中断系统的应用18实验七 定时器/计数器实验18实验三 键盘/显示实验18实验九 串行通信实验18实验十 /转换实验18实验十一 /转换实验18实验十二 利用MCS-51单片机控制交通灯(综合实验)18实验十三 电脑时钟(综合实验)18附录1:DaisWin集成调试软件的使用18附录2 疑难问题解答18附录3 编译错误信息18专心-专注-专业32位微机原理及应用实验一 数据传送实验1.1 实验目的1) 熟悉汇编语言软件环境和80X86指令系统。2) 掌握简单程序编制、调试方法。3) 掌握与数据有关的不同寻址方式。1.2 实验设备PC机一台。1.3 实验内容及说明1) 把一个字节立即数传送至BL中,并查看BL中的内容。2) 把一个字立即数传送至AX中,并查看AX中的内容。3) 把一个32位立即数传送至ECX中,并查看ECX中的内容。4) 将一个32立即数传输到数据段内由BX指定的地址单元内,并查看该地址的数据。5) 把一个字立即数传送至内存数据段1000H单元中,并查看DS:1000H单元中的内容。6) 把内存数据段2000H单元中的内容字传送至AX,并查看AX中的内容。7) 把DS:0110H中的内容字传送至内存附加段0100H单元中,并查看ES:0100H单元和DS:0110H单元中的内容。8) 把内存数据段1000H单元、1010H单元中的两个数据字(16位)相互交换,并分别查看DS:1000H 和DS:1010H单元中的内容。1.4 实验步骤(1) 运行QTHPCI软件,根据实验内容编写程序。(2) 使用“项目”菜单中的“编译”或“编译连接”命令对实验程序进行编译、连接。(3) 用“调试”菜单中“单步运行”命令或“执行到光标处”命令运行程序,观察运行结果。(4) 用“调试”菜单中“全速运行”命令运行程序,观察运行结果。(5) “调试”菜单中的“进行调试”命令进入Debug调试,观察调试过程中数据传输指令执行后各寄存器及数据区的内容。(6) 更改数据区的数据,考察程序的正确性。实验二 显示程序实验2.1 实验目的(1)掌握在PC机上以十六进制数形式显示数据的方法。掌握部分DOS功能调用的使用方法。(2)掌握分支程序及子程序的设计方法。(3)熟悉QTH集成编辑、调试环境和Turbo Debugger的使用。2.2 实验设备PC机一台。2.3 实验内容及说明本实验要求将指定数据区的数据以十六进制数形式显示在屏幕上,并通过DOS功能调用完成一些提示信息的显示,实验中可使用DOS功能调用(INT 21H)。表1-1 显示实验中可使用DOS功能调用AH 值功 能调 用参 数结 果1键盘输入并回显AL=输出字符2显示单个字符(带Ctrl+Break检查)DL=输出字符光标在字符后面6显示单个字符(无Ctrl+Break检查)DL=输出字符光标在字符后面9显示字符串DS:DX=串地址,$为结束字符光标跟在串后面4CH返回DOS系统AL=返回码2.4 实验步骤(1) 运行QTHPCI软件,根据实验内容编写程序。(2) 使用“项目”菜单中的“编译”或“编译连接”命令对实验程序进行编译、连接。(3) 使用“调试”菜单中“全速运行”命令运行程序,观察运行结果。(4) 使用“调试”菜单中的“进行调试”命令进入Debug调试,观察调试过程中数据传输指令执行后各寄存器及数据区的内容。(5) 更改数据区的数据,考察程序的正确性。实验三 综合程序设计实验3.1 实验目的1、掌握分支、循环和子程序调用的基本程序结构。2、掌握32位寄存器和32位指令使用的基本方法。3、学习综合程序设计、编制及调试。3.2 实验设备PC机一台。3.3 实验内容及说明1、排序实验本实验要求编写一个程序,对存储器中的一组双字进行排序,并将结果显示在屏幕上。在编写过程中,应使用32位寄存器,并且采用基址+变址+偏移的寻址方式。在程序中使用80x86指令系统中有关32位的指令、寻址方式及32位寄存器时需要在文件头使用“.386”或“.386p”。2、用32位寄存器、指令、扩展寻址方式实现数码转换及显示本实验要求将一组ASCII字符转换成16进制数码,并在屏幕上显示出来。要求使用32位寄存器、32位的指令和寻址方式。如将字符串“Welcome to SDUST”进行转换,应转换成:57H、65H、6CH、63H,6FH、6DH、65H、20H、74H、6FH、20H, 53H、44H、55H、53H、54H。3.4 实验步骤(1) 运行QTHPCI软件,根据实验内容编写程序。(2) 使用“项目”菜单中的“编译”或“编译连接”命令对实验程序进行编译、连接。(3) 用“调试”菜单中“单步”或“执行到光标处”分步调试,观察每条指令运行结果。(4) 用“调试”菜单中“全速运行”命令运行程序,再观察运行结果。(5) 更改数据区的数据,考察程序的正确性。实验四 中断特性及8259单一中断应用实验4.1 实验目的(1)学习8259中断控制器的工作原理。(2)学习8259可编程控制器的应用编程。(3)掌握使用PC机内8259的方法。(4)掌握修改中断向量的方法。4.2 实验设备PC机一台。4.3 实验内容编写一键盘中断处理程序,计数键盘中断次数,并用该程序替换系统键盘中断处理程序,使当键盘中断产生10次后,显示按键次数并结束应用。4.4 实验步骤及说明(1) 按实验内容要求编写实验程序;(2) 编译连接实验程序;(3) 运行实验,按键盘若干次,观察实验现象;(4) 画出实验流程图。4.5 附:实验原理说明中断控制是微机系统的主要管理方式之一,也是处理器与外设之间通信的最有效方法之一。它可以减少系统为反复查询外部设备状态而消耗的时间,提高了系统的整体运行效率。在现代32位微机系统中,系统的中断有两类:软件中断和硬件中断。硬件中断可以实现微机系统对外设的管理,由8259中断控制器来完成。4.5.1 关于键盘中断处理中的说明 PC微机中使用的是编码键盘,在键盘内部有一片单片机对整个键盘上的字符键、功能键、控制键和组合键进行管理,当键盘上键入一个键时,键盘上的处理器首先向微机产生硬件中断请求(IRQ1),然后将该键的扫描码传送给主机,而PC主机在IRQ1中断的作用下,调用INT 09H硬件中断读入键盘的扫描码,并转换成ASCII码,存入键盘缓冲区。本实验中的键盘中断处理程序,必须对键盘控制器完成键盘复位。复位键盘控制器只需要端口61H的内容读出,将最高位置1,再写入该端口。另外,按键按下和抬起均会引起中断,所以实际中断相应次数等于按键次数乘以2。4.5.2 8259中断控制器结构原理、寄存器使用方法参见教材4.5.3 PC微机系统中8259A的应用在现代PC微机系统中,系统中包含了两片8259A中断控制器,经级连可以管理16级硬件中断,其中部分中断源已经被系统硬件占用,具体使用情况如表4.1。两片8259A的端口地址为:主片在020H-03FH,实际使用020H和021H两个端口;从片在0A0H-0BFH范围,实际使用0A0H和0A1H两个端口。表4.1 微机系统中的硬件中断中 断 源功 能中断向量号中 断 源功 能中断向量号主8259A IRQ0定时中断08H主8259A IRQ8实时钟70H主8259A IRQ1键盘中断09H主8259A IRQ9保留71H主8259A IRQ2接从8259A0AH主8259A IRQ10保留72H主8259A IRQ3COM20BH主8259A IRQ11保留73H主8259A IRQ4COM10CH主8259A IRQ12保留74H主8259A IRQ5硬盘/并口2中断0DH主8259A IRQ13写处理中断75H主8259A IRQ6软盘0EH主8259A IRQ14硬盘控制器76H主8259A IRQ7打印机0FH主8259A IRQ15保留77H4.5.4 中断向量表80x86微机系统中能处理256个中断向量,其类型号为00H-0FFH,但其的中断处理方式及过程应根据CPU的工作模式加以区分。在保护模式下,系统中有一张中断描述符表,记录所有中断/异常处理程序的入口。在实模式下微机系统采用矢量中断,无论是内部中断还是外部中断均对应一个相应的中断向量码,每个中断向量占用4字节,分别存放中断服务程序的IP和CS。存放256个中断矢量需要占用1K字节的空间,该区域称为中断向量表,被放置于内存从0开始的1K字节区域中。表4.2中显示了PC微机在实模式下所有中断的使用情况及中断功能、中断向量表的结构。对于微机系统没有使用的中断向量,可以作为软中断被用户使用。使用前,只需要将软中断处理程序入口填入对应中断矢量即可。而微机系统已经占用的中断向量可以根据需要修改其中断向量。填写或修改中断矢量的方法为: MOV 中断矢量*4,IP地址 MOV 中断矢量*4+2,CS地址表4.2 PC微机系统中中断向量表的占用情况中断向量号功 能内存地址中断向量号功 能内存地址00H被零除000-003H20H程序终止退出080-083H01H单步004-007H21H系统功能调用084-087H02H不可屏蔽中断008-00BH22H程序结束地址088-08BH03H断点中断00C-00FH23HCtrl-C处理08C-08FH04H溢出010-013H24H严重错误处理090-093H05H屏幕打印014-017H25H绝对磁盘读094-09BH06H-07H保留018-01FH26H绝对磁盘写098-09H08H日时钟中断020-023H27H结束但驻留内存09C-09FH09H键盘中断024-027H28H-3FH保留0A0-0FFH0AH接从片8259A028-02BH40H新软盘中断向量100-103H0BHCOM202C-02F41H硬盘参数块104-107H0CHCOM1030-03H42H-4FH未使用108-13CH0DH硬盘/并口2中断03-037H50H警报功能140-143H0EH软盘中断038-03B51H鼠标功能144-147H0FH打印机/并口1中断03C-03FH52H-59H未使用148-167H10H视频显示I/O调用040-043H5AH功能168-16BH11H设备配置监测044-047H5BHRevector in 19H16C-16FH12H内存容量监测048-04BH5CH网络应用170-173H13H磁盘I/O调用04C-04FH5DH-6FH未使用174-1BFH14H串行通信I/O050-053H70H实时钟1C0-1C7H15H盒带/多功能054-057H71H保留1C4-1C7H16H键盘I/O058-05BH72H保留1C8-1CBH17H打印机I/O05C-05FH73H保留1CC-1CFH18HROM-BASIC060-063H74H保留1D0-1D3H19H自举程序064-067H75H协处理器中断1D4-1D7H1AH时钟I/O068-06BH76H硬盘控制器1D8-1DBH1BHCtrl-Break入口06C-06FH77H保留1DC-1DFH1CH时钟控制070-073H78H-7FH未使用1E0-1FFH1DH视频初始化参数表074-077H-80H-85H为BASIC保留200-217H1EH软盘参数表078-07BH86H-F0HBASIC使用区218-3C3H1FH图形显示扩展字符表07C-07FHF1H-FFH保留3C4-3FFH实验五 可编程定时器/计数器8254实验5.1 实验目的了解计数器的硬件连接方法及时序关系,掌握8254的各种模式的编程及其原理,用示波器观察各信号之间的时序关系。5.2 实验设备(1) PC机一台;(2) QTH-2008 PCI 32位微机教学实验仪一套。(3) 示波器一台。5.3 实验内容1、将32Hz的晶振频率作为8254 的时钟输入,利用定时器 8254 产生 1Hz 的方波,发光二极管不停闪烁,用示波器可看到输出的方波。2、将32.768KHz的频率信号作为8253/8254 的时钟输入,利用定时器 8253/8254 产生1024Hz的频率信号(频率发生器,方式2),用示波器观察1024Hz信号的输出。5.4 实验原理图图5.1 可编程定时器/计数器8254原理图5.5 实验步骤5.5.1 实验连线(如图5.2所示)1) 信号源模块短路32.0Hz,CLK连到8254模块的CLK0。2) 8254模块选通线CS连到ISA总线接口模块的IOY0。3) 8254模块GATE0接电源+5V;OUT0接发光二极管L1。4) 该模块的WR、RD分别连到ISA总线接口模块的XIOWR、XIORD。5) 该模块该模块的数据(AD0AD7)、地址线(A0A7)分别连到ISA总线接口模块的数据(QD0QD7)、地址线(XA0XA7)。5.5.2 运行QTHPCI软件,根据实验内容编写程序。5.5.3 运行调试编写的程序,观察发光二极管,用示波器可看到输出的方波。图5.2 8254定时器/计数器实验实验八 16C550通用串行通信实验一、实验目的1、学习有关串行通信的知识,掌握16C550芯片的原理及典型应用。2、掌握使用16C550实现双机通信的软件编制方法。二、实验设备1、PC机两台;2、QTH-2008PCI-A微机教学实验仪两套。三、实验原理图实验原理图如图15所示。图15 16C550 通用串行口接口电路四、实验内容1、由一台实验箱发送一串字符,另一台实验箱接收并在屏幕上显示接收到的相关信息。2、 两台实验箱串口通信实验:用电缆线将两个实验系统中的串口连接起来,对串口进行设置,实现数据通信。五、实验步骤1、两台实验箱通信应用实验。2、实验连线(QTH-2008PCI-A,如图16所示)。3、16C550模块的SWR、SRD分别连到ISA总线接口模块的XIOWR、XIORD。4、16C550模块的数据(AD0AD7)、地址线(A0A1)分别连到ISA总线接口模块的数据(QD0QD7)、地址线(XA0XA1)。5、16C550模块选通线CS连到ISA总线接口模块的IOY0。6、用电缆将两台实验箱串口相连。7、编译连接运行程序,观察屏蔽显示的数据:College of Information & electrical engineering,Shandong university of science and technology Qingdao Shandong China图16 与PC机通信基础实验六、附录1:PC机COM1的端口地址分配表如表13所示。表13 PC机COM1端口地址分配表:端口地址DLAB相应寄存器03F80接收数据寄存器(读),发送数据寄存器(写)03F81波特率除数寄存器(低字节)03F90中断允许寄存器03F91波特率除数寄存器(高字节)03FAX中断标识寄存器03FBX线路控制寄存器(位7即为DLAB)03FCXMODEM控制器03FDX线路状态寄存器03FEXMODEM状态寄存器附录2:16C550部分寄存器格式16C550是一种连接任何类型虚拟串行接口的可编程通信接口,使用非常广泛,是与Intel微处理器完全兼容的使用非常广泛的异步接收/发送器(UART)。它内置了16字节的FIFO缓冲器,最大通信速率可达115Kb/s,是现代基于微处理设备包括PC机和许多调制解调器的最普遍的通信接口。16C550内部有11个寄存器,在芯片选择有效的前提下,由芯片的寄存器选择输入线A2、A1和A0来确定访问的寄存器,芯片中采用两条措施来解决端口地址少的问题。发送寄存器和接收数据寄存器共用一个地址,以“写入”访问前者“读出”访问后者加以区分。除数寄存器的高字节与中断允许寄存器使用相同的地址,高字节和接收数据寄存器、发送保持寄存器使用相同的地址。为了区分,借用线路控制寄存器的最高位DLAB位来区分。访问除数寄存器时,令DLAB位为“1”;访问接收数据寄存器、发送保持寄存器和中断允许寄存器时,则将DLAB位置“0”。如表5所示。表5 16550 内部寄存器地址及其选择方法DLABA2A1A0被访问的寄存器0000接收数据寄存器(读),发送保持寄存器(写)0001中断允许寄存器IER1000波特率除数寄存器(低字节)1001波特率除数寄存器(高字节)X010中断识别寄存器IIR(只读),FIFO控制器FCR(只写)X011线路控制寄存器LCRX100MODEM控制寄存器MCRX101线路状态寄存器LSRX110MODEM状态寄存器MSRX111Scratch寄存器寄存器控制字说明如下:1、 线路控制寄存器(LCR),主要用于指定异步串行通信的数据格式。见表6。表6 LCR格式D7D6D5D4D3D2D1D0DLABSBSPEPSPENSTBWLS1WLS0除数寄存器访问允许中止设定附加奇偶标志位选择奇偶校验选择奇偶校验允许停止位选择字符长度选择2、 线路状态寄存器(LSR),主要是向处理器提供有关数据传输状态。见表7。表7 LSR格式D7D6D5D4D3D2D1D0TSRETHREBIFEPEOEDRFIFO中接收数据错误发送移位寄存器空发送保持寄存器空中止识别指示接收格式错接收奇偶错接收重叠错接收缓冲区满3、 波特率除数寄存器,用该寄存器设置串行数据的传送波特率。除数寄存器值=基准时钟频率÷(16×波特率)16C550芯片输入的基准时钟频率为3.6864MHz,若波特率为9600b/s,则除数寄存器为0018H,DLH中应填00H,DLL中应填18H。4、 中断允许寄存器(IER),16C550共有4级中断,按优先级从高到低依次为:接收中断出错、接收缓冲器满中断,发送保持寄存器空中断和MODE(M)输入状态改变中断。这些中断的允许或屏蔽由IER来控制,见表8。表8 IER格式D7D6D5D4D3D2D1D00000I0EI3EI1EI2E类型0中断MODE状态改变1=允许0=屏蔽类型3中断接收出错1=允许0=屏蔽类型1中断发送保持器空1=允许0=屏蔽类型2中断接收缓冲器满1=允许0=屏蔽5、 中断标识寄存器(IIR),当16C550处于中断处理方式,IIR指出有无待处理的中断发生及其类型,并且封锁比此类优先级低的所有类型中断,见表9。表9 IIR格式D7D6D5D4D3D2D1D0FIFO指示标志00超时中断中断类型标识未决中断指示00=无FIFO01=允许FIFO,但不可用11=允许FIFO0=不超时1=超时11=接收出错10=接收缓冲器满01=发送保持器空00=MODE状态改变0=有1=无6、 MODEM控制器(MCR),MCR控制芯片的4个引脚的输出和芯片的环路检测,见表10。表10 MCR格式D7D6D5D4D3D2D1D0000环路检测输出2输出1请求发送数据终端就绪0=正常收发1=内部自循环1=OUT2置01=OUT1置01=RTS置01=DTR置07、 MODEM状态寄存器(MSR),MSR反映UART与通信设备(如MODEM)之间联络信号的当前状态以及这些信号的变化情况,见表11。表11 MSR格式D7D6D5D4D3D2D1D0RLSDRIDSRCTSRLSDTERIDSRCTS收到接收线载波检测收到振铃指示收到数传机就绪收到清除发送RLSD位发生改变收到振铃指示后沿DSR位发生变化CTS位发生变化说明:l D7=1表示输入引脚RLSD=0,MODEM收到来自电话线的载波信号。l D6=1表示输入引脚RI=0,MODEM收到振铃信号。l D5=1表示输入引脚DSR=0,MODEM做好了发送准备,请16550准备接收。l D4=1表示输入引脚CTS=0,MODEM做好了接收准备,16C550可以发送数据。l D3,D1,D0位为“1”是说明在上次读取MSR之后,MSR的D7,D5,D4中相应的位发生了变化。l D2位为“1”是说明输入芯片的RI已由逻辑“1”变成逻辑“0”。8、 FIFO控制寄存器(FCR),16C550增加了一个FIFO缓冲器,用于缓冲正在发出或接收的数据,这是早期的UART器件所没有的,具体见表12。表12 FCR格式D7D6D5D4D3D2D1D0接收端中断触发器水平(MSB)接收端中断触发器水平(LSB)不用保留DMA方式清除发送FIFO缓冲器清除接收FIFO缓冲器允许FIFO缓冲器工作七、注意事项1、注意16C550控制字的装填。2、各寄存器地址要清楚。3、发送成功后的结果是屏幕显示出来。实验六 用PCI BIOS获取设备配置资源实验PCI BIOS函数提供了一个软件接口,用于操作包含PCI的硬件系统,它的主要用途是操作PCI特殊地址空间(PCI配置空间和特殊地址周期)。 QTH-2008PCI实验系统采用PCI总线外扩经转接逻辑提供仿真ISA的形式,提供了一个可以连接低速接口芯片和设备的总线接口。在使用这个接口资源实验接口外扩之前,需要掌握PCI总线资源配置的有关内容。6.1 实验目的掌握使用32位汇编语言,运用IO端口查询和中断方式查找PCI板卡或者列出当前系统中所拥有的PCI设备的配置空间的方法。6.2 实验设备PC机一台,QTH-2008PCI实验装置一套。6.3 实验内容编写一实验程序,应用PCI BIOS提供的调用接口,显示实验装置获得的系统资源,显示内容主要包括:所有的基地址寄存器及中断请求线内容。根据配置空间的原理编写一个PCI配置空间的程序。此程序可获得PC机上的板卡的硬件信息,如IO的起始地址,MEMORY的起始地址,当前板卡所占用的系统中断号。采用IO端口查询方式。6.4 实验说明本实验通过使用PCI BIOS中的部分调用接口,直接获取实验用PCI总线扩展卡的配置资源。6.5 实验步骤(1)按实验内容中的要求,实验流程及参考实验程序片断编写实验程序;(2)确认无误后编译、连接;(3)运行程序,观察屏幕显示,是否与“我的电脑”属性中分配的硬件资源相同。6.6附录:有关PCI总线PCI总线上定义了三种物理地址空间:内存地址空间、I/O地址空间和配置地址空间,其中内存地址空间和I/O地址空间为通常意义地址空间,而配置地址空间用于支持PCI的硬件配置。6.6.1 PCI配置空间PCI总线设备中的配置地址空间是一个容量为256字节并具有特定记录结构或模型的地址空间。该空间又分为头标区和设备有关区两部分。头标区的长度为64字节,是每个PCI设备都必须支持的寄存器分配区域,该区中的各个字段用来唯一的识别设备,并使设备可以得到控制。头标区的前16个字节定义在各种类型的设备中都是一样的,而其余48字节可以根据设备支持的基本功能进行不同的配置。表6.1显示了头标区的分配情况。 表6.1 PCI配置空间头标区列表设备识别(VxD)供应商代码(DID)00H状态寄存器命令寄存器04H分类代码修改版本08H内含自测试头标类型延时计数缓冲区大小0CH基地址寄存器010H基地址寄存器114H基地址寄存器218H基地址寄存器31CH基地址寄存器420H基地址寄存器524H保留28H保留2CH扩展ROM基地址寄存器30H保留34H保留38HMAX_LATMIN_GNT中断管脚中断线3CH6.6.2 基地址寄存器PCI设备的地址空间可以在系统中浮动是PCI总线的重要功能之一,它能够简化设备的配置过程。在系统上电时,与设备无关的系统软件将确定系统中有那些设备存在,并建立一个统一的地址映射关系,确定一个设备是否有扩展ROM。上电软件在引导操作系统之前必须要建立一个统一的地址映射,以确定系统中有多少的存储器,多少的I/O设备以及这些存储器、I/O设备占用的空间。当确定这些信息后,上电软件就可以把I/O控制器及存储器映射到系统的合理地址空间并引导系统。为了使这种映射能够与设备无关,从而在配置空间的头标区中安排了一个供地址映射使用的基地址寄存器。所有的基地址寄存器的第0位均为只读位,其0/1值可以表示该寄存器映射的地址空间是存储器空间/I/O空间。从表6.1可以看出,从头标区的10H字节开始有6个基地址寄存器,每个基地址寄存器占用4字节的地址。因为QTH-2008PCI实验系统中使用了PCI控制芯片,实验用QTH-2008PCI总线扩展卡一共可以使用5个基地址寄存器,其中基地址0寄存器映射到64字节的I/O空间中,是控制芯片给用户提供控制接口。另外4个基地址寄存器分别映射到不同大小的I/O空间和寄存器空间中。其资源分配情况如表6.2示。表6.2 QTH-2008PCI总线扩展卡资源申请情况寄存器空间类型大小BASE0I/O空间64BBASE1I/O空间64BBASE2I/O空间256BBASE3存储器空间64KBBASE4I/O空间64B6.6.3 中断请求线寄存器 中断请求线寄存器是一个8位的寄存器,其值用来表示PCI设备的中断引脚和系统中断控制器的那个输入端连接。该寄存器的值是由系统分配的,对于系统的两片8259中断控制器的某个IRQ号(0-15),如果该寄存器的值为255,表示设备没有连接到中断控制器。6.6.4 PCI BIOS Plug-N-Play的概念最早是由IBM提出的,是为了允许通过使用特殊的可读写地址译码寄存器,对总线设备进行动态地址分配。这些寄存器提供了一个载体,使得系统软件可以识别每个总线设备并且动态的为他们分配存储地址。后来,Intel将这个概念结合到PCI总线规格说明中,Microsoft也将此当成操作系统软件的规则,并提供了用以检索硬件资源分配的驱动程序接口。 在现代32位微机系统结构中,系统BIOS中包括了PCI局部总线,PCI BIOS和Plug-N-Play BIOS。PCI BIOS 执行两个部分的功能:它提供了可以使应用软件和PCI总线设备或板卡进行通讯的附加硬件指定软件;也可以初始化每个系统PCI设备。在系统硬件上电复位发生后,PCI BIOS轮询每个PCI插槽,查找存在的PCI设备。如果找到设备,PCI BIOS将读取每个设备配置空间的头标区,以决定设备的厂商号,类型,类,存储需求等内容,并且将分配的I/O或存储空间地址回写到每个设备配置空间的基地址寄存器中(BADRx)。在一个80x86微机系统中,可以通过1AH的BIOS调用来实现对PCI设备配置的存取访问。表6.3给出了PCI BIOS功能调用返回值的列表,表6.4给出了PCI BIOS功能调用的列表,每个功能的调用 参数及返回参数具体说明可以参看附录或查询PCI BIOS的规格说明书。表 6.3 PCI BIOS功能调用返回值列表返 回 值 说 明AH成功调用00H不支持的功能81H错误的厂商号83H未找到设备86H错误的寄存器号87H设置失败88H缓冲区太小89H表6.4 PCI BIOS功能调用列表功 能 说 明INTAHALPCI BIOS存在查询1AH0B1H01H查找PCI设备1AH0B1H02H查找PCI设备的类代码1AH0B1H03H产生特殊周期1AH0B1H06H读配置寄存器-单字节操作1AH0B1H08H读配置寄存器-单字操作1AH0B1H09H读配置寄存器-双字操作1AH0B1H0AH写配置寄存器-单字节操作1AH0B1H0BH