PCI之难题
thedairygame
2020.12.03 星期三 多云
哎,难题!
每逢遇到新的知识点或心绪不宁时,或者感觉短时间无法突破时,就感到遇到了难题。要不就彻底攻破它,要不就知难而退。可是难题就是难题,不是退一步,它就变的容易。所以静下心来,一步步来,将事情变成一串串构成它的"事态",在专业领域就叫做"状态机"。遇到难题,看我一个个状态突破,最终它会被我破掉,嘿嘿!
最近,研究PCI总线的东西。有几个参考实例,但信号线有点多(其实也不多),加上状态不怎么好,丧!不过,还是找了诸多资料,经过分析,获得一些线索(感觉有点像侦探了,咳)。
PCI9054应该是PCI总线的一种控制器,用于通信数据的传输。它一方面连接主板(与主板相对的叫设备),与之对应的是系统接口。主板会通过系统接口向设备(也就是PCI9054)提供系统时钟PCLK(一般是33MHz)和复位信号RST#。由于系统时钟为33MHz,且数据位宽为32bit,可得数据传输速率为32×33MHz,即1056MHz。
PCI总线的地址/数据信号是AD[31:0],是一种地址/数据复用的信号。PCI总线上地址和数据的传输,需在帧周期信号FRAME#有效期间进行。当FRAME#有效时的第一个时钟,AD[31:0]的信号为地址信号,为地址期;当主设备准备好信号IRDY#与从设备准备好信号TRDY#同时有效时,AD[31:0]上的信号为数据信号,为数据期。
一个PCI总线传输周期包含一个地址期和接着的一个或多个数据期。
C/BE[3:0],地址期,传输总线命令;数据期,传输字节允许信号,指定数据期总线的4个数据字节中哪些字节为有效数据,以进行传输。
PAR为奇偶校验信号,通过AD[31:0]和C/BE[3:0]进行奇偶校验,主设备为地址周期和写数据周期驱动PAR,从设备为读数据周期驱动PAR。照这样来说,应该是如果奇偶校验正确的话,PAR输出高电平,其余情况为高阻态。
STOP#信号,从设备要求主设备停止当前数据传送的信号,由从设备发出。
LOCK#,锁定信号,当对一个设备进行可能需要多个总线传输周期才能完成的操作时,用锁定信号进行独占性访问。
IDSEL:初始化设备选择信号。在读写配置空间时,用作SLAVE的片选信号(SLAVE通常把IDSEL连到AD[31:0]上的一根,PFA中的DEVICE ID就是这么确定的)。
DEVSEL#:设备选择信号,由SLAVE驱动,该信号有效时,当前SLAVE信号已被选中
REQ#:仲裁信号。总线占用请求信号。该信号有效表明驱动它的设备要求使用总线,他是一个点到点的信号,任何主设备都有自己的REQ#信号。
GNT#:总线占用允许信号。该信号有效,表示申请占用总线的设备的请求已获得批准。
PERR#:数据奇偶校验错误报告信号。SERR#:系统错误报告信号。它们均是开漏。
INTA#:中断信号。开漏输出。
ENUM#,系统枚举信号,热插拔管理信号。一般用于CPCI接口。该信号通过中断的方式通知操作系统将要插入或拔出一个设备卡,操作系统再执行总线枚举,资源分配,安装驱动程序或卸载驱动程序。
PCI9054供电电压为3.3V,TEST引脚接地,表示常规操作,接高电平表示测试模式。
如果系统借口为金手指(CPCI是ENUM#),还会多出PRSNT1#和PRSNT2#两个信号(长短针结构,长度是其它引脚的一半,插入时这两个信号最后才被接触,拔出时,最先分离,所以有一段延时,可以用来热插拔管理),用于热插拔管理。通常从设备这两个信号接到一起,主设备PRSNT1#接地,而PRSNT2#被上拉至高。这样插入和拔出从设备会导致PRSNT2#的信号电平发生变化。
再就是EEPROM接口,包括3个引脚,EECS,片选信号,推挽输出;EESK,串行时钟,推挽输出;EEDI/EEDO(这是一个引脚,是一个IO口),串行数据输入输出,推挽输出(数据手册里写的是TP,Totem Pole,图腾柱输出),手册里写到了EEPROM的三种配置情况,不安装EEPROM,用1k电阻下拉,安装空白的EEPROM以及安装烧录好的,EEPROM都需要上拉。👀但是,我发现公司的设计对于任何情况就只接了下拉电阻,好像也没问题!❗
数据手册里提出的信号类型有三态信号(TS,高阻,断开),持续三态信号,STS,是一个低电平有效的三态信号,在某一时刻有且只能有一个设备驱动,驱动这个信号为低的设备在它释放对这个信号之前(也就是使其浮空),必须驱动这个信号为高电平并至少维持这个高电平一个时钟周期。新的设备只有在这个信号被释放之后才可驱动此信号。STS信号需要上拉电阻,以使设备无驱动时,保持一个无效的高电平,这个上拉电阻由主控设备提供。还有一个驱动三态信号,DTS,和STS很像,只不过需要维持高电平1.5个时钟周期。
今天就先说到PCI系统总线接口吧!明天说一下PCI本地总线等内容了。
[WhereIn Android] (http://www.wherein.io)
This post has been rewarded by the Steem Community Curation Project #wherein 我是谁?你又是谁?!我为什么会在这里?你加了cnsteem 没?!