2023年12月18日发(作者:)

PCI总线数据模拟器设计

罗中伟;张遂南;徐嘉良

【摘 要】To meet the high real-time and high reliability of PCI-bus in

practical application, by studying the principle of PCI bus communication

protocol, a scheme of bus data simulator based on the research of PCI bus

protocol controlled by FP-GA is put forward. This scheme is based on the

PCI communication controller and FPGA. It combines with EDA technology

and VHDL to realize a bus data simulator which is suitable for military

computer. With testing and simulating on ISE Simulator, the program is

complied and synthesized on ISE 10.1 platform. The application in a

project proves that this scheme can meet the requirements of practical

communication.%为了满足PCI总线在实际应用中实时性和可靠性的要求,在对PCI总线协议的研究基础上,提出并设计一种基于PCI协议,由FPGA负责控制的总线模拟器的方案.该方案在硬件上以PCI总线控制器和可编程逻辑器件(FPGA)为基础,结合EDA技术和硬件描述语言(VHDL)实现了一款适用于某军用计算机的总线数据模拟器.通过在ISE 10.1平台下对程序进行编译和综合,并在ISE simulator环境下进行了验证,证实了该方案的可行性.在某项目中的应用中,证明该方案能够满足实际通信的要求.

【期刊名称】《现代电子技术》

【年(卷),期】2012(035)020

【总页数】4页(P67-70)

【关键词】PCI总线;VHDL;FPGA;PLX9030

【作 者】罗中伟;张遂南;徐嘉良

【作者单位】西安微电子技术研究所,陕西西安710054;西安微电子技术研究所,陕西西安710054;西安微电子技术研究所,陕西西安710054

【正文语种】中 文

【中图分类】TN919-34;TP336

0 引 言

PCI(Peripheral Component Interconnect)总线[1]是Intel公司推出的总线标准,现已成为多媒体计算机总线的实际规范,PCI总线是与微处理器无关的32/64位地址数据复用总线,支持不同宽度的数据传输,亦可支持多组外围设备和突发传输。PCI总线以其众多的功能、强大的兼容性,已成为目前最流行的计算机系统局部总线之一。另外,基于PCI总线的高可靠性和高传输速率,它也被广泛使用于航天工程领域及军用计算机系统,本文基于PCI通讯协议,介绍一种总线数据模拟器方案。

1 PCI总线技术介绍

1.1 PCI总线特点

PCI总线是先进的高性能局部总线,可同时支持多组外围设备。其优化的设计可充分利用今日最先进的微处理器及个人电脑科技。它采用总线主控和同步操作、不受处理器限制、适合于各种机型,兼容5 V和3.3 V两种电压信号环境,并具备低成本、高效益和即插即用等优点,以其突出的性能备受计算机和通讯界的青睐,现已取代以往的ISA,EISA等总线,成为微机系统总线标准。

PCI总线因其具有传统总线截然不同的突出优点,而获得极强的生命力。其最突出的优势在于以下几个方面:

(1) 高带宽,其传输速率可达33×32/8=132 MB/s;

(2) 高传输效率,支持突发同步传输,且传输延时低,可预测;

(3) 支持动态配置,便于系统扩展,避免系统资源冲突;

(4) 支持多总线,平台无关,即不依附于任何特定CPU, 但又能为任何高性能CPU所用;

在PCI总线系统中,如果某设备取得了PCI总线的控制权,就称其为“主设备”,而被主设备选中以进行通信的设备称为“从设备”和“目标设备”。为了实现处理数据,寻址,接口控制,仲裁以及系统功能,PCI接口提供47条必备信号线供目标设备使用。PCI总线由主设备驱动,由系统软件对PCI总线进行配置,并引导系统进行复位和自检,读取设备的配置信息,并给每一设备分配系统资源。它和存储器之间的交互基本使用DMA模式,CPU占用率很低,功耗很小。

1.2 PCI总线协议和传输机制

PCI上的基本总线的传输机制是突发成组传输[2],一个突发分组由一个地址期和多个数据期构成,PCI支持存储器空间和I/O空间的突发传输,在PCI总线中,除外,其他所有信号均在时钟上升沿被采样,每个信号都有相对于时钟上升沿的建立和保持时间,这种信号建立和保持时间,对不同的信号,情形是不同的。

2 PCI总线控制器

由于PCI总线严格的总线规范和定时制度,大部分I/O设备无法直接实现PCI接口。要实现外设与PCI总线的互连,需要PCI总线控制器作控制。目前的主流的PCI总线通讯控制器生产商是PLX公司,其目标设备芯片主要有PLX9030[3],PLX9052和PLX9050,本设计根据项目要求,选用其中较为先进的PLX9030作为协议芯片。

