工控机箱中CPCI接口通讯协议的FPGA实现办法

2019-01-24 13:51:57 来源:chinaaet
标签:
CPCI   FPGA   接口

 

0 引言

目前的仪器或者工控系统多数使用集成式工控机箱,机箱背板一般通过CPCI(Compact PCI)接口连接所有的插卡,包括工控电脑和各种采集卡、控制卡等。设计板卡时需要考虑CPCI接口实现及通信机制,现有板卡多使用专用接口芯片,例如PCI9054芯片,这类芯片可扩展性不强,需要外扩FPGA芯片,使用不灵活;且直接使用FPGA的IP核实现CPCI协议占用资源多,开发成本较高,在有某些特殊需求时不便扩展。


本文提出了一种基于FPGA的CPCI系统的设计和实现,使用廉价FPGA芯片实现CPCI通信协议,同时利用FPGA的可编程特性实现电源控制、灵活中断、外部触发、外部通信等特殊应用的功能,解决了CPCI协议经过CPCI桥时的冲突问题。

 

1 系统设计

1.1 系统框图

如图1所示,本系统主要包含嵌入式板卡和CPCI工控机箱,板卡插入到CPCI机箱背板插槽。嵌入式板卡内的FPGA与CPCI插槽间使用CPCI总线和用户IO连接,FPGA与ARM之间通过特定IO实现的总线连接,同时FPGA上连接一个三极管驱动的继电器[1]。

 

1.2 系统功能

FPGA和背板接口为CPCI接口,通过CPCI协议通信;ARM使用自定义总线协议将数据写入到FPGA的RAM缓存,然后使用CPCI接口发送给主控机,反之亦然。FPGA能识别CPCI的信号给ARM产生中断,也能够识别ARM的信号给CPCI产生有效中断,还可以通过继电器控制板卡上电、下电、复位,能通过IO控制实现ARM的ISP(在线升级,仅需控制一个ARM管脚)功能并产生背板触发信号。

 

下文从FPGA设计、ARM设计和通信机制三方面进行说明。

 

2 FPGA设计

如图2所示,FPGA内部主要包括CPCI协议、IO_MEM、ARM解码、读中断产生、CPCI中断产生、电源控制等模块[2-3]。FPGA芯片根据使用资源和成本选择Xilinx公司的XC2S100,最后使用387个Slice寄存器(占比16%)、882个LUTs(占比36%)。

 

2.1 CPCI协议模块

2.1.1 协议

CPCI协议兼容PCI2.2协议,扩展了部分用户接口,所以模块按照标准PCI2.2协议完成,实现配置空间管理、IO读写、Memory单字读写、Memory突发读写、仲裁和中断等功能。协议细节参看文献[4]、[5]。

 

2.1.2 FPGA仿真

对ISE布线后的文件用ModelSimXE进行时序后仿真,下面给出通过CPCI总线进行Memory突发读写的仿真,因IO读写和Memory单字读写时序与Memory突发读写类似,在此不再赘述[6-8]。

 

图3上半部分是Memory突发写的时序过程,在地址0xd000处连续写入10个依次递增的32 bit数据,起始数据为0x15896345。下半部分是写完之后的Memory突发读时序,可见从0xd000读出的连续若干32 bit数据,与写入完全一致。

 

此CPCI板卡在插入实际机箱槽位时出现这样的问题:某些厂家的机箱特定槽位插入会死机。该问题使用市面上的成品CPCI板卡也会遇到,经过分析,修改了CPCI板卡协议里的一个关于CPCI桥的接口,死机情况不再发生。

 

2.2 IO_MEM模块

本模块由3个双口RAM组成,在CPCI系统中命名为BA0、BAR1、BAR2,BAR0和BAR2是16 B的IO空间,仅支持单个字读取,BAR1为2 048 B的MEM空间,支持单字读写和突发读写。其中BAR1仅支持1 B的空间访问,只用来进行电源控制和ISP,不可通过其他外设访问。

 

2.3 ARM解码模块

本模块实现FPGA与ARM之间IO和Memory接口时序,因两者时序基本相同,以Memory时序为例说明,定义如图4和图5所示。硬件接口由时钟、使能、RAM选择、读写选择、地址数据总线(8根)组成。特别需要注意的是,时钟线必须连接到FPGA的全局时钟管脚上。

 

