总线式数控系统中PCI接口控制器的FPGA实现与应用

时间:2022-10-24 09:25:42

总线式数控系统中PCI接口控制器的FPGA实现与应用

摘 要:

在总线式多处理器高档数控系统中,为了满足高速高精加工的要求,让数控装置的操作系统与外部设备接口之间快速稳定地传输大批量的数据十分重要。在分析了基于PCI协议的传输方式在数控系统中应用的优势后,在数控装置接口控制板的主控芯片FPGA中利用软件设计了一款PCI接口控制器,并详细论述了PCI接口控制器内部结构关键部分,以及其核心状态机等的设计,然后说明了PCI接口控制器在总线式数控系统中应用的方法。最后,通过搭建实验平台,验证了该方案的可行性和有效性。

ス丶词:

PCI;接口控制器;现场可编程门阵列;数控;现场总线

ブ型挤掷嗪牛 TP334.4;TP274.2

文献标志码:A

英文标题

FPGA implementation and application of PCI interface controller in

bus based computer numerical control system

び⑽淖髡呙

GU Chao, SONG Bao, TANG Xiaoqi

び⑽牡刂(

School of Mechanical Science and Engineering, HuaZhong University of Science and Technology, Wuhan Hubei 430074, China

英文摘要

)

Abstract:

To meet the requirements for high speed and high accuracy machining,how to transmit large amounts of data fast and stably between operation system and peripheral interface becomes very important in bus based multiprocessor advanced Computer Numerical Control (CNC) system. After analyzing the advantage of transmission application based on PCI in the CNC system,a PCI interface controller was designed in the main control chip FPGA on the CNC devices interface control board, also the key components of the internal structure of PCI interface controller, as well as its core state machine design were discussed in detail, then the method to use PCI interface controller in bus based CNC system was explained. Finally, the experimental platform was set up to verify the feasibility and effectiveness of the program.

英文关键词

Key words:

PCI;interface controller;FieldProgrammable Gate Array (FPGA);numerical control;fieldbus

0 引言

随着大规模组合机床和高速高精加工的发展,现场总线在数控系统的运用越来越广泛。虽然目前基于现场总线的数控系统大部分都是国外的,但国内也在积极开展这方面的研究与应用。其中基于数控联盟总线(NC Union of China Field Bus, NCUCBus)的数控系统产品已经崭露头角。

NCUCBus协议是为包含运动控制的工业自动化控制过程而制定的现场总线通信协议,基于PHY+FPGA结构模式和100@MBps以太网网络,采用主―从通信方式,解决了数控装置中主站设备与伺服驱动等外部从站设备之间的高性能同步问题;但数控系统的操作系统与主站设备之间长期以来都是采用基于ISA协议的数据传输方式,速度很低,成为数控系统整体性能的瓶颈。

本文设计了一款基于PCI协议传输方式的PCI接口控制器,大幅度提升了操作系统与主站设备的数据传输速度,为基于NCUCBus协议的现场总线式数控系统的高速高精运动控制提供了基础。

PCI总线是一款先进的高性能32位局部总线,独立于CPU的结构,数据传输速率可达132@MBps,远超过ISA最高16@MBps的速率[1]。PCI接口的设计一般采用专用PCI接口芯片,这种方案易于实现,开发周期短;但PCI接口芯片价格昂贵,且引脚较多,体积大,不利于在尺寸要求严格的数控装置中使用。本文在主站设备的主控芯片现场可编程门阵列(FieldProgrammable Gate Array, FPGA)中通过编程设计PCI接口控制器,实现了与操作系统系统之间基于PCI协议的高速数据传输。这种方法不用增加额外的芯片,也不用改变主站设备基本结构,节约了物理空间和成本,还可以根据实际需要,在PCI接口控制器中加入其他需要的功能,使用非常灵活。

1 FPGA中PCI接口控制器的实现

本文设计的PCI接口控制器将PCI相关信号转换成双口RAM的数据、地址和控制总线,操作系统通过PCI协议与主站设备的缓冲区进行数据交互。PCI接口控制器采用超高速集成电路硬件描述语言(VeryHighSpeedIntegrated Circuit Hardware Description Language, VHDL)描述[2],工作在33@MHz总线频率,具有32位地址/数据总线宽度,包含主/从两种工作模式。当CPU对外设进行配置读写,或对I/O和存储器进行单段读写时,PCI控制器工作在从设备模式;当CPU需要与大容量存储器进行批量数据传输时,PCI控制器工作在主设备模式,并通过线性突发数据传送模式进行数据读写。突发传输模式最高速度可达132@MBps,且不需要CPU的介入,有利于减轻CPU的负担,让其有更多的时间用于插补计算等其他工作[3]。

PCI接口控制器的外部端口如图1所示,其中左边端口为标准PCI信号,具体可参考PCI协议第2.2版[4]。