PLX9030是 PLX 公司开发的一种为扩展适配卡推出的高性能,低功耗PCI通讯控制器,符合PCI2.2 规范,核心电压为3.3 V。本地总线可以设置为8位、16位、32位复用和非复用模式。此芯片被广泛应用于PCI接口卡中,具有很高的性价比。它本质上是一个桥设备,为PCI总线、串行E2PROM、local总线提供了丰富的外部接口,其接口类型如下:

(1) PLX9030与PCI总线的接口[4]:PLX9030和PCI总线接口方式是典型的地址数据多路复用总线模式,主要信号有地址数据信号AD[31:0],总线命令和字节使能信号CBE[3:0],接口控制信号信号等。数据的传输分为地址期和数据期两个阶段,一个PCI传输过程包含一个地址期和一个(或无限个)数据期,当信号有效时,表示一个地址期的开始,CBE[3:0]四条线传输总线命令,当和信号同时有效时,是数据期,其中,信号有效时,表示写数据稳定有效,信号有效时,表示读数据稳定有效。在实际应用中,信号线之间需串联10 Ω的电阻,以改善阻抗匹配,避免震荡。

(2) PLX9030与E2PROM的接口:E2PROM选用ATMEL公司的AT93C66;它是一个4 KB的低电压串行存储器,用来存储PLX9030的配置信息并在芯片复位时进行加载,从而使PCI板卡具有即插即用的功能。PLX9030有四根信号线用于与E2PROM的连接:EESK, EEDO, EEDI和EECS。

(3) 本地总线接口:接口信号包含地址信号LA[27:2],数据信号[31:0],本地处理器复位信号等,PLX9030在和外设连接时,局部总线多路复用和非多路复用选择是通过硬件实现。如选用多路复用,将PLX9030的MODE引脚通过电阻上拉至3.3 V电源,不选用则接地,边界扫描JTAG不使用,PLX9030引脚TRST应该通过电阻接地。一般情况,所要实现的功能电路会需要一定的逻辑控制,所以PLX9030提供的局部总线接口信号通常会引入FPGA/CPLD中,并实现控制逻辑以简化电路。

3 系统硬件设计

3.1 系统方案选择

本总线模拟器专门用于对外部计算机设备提供模拟环境和单元检测平台。总线模拟器通过PCI总线插糟和工控机相连接,由接插件和外部计算机相连,为其提供一系列专用信号,在硬件结构上,选用了PCI总线+PLX9030总线控制器+FPGA的系统架构;由PCI总线负责板卡和工控机的数据交互,PLX9030用于实现PCI总线接口和本地总线接口的转换,FPGA实现逻辑控制和数据处理。此种架构的优势在于大大减少了使用的元器件数量,调试相对简单,降低了系统的功耗,也发挥了FPGA可编程,可重构,配置灵活的优点。该总线模拟器的硬件体系结构如图1所示。

图1 硬件系统结构框图

3.2 硬件系统的设计

根据系统设计的要求[6],该部分主要由PLX9030,FPGA,外部FIFO组成。PCI接口芯片主要用于控制不同数据从PCI总线到局部总线的交换,使得PCI总线和外部设备能够在异域时钟下进行工作,并增强系统的驱动能力。FPGA主要用于实现和本地总线互连的接口模块,多通道数据的收/发,外部FIFO的控制等功能。整个系统工作流程如下:工控机将信息通过PCI总线,按照PCI总线规范的格式和发送命令,将其写入到PCI总线控制器中,总线控制器缓冲后将地址和控制信息按照相应的时序写到本地总线上。FPGA根据PCI总线控制器提供的控制和地址信号,访问本地总线,根据相应的地址片选完成开关量数据的接收,模式寄存器的读写等操作,FPGA的PCI接口模块对FIFO分配地址,工控机监控程序根据映射地址访问FIFO,并将接收到的数据缓存至FIFO中。另外,FPGA在上电后将要发送的数据经过两路通道,一路经1.28 MHz同步串口,一路经115.2 kHz异步串口分别发送。在此需强调的是,待发送的数据需符合RS 422/RS 485接口规范,

经过发送器(MAX3044),COMS驱动器(DS26LV31),光电耦合器(TLP521-4)等转换成差分信号通过接插件提供给外部计算机设备。

