基于PCI的单板计算机应用中起到系统控制器作用的实现方法
要求有"一种公平的算法以防止死锁"。通常,可以采用一种简单的轮循方法来确保不会有某一个总线主控器独占总线。
● 性能
如果数据吞吐量性能很重要,那么突发传送是很关键的。PCI总线上的突发传送主要是由同一地址段接连发生至少两次数据传送而引起的。和其他的传送类型一样,一旦总线主控器接收到PCI总线的使用权,就要传送其起始地址和事务类型。在实际的PCI系统中,总线主控器和目标机必须都支持突发事务。例如,如果目标机只支持单一事务,性能就会极大降低,因为该总线主控器必须反复申请总线使用权并传送每个事务的地址。当总线主控器和目标机都支持突发事务时,该PCI上的带宽就能达到132MB/s(4B×33MHz)的最高吞吐量。
直接存储器存取(DMA)是提高接口中数据传送带宽的关键,因为它在传送数据时所需内核处理器的干预最小。这种采集或传送数据的设备可以利用其自带的DMA控制器,自动地从处理器来回传送数据。DMA通过利用PCI的突发能力来存取接口中的大块数据,从而极大地提高了性能。这种能力推动了诸如实时视频处理等应用的发展。
● 对多处理器系统的内在支持
通过用PCI总线连接多个嵌入式处理器,就能实现一个多处理器系统。采用这种直接的连接方式很容易就能使计算能力成倍增加。有了附加的数据总线以及每个处理器访问存储器的能力,就能处理数据流。采用这种方法,无须增加算法的编程复杂度就可以在每个处理器之间对数据进行分区。另外,即使是在视频吞吐速率,仍然有足够的可用空间用于与控制有关的传送开销。
从系统控制器的角度看PCI
● PCI存储器模式
PCI协议使用基地址寄存器(BAR)为各设备分配存储器和I/O范围。在配置期间,主机会询问各个设备以便决定每个设备所需资源。如果主机可以提供所有这些资源需求,它就会在每个设备的存储器BAR和I/O BAR中写入相应的起始地址。然后,通过对其存储器或者I/O范围内发起一次传送就可以访问每个设备了。此外,每个PCI代理都可以访问总线上的所有其他代理。
ADSP-BF533是一个PCI设备,它有BAR0(存储器BAR)和BAR2(I/O BAR)两个寄存器,以及相应的屏蔽寄存器。这些屏蔽寄存器可用于指定每个区域所需要的存储数量。
因为主机是在其PCI存储器空间内为设备分配一个地址,所以该设备(在这里就是指BF533)需要将此地址映射到它的内部或者外部存储器空间中。对BF533来说,存储器空间包括芯片内的L2存储器以及外部的SDRAM和(或)异步存储器,并且I/O空间会映射到处理器的存储器映射寄存器(MMR)区域。在这些定义的引导下,一个内部事务就会被控制在适当的区域。
当ADSP-BF533作为给定事务的目标机(受控器)时可以应用上述讨论的方法。当它发起传送时,会在其PCI外部存储器BAR或者I/O BAR中写入它希望访问的代理地址。无论是对PCI存储器还是I/O空间的一次读或写都会发起一次以该PCI代理的存储器或者I/O区域为目标的事务。
在主机模式中,外发事务的发生方式与上面的描述类似。对内送事务(ADSP-BF533作为受控器)的方案稍微有些区别。在主机模式中,BF533不使用BAR寄存器,而是使用主机存储控制寄存器将其资源开放给外部代理。它可以接受或者不接受对其存储器和I/O空间的访问。在有些情况下,它还能指示那些开放资源还有多少可以被外部PCI代理访问。这就为保护关键的代码或者数据段免遭其他PCI代理的更改提供了一种机制。
● 在PCI存储空间中开窗口
一旦初始化完成后,每个PCI设备都有对主机或总线上其他PCI设备"开放"的存储资源。这些存储资源可以包括内部存储器和外部存储器。例如,在BF533中,内部或者外部L2存储器中的"窗口"可以被PCI总线上的任何其他设备共享。然后每个总线主控器就可以直接访问这些开放的存储器空间,就像是在访问它自己的内部存储器一样。一旦主机完成了初始化进程,各设备之间的所有存储器地址都能被PCI接口翻译出来。
术语"窗口"用于表示该设备可能还有不允许别的总线主控器共享的其他受保护资源。这种开放的窗口清楚地表示了可以直接进行传送的存储资源。这种方法是很重要的,因为对任何给定设备都不需要内核处理器参与每一件事务。
图2的简单实例示出了主机中的窗口指向设备资源以及设备中的窗口指向主机资源。这就是允许单个的内核处理器能将外部资源当做简单的存储器地址来访问的机制。
通常采用邮箱中断方式来协调总线主控器与PCI设备之间的数据传送,这就使接收设备知道数据什么时候可用
- 一种基FPGA和DSP的高性能PCI数据采集处理卡设计(08-26)
- 用双端口RAM实现与PCI总线接口的数据通讯(05-06)
- 基于PCI总线和DSP芯片的图像处理平台的硬件设计(07-06)
- 基于DSP和PCI总线的通用数字信号处理系统(11-13)
- 一种基于PCI总线和DSP技术的虚拟仪器设计(03-16)
- 基于DSP的PCI驱动程序开发 (04-08)