Memory读/写时序必须保证在地址A有效之后的第2个时钟周期开始接收/输入数据,32 bit数据由4 B组成,按低位字节到高位字节的顺序输出/输入,数据组合/拆分由ARM完成。接收/写入不同地址段的数据必须先使en_arm无效,然后再使能。

 

2.4 ARM读中断

当FPGA内部的BAR0写有效时使能int_arm,该信号会触发ARM的外部IO中断。通过CPCI接口往BAR0写入任何数据均可产生一个脉冲触发信号,可以使用此信号去中断ARM。

 

2.5 CPCI中断

ARM需要给CPCI产生中断,机制如下:

 

(1)ARM给IO0空间偏移地址2写入0x01,在INTA#上出现低电平触发信号;

 

(2)主控机检测到此电平触发中断,马上禁止中断,往IO1空间偏移地址0写入0xfb,之后INTA#被拉高,此时ARM无法通过步骤(1)再次发送中断,也就是说,INTA#无法被ARM拉低;

 

(3)主控机处理完临界代码之后,往IO1空间偏移地址0写入0xfa,允许ARM产生中断,也即,ARM可以通过步骤(1)再次产生中断。

 

2.6 外围控制

电源控制和触发信号都是通过ARM或者主控机给CPCI的特定空间写入预定信息,检测信息之后做出相应的处理[6]。

 

(1)主控机向BAR2空间的0偏移写入0xff、0xfe、0xfd、0xfc实现上电、掉电、复位、ISP功能;

 

(2)主控机往BAR2空间的0偏移写入一个小于128的数,此数值是给背板产生的触发脉冲个数;

 

(3)ARM往BAR0空间的1偏移写入一个小于256的数,此数值是给背板产生的触发脉冲个数,ARM能产生的触发脉冲比主控机多一倍。

 

3 ARM设计

在本系统中,ARM和FPGA的总线连接使用IO口模拟实现。按照前面描述的时序,ARM中接口相关功能有:

 

(1)响应中断信号,读取、执行IO命令;

 

(2)读取IO数据;

 

(3)读写Memory数据。

 

因接口时序的ARM代码实现较简单,在此不再赘述,具体的实现机制可参看后续的通信机制设计。

 

4 通信机制设计

从CPCI的角度看,ARM和主控机为主设备,FPGA为从设备。对于FPGA来说,CPCI接口和ARM接口完全独立,但是两者都可以对RAM进行读写,如果没有一个协调机制,很可能发生读写冲突,必须有一个规则来协调数据的传送[9-10]。因为CPCI为标准接口,所以需要定义的是FPGA和ARM的接口和主控机驱动读写规则,下面介绍FPGA和ARM的接口和主控机读写规则。

 

主控机与ARM需要交互的数据全部放在FPGA的RAM中进行缓冲。实现规则如下:

 

(1)IO空间只分配1 B,存放主控机发送的命令;

 

(2)Memory中读写空间分开,偏移0~999为主控机写、ARM读数据空间,1 000~2 048为主控机读、ARM写数据空间。

 

图6描述了ARM、CPCI和主控机的数据流向和读写流程。为避免系统读写冲突,需按照如下规则执行操作:

 

(1)ARM读写CPCI的Memory空间之前,使write_acc或read_acc无效,读写完毕使之有效。

 

(2)主控机读Memory时首先读read_acc,如果有效,开始读所需内存,否则等待一段时间重试;写Memory时首先读write_acc,如果有效,开始往指定内存写数据,否则等待一段时间重试;主控机对IO的写不需要读write_acc。

 

(3)主控机写Memory一般过程为:先根据所需命令确定需要将数据写入哪些空间,然后将配置数据写入Memory中,最后把控制命令写入IO空间;读Memory则直接读取数据。

 

本方案用于数据采集卡、数字基带模拟卡、本振信号发生卡、中频变频接收卡等多种功能应用,兼容研华、凌华等几大厂家的工控机箱。

 

5 结束语