在PLX9030和FPGA的接口电路[6]中,主要信号是地址总线LA[27:2],数据线LAD[31:0],本地总线配置信号LBEn[3:0],读写信号WRn、RDn,本地设备复位信号LRESETn等。由于FPGA支持COMS/TTL电平规范,而PLX9030提供的是标准COMS逻辑电平。所以,所有信号均可直接和FPGA的I/O口相连。在时钟的使用上,PLX9030和FPGA共同使用33 MHz的PLX9030内部时钟,通过LCLK管脚进行互连,在设计中需注意的是地址总线为32位字寻址模式,若本地总线为8位或16位,可根据LBEn信号灵活配置。硬件电路连接方法如图2所示。

图2 主要元件电路连接简图

3.3 FPGA设计部分

在FPGA的内部功能电路设计[8]中,根据硬件接口要实现的功能:PCI本地总线接口,外部映射地址译码,外部时钟分频,固定波特率的同步串行通信,固定波特率的异步串行通信,多路开关量的接收,划分了若干个功能模块。并用VHDL语言对各个模块进行描述。本设计采用Xilinx公司[10]的SPARTAN-3AN系列的XC3S1400AN型号FPGA来实现上述功能。XC3S1400AN芯片集成了1 400K个系统门,176 KB的分布式RAM,502个分布式I/O接口,能全面满足设计需求。以下是FPGA内部电路模块框图。

图3 FPGA内部电路模块图

3.4 仿真结果

将电路模块在Xilinx ISE 9.1工具下进行综合,并在ISE Simulator环境下进行仿真,仿真部分结果由图4,图5所示。

4 软件设计和调试流程

该系统软件设计的主要部分是PCI板卡驱动程序的设计和用户监控程序的设计。

在Windows 操作系统中,为了保证系统的安全性和可移植性,将应用程序对硬件的操作进行了限制,尤其Windows XP,不支持直接对系统的硬件资源进行操作。因而在设计PCI设备时,需要开发相应的驱动程序来实现对PCI设备的操作,在生成驱动程序基本框架后,根据实际要求添加功能代码来实现对I/O映射空间和内存映射空间的访问。在实际应用中,用户应用程序通常通过驱动程序来访问PCI设备。系统上电后,硬件或软件对PLX9030请求复位,进入初始化,在初始化期间,系统就会根据E2PROM中的信息给器件分配资源。并对系统的各个寄存器进行配置,复位结束后,系统通过中断或查询的方式接收或发送信息帧。在应用中,需软硬件联合调试才能达到最终目的。

5 结 语

本文在PCI总线协议的基础上,研究了PCI总线通讯控制器的使用方法,并根据具体项目要求,设计了基于PCI总线协议的总线数据模拟器设备,在FPGA内部利用VHDL硬件描述语言实现了功能电路描述和验证。该方案已被成功应用在某航天工程项目中,证明该方案切实可行。系统兼具高速率及高可靠性的需求,相信在不远的将来,基于PCI总线控制器+FPGA的嵌入式系统架构将会越来越多的应用在军用嵌入式计算机领域。

图4 同步串行数据发送波特率1.28 MHz

图5 异步串行数据发送器波特率115.2 kHz

参 考 文 献

[1]易祝宾.PCI系统结构简介[D].西安:西安电子科技大学,2007.

[2]李贵山,陈金鹏.PCI局部总线及其应用[M].西安:西安电子科技大学出版社,2003.

[3]PLX Technology Corporation. PCI9030 data book, Vertion 1.4 [M]. USA:

PLX Technology Corporation, 2002.

[4]王胡舰.基于PCI9052制作PCI接口卡详解[J].工业控制计算机,2004(7):15-17.

[5]周雷.基于FPGA的PCI软核实现[D].厦门:厦门大学,2009.

[6]阎石.数字电子技术基础[M].北京:高等教育出版社,1998.

[7]刘蓓,钱敏.基于VHDL/FPGA的PC总线接口电路设计方法[J].苏州大学学报,2007(1):43-46.

[8]侯伯亨,顾新.VHDL硬件描述语言与数字电路设计[M].西安:西安电子科技大学出版社,2000.

[9]李玉山,来新泉.电子系统集成设计导论[M].西安:西安电子科技大学出版社,2008.

[10]Xilinx Simiconductor. SPARTAN-3AN FPGA family data sheet [M]. USA:

Xilinx Simiconductor, 2007.

[11]史小斌,宋思盛,黄根全.PCI总线从设备接口的CPLD实现[J].电子科技,2011(11):59-62.

[12]胡菲,卢益明.基于FPGA的PCI接口控制器设计与实现[J].电子科技,2006(7):71-74.

[13]邱刚,康小录,乔彩霞,等.霍尔电推进长寿命试验台测控系统研制[J].火箭推进,2012(3):65-73.

[14]李正兵,王小丽,蒋兴佳.发动机内部压力传感器自动校准技术[J].火箭推进,2011(6):67-69.