本文采用模块化设计方式,每个模块完成特定的子功能,外部按照相应逻辑连接,这种设计方法降低了设计难度,使程序易于调试和维护。

PCI接口控制器共有8个模块构成,图中箭头表示各个电路模块间的输入输出连接关系。

图片

分区

图1

PCI总线接口控制器的内部结构与外部端口

控制信号与命令信号驱动电路负责PCI_FRAMEn等控制、命令信号的输入输出。根据状态机中状态的变化,从设备驱动PCI_TRDYn、PCI_DEVSELn和PCI_STOPn,主设备驱动PCI_FRAMEn、PCI_IRDYn和PCI_CBEn。当检测到有读写操作命令时,译码电路对PCI_AD和PCI_CBEn的进行译码和锁存,为读写操作做好准备。

DMA控制器用于数据的突发传送。在每个传输周期中,需要进行批量数据传输时,DMA控制器发出占用总线请求, 当PC应答并让出总线控制权,突发传送开始,同时DMA控制器计数,传送完最后一个数据,发出传输完毕中断,并置位中断寄存器。中断控制电路根据中断寄存器的不同判断是周期中断或是DMA中断。突发传输读基址和写基址由外部端口BURST_ADD_R和BURST_ADD_W输入。

发送缓冲区与接收缓冲区都为双口RAM,通过在FPGA的设计软件中调用IP核altdpram实现,其外部端口包括两套完全独立的地址线、数据线、读写使能和时钟。在单数据段访问时,双口RAM的地址可直接取自PCI_AD中的某段,而在突发传送时,每传输一个数据,需要根据系统中对双口RAM空间的划分,实现对地址的自增,以实现对RAM空间的连续访问。

状态机由一组状态集和相应的状态转移条件组成。图2为PCI接口控制器的状态机,包含了7个状态:空闲期(A_IDLE)、从模式地址期(S_ADDR)、从模式数据期(S_DATA)、从模式返回期(S_TURN)、主模式地址期(M_ADDR)、主模式数据期(M_DATA)和主模式返回期(M_TURN)。在每个时钟的上升沿,控制器监测PCI_FRAMEn、PCI_IRDYn、PCI_TRDYn、PCI_GNTn、PCI_CBEn和PCI_AD等信号的变化,确定各状态的相互切换。

1)空闲期。

空闲期为有限状态机的起始状态(start_state),也是在没有任何操作时或系统复位后的默认状态,为主模式和从模式所共有。在空闲期若发现有其他主设备试图对PCI控制器发起读写操作,则进入从模式地址期;若监测到总线空闲,且仲裁器答应了控制器占用总线的请求,即PCI_GNTn信号有效,则进入到主模式地址期。

2)从模式状态。

在读操作中,在控制器驱动PCI_AD总线前,需要一个交换期,由PCI接口控制器利用TRDY_N强制实现,这是从模式地址期存在的必要性。本设计中,PCI接口控制器在从模式地址期同时驱动TRDY_N和DEVSEL_N,并将数据驱动到AD总线上。当条件符合选中了对配置空间,I/O空间和存储器空间之一进行读写操作,则进入从模式数据期;否则返回空闲期,在从模式数据期完成读写操作。在从模式返回期,对本次操作的各寄存器信息进行复位,以准备迎接下一次操作。

3)主模式状态。

在主模式地址期,驱动突发传送的基址到PCI_AD总线上,并驱动相应的命令到PCI_CBEn总线上;在主模式数据期,监测到各信号符合读写操作条件时,开始传送数据,并完成对缓冲区信号组的操作。当完成对最后一个数据的读写操作,或检测到从设备的PCI_STOPn信号有效,则进入主模式返回期,并在主模式返回期完成在本次传输中改变的各寄存器的复位。

图片

图2

主模式与从模式的状态机

PCI接口控制器正是通过对状态机不同状态之间的转换,实现了数据的传输。

┑2期

顾超等:总线式数控系统中PCI接口控制器的FPGA实现与应用

┆扑慊应用 ┑31卷

2 NCUCBus总线式数控系统数据传输方式

在NCUCBus总线式数控系统中,操作系统在上位机工业PC中,而主站设备采用FPGA作为主控芯片。在每个通信周期中,工业PC从FPGA中的接收缓冲区读取数据并进行处理,并将处理过的数据写入发送缓冲区中,主站通过百兆以太网与各从站交换数据[5-6],系统的数据传输结构如图3所示。

华中数控NCUCBus总线式数控系统采用周期通信方式。在每个通信周期中,需要传输周期数据与非周期数据,包括下传的指令数据与上传的反馈数据,最大数据传输速度可根据式(1)计算。

v┆lim=2×Nnp+∑nsi=1npitpВ1)

