首页 > 编程知识 正文

pci接口的作用,mipi接口定义

时间:2023-05-03 14:14:39 阅读:154869 作者:2628

另一方面,PCI协议概述PCI总线标准是intel很久以前推出的连接主板和外部设备的总线标准,全部被称为[ peripheralcomponentinterconnect ]。

任何事物的出现总是具有时代性,在PC领域也不例外。 PCI的出现也是由于当时PC的性能和设计成本的要求。

PCI相对于ISA总线,进行了很多改进,具有很多优势。

在主板上很容易找到PCI插槽。 通常是乳白色的插槽。 如下图所示。 但是,目前市面上的主板几乎没有或只有一个PCI插槽。

现在正在使用更高性能的pci的下一代接口PCI-express。 这都是后话。

PCI总线的 地址总线 与 数据总线 是分时复用的,支持即插即用 (plug andplay)、中断共享等功能。

时分复用的优点是既可以节省连接器的引脚数量,又便于突发数据传输。

比如即插即用和中断共享这两个特点就足以把ISA比下去了。

传统的ISA设备在插入系统后,需要调整BIOS以添加特定的配置,中断也是独占的,系统的irq一个就少一个。

使用PCI总线时,连接设备后,BIOS会自动根据PCI卡的特性分配IO、MEM空间和IRQ,IRQ可以由PCI设备共享。 PCI架构确实提高了系统的灵活性。

在带宽方面PCI总线在当时来说也提高了很多,这才是最关键的优势了。

33.33 MHz时钟的同步传输; 还有66MHz的扩展时钟频率。 总线带宽为32bit,当然还有64bit的扩展。

最大传输133MB/s(133megabytespersecond ) for 32-bit bus width (33.33 MHz32 bits8bit s/byte=133 MB/s )。

在64M频率下,总线带宽将达到264MB/s秒。

2或64位内存地址、32位I/o端口区域

PCI 规范

要理解PCI规范,最权威的资料属于PCI Spec。 这些规范(包括PCIe )由美国PCI-SIG协会(PCI特别兴趣小组)管理和更新。

巴士的规格中也记载了易读的人和职业。 对于基础软件工程师的BIOS,基本上需要理解以下章节。

chapter 1指令总线简介

chapter 2信号定义

捕捉3总线操作总线操作

chapter 6配置空间配置空间

但是,作为BIOS工程师,不仅仅是阅读spec。 解决问题是最终的目的。 spec的东西还很难懂,只是理论层面,在具体的操作实践中是完全不同的。

会遇到很多事情。 例如:

1、PCI device配置空间的访问与配置方法和原则

2、遍历PCI总线

3、PCI设备的IRQ分配原则和方式

4、PCI分配内存/io的原则和方式

5、PCI Bridge的概念和工作原理

最终,你需要看看源代码和spec。

第二,PCI接口定义PCI协议以至少47Pin实现目标设备的功能,主设备需要49Pin实现。

这些功能包括数据处理、寻址、接口管理、仲裁机制和系统功能。

下图显示了总线上的所有管脚,用于直观了解PCI总线。

a、系统Pin脚CLK :

系统时钟信号是所有PCI设备的输入信号。 一般是从Clock Gen那里拉出来的。 其频率可达33MHZ,当然可达66MHz。 最低频率一般为0Hz(DC ),该频率也称为PCI的工作频率。 PCI的所有信号除RST#、INTA#、INTB#、INTC#、INTD#外,其馀的信号在CLK的上升沿有效(或采样)。

RST#:

重置信号,输入pin。 用于将PCI专用的特性寄存器和定时相关信号恢复到规定的初始状态。 每次复位时,PCI的所有输出信号通常被驱动为tri-stated。 SERR#信号为高电阻状态,SBD#和SDONE可以驱动为低电平(在没有提供三态门输出的情况下)。 REQ#和GNT#必须同时驱动到三态,在复位中不能为High或Low。 为了防止AD、C/BE#和PAR在复位过程中浮动,它们必须驱动为低电平,不能为高电平。

b、地址和数据信号AD[31::00]:

地址、数据大多被复用的输入输出信号。 在地址周期AD[31:0]中包含32bit物理地址; 对于IO,这是一个byte地址;对于放置空间和内存空间访问,这是Dword地址。 在数据周期中,AD表示32位数据。

>

C/BE[3::0]#:
总线命令和字节使能多路复用信号线。在地址期中,这四条线上传输的是总线命令;在数据期内,它们传输的是字节使能信号,用来表示整个数据期中,AD[31::00]上哪些字节为有效数据。比如C/BE[0]#表示使能AD上的byte0,C/BE[3]#则使能AD上的byte3.

