首页 PCI总线标准协议(中文版)

PCI总线标准协议(中文版)

举报
开通vip

PCI总线标准协议(中文版)微型计算机原理1/4ページ8.4.2PCI总线信号定义在一个PCI应用系统中,如果某设备取得了总线控制权,就称其为"主设备";而被主设备选中以进行通信的设备称为"从设备"或"目标节点''。对于相应的接口信号线,通常分为必备的和可选的两大类,为了进行数据处理、寻址、接口控制、仲裁等系统功能,PCI接口要求作为目标的设备至少需要47条引脚,若作为主设备则需要49条引脚。下面对主设备与目标设备综合考虑,并按功能分组将这些信号表示在图8.19中。其中,必要的引脚在左边,任选的引脚在右边。一.信号类型说明图8.19PCI引脚...

PCI总线标准协议(中文版)
微型计算机原理1/4ページ8.4.2PCI总线信号定义在一个PCI应用系统中,如果某设备取得了总线控制权,就称其为"主设备";而被主设备选中以进行通信的设备称为"从设备"或"目标节点''。对于相应的接口信号线,通常分为必备的和可选的两大类,为了进行数据处理、寻址、接口控制、仲裁等系统功能,PCI接口要求作为目标的设备至少需要47条引脚,若作为主设备则需要49条引脚。下面对主设备与目标设备综合考虑,并按功能分组将这些信号表示在图8.19中。其中,必要的引脚在左边,任选的引脚在右边。一.信号类型说明图8.19PCI引脚示图为了叙述方便,将PCI信号按数传方向及驱动特性划分为五种类型,各种类型的规定如下:in:输入信号。out:输出驱动信号。t/s:表示双向三态输入/输出驱动信号。s/t/s:持续三态(SustainedTri-State),表示持续的并且低电平有效的三态信号。在某一时刻只能属于一个主设备并被其驱动。这种信号从有效变为浮空(高阻状态)之前必须保证使其具有至少一个时钟周期的高电平状态。另一主设备要想驱动它,至少要等到该信号的原有驱动者将其释放(变为三态)一个时钟周期之后才能开始。同时,如果此信号处于持续的非驱动状态时,在有新的主设备驱动它之前应采取上拉措施,并且该措施必须由中央资源提供。o/d:漏极开路(OpenDrain)可作线或形势允许多个设备共同使用,二.PCI总线信号定义PCI总线的信号线共有100根,下面按功能分组进行说明。http://www.hljnzy.net/kejian/weijijiekou/second/chapter8/c2-8-4-2.htm2006-11-24微型计算机原理2/4ページ1.系统引线CLKin:时钟输入,为所有PCI上的接口传送提供时序。其最高频率可达66MHz,最低频率一般为0(DC),这一频率也称为PCI的工作频率。对于PCI的其他信号,除、、、之外,其余信号都在CLK的上升沿有效(或采样)。in:复位,用来使PCI专用的特性寄存器和定时器相关的信号恢复规定的初始状况。每当复位时,PCI的全部输出信号一般都应驱动到第三态。2.地址和数据引线AD0~AD31t/s:地址、数据多路复用的输入/输出信号。在有效时,是地址周期;在和同时有效时,是数据周期。一个PCI总线的传输中包含了一个地址信号周期和一个(或多个)数据周期。PCI总线支持突发方式的读写功能。地址周期为一个时钟周期,在该周期中AD0~AD31线上含有一个32位的物理地址。对于I/O操作,它是一个字节地址;若是存储器操作和配置操作,则是双字地址。在数据周期,AD0~AD7为最低字节,AD24~AD31为最高字节。当有效时,表示写数据稳定有效,有效表示读数据稳定有效。~3t/s:总线命令和字节使能多路复用信号线。在地址周期内,这四条线上传输的是总线命令;在数据周期内,传输的是字节使能信号,用来表示在整个数据期中,AD0~AD31上哪些字节为有效数据。3.接口控制信号s/t/s:帧周期信号。由当前主设备驱动,表示一次访问的开始和持续时间。无效时,是传输的最后一个数据周期。s/t/s:主设备准备好信号。该信号有效表明发起本次传输的设备(主设备)能够完成一个数据期。它要与配合使用,当这两者同时有效时,才能进行完整的数据传输,否则即为等待周期。在写周期,该信号有效时,表示有效的数据信号已在AD0~AD31中建立;在读周期,该信号有效时,表示主设备已做好接收数据的准备。s/t/s:从设备准备好信号。该信号有效表示从设备已做好完成当前数据传输的准备工作,此时可进行相应的数据传输。同样,该信号要与配合使用,这两者同时有效数据才能进行完整传输。在写周期内该信号有效表示从设备已做好了接收数据的准备。在读周期内,该信号有效表示有效数据已被送入AD0~AD31中,同理,和的任何一个无效时都为等待周期。s/t/s:停止数据传送信号,该信号由从设备发出。当它有效时,表示从设备请求主设备终止当前的数据传送。s/t/s:锁定信号。是由PCI总线上发起数据传输的设备控制的,如果有几个不同的设备在使用总线,但对信号的控制权只属于一个主设备(由信号标定)。当信号有效时,表示驱动它的设备所进行的操作可能需要多个传输才能完成,如果对某一设备具有可执行的存储器,那么它必须能实现锁定,以便实现主设备对该存储器的完全独占性访问。对于支持锁定的目标设备,必须能提供一个互斥访问块,且该块不能小于16个字节。连接系统存储器的主桥路也必须使用。IDSELin:初始化设备选择信号。在 参数 转速和进给参数表a氧化沟运行参数高温蒸汽处理医疗废物pid参数自整定算法口腔医院集中消毒供应 配置读写传输期间,用作片选信号。s/t/s:设备选择信号,由从设备驱动,该信号有效时,表示驱动它的设备已成为当前访问的从设备。它有效表明总线上的某一设备已被选中。4.仲裁信号t/s:总线请求信号。该信号一旦有效即表示驱动它的设备要求使用总线。它是一个点到点的信号线,任何主设备都应有自己的信号。t/s:总线允许信号。用来向申请占用总线的设备表示其请求已获批准。这也是一个点到点的http://www.hljnzy.net/kejian/weijijiekou/second/chapter8/c2-8-4-2.htm2006-11-24微型计算机原理3/4ページ信号线,任何主设备都应有自己的信号。5.错误报告信号为了能使数据可靠、完整地传输,PCI局部总线标准要求所有挂于其上的设备都应具有错误报告线。s/t/s:数据奇偶校验错误报告信号,但是该信号不报告特殊周期中的数据奇偶错。一个设备只有在响应设备选择信号和完成数据期之后,才能报告一个。对于每个数据接收设备,如果发现数据有错误,就应在数据收到后的两个时钟周期将激活。该信号的持续时间与数据期的多少有关,如果是一个数据期,则最小持续时间为一个时钟周期;若是一连串的数据期并且每个数据期都有错,那么的持续时间将多于一个时钟周期。由于该信号是持续的三态信号,所以该信号在释放前必须先驱动为高电平。另外,对数据奇偶错的报告不能丢失也不能推迟。o/d:系统错误报告信号。该信号用于报告地址奇偶错,特殊命令序列中的数据奇偶错,以及其他可能引起灾难性后果的系统错误。是漏极开路信号,由返遣错误的单元驱动,在一个PCI时钟内有效。信号的发出和时钟同步,因而满足总线上所有其他信号的建立时间和保持时间的要求。6.中断信号中断在PCI总线上是可选用的,低电平有效,用漏极开路方式驱动。同时,此类信号的建立和撤销是与时钟不同步的。PCI为每一个单功能设备定义一根中断线。对于多功能设备或连接器,最多可有4条中断线。对于单功能设备,只能使用,其余3条中断线无意义。PCI局部总线有四条中断线,定义如下:o/d:中断A,用于请求一次中断。o/d:中断B,用于请求一次中断并只在多功能设备上有意义。o/d:中断C,功能同中断B。o/d:中断D,功能同中断B。多功能设备上的任何一种功能都能连到任何一条中断线上。中断寄存器决定该功能用哪一条中断线去请求中断。如果一个设备只用一条中断线,则这条中断线就称为INTA,如果该设备用了两条中断线,那么它们就称为INTA和INTB,依此类推。对于多功能设备,可以是所有功能用一条中断线,也可以是每种功能有自己的一条中断线,还可以是上两种情况的综合,一个单功能设备不能用一条以上的中断线去申请中断。系统供应商在对PCI连接器的各个中断信号和中断控制器进行连接时,其方法是随意的,可以是线或方式、程控电子开关方式,或者是二者的组合,这就是说,设备驱动程序对于中断共享事先无法作出任何假定,即它必须能够给任何逻辑设备提供中断。7.高速缓存(Cache)支持信号为了使具有可缓存功能的PCI存储器能够和贯穿写(Write-Through)或回写(Write-Back)的Cache相配合工作,可缓存的PCI存储器应该能实现两条高速缓存支持信号作为输入。如果可缓存的存储器位于PCI总线上,那么连接回写式Cache和PCI的桥路必须要利用两条引脚,且作为输出,而连接贯穿写式Cache的桥只需要实现一个信号。上述两个信号的定义如下:in/out:双向试探返回信号(SnoopBackoff)。当其有效时,说明对某修改行的一次命中,所访问的数据为无效数据。当无效而SDONE有效时,说明PCI发起方正在访问存储器的有效行并可进行高速缓存的操作。SDONEin/out:监听完成信号(SnoopDone),表明对处理器Cache对主存的监听状态。当其无效时,说明监听仍在进行,否则表示监听已经完成。8.64位总线扩展信号如果要进行64位扩展,以下信号都要使用。http://www.hljnzy.net/kejian/weijijiekou/second/chapter8/c2-8-4-2.htm2006-11-24微型计算机原理4/4ページAD32~AD63t/s:扩展的32位地址和数据多路复用线,在地址周期(如果使用了双地址周期DAC命令且有效时)这32条线上含有64位地址的高32位,否则它们是保留的;在数据周期,当和同时有效时,这32条线上含有高32位数据。~7t/s:总线命令和字节使能多路复用信号线。在数据周期,若和同时有效时,该4条线上传输的是表示数据线上哪些字节是有意义的字节使能信号。如对应第4个字节,对应第5个字节。在地址周期内,如果使用了DAC命令且信号有效,则表明~7上传输的是总线命令,否则这些位是保留的且不确定。s/t/s:64位传输请求。该信号由当前主设备驱动,表示本设备要求采用64位通路传输数据。它与有相同的时序。s/t/s:64位传输认可。表明从设备将用64位传输。此信号由从设备驱动,并且和具有相同的时序。PAR64t/s:奇偶双字节校验。是AD32~AD63和~7的校验位。当有效且~3上是DAC命令时,PAR64将在初始地址周期之后一个时钟周期有效,并在DAC命令的第二个地址周期后的一个时钟周期失效。当和同时有效时,PAR64在备数据期内稳定有效,并且在或发出后的第一个时钟处失效。PAR64信号一旦有效,将保持到数据周期完成之后的一个时钟周期。该信号与AD32~AD63的时序相同,但延迟一个时钟周期。该信号线在任何给定的总线周期内应保证连同AD32~AD63和~7在内的所有信号线上的“1”的个数为偶数(偶校验)或者为奇数(奇校验)。在发送时产生而在接收时进行校验。http://www.hljnzy.net/kejian/weijijiekou/second/chapter8/c2-8-4-2.htm2006-11-24微型计算机原理1/5ページ8.4.3PCI总线的操作※总线命令※命令使用 规则 编码规则下载淘宝规则下载天猫规则下载麻将竞赛规则pdf麻将竞赛规则pdf ※PCI总线协议※PCI总线的数据传输过程一.总线命令总线命令是由主设备发向从设备,其作用是规定主、从设备之间的传输类型,它出现于地址周期的3上。这里的主设备是指通过仲裁而获得总线控制权的设备;从设备是指由:~3上命令及AD0~A上的地址所选中的目标设备。表8.1给出了总线编码及类型说明。其中,命令编码中的1表示高电平,0表示低电平。1.中断应答命令中断应答命令是一个读命令,执行主设备从申请中断的从设备中读回中断矢量的操作。2.特殊周期命令该命令为PCI总线提供了一个简单的信息广播机制,通报处理器的状态或在各个从设备之间传递信息。表8.1总线命令表3.I/O读命令该命令用来从一个映射到I/O地址空间的设备中读取数据。4.1/O写命令该命令用来向一个映射到1/O地址空间的设备写入数据。5.保留命令http://www.hljnzy.net/kejian/weijijiekou/second/chapter8/c2-8-4-3.htm2006-11-24微型计算机原理2/5ページ保留命令编码留作将来使用。PCI的任何设备都不能将它们挪作它用,任何设备也不允许对保留命令出反应。6.存储器读命令该命令用来从一个映射到存储器地址空间的设备读取数据。7.存储器写命令该命令用来向一个映射到存储器空间的设备写入数据。8.配置读命令该命令用来从每个设备的配置空间读取数据。9.配置写命令该命令向每个设备的配置空间写入数据。10.存储器多行读命令该命令的作用是试图在主设备断开连接之前读取多行高速缓存数据。存储控制器应保证,只要效,就连续不断地发存储器请求。该命令预定用于大块连续数据的传输。11.双地址周期(DAC)命令该命令用于传送64位地址给支持64位寻址的设备。只支持32位寻址的目标把这种命令当作保留待,而对该命令不响应。12.存储器一行读命令该命令与存储器读命令不同之处在于它还表示主设备要求读取多于两个32位的PCI数据周期,即进行据传送。此时,一次读一行缓存范围内所有数据,而不是一个单一的存储器周期。13.存储器写无效命令该命令与存储器写命令不同之处是它要保证最小的传输量是一个高速缓存的行,即主设备要在一次P中将寻址的高速缓存行的每个字节都写入,写入后发布写无效命令,用于维护Cache一致性的写无效协议。二.命令使用规则所有PCI设备都是配置(读和写)命令的目标,都必须做出应答。对其他的命令则有选择地响应。命令执保证I/O(读和写)命令的执行顺序。有重定位功能或寄存器的目标设备应能通过配置寄存器映射到存储空就为没有I/O空间设备的使用提供了一种选择。当这种映射实现时,无论设备映射到I/O空间还是存储器命令执行规则都对系统设计者提供保证。总线主控可以根据需要使用任选指令,目标(从设备)也可根据需要而选用指令,但如果它选用了基本指令,它就必须支持所有存储器命令。否则,就必须利用别名将这些为优化性能而设的命令(存储器一行储器多行读和存储器写无效命令),转变为基本的存储器命令。例如,一个从设备可以不实现存储器一行令,但是它必须能接受该命令的请求,并按存储器读命令来处理。同理,一个从设备可以不实现存储器写但它必须能接受该命令的请求,并按存储器写命令来处理。对于系统存储器的数据读写,建议在主设备支持的情况下尽量采用存储器写无效命令和存储器行读命果主设备确实不能支持上述优化性能的命令,可采用存储器读写命令。对于使用存储器读命令的主设备,所有命令可进行任何长度的访问。三.PCI总线协议PCI的总线传输机制是突发成组传输。一个突发分组由一个地址周期和一个(多个)数据周期组成。存储器空间和I/O空间的突发传输。这里的突发传输是指主桥(位于主处理器和PCI总线之间)可以将多个写访问在不产生副作用的前提下合并为一次传输,一个设备通过将基址寄存器的预取位置1,来表示允许预和合并写数据。一个桥可利用初始化时配置软件所提供的地址范围,来区分哪些地址空间可以合并,哪些不并。当遇到要写的后续数据不可预取或者一个对任何范围的读操作时,在缓冲器的数据合并操作必须停止并的合并结果清洗,但其后的写操作,如果是在预取范围内,便可与更后面的写操作合并,但无论如何不能与并过的数据合并。只要处理器发出的一系列写数据(双字)所隐含的地址顺序相同,主桥路总是可以将它们组成突发数据于从处理器中发出的I/O操作不能被组合,所以这种操作一般只有一个数据周期。在PCI总线中,除了、、、、之外,其他所有信号都在时钟上升沿被采个信号都有相对于时钟前沿的建立和保持时间,在此期间不允许有信号跳动,该时间一过,信号的变化就无了。这样的时间范围,对AD0~AD31、AD32~AD63、PAR、PAR64和IDSEL信号,只是在适当的时钟沿对、、、、、、、、、、、、,在每个时钟沿都存在;对、~3、~7(用作总线命令),只在一次有效的时钟沿存在。~3和~7(用作字节允许)在地址段或数据段完成后的那个时钟http://www.hljnzy.net/kejian/weijijiekou/second/chapter8/c2-8-4-3.htm2006-11-24微型计算机原理3/5ページ有时间限制。、、、和则不受此限制。1.PCI总线的传输控制PCI总线上所有的数据传输基本上都是由以下三条信号线控制的::由主设备驱动,指明一个数据传输的起始和结束。:由主设备驱动,允许插入等待周期。:由从设备驱动,允许插入等待周期。一般来说,PCI总线的传输遵循如下管理规则:(1)和定义了总线的忙、闲状态。当其中一个有效时,总线是忙的;两个都无效时,总空闲状态。(2)一旦信号被置为无效,在同一传输期间不能重新设置。(3)除非设置了信号,一般情况下不能设置信号无效。(4)一旦主设备设置了信号,直到当前数据期结束为止。主设备不能改变信号和状态。2.PCI的编址PCI定义了三个物理地址空间:存储器地址空间、I/O地址空间和配置地址空间,前两个是一般总线都有空间;第三个是用以支持PCI硬件配置的特殊空间。PCI总线的编址是分布式的,每个设备都有自己的地址译码,从而省去了中央译码逻辑。PCI支持两种设备地址译码:正向译码和负向译码。所谓正向译码就是每个设备都监视地址总线上的访问地址是否落在它范围内,因而速度较快。而负向译码是指该设备要接受未被其他设备在正向译码中接受的所有访问,因此,码方式只能由总线上的一个设备来实现。由于它要等到总线上其他所有设备都拒绝之后才能译码,所以速度然而,负向译码对于标准扩展总线这类设备是很有用的,因为这类设备必须响应一个很零散的地址空间。正和反向译码设备都不对保留的总线命令发出响应信号。(1)I/O地址空间在I/O地址空间,全部32位AD线都被用来提供一个完整的地址编码(字节地址),使得要求地址精确一级的设备不需多等一个周期就可完成地址译码(产生信号),也使负向地址译码节省了一个时钟在I/O访问中,AD0~AD1这两位很重要,并要与~3配合,才能进行一次有效的访问。(2)内存地址空间在存储器访问中,所有的目标设备都要检查AD0~AD1,要么提供所要求的突发传输顺序,或者执行一备断开操作。对于所有支持突发传输的设备都应能实现线性突发性传输顺序,而高速缓存的行切换不一定实存储器地址空间,用AD2~AD31译码得到一个双字地址的访问。在线性增长方式下,每个数据周期过后,一个DWORD(4个字节)增长,直到对话结束。在存储器访问期间,AD0AD1的含义如下:当AD0AD1为00时,突发传输顺序为线性增长方式;AD0AD1为01时,为高速缓存行切换方。式;A为1X时,为保留。(3)配置地址空间在配置的地址空间中,要用AD2~AD7将访问落实到一个DWORD地址。当一个设备收到配置命令时,IDSEL信号成立且AD0AD1为00,则该设备即被选为访问的目标。否则就不参与当前的对话。如果译码出来符合某桥路的编号,且AD0AD1为01,则说明配置访问是对该桥后面的设备,即不与桥直接连接的设备。(4)字节校正用字节使能信号~3来指出哪些字节带了有意义的数据,在每个数据周期内,可以自由改变字节能,使之对传输数据的实际含义和有效部分进行界定,这一功能称作字节校正或字节对齐。(5)总线的驱动与过渡为了避免多个设备同时驱动一个信号到PCI总线上而产生竞争,在一个设备驱动到另一个设备之间设http://www.hljnzy.net/kejian/weijijiekou/second/chapter8/c2-8-4-3.htm2006-11-24微型计算机原理4/5ページ个过渡期,又称为交换周期。在时序图上,交换期用"→←"来表示。在每个地址周期和数据周期,所有的AD线都必须被驱动到稳定的状态(数据),即使是在当前数据传涉及到的字节所对应的AD线也不例外。在实际应用中,如果对功耗要求较高时,为尽量减少由于总线上信所造成的功耗,对当前总线周期中不用的字节用与前一周期相同的数据去驱动它们。四.PCI总线的数据传输过程PCI的数据传输过程包括读传送、写传送、传送终止等。由于篇幅的原因,本节只介绍PCI总线上的读(读操作)。时序图8.20中示出了参与32传送的各种重要信号之间的关系。实线表示正被当前总线主控或目标驱动号;虚线表示没有设备驱动的信号,但若此虚线处在基准位置时,仍然可表示它具有一个稳定的值;当三态虚线画在高、低状态之间时,说明它的值是不稳定的(如,AD线或线);当一实线变成连续的点画线表明它由原来的被驱动状态变成了现在的三态;当一实线由低向高跳变后成为连续的点画线时,则说明该信过预充电变为高电平,然后变成三态(释放)。图8.20表示了PCI总线上的一次读操作中有关信号的变化情况。从图中可看出,一旦信号有效,地址周期就开始,并在时钟2的上升沿处稳定有效。在地址周AD0~AD31上包含有效地址,~3上含有一个有效的总线命令。数据期是从时钟3的上升沿处开始此期间,AD0~AD31线上传送的是数据,而线上的信息指出数据线上的哪些字节是有效的(即哪几是当前要传输的)。要特别指出的是,无论是读操作还是写操作,从数据周期的开始一直到传输的完成,的输出缓冲器必须始终保持有效状态。图8.20PCI的基本读操作图中的信号和信号是由地址周期内所发地址选中的设备(从设备)提供的,但要保证http://www.hljnzy.net/kejian/weijijiekou/second/chapter8/c2-8-4-3.htm2006-11-24微型计算机原理5/5ページ之后出现。而信号是发起读操作(主设备)根据总线的占有情况自动发出的。数据的真正传和同时有效的时钟前沿进行的,这两个信号的其中之一无效时,就表示需插入等待周期,此时数据传输。这就说明,一个数据周期可以包含一次数据传输和若干个等待周期。在图8.20中,时钟4,6,进行了一次数据传输,而在时钟3,5,7处插入了等待周期。在读操作的地址周期和数据周期之间,AD线上要有一个交换周期,这需要由从设备利用强制实就是的发出必须比地址的稳定有效晚一拍)。但在交换周期过后并且有信号时,从设备必须线。在时钟7处尽管是最后一个数据周期:但由于主设备因某种原因不能完成最后一次传输(此时无故不能撤销,只有在时钟8处,变为有效后,信号才能撤销。http://www.hljnzy.net/kejian/weijijiekou/second/chapter8/c2-8-4-3.htm2006-11-24微型计算机原理1/5ページ8.4.4PCI总线开发技术由以上 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 可知,PCI总线具有严格的标准和规范,这就保证了它具有良好的兼容性,符合PCI规范的扩展卡可插入任何PCI系统可靠地工作;PCI总线可以提供高数据传送速率(132MB/s)或(264Mb/s);PCI总线与CPU无关,与时钟频率亦无关,可适用于各种平台,支持多处理器和并发工作;PCI总线还具有良好的扩展性,通过PCI-PCI桥路,可进行多级扩展。PCI总线的自动配置功能使其应用更为简单、方便,由于该总线标准为元件和插件分配了相应的配置寄存器,对于某个系统只要有嵌入的自动配置软件,就可以在系统加电时自动配置PCI总线上的设备,为用户提供了极大的方便。PCI总线是目前PC机上最先进的一种总线。以下分硬件和软件两个方面来说明PCI总线开发技术。一、PCI总线协议专用芯片PCI总线协议非常复杂。如果开发PCI扩展板使用可编程逻辑阵列芯片来完成PCI协议的执行,其工作量和难度都是很大的,为了简化设计可以使用第三方生产的PCI总线协议芯片.如PLX的PCI9080、PCI9052、PCI9060ES,AMCC的S5933,S5920,Intel公司的i960RP等。S5933是功能强大、使用方便的PCI协议控制芯片。该芯片符合PCI局部总线规范2.1版,可以作为PCI总线目标设备,实现基本的传送要求,也可以作为PCI总线主控设备,访问其他PCI总线设备。S5920则主要用于设计总线上的目标设备不具有PCI总线控制功能。PCI9052是PLX技术公司为扩展适配板卡推出的高性能PCI总线目标(从)模式的接口芯片。该芯片可与多种局部总线相连,并且支持相对慢的局部总线在PCI总线上的突发传送速率达到132MB/s。PCI9052的可编程配置直接与复用或非复用的8/16/32位局部总线相连。8位和16位模式便于ISA卡直接向PCI卡转换。PCI9052接口芯片作为通用PCI接口,其应用场合和范围是广泛的。随着PC机中ISA扩展槽数量的逐渐减少直至取消,PCI扩展槽已成为PC机主板配置的主流,今后的扩展板的开发必定是基于PCI接口的。1.PCI9052的主要功能与特性●符合PCI2.1规范,支持低成本从属适配器;●带有五个局域总线地址空间和四个片选;●具有双向FIFO,可用于零等待状态突发操作;●PCI总线的传输速度可高达132兆字节/秒;●支持多路复用和非多路复用的8位、16位和32位通用局城总线;●支持局域总线与FCI时钟的异步运行;●支持Big/LittleEndian编码字节转换;●支持来自两个局域总线的中断所生成的PCI中断;●可用串行EEPROM装载配置信息;●具有ISA模式,支持PCI总线到ISA总线的单周期存储器(8位、16位)读写和I/O访问。2.PCI9052的应用操作http://www.hljnzy.net/kejian/weijijiekou/second/chapter8/c2-8-4-4.htm2006-11-24微型计算机原理2/5ページ图8.21PCI9052的信号接口示意图(1)初始化在上电时,PCI总线的RST信号有效,同时,PCI9052输出局部复位信号LRESET并检查EEPROM是否存在数值。若存在,则根据EEPROM中的内容设置内部寄存器,否则设为缺省值。PCI配置寄存器只能通过EEPROM或PCI主机CPU来进行设置。(2)复位PCI9052总线接口在RST信号输入有效时将引起整个PCI9052的复位,并输出LRESET局部复位信号。PCI总线上的主机可以通过设置控制寄存器中的软件复位比特来对PCI9052进行复位,并输出面LRESET信号。(3)串行存储器接口复位后,PCI9052开始读串行EEPROM,若读出的第一个字非FFFFH,则PCI9052继续读操作,否则认为EEPROM无效。对PCI9052来讲,EEPROM的前四个字节应为52H、90H、B5H和10H,其中9052H为设备号,10B5H为厂商编号。(4)寄存器访问PCI9052的内部寄存器可通过PCI总线的主机CPU和串行EEPROM进行访问,这些内部寄存器分为PCI配置寄存器和局部总线配置寄存器。主要有以下几种:●设备与厂商寄存器:该寄存器位于PCI配置寄存器的起始处,用于标识设备类别及制造厂家;●状态寄存器:状态寄存器内含与PCI总线相关的事件信息;●命令寄存器:用来控制设备对PCI访问的响应;●局部配置寄存器存储器访问的PCI基地址寄存器:系统BIOS利用此寄存器为PCI9052局部配置寄存器的存储器访问分配一段PCI地址空间,范围为128字节,韧始化时,主机对此寄存器写入FFFFFFFF,然后读回FFFFFF70,以确定其占用空间为128字节;●局部配置寄存器I/O访问的PCI基地址寄存器:系统BIOS利用此寄存器为PCI9052局部配置寄存器的I/O访问分配一段PCI地址空间;●局部地址空间0访问的PCI基地址寄存器:系统BIOS利用此寄存器为PCI9052局部地址空间0的访问分配一段PCI地址空间;PCI主机处理器可以直接对局部总线上的设备进行读/写操作。PCI9052配置寄存器能够访问映射到局部的地址空间。同时片内的读写FIFO使PCI9052能够支持PCI总线与局部总线间的高性能猝发传送。PCI总线主控访问局部总线的示意图如图8.22所示。3.局部总线ISA接口模式PCI9052的新功能是它直接提供给用户一个ISA逻辑接口,从而保证了ISA到PCI的平滑转换,另外,ISA接口还能支持8/16位存储器或I/O设备。用户通过对EEPROM的编程可将PCI9052置为ISA接口模式,在ISA接口模式下,LRESET信号将由低有效变为高有效,并可将局部总线空间2、3配置为无复用方式。http://www.hljnzy.net/kejian/weijijiekou/second/chapter8/c2-8-4-4.htm2006-11-24微型计算机原理3/5ページ图8.22PCI总线主控访问局部示意图4.基于PCI9052的PCI接口卡设计利用PCI总线目标接口芯片PCI9052设计PCI接口卡非常简便,图8.23是PCI总线数据解密卡的原理框图。图中的PCI9052设置为ISA模式,单片机与存储器使用ISA总线信号,而PCI总线上的主机CPU可通过PCI9052直接读写存储器中的数据并控制单片机,进而控制解码操作。图8.23PCI9052接口卡框图二、PCI设备Windows通用驱动程序设计1.驱动程序的模式和开发工具设备驱动程序是指管理某个外围设备的一段代码。驱动程序不会独立地存在,而是操作系统的一部分。通过设备驱动程序,多个进程可以同时使用这些资源,从而可以实现多进程并行运行。一般,将调用设备驱动程序的PC机程序称为用户程序。Windows98可以兼容Windows95的驱动程序,同时它又推出一个新的Win32DriversMode(WDM)驱动类型。Windows98中有些设备(如USB设备)的驱动程序必须为WDM模式。这个新的类型实际是在WindowsNT的驱动模型的基础上增加了即插即用等内容。WDM驱动也可以用在Windows2000中。从长远的角度看。今后开发人员只要开发WDM驱动就可以了,但从目前的市场情况来看,Windows95是无法放弃的,所以WDM在还无法完全替代其它类型的设备驱动。Intel80386以上的微处理器有4个特权级别:0级、1级、2级和3级,一般操作系统运行于特权级0级上,而用户程序运行在3级上,并为了保证系统的安全性、稳定性和可移植性,对硬件操作进行限制,因此只能通过设备驱动程序访问硬设备。对Windows95,有VxD和打印机驱动,VxD运行在系统的0级上,可以执行特权级指令,对任何I/O设备有全部访问权,所以大多数硬件驱动程序都是VxD。VxD驱动通常以.vxd为扩展名,放在Windows\System 目录 工贸企业有限空间作业目录特种设备作业人员作业种类与目录特种设备作业人员目录1类医疗器械目录高值医用耗材参考目录 下,可以在Windws95启动时装入,也可以在程序运行时根据需要动态地载入。动态加载有助于节约系统内存和资源。但打印机驱动程序不是VxD,它运行在3级上。由于WindowsNT禁止用户模式的程序访问I/O端口,直接控制物理设备的驱动程序都是内核模式的。PCI通用驱动程序要求对各种硬件资源访问,所以应该选择工作在0级的驱动程序模式。开发设备驱动程序有多种开发工具可以选择。主要包括:(1)微软的软件包DeviceDriverKit(DDK)。该软件包中包括了有关设备驱动开发的文档、编译需要的头文件和库文件、调试工具和程序范例,另外在DDK中还定义了一些设备驱动程序可以调用的系http://www.hljnzy.net/kejian/weijijiekou/second/chapter8/c2-8-4-4.htm2006-11-24微型计算机原理4/5ページ统底层服务。但是由于DDK主要是使用汇编语言进行描述的,开发起来比较困难。(2)Numega公司的VtoolsS。该软件包是基于C/C++的,支持BorlandC++和VisMalC++,使用和维护比较方便。(3)KRF—Tech公司的WinDriver。WinDriver允许用户使用MSDEVVissualC/C++、Borland\Delphi或者其他Win32编程工具软件在用户模式(UserMode)上编写设备驱动程序。2.PCI驱动程序的特点在设计驱动程序之前,首先要对欲控制的硬件设备进行细致地 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 ,更需要详细了解硬件设备的特性。硬件设备的特性会对驱动程序的设计产生重大的影响。需要了解的最主要的硬件特性包括:(1)设备的总线结构设备采用什么总线结构非常关键,因为不同的总线类型(如ISA和PCI)在许多硬件工作机制上是不同的,所以驱动程序设计也不同。(2)寄存器要了解设置的控制寄存器、数据寄存器和状态寄存器,以及这些寄存器工作的特性。(3)设备错误和状态要了解如何判断设备的状态和错误信号,这些信号要通过驱动程序返回给用户。(4)中断行为要了解设备产生中断的条件和使用中断的数量。(5)数据传输机制最常见的数据传输机制是通过I/O端口(port),也就是通过CPU的IN/OUT指令进行数据读写。PC的另一种重要的传输机制是DMA,但PCI规范不包括从属DMA的说明。(6)设备内存许多设备自身带有内存,PCI设备大多是采用映射的方式映射到PC系统的物理内存。有的设备还要通过驱动程序设置设备的接口寄存器。3.PCI设备驱动程序的功能硬件驱动程序的功能虽然千差万别,但基本功能就是完成设备的初始化、对端口的读写操作、中断的设置、响应和调用以及对内存的直接读写。虽说Windows9X和WindowsNT的操作系统模型不同,但驱动程序所要完成的工作却是相同的,下面以Windows9X为主进行介绍。(1)设备初始化PCI设备驱动程序要实现识别PCI器件、寻址PCI器件的资源和对PCI器件中断的服务。PCI系统BIOS功能提供了BIOS的访问与控制的具体特征,所有软件(设备驱动程序、扩展ROM码)将通过标准中断号1AH调用BIOS功能访问特殊部件。PCIBIOS规范有完整的有关PCIBIOS功能的描述。在PCI设备驱动程序的初始化过程中,利用指定器件识别号(deviceid)商识别号(vendorid)、检索号(index)搜索PCI器件,通过调用PCIBIOS确认其存在,并确定其物理位置:总线号、器件号和功能号,这是该器件/功能在系统中的唯一寻址标志。利用总线号、器件号和功能号可以寻址该器件/功能的PCI配置空间。设备驱动就需要从配置空间获得硬件的参数。PCI设备的许多参数,包括所用的中断号,端口地址的范围及I/O方式、存储器的地址及存储器映射方式等,都可以从PCI配置空间的各基址所对应的寻址空间中得到。读写配置空间可以调用BIOS中断1AH,也可以先向配置空间地址寄存器(0CF8H)写入总线和设备号。在前面搜索PCI器件时得到的和寄存器号,再对配置空间数据寄存器(0CFCH)进行读写。对设备驱动来说,最重要的是获得基址寄存器(BADR),不能认为PCI器件资源总是设计设备时设置的初值,系统可能会根据硬件情况为PCI设备分配新的资源。我们所设计的PCI设备使用的基址1-3都是按I/O空间映射的,而基址4是按内存方式映射的。确定一个端口是按什么方式映射的,可以读对应端口的配置寄存器。读出后,判断其0位,如果0位为数值0,表示其是按内存方式设置的,否则为I/O方式设置的。内存方式和I/O方式的配置寄存器的含义参见有关文献。如果要获得基址的大小,可以向基址寄存器写入FFFFH,然后读基址寄存器,如果是内存方式,从第4位开始的0的数目表示基址的大小,如果是I/O方式,则从第2位开始的0的数目表示基址的大小。(2)端口操作在PC机上,I/O端口寻址空间和内存寻址空间是不同的,所以处理方法也不同。I/O空间是一个64K字节的寻址空间,它不象内存有实模式和保护模式之分,在各种模式下寻址方式相同。在Windows9X下,用户程序可以直接使用I/O指令,而不一定非通过专门的驱动程序来完成,所以如果软件对硬件的操作完全是通过I/O端口操作来完成的,甚至可以不用专门设计驱动程序,直接由应用程序来完成对硬件的控制。由于PCI总线是32位的总线标准,在进行I/O操作时通常要进行双字(DWORD)操作,而且以前大多数C/C++编译软件都没有提供双字的函数,所以需要构造双字操作读写函数inpd/outpd。(3)内存的读写Winsows工作在32位保护模式下,保护模式与实模式的根本区别在于CPU寻址方式上的不同,这也是Windows驱动程序设计中需要着重解决的问题。Windows采用了分段、分页机制(参见第三章)。这样做最大的好处就是一个程序可以很容易地在物理内存容量不一样的、配置范围差别很大的计算机上运行,编程人员使用虚拟存储器可以写出比任何实际配置的物理存储器都大得多的程序。每个虚拟地址由http://www.hljnzy.net/kejian/weijijiekou/second/chapter8/c2-8-4-4.htm2006-11-24微型计算机原理5/5ページ16位的段选择子和32位段偏移量组成。通过分段机制,系统由虚拟地址产生线性地址。再通过分页机制,由线性地址产生物理地址。线性地址被分割成页目录(PageDirectory)、页表(PageTable)和页偏移(Offset)三个部分。当建立一个新的Win32进程时,操作系统会为它分配一块内存,并建立它自己的页目录、页表,页目录的地址也同时放入进程的现场信息中。当计算一个地址时,系统首先从CPU控制器CR3中读出页目录所在的地址,然后根据页目录得到页表所在的地址,再根据页表得到实际代码/数据页的页帧,最后再根据页偏移访问特定的单元。硬件设备读写的是物理内存,但应用程序读写的是虚拟地址,所以存在着将物理内存地址映射到用户程序线性地址的问题。从物理地址到线性地址的转换工作也是由驱动程序来完成的。在Windows95下,使用DDK的VMMCallMapPhysToLinear进行地址映射。驱动程序的内存映射部分主要是调用VxD的系统服务MapPhysToLinear。在VtoolsD中这个函数的定义如下:PVOIDMapPhysToLineag(CONSTVOID*PhysAddr,DWORDnBytes,DWORDFlags);其中第一个参数PhysAddr就是要映射的内存的物理地址的起始位置,而nBytes是内存区域的长度,Flags必须设置为0。这个函数返回的就是这段物理地址映射的线性内存地址。如果指定的内存不能存取,函数将返回FFFFFFFFH。(4)中断的设置、响应与调用对中断的设置、响应与调用应该在驱动程序中完成。 对中断的调用象前面调用BIOS的1AH中断读取配置寄存空间可以由DDK的ExecInt完成。PCI设备驱动程序应当从PCI配置寄存器的中断寄存器(INTLN)和中断引脚寄存器(INTPIN)中获得有关中断的信息。DDK还提供了响应中断事件的服务。如在Windows95中,VPICD服务用来管理所有硬件中断事件。PC机的硬件中断需要确定硬件中断的IRQ,对一个特定的IRQ中断源,VPICD或者提供缺省的中断处理函数,或者允许其它VxD重载中断处理函数。在VtoolsD中,要处理硬件中断应该从VHardwareInt继承一个类。在这个类中,VtoolsD提供了编写中断响应程序所需的功能。4.设备驱动的调用编写设备驱动并不是最终的目的,总是需要由用户程序来调用驱动并实现一定的功能。一般调用设备驱动是使用CreateFile函数打开设备文件,得到一个文件句柄。打开设备文件后,调用DeviceIoControl函数就可以同设备驱动程序交换数据了。完成硬件操作之后,可以调用CloseHandle(hVxD);关闭设备驱动。5.设备驱动的进一步封装以上是对驱动程序的初步设计。但考虑到在上面调用设备驱动时使用的DeviceIoControl函数仍是比较复杂的,程序也不太容易具有通用性。而且,在有些开发工具中,如VisualBasic,不包括直接读写I/O端口的语句,所以可以考虑根据不同软件的需要对驱动程序进行不同的封装。比如用DLL,ActiveX,VCL和C++类库类库进行封装。DLL可以在大多数软件环境中进行调用。ActiveX可以在VisualBasic等可视编程环境中使用。VCL可以在Delphi和C++Builder中使用。考虑到许多用户使用VisualC++,所以也可使用C++类库方式。http://www.hljnzy.net/kejian/weijijiekou/second/chapter8/c2-8-4-4.htm2006-11-24
本文档为【PCI总线标准协议(中文版)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
中小学教育资料大全
暂无简介~
格式:pdf
大小:541KB
软件:PDF阅读器
页数:14
分类:互联网
上传时间:2023-02-27
浏览量:7