您好,欢迎访问三七文档
一.PCI引脚必要的引脚在左边,任选的引脚在右边为了叙述方便,将PCI信号按数传方向及驱动特性划分为五种类型,各种类型的规定如下:in:输入信号。out:输出驱动信号。t/s:表示双向三态输入/输出驱动信号。s/t/s:持续三态(SustainedTri-State),表示持续的并且低电平有效的三态信号。在某一时刻只能属于一个主设备并被其驱动。这种信号从有效变为浮空(高阻状态)之前必须保证使其具有至少一个时钟周期的高电平状态。另一主设备要想驱动它,至少要等到该信号的原有驱动者将其释放(变为三态)一个时钟周期之后才能开始。同时,如果此信号处于持续的非驱动状态时,在有新的主设备驱动它之前应采取上拉措施,并且该措施必须由中央资源提供。o/d:漏极开路(OpenDrain)可作线或形势允许多个设备共同使用,二.1.系统引线CLKin:时钟输入,为所有PCI上的接口传送提供时序。其最高频率可达66MHz,最低频率一般为0(DC),这一频率也称为PCI的工作频率。对于PCI的其他信号,除、、、之外,其余信号都在CLK的上升沿有效(或采样)RSTin:复位,用来使PCI专用的特性寄存器和定时器相关的信号恢复规定的初始状况。每当复位时,PCI的全部输出信号一般都应驱动到第三态。2.地址和数据引线AD0~AD31t/s:地址、数据多路复用的输入/输出信号。在FRAME#有效时,是地址周期;在IRDY#和TRDY#同时有效时,是数据周期。一个PCI总线的传输中包含了一个地址信号周期和一个(或多个)数据周期。PCI总线支持突发方式的读写功能。地址周期为一个时钟周期,在该周期中AD0~AD31线上含有一个32位的物理地址。对于I/O操作,它是一个字节地址;若是存储器操作和配置操作,则是双字地址。在数据周期,AD0~AD7为最低字节,AD24~AD31为最高字节。当IRDY#有效时,表示写数据稳定有效,TRDY#有效表示读数据稳定有效C/BE0~3#t/s:总线命令和字节使能多路复用信号线。在地址周期内,这四条线上传输的是总线命令;在数据周期内,传输的是字节使能信号,用来表示在整个数据期中,AD0~AD31上哪些字节为有效数据。3.接口控制管脚(出问题时常测这些管脚)FRAME#:帧周期信号。Master驱动,表示一次访问的开始和持续时间。FRAME#无效时,是传输的最后一个数据周期。IRDY#:Master主设备准备好信号。TRDY#:Slave从设备准备好信号。当这两者同时有效时,才能进行完整的数据传输,否则即为等待周期。在写周期,IRDY#信号有效时,表示有效的数据信号已在AD0~AD31中建立;在写周期,TRDY#信号有效,表示Slave已做好了接收数据的准备。在读周期,IRDY#信号有效时,表示Master已做好接收数据的准备。在读周期,TRDY#信号有效,表示有效数据已被送入AD0~AD31中,STOP#:停止数据传送信号,由从设备发出。当它有效时,表示Slave请求Master终止当前的数据传送。IDSEL:初始化设备选择信号。在读写配置空间时,用作Slave的片选信号(Slave通常把IDSEL连到AD[31:0]上的一根)(AD〔00..31〕是PCI总线的共享地址和数据线,每一次PCI传送都分为地址周期和数据周期。在地址周期,采用0型读写时,AD〔00..31〕的内容如下,AD〔00〕和AD〔01〕总为“00”,因为配置读写是以双字为单位的,AD〔02〕~AD〔07〕是要读写的PCI配置空间的寄存器号?AD〔08〕~AD〔10〕是设备的功能号?在一块PCI卡上有多个功能设备时,为了进一步区分不同的设备就要用到这几位,由于Realtek8029是单功能设备,故这几位全为0,AD〔11〕~AD〔31〕是设备选择位,其中必须有且仅有一位为“1”,如图2所示,这在物理上表现为总线的AD〔11〕~AD〔31〕中有一根为高电平?如果输出高电平的这根线与某块PCI卡的PCIIDSEL引脚相连,这块卡就会被激活,这样,在紧接着的数据周期中,它就会将其PCI配置空间相应寄存器中的内容放到总线上以供读取。DEVSEL#:设备选择信号,由从设备驱动,该信号有效时,当前Slave设备已被选中4.仲裁信号REQ#t/s:总线请求信号。该信号一旦有效即表示驱动它的设备要求使用总线。它是一个点到点的信号线,任何主设备都应有自己的REQ#信号。GNT#t/s:总线允许信号。用来向申请占用总线的设备表示其请求已获批准。这也是一个点到点的信号线,任何主设备都应有自己的GNT#信号。5.错误报告信号PERR#:s/t/s数据奇偶校验错误报告信号,但是该信号不报告特殊周期中的数据奇偶错。一个设备只有在响应设备选择信号DEVSEL#和完成数据期之后,才能报告一个PERR#。对于每个数据接收设备,如果发现数据有错误,就应在数据收到后的两个时钟周期将PERR#激活。该信号的持续时间与数据期的多少有关,如果是一个数据期,则最小持续时间为一个时钟周期;若是一连串的数据期并且每个数据期都有错,那么PERR#的持续时间将多于一个时钟周期。由于该信号是持续的三态信号,所以该信号在释放前必须先驱动为高电平。另外,对数据奇偶错的报告不能丢失也不能推迟。SERR#o/d:系统错误报告信号。该信号用于报告地址奇偶错,特殊命令序列中的数据奇偶错,以及其他可能引起灾难性后果的系统错误。SERR#是漏极开路信号,由返遣错误的单元驱动,在一个PCI时钟内有效。SERR#信号的发出和时钟同步,因而满足总线上所有其他信号的建立时间和保持时间的要求。6.中断信号中断在PCI总线上是可选用的,低电平有效,用漏极开路方式驱动。同时,此类信号的建立和撤销是与时钟不同步的。PCI为每一个单功能设备定义一根中断线。对于多功能设备或连接器,最多可有4条中断线。对于单功能设备,只能使用,其余3条中断线无意义。PCI局部总线有四条中断线,定义如下:o/d:中断A,用于请求一次中断。表8.1给出了总线编码及类型说明。其中,命令编码中的1表示高电平,0表示低电平。3.I/O读命令:该命令用来从一个映射到I/O地址空间的设备中读取数据。4.1/O写命令:该命令用来向一个映射到1/O地址空间的设备写入数据。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协议1.PCI总线的传输控制PCI总线上所有的数据传输基本上都是由以下三条信号线控制的:FRAME#:由主设备驱动,指明一个数据传输的起始和结束。IRDY#:由主设备驱动,允许插入等待周期TRDY#:由从设备驱动,允许插入等待周期。一般来说,PCI总线的传输遵循如下管理规则:(1)FRAME#和IRDY#定义了总线的忙、闲状态。当其中一个有效时,总线是忙的;两个都无效时,总空闲状态。(2)一旦FRAME#信号被置为无效,在同一传输期间不能重新设置。(3)除非设置了IRDY#信号,一般情况下不能设置FRAME#信号无效。(4)一旦主设备设置了IRDY#信号,直到当前数据期结束为止。主设备不能改变IRDY#信号和FRAME#状态。2.PCI的编址PCI定义了三个物理地址空间:存储器地址空间、I/O地址空间和配置地址空间,前两个是一般总线都有空间;第三个是用以支持PCI硬件配置的特殊空间。PCI总线的编址是分布式的,每个设备都有自己的地址译码,从而省去了中央译码逻辑。PCI支持两种设备地址译码:正向译码和负向译码。所谓正向译码就是每个设备都监视地址总线上的访问地址是否落在它范围内,因而速度较快。而负向译码是指该设备要接受未被其他设备在正向译码中接受的所有访问,因此,码方式只能由总线上的一个设备来实现。由于它要等到总线上其他所有设备都拒绝之后才能译码,所以速度然而,负向译码对于标准扩展总线这类设备是很有用的,因为这类设备必须响应一个很零散的地址空间。正和反向译码设备都不对保留的总线命令发出DEVSEL#响应信号。(1)I/O地址空间在I/O地址空间,全部32位AD线都被用来提供一个完整的地址编码(字节地址),使得要求地址精确一级的设备不需多等一个周期就可完成地址译码(产生DEVSEL#信号),也使负向地址译码节省了一个时钟在I/O访问中,AD0~AD1这两位很重要,并要与C/BE0~3配合,才能进行一次有效的访问。启动I/O传输的主设备应确保AD[1~0]正确指示本次传输的最低有效字节(即起始字节)。字节允许信号和AD[1~0]一起指明传输的数据宽度和双字中被选中的字节,下表表示了AD[1~0]和初始数据相位中字节允许的有效组合。(2)内存地址空间在存储器访问中,所有的目标设备都要检查AD0~AD1,要么提供所要求的突发传输顺序,或者执行设备断开操作。对于所有支持突发传输的设备都应能实现线性突发性传输顺序,用AD2~AD31译码得到一个双字地址的访问。在线性增长方式下,每个数据周期过后,按一个DWORD(4个字节)增长,直到对话结束。在存储器访问期间,AD0AD1的含义如下:当AD0AD1为00时,突发传输顺序为线性增长方式;AD0AD1为01时,为高速缓存行切换方式;A为1X时,为保留。在存储器地址空间,AD[31~2]提供一个双字边界地址,而AD[1—0]不参与地址译码,用来指明主设备要求的数据传输顺序,见表9.6。在线性增加模式下,每个数据相位后,地址增加一个双字(即加4,对32位传输)或增加两个双字(即加8,对64位传输),直到传输结束。(3)配置地址空间在配置的地址空间中,要用AD2~AD7将访问落实到一个DWORD地址寻址64个双字寄存器。当一个设备收到配置命令时,IDSEL信号成立且AD0AD1为00,则该设备即被选为访问
本文标题:pci协议总结
链接地址:https://www.777doc.com/doc-2849210 .html