C、接口控制信号

FRAME#::
帧周期信号。由当前主设备驱动,表示一次访问的开始和持续时间。

IRDY# :
主设备(initiator)准备好信号。在写周期内该信号有效表示数据已经在AD[31::00]中;在读周期内该信号声明,表示主设备已经做好接收数据的准备。

TRDY#:
从设备(target)准备好信号。在写周期内表示从设备已经做好接收数据的准备;在读周期内有效,表示数据已经在AD[31::00]线上。
IRDY#和TRDY# 信号一般是一起使用的。IRDY#表示initiator ready; TRDY#表示target ready。
数据需要传输,必须IRDY#和TRDY#都要宣告好。如果两个信号都没有动作,那么总线处于wait cycles。

IRDY#信号,在Write周期,I#表明在AD总线上存在数据,已经准备开始传输了。在Read周期,I#表明master已经准备好接受AD上的数据。针对TRDY#同样道理。Write周期,T#表示target开始接受数据了。 Read周期,T#表明数据已经在AD线上了,等待接受。

STOP# :
停止数据传送信号。Targe申请需要停止数据传输。

LOCK#:
锁定信号。一般在专有设备才会使用该信号。

IDSEL:
初始化设备选择信号。在配置周期读写传输期间,用作片选信号。设备的输入pin。

DEVSEL#:
设备选择信号。该信号有效时,表示驱动它的设备已按照当前的地址译码成为了当前访问的从设备。

PCI总线上基本的Read 操作:


D、PCI仲裁信号(Bus master only)

REQ#: 总线占用请求信号。它是一个点到点的信号线,任何主设备都有其REQ#信号。

GNT#: 总线占用允许信号。这也是一个点到点的信号线,任何主设备都应有自己的GNT#信号。


E、错误汇报信号

PERR#:
数据奇偶校验错误报告。但该信号不报告特殊周期中的数据奇偶错。
一个设备只有在响应设备选择信号(DEVSEL#)和完成数据期之后,才能报告一个PERR#。
对于每个数据接收设备,如果发现数据有错误,就应在数据收到后的两个时钟周期内将PERR#激活。
该信号的持续时间与数据期的多少有关,如果是一个数据期于,则最小持续时间为一个时钟周期;
若是一连串的数据期并且每个数据期都有错,那么PERR#的持续时间将多于一个时钟周期。
由于该信号是持续的三态信号,因此,该信号在释放前必须先驱动为高电平。
另外,对于数据期奇偶错的报告不能丢失也不能推迟。

SERR#:
系统错误报告信号。该信号的作用是报告地址奇偶错、特殊命令序列的数据奇偶错,以及其它可能引起灾难性后果的系统错误。


F、中断信号

INTA#,INTB#,INTC#,INTD#均为PCI总线上的中断Pin脚,属于可选pin。
定义为水平触发,低电平有效。这些pin的声明是和工作频率CLK不同步的。如果设备需要使用中断,该设备会去拉动INTx#信号,以请求产生中断。直到设备驱动响应了中断,才会释放INTx# pin。

对于PCI单功能设备来说,一般只会使用INTA#pin脚来申请中断;
对于多功能设备才会使用其他的几个Pin:INTB#、INTC#、INTD#。
一个设备不能同时使用两个INTx,但是两个设备可以同时使用同一个INTx。

针对PCI设备使用中断的问题,需要板子上的HW和SW都要设定好对应Route方式,来实现PCI设备的IRQ共享。
如果随便设置的话,有可能导致多个设备同时使用同一个IRQ,而另外的IRQ却是空闲的。这必然导致系统性能变低。

那么这就涉及到PCI的四个中断pin INTx#如何连接到主板上去。在板子的设计开发过程中,BIOS会针对HW上IDSEL pin 和INTx# pin连接的方式来做好PCI irq routing table。这个可以后续再讨论。

HW上 针对AD pin和INTx的搭配有一些规则。

IRQ = (D + I )mod 4

其中,IRQ表示设备使用主板上的irq序号(1/2/3/4);南桥有PIRQa-PIRQd和PIRQe-PIRQh
D表示PCI槽上IDSEL连接到的主板的AD NO;一般情况为AD[31-11]
I表示PCI槽上INTx#的序号(1/2/3/4).
具体的连线搭配如下图。

文章学自: https://blog.csdn.net/pankul/article/category/1346835/2

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。