其中:Nnp为非周期数据长度,最长为60字节;npi为第iЦ龃诱舅需的周期数据长度,设定为20字节;ns为从站个数,最大为128;tp为周期时间,设定为0.5@ms。在每个周期,CPU不仅要传输数据,还需进行大量的计算,则数据传输速度需远大于上述速度,按3~5倍计算,由计算可知所需传输速度可达30.7~51.2@MBps。

ISA总线能达到的最高传输速度为16@MBps,不能满足此要求,而33MHz/32位的PCI总线132@MBps的突发数据传输速度可以很好地满足。

图片

图3

NCUCBus总线式数控系统数据传输结构

NCUCBus总线式数控系统为基于PCI 总线的实时控制系统,CPU每个周期需要与外设交换大量数据,而系统本身又不允许PCI控制器长期占用过多的时间开销,所以不能在一次突发传送中传输很多数据,需设计分块传输功能。也就是说,在每块数据传输完毕之后,DMA控制器都会释放总线,并且记录下传输信息,监测到总线空闲时,重新发出占用总线请求,以进行下一块数据的传输。虽然这种方式在总体上会影响系统最终的数据传输速度,但是实验表明,这种方式对速度的影响在可接受的范围内。分块的大小由图1中的BURST_NUM端口控制,可根据实际情况灵活调整,突发传送的分块传送过程如图4所示。

3 逻辑验证与性能分析

为了检验PCI接口控制器设计的正确性,按照图3设计了一套总线式数控系统。工业PC采用研华公司的PCM3353,自带PC/104Plus接口。PC/104Plus是一个3×40即120孔插座,专为PCI总线设计,包括了PCI规范要求的所有信号[7]。FPGA芯片为Altera公司的Cyclone II EP2C8Q208C8,其I/O引脚与3.3@V的PCI局部总线标准V2.2完全兼容,且满足32位/33MBps的操作频率和时序要求[8]。在Quartus II 8.0中进行综合布线,生成sof文件并通过JTAG口下载到FPGA中,在工业PC中写好PCI的Linux驱动程序和读写应用程序[9],然后分别用从模式的单段读写方式和主模式的突发传送方式从双口RAM中读出一批数据,通过Signaltap查看时序[10],并进行对比,如图5和图6所示。

图片

图4

突发传送的分块传送

图片

分区

图5

从模式单段读写方式读存储器

同时,为了检验传输速度是否符合要求,在应用程序中加入测试程序。从图5可看出,单段读方式,平均12个时钟周期才能读一段数据,理论速度为11@MBps,实测速度与此基本相同;而图6显示突发传送模式每个时钟周期都可以传送一段数据,峰值传输速度可达132@MBps。事实上,由于分块传输的必要性,平均传输速度无法达到上述数值。图7为在不同分块大小时实测的突发传送平均传输速度。可以看出,分块大小在16字节以上时,平均传输速度在44@MBps以上,符合NCUCBus总线式数控系统的要求。在测试过程中,发现分块过小或者过大,都将影响传输的稳定性,一般取16~256字节时,既符合传输速度的要求,又可以保证传输的稳定性。突发写传输与此类似,不再赘述。

4 结语

本文通过在NCUCBus总线式数控系统主站的FPGA中编程实现PCI接口控制器的方式,成功地解决了系统中多处理器之间数据传输的速度瓶颈问题,而且对系统硬件的基本结构基本没有改变,加快了设计进度。经后续的长时间的实际运用的检验证明,这种设计方式具有很高的可靠性。该PCI接口控制器功能全面,设计成本低,经少量改动,即可适用于其他系统。

参考文献:

[1]

李贵山,戚德虎.PCI局部总线开发者指南[M]. 西安:西安电子科技大学出版社,1997.

[2]

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

[3]

SHANLEY T. PCI System Architecture[M]. 4th ed.北京: 电子工业出版社, 2000.

[4]

PCI Special Interest Group. PCI Local Bus Specification Revision 2.2[S]. PCI Special Interest Group, 1998.

[5]

任清荣,陈吉红,唐小琦,等. 基于以太网的数控系统设计与实现[J]. 机械设计与制造,2009(9):44-49.

[6]

白玉成,唐小琦,陈吉红,等. 数控系统以太网接口技术的研究[J]. 组合机床与自动化加工技术, 2009(2):148-149.

[7]

PC/104 Embedded Consortium. PCI104 Specification,Version 1.0[S]. 2003.

[8]

Altera Corporation. Cyclone II Device Handbook,Volume 1[R]. Altera Corporation, 2005.

[9]

CORBET J, RUBINI A,KROAHHARTMAN G. Linux设备驱动程序[M]. 3版.魏永明,耿岳,钟书毅,译.北京:中国电力出版社,2005.

[10]

赵艳华. 基于Quartus II的FPGA/CPLD设计与应用[M]. 北京:电子工业出版社,2009.

上一篇:基于B样条隶属函数的模糊推理系统 下一篇:概念层次中基于粗糙集的优化可信规则获取