基于Wishbone片上总线的PCI Bridge核的研究和应
3.2 PCI Bridge的操作
PCI桥核有两种应用方式:主、从桥(相对PCI总线而言)。作为从桥时,当PCI桥连到拥有PCI总线的主机系统上电后,主机系统软件将扫描PCI总线上连接的PCI总线设备(包括PCI桥),然后配置PCI桥空间寄存器,即由配置软件来完成PCI桥的初始化配置过程。之后,PCI桥进入正常工作状态。
PCI桥核作为主桥时,PCI桥完全控制PCI总线。PCI桥的Wishbone代理设备完全负责连接到PCI总线上的PCI设备的初始化配置过程。运行在Wishbone代理设备上的固件(设备无关软件)在上电后扫描PCI总线,以确定有哪些PCI设备,并分别有什么配置要求。然后在Wishbone映象0空间内配置各个PCI设备的配置空间。配置完成即可加载各个PCI设备的驱动程序。此时PCI设备也可以通过PCI桥的PCI目标单元访问Wishbone总线。
PCI桥的配置空间包括两个部分:一个部分为Wishbone从单元的配置、状态和控制寄存器;另一个部分为PCI目标单元的配置、状态和控制寄存器(包括PCI协议要求实现的256字节标准配置空间)。PCI桥通过相应的地址映像空间(PCI映像0和Wishbone映像0)来实现PCI桥两侧代理设备访问PCI桥的配置空间。作为从桥时,主机系统的主桥可以使用普通的存储器读写指令来访问PCI桥的配置空间,也可以通过配置读写指令来访问PCI桥配置空间的低256字节。作为主桥时,PCI桥本身就可以产生配置周期。如同PC机X86系统的主桥配置机制0一样,PCI桥的Wishbone代理主设备可以通过访问PCI桥配置空间的CNF_ADDR和CNF_DATA寄存器来产生配置读写命令,从而实现对其它PCI设备的上电初始化过程。
由于PCI桥核是一个软核,在PCI桥核中有一个参数头文件。可以通过更改PCI桥核头文件的参数来改变PCI桥的操作方式(如主桥或从桥设置、PCI或Wishbone映像空间的定义等),因而使用非常方便。
4 使用PCI Bridge核来访问PCI设备
PCI桥作为从桥一般用在PCI扩展卡上(或称PCI周边卡),如数据采集,图像传输等。而作为主桥一般用在PCI总线的主控板上(或称PCI系统卡),但需要初始化PCI总线上的功能设备,并控制PCI总线的操作。
为了调试主/从桥的应用,笔者设计了三块电路板来协调控制PCI总线的操作。一块为FPGA板(Xilinx公司的Spartan II芯片,设计有PCI接口),一块为微控制器板(51单片机),一块为普通PCI扩展卡。
作为从桥时,只需要FPGA板就可以完成整个实验过程。即用Verilog语言实现一个Wishbone从接口,并连接到FPGA内部的BlockRAM上(可由ISE的CORE generator产生),然后选择PCI Bridge核的应用方式为GUEST(从桥方式),并连同自己的程序一起编译下载到FPGA的配置芯片上。这样,把FP-GA板插入PC机的PCI插槽,就可在PC机上开发驱动程序来访问FPGA板上的资源(如RAM等)。如果要进行数据采集,可以把Wishbone从接口连接到数据采集模块上。从桥实现的功能模块图如图5所示。
作为主桥时(选择PCI Bridge核的应用方式为HOST),由于FPGA板上没有微控制器,所以需要把FPGA板上的I/O口与51单片机电路板上的I/O扩展口连接起来一起形成PCI主控板。FPGA板和普通PCI扩展板都插到独立的PCI底板的PCI插槽上,然后在FPGA板上和单片机板上进行编程以实现对普通PCI扩展板的初始化配置和正常读写操作。其电路功能模块框图如图6所示。
由于单片机的接口是8位,读写时序也和PCI桥中的Wishbone时序不同,所以需要在PCI桥和单片机扩展I/O口之间用软件实现一个Wishbone主接口。该Wishbone主接口的工作过程为:单片机发出读操作时,先传送4次8位地址数据到FPGA中,再将由Wishbone主接口组成的32位地址存储在一个32位地址寄存器中,随后单片机发出读命令,以启动Wishbone主接口进行Wishbone总线的读时序,当Wishbone主接口把从PCI总线上读来的32位数据存放在一个32位读数据寄存器中后,单片机将分4次