Wishbone片上总线技术的特点及如何提高PCI系统的负载能力

自pci协议问世以来,pci总线应用越来越广泛,现已成为事实上的计算机总线标准。随着pci应用和开发的深入,往往需要在复杂的pci系统中使用pci桥来完成设计工作,包括使用主/pci桥来完成整个系统的初始化配置过程。pci桥的使用已从传统的pc机领域拓展到更多的电子应用系统中。
1、pci主桥简介
在复杂的pci系统中,往往拥有不只一条pci总线。为了提高pci系统的负载能力,可用pci-pci桥把各条pci总线连接起来,同时在处理器总线与pci总线之间使用主/pci桥来完成总线转换,以形成完整的pci系统。常用的pci系统结构如图1所示。
系统上电时,主cpu(处理器)对pci目标设备的初始化也称为配置访问。由于pci目标设备所定义的配置空间通常不在cpu的存储器和i/o空间中,所以需要一种特殊的机制来执行配置访问。这种机制通常由主/pci桥来完成。配置软件在上电后能够扫描pci总线,以确定现有哪些pci设备,并根据它们的配置要求分别进行配置。配置完成后,各个pci目标设备就可以在pci总线控制器的协调仲裁下正常工作。
在pc兼容系统中,主/pci桥也称为北桥,用于连接主处理器总线和基础pci局部总线(第一级pci总线)。北桥芯片内通常集成有主存储器控制器,因此处理速度很快。南桥芯片内一般集成有ide控制器、usb和其它速度较慢的i/o控制器,因此处理速度相对较慢。南北桥构成芯片组。
2、wishbone片上总线技术
片上系统soc(system-on-chip)技术近两年发展迅速,越来越多的厂商开始开发自己的ip核,然后提供给系统集成者。而各厂商采用自己定义的ip核接口规范来开发产品,使得系统集成成为一个棘手的问题。为了提供ip核的可重用性,实现众多厂商ip核的有效互连,片上总线ocb(on-chip-bus)技术就应运而生了。目前在soc领域较有影响的三种片上总线标准为:ibm公司的core-connect、arm公司的amba和silicorecorp公司的wishbone总线。其中wishbone总线已经被全球最大的开放ip组织(opencores)列为主要支持的soc内部互连总线协议。遵循wishbone总线协议的ip核可以很快有效地集成到soc中。目前,opencores上很多开放的ip核接口都采用wishbone总线设计。而且越来越多的ip核商用厂商也宣布支持wish-bone总线协议。
wishbone总线最大的特点是结构简单灵活,需要逻辑门少;同时完全免费、完全公开。wishbone规范支持完整的普通数据传输协议,包括单个读写周期、块传输等。数据总线宽度为8~64位(宽度仍然可以扩展),地址总线可以达到64位;最快时一个时钟周期就可进行一次数据传输;支持握手协议,速率可以调整;支持出错重试等。在wishbone总线规范中,可使用master/slave结构实现非常灵活的系统设计。master和slave有四种互连方式,分别为:点对点、数据流、共享总线和交叉互连。其中点对点方式是连接一个master和一个slave最简单的方式,使用起来非常方便。图2给出了采用点对点互连方式的wishbone主/从接口图。其中syscon为产生rst复位和clk时钟信号的模块,tagn为用户自定义信号。
wishbone 在master和slave之间使用的握手协议如图3所示。当准备好传输数据时?master使stb o信号有效,stb o状态将一直保持到slave的结束信号ack o、err o 或 rty o?对master而言是ack i?err i和rty i? 之一声明有效。master在每一个clk i的上升沿对结束信号采样?如果该信号有效?stb o信号变低。此外,wishbone接口的两边都能够完全控制数据传送的速率。
3、pci bridge核
开放ip组织opencores提供的pci bridge core提供了wishbone片上系统总线和pci逻辑总线的接口。pci bridge core由两个相对独立的单元组成:一个单元处理由pci总线方启动的数据交易,另一个单元则处理由wishbone总线方启动的交易。它是一个pci总线和wishbone总线之间真正的桥。
pci 桥核支持32位pci总线接口,并完全兼容pci2.2协议(支持66mhz规范);它含有独立的主桥、从桥功能模块和完整的命令/状态寄存器;支持wishbone soc互连协议b版本(包括b1和b3);此外,它可通过wishbone接口支持32位总线操作;并可配置片上fifo。
3.1 pci bridge内部结构
pci桥核由两个相对独立的单元模块组成:pci目标单元和wishbone从单元。每个单元自身都有一套完整的功能来支持wishbone和pci总线之间的交易。wishbone从单元可作为pci桥中wish-bone侧的从设备和pci侧的主设备启动交易;pci目标单元则可作为pci桥中pci侧的目标设备和wishbone侧的主设备启动交易。两个单元互相独立。pci目标单元用于实现pci总线从设备接口和wishbone总线的主设备接口;而wishbone从单元则用于实现wishbone总线从接口和pci总线的主设备接口。
图4是pci桥核的内部结构。
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次读出32位数据;单片机进行写操作如同读一样,依次传送32位地址和32位数据,最后发送写命令启动wishbone主接口以进行wishbone总线的写时序。wishbone的读写时序可由verilog语言描述的同步状态机实现。
在51单片机上用c语言编程实现主控板固件的完整软件过程为:上电后,固件先按顺序依次扫描pci总线上存在的pci设备,扫描的目的之一是为总线和设备编号。当扫描结束后,设备类型、拓扑位置等信息以设备为单位被存放在一个数据结构中,并按实际扫描的顺序组成一个链表。同时,设备的配置要求也依次存放在这个数据链表中。固件得到系统的设备拓扑图后,分别按照设备的配置要求一一进行配置,也就是分配地址资源给设备的基地址寄存器。配置完成后,各个pci设备即可进入正常工作状态。


蓝牙定位都听说过,那么蓝牙定位信标都知道吗
中国移动表示建设5G同时4G服务不降
C语言入门教程-命令行参数
一张图解释自动化仪表家族的“亲属”关系
光电式液位传感器的常见问题解答
Wishbone片上总线技术的特点及如何提高PCI系统的负载能力
Redis键的生存时间、生存策略和毁灭策略
澳大利亚构建虚拟发电厂提供电量
DCDC电源纹波的正确测试方法
谷歌重组人工智能团队
电视机的谐波电流和抑制技术
关于手机放大器在安装过程中的一些注意事项
【每日资料精选】精华问答集锦+珍藏开源资料分享(原理图+PCB+源码+文档)
可调LNB工作电源符合DiSEqC要求
探讨5G智慧园区的发展现状与未来趋势
中芯国际采用Cadence DFM解决方案用于65和45纳米
邻居自杀检测器被发明 可实时监测有害物质
预计今年沧州明珠全年净利润增长2.82亿-3.49亿
小米9或是小米旗下首款后置三摄旗舰
直接采样DAC的理论与应用