刘 青,马天乙
(中国电子科技集团公司第20研究所通信事业部,陕西西安 710068)
高速数据传输技术是现代信息技术的前沿科技,同时也是整个数据链技术的瓶颈之一,为此技术人员不断地寻找新的方法。CPCI(Compact PCI)总线[1]就是其中一个解决方案。
CPCI总线是当前流行的高速嵌入式计算机总线,目前大多数嵌入式计算机系统的接口最终都要经过CPCI总线与计算机内存进行交互。CPCI的总线规范保证了其具有良好的兼容性和可靠性。
本文设计的系统采用PLX公司生产的CPCI协议转换芯片PCI9054[2],通过Verilog HDL语言在FPGA中产生相应的控制信号,完成对数据的快速读写,从而实现了与CPCI总线的高速数据通信。
系统主要由PCI9054和FPGA构成,系统结构图以及信号连接如图1所示。通过利用FPGA的可编程性,可实现更多的扩展功能,如与DSP,A/D等不同速率间接高速通信等。协议转换芯片PCI9054的作用就是保证本地数据采集板卡和主CPU板卡之间的数据可以高速准确地传输[3]。
图1 系统设计图
PCI9054是由PLX公司生产的一种基于PCI V2.2总线规范的通用接口芯片[4]。它支持单字节方式和突发方式两种传输方式。其总线端支持32位/33 MHz传输,本地端可以通过突发方式达到最大132 Mbit·s-1的传输速率,并且可以控制改变本地端的总线宽度。
PCI9054可以看做一座建立在CPCI总线和本地用户局部总线之间的桥梁。因为PCI9054具有6个可编程FIFO存储器进行数据缓存[5],从而保证两者之间数据传输的正确性和实时性。并且PCI9054允许其中任意一端作为主控设备去控制总线,同时另外一端作为目标设备去响应总线。
PCI9054内部具有多个寄存器组[6],用以对其两端的工作状态和工作方式进行控制。PCI9054对其内部的所有寄存器组和FIFO都行了统一的地址映射,用户可以从两端通过编程访问所有FIFO及寄存器组的每个字节,从而查看两端的工作状态和改变两端的工作方式。
整个CPCI接口的设计思路为:FPGA通过桥接芯片PCI9054与CPCI总线连接,其内部使用异步双口RAM来进行高速数据的缓冲,通过使用Verilog HDL语言编程来控制FPGA中的异步双口RAM,以实现系统数据在嵌入式CUP板卡内存与CPCI板卡之间的高速传输。
PCI9054提供了3种物理总线接口[7]:CPCI总线接口、LOCAL总线接口和串行EPROM接口。其中CPCI总线接口协议在嵌入式操作系统中的驱动包已经带有,而串行EEPROM的初始化是由PLX公司的PLXMON软件在嵌入式操作系统中进行在线烧写的,所以本系统设计的重点就是关于LOCAL总线接口的控制和传输,其接口电路示意图如图2所示。
图2 接口电路连接示意图
PCI9054与本地总线之间的接口称之为LOCAL BUS,是CPCI总线系统设计中十分重要的一环。PCI9054 LOCAL BUS在系统设计中,其总线直接与Alter公司的EP2S90F780I4芯片的数据总线相连,同时通过运用Verilog HDL语言编程来实现对双口RAM控制器的功能。
PCI9054 LOCAL BUS有3种工作模式[8],分别为M、J和C模式。M模式是专为Motorola公司开发和设计的,而另外两种工作模式就应用的比较广泛。其中J模式因为没有Local Master,所以它的地址总线和数据线没有分开,从而增加了开发难度。而在C模式下,PCI9054芯片通过片内的逻辑控制可以将CPCI的局部地址和数据总线分开,从而有效地降低了开发难度,并且能灵活地为本地工作时序提供各种工作方式,所以本系统设计方案选择了LOCAL总线的C工作模式,工作频率为40 MHz。
PCI9054支持主模式、从模式和DMA传输方式,根据本系统设计的需求,采用从模式传输方式[9],即允许CPCI总线上的主设备访问局部总线上的配置寄存器或内存,支持多种模式传输。如图3所示。
图3 PCI9054内部传输示意图
FPGA内部逻辑要设计本地端总线控制模块,实现局部总线的状态控制,同时产生片内的读写时序及地址信号以支持突发传输和单周期传输,因此使用Verilog HDL语言中的状态机来完成上述功能。其状态转换,如图4所示。
图4 PCI9054状态转移示意图
利用SingnalTap采集到的单周期时序传输图,如图5所示。
图5 PCI9054 Local Bus单周期传输时序图
以PCI9054为核心介绍了CPCI板卡与嵌入式CPU板卡之间高速数据通信系统接口的软硬件设计。PCI9054因其灵活和方便的接口功能,使操作者只需关心LOCAL BUS接口电路的时序设计,并且利用其传输速率高的特性,可以帮助一些对实时性要求较高的系统解决其传输数据的问题。
[1] 李贵山,戚德虎.PCI局部总线开发指南[M].西安:西安电子科技大学出版社,1997.
[2] PLX Technology Inc.PCI 9054 Data Book[M].Version 2.1.USA:PLX Technology Inc,2000.
[3] 谭博钊,徐元军,单涛,等.PCI总线接口技术及其在高速数据采集系统中的应用[J].电子技术应用,2006(10):99-101.
[4] 马超,皮亦鸣.基于PCI9054的PCI接口数据通信系统[EB/OL].(2008-01-19)[2011-02-12]http://www.paper.edu.cn.
[5] SHANLEY T,ANDERSON D.PCI系统结构[M].4版.刘晖,冀然然,夏意军,译.北京:电子工业出版社,2000.
[6] 丁海锋,张志强,赵前晟,等.基于FPGA的数据采集板设计与实现[J].电子科技,2010,23(3):30-34.
[7] 李国光,罗丰.一种64位高速PCI总线接口的设计与实现[J].电子科技,2011,24(2):57-60.
[8] 王红彦,刘泳,姜晓洁.中频数字接收机的工程实现[J].电子科技,2010,23(9):34-37.
[9] 曹明,陈文正.PCI总线协议的FPGA实现及驱动设计[J].计算机应用,2003(7):15-17.
[10]董铁庄,吴晴.用PCI 9052设计PCI通讯适配卡的难点剖析[J].微计算机信息,2005(4):57-60.