本文给出了一种基于FPGA的CPCI系统设计方案,介绍了实施基本框架、CPCI协议、自定义总线通信协议和通信冲突避免机制,按照设计方案实现了低成本、高密度、易扩展的CPCI通信系统,在工程上便于实现,能广泛应用于工控和测量领域,对类似设计提供了参考。

 
关注与非网微信 ( ee-focus )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
 

 

继续阅读
【技术分享】英特尔10纳米Agilex FPGA核心技术全解读

英特尔的10纳米FPGA终于来了。在四月刚刚结束的英特尔“以数据为中心创新日”中,曾经代号为Falcon Mesa的英特尔最新一代10纳米FPGA正式亮相,并正式命名为Agilex™。

【技术分享】针对FPGA的GTP信号,PCB设计时应考虑的信号完整性问题

千兆位级串行I/O技术有着极其出色的优越性能,但这些优越的性能是需要条件来保证的,即优秀的信号完整性。例如,有个供应商报告说,他们第一次试图将高速、千兆位级串行设计用于某种特定应用时,失败率为90%。

FPGA业务仅占营收的3%却成为10nm工艺第一批受益者,英特尔是怎么想的?
FPGA业务仅占营收的3%却成为10nm工艺第一批受益者,英特尔是怎么想的?

和过去几代产品相比,AMD近期推出的产品给了英特尔更为激烈的竞争压力,这将帮助AMD逐步超越英特尔;近几年来,英特尔一直深陷制造工艺升级泥潭,它最近发布的10纳米 FPGA表明它的10纳米工艺还有一些尚未得到解决的问题;AMD很有可能重现二十年前的辉煌,再次夺得CPU性能的铁王座。

【技术分享】使用EPROM或EEPROM配置FPGA大家都会,使用NOR闪存呢?

NOR闪存已作为FPGA(现场可编程门列阵)的配置器件被广泛部署。其为FPGA带来的低延迟和高数据吞吐量特性使得FPGA在工业、通信和汽车ADAS(高级驾驶辅助系统)等应用中得到广泛采用。汽车场景中摄像头系统的快速启动时间要求就是很好的一个例子——车辆启动后后视图像在仪表板显示屏上的显示速度是最为突出的设计挑战。

【技术分享】详解FPGA中的DDS技术

我知道,我对与电子有关的所有事情都很着迷,但不论从哪个角度看,今天的现场可编程门阵列(FPGA),都显得“鹤立鸡群”,真是非常棒的器件。如果在这个智能时代,在这个领域,想拥有一技之长的你还没有关注FPGA,那么世界将抛弃你,时代将抛弃你。

更多资讯
高云半导体研讨会圆满召开,累计出货已达1500万片

2019年4月12日,中国武汉,高云半导体FPGA技术研讨会系列活动于武汉凯悦酒店成功召开,现场气氛热烈,座无虚席。

高云半导体研讨会圆满召开,累计出货已达1500万

2019年4月12日,中国武汉,高云半导体FPGA技术研讨会系列活动于武汉凯悦酒店成功召开,现场气氛热烈,座无虚席。

【技术分享】FPGA越来越精密,对DC-DC电源的精度也越来越高

FPGA厂商不断采用更先进的工艺来降低器件功耗,提高性能,同时FPGA对供电电源的精度要求也越加苛刻,电压必须维持在非常严格的容限内,如果供电电压范围超出了规范的要求,就有会影响到FPGA的可靠性,甚至导致FPGA失效。

【技术分享】详解迭代开发FPGA的思想,FPGA增量编译使用教程

FPGA设计的特点是需要不断不断的迭代各个设计流程来达到最终的设计,同时迭代的成本大,它比单片机开发更注重迭代的开发思想。所以,设计的前期一定要从系统的角度考虑好系统的方案,然后在系统这个方案中不断的迭代,不然后期发现由于系统方案的问题就得不偿失了,好的系统架构就是成功一大半了。其中,在FPGA设计中可以通过增量编译来加快我们的开发。

【技术分享】CRT/OLED/LCD等视频显示系统控制原理分析

作为消费者,我们对于各种形式的视频系统都已经非常熟悉了。但是从嵌入式开发人员的角度来看,视频就好像是一张纷繁复杂的网络,里面充满了各种不同的分辨率、格式、标准与显示等。

Moore8直播课堂
开发板测评
技术讨论
电路方案

1970-01-01 08:00:00