摘要:对双口RAM操作中共享冲突的几种方式进行了讨论和分析。给出了防止这些共享冲突的基本方法,同时结合其在自动化系统中的应用给出了双口RAM和现场总线、工业以太网的接口应用方案。
关键词:双口RAM;现场总线;工业以太网;CAN;DSP
1 引言
在现代工业测控系统中,由于对系统的功能和性能要求越来越高,一般都采用高性能的CPU(如DSP)或嵌入式系统(如386EX等来实现测控功能,并将这些智能设备联网组成自动化系统。在早期的应用中,设备联网普遍采用RS232/RS422/RS485方式。随着计算机技术的发展,现场总线技术在自动化系统中的应用逐渐普遍,而采用工业以太网技术则是今后技术发展的一个趋势。
测控设备的设计可以采用单CPU系统完成整个测控功能和系统联网功能,这样做的缺点是使整个系统的软件设计复杂,系统适应性差,CPU负担较重,影响系统的整体性能。另外一种做法是采用双CPU系统,即用一个CPU完成测控功能,另一个CPU完成系统联网和接口通信功能。由于双CPU系统可按功能分开设计,因此可简化系统软件设计,使系统具有良好的扩展性,以便更好地应对不同的组网要求,提高系统的整体性能。
CPU间的通信可以采用串口、并口等方式,但它们共同的缺点是操作复杂、速度慢。因此,随着价格的不断下降,采用双口RAM方式在两个CPU系统间交换数据是一个不错的选择。但双口RAM有时会发生共享冲突问题。下面讨论防止共享冲突的几种方式。
2 双口RAM防止共享冲突的方式
一般双口RAM都提供了两个完全独立的端口,每个端口都有自己的控制线、地址线和数据线,CPU对双口RAM端口的操作等效于对它的外部RAM进行操作。双口RAM在使用上要注意的问题是如何避免两端CPU对同一RAM单元的争用,一般来说,双口RAM可提供三种防冲突方式,下面结合CYPRESS公司的CY7C144进行说明。CY7C144是采用低功耗CMOS工艺生产的8×8k位容量、高速存取(20ns)的双端口静态RAM,它还可以用多芯片级联来扩展字宽,其内部原理框图如图1所示。
2.1 插入等待状态的防冲突方式
当左右端口同时对同一地址的RAM存储单元进行存取时,CY7C144芯片内部的仲裁单元将会给出BUSY信号。具体来说,BUSYL、BUSYR信号的正常状态为高电平,当左端口对一存储单元进行存取时,若右端口也对该存储单元进行操作,则芯片内部的仲裁单元会使信号BUSYR为低,直到左端口操作完成后再将BUSYR恢复为高电平。设计中可以利用BUSY信号作为CPU的等待状态输入,并利用该信号使CPU在操作过程中插入等待状态,避免两端同时对双口RAM进行操作。
2.2 信号灯防冲突方式
双口RAM通过申请和释放端口的信号灯(也称为令牌)来操作存储单元可以避免发生冲突。一个信号灯对应相应数量的存储单元。双口RAM的两端均可对信号灯进行存取。当左端口向信号灯写入“0”再回读信号灯时,若信号灯也为“0”表示左端口拥有对存储单元的控制权,否则表示右端口拥有对存储单元的控制权。不管是否取得对存储单元的控制权,操作完成后都应向信号灯写入“1”以释放信号,从而避免资源的死锁。
CY7C144芯片提供8个信号灯,每个信号灯的存储单元为8×2k位。对信号灯进行操作时,片选信号(CEL、CER)应为高电平,信号灯使能信号(SEML、SEMR)为低电平。A0~A2表示信号灯地址,数据线最低位I/O0代表信号灯的值。对存储单元存取的一般过程如图2所示。
2.3 中断防冲突方式
双口RAM中最高地址的两个存储单元可以作为信箱使用,左右两端可以同时对它进行操作。其中最高地址为右端口的信箱,次高地址为左端口信箱。以CY7C144芯片为例,偏移地址1FFEH为左端口信箱,偏移地址1FFFH为右端口信箱。右端口写入左端口信箱1FFEH时,左端口的信号INTL将变为低,左端口读自己的信箱1FFEH时,信号INTL将重新为高;同理,左端口写入右端口信箱1FFFH时,右端口的信号INTR将变低,右端口读自己的信箱1FFFH时,信号INTR将重新为高。可以将信号INTL和INTR作为CPU的中断源,通过信箱向对方传递自己使用存储单元的状态来达到防止冲突之目的。
2.4 三种防冲突方式的比较
在上述三种方式中,插入等待状态的方式对于高速接口来说会影响数据的传送速率,而且要求CPU具有插入等待状态的功能,而有些CPU(如8031)不具备该功能。信号灯方式主要用在两个CPU共享内存空间时,如果双口RAM主要用于两个CPU之间交换数据,则交换的实时性很难用软件来保证,而中断方式则正好解决了这个问题。
3 在自动化系统中的应用方案
在变电站自动化系统中,保护、测量、控制一体化的设计应用越来越广泛,一般来说,保护测控装置的功能在设计之后不会有太大的变化,但数据通信网络受性能、价格、硬件、软件、用户策略等诸多因素的影响,目前在选择何种“接口网络”上有许多不同的需求,很难达成一致的选择。因此在通信网络的设计中,笔者采用了双CPU系统,其中一个CPU完成保护测控功能,一个CPU完成网络通信功能,两个CPU之间用双口RAM交换信息。网络通信CPU以插件的形式和保护测控CPU按照统一的接口连接,网络通信介质接口也以插件的形式进行选择。这样设计的最大好处是可以根据系统性能和用户要求来选择不同的通信CPU插件以满足自动化系统的组网需要,并可在通信插件上实现不同的通信协议,而保护测控功能部分不用进行任何修改;通信介质接口插件主要分为双绞线方式和光信号方式两种,可以根据现场应用需要进行选择。
系统CPU的组成如图3所示,将通信CPU插件和通信介质接口插件组合起来可满足实际工程和不同用户的需求。对保护测控CPU而言,双口RAM被划分为两个区域,其中数据接收缓冲区是通信CPU插件向其发送命令和数据的区域;数据发送缓冲区是它向通信CPU插件发送数据的区域。为了保证数据交换的实时性和有效性,可采用双口RAM的中断方式通知对方,信号INTL和INTR可作为CPU的一个中断输入。数据交换时,先将数据放入对应的双口RAM存储区,然后写入对方信箱,以通知对方有数据发送;接收方在相应的中断中对数据进行处理,同时读自己的信箱以清除中断信号,然后再写入对方信箱以告知其数据已处理完毕。
4 接口示例
根据上述设计思想,笔者选择AD公司的AD-SP-21065作为测控CPU系统的主处理器。下面以CAN总线和以太网接口为例来介绍与双口RAM的连接方法。
4.1 CAN总线通信插件
近年来,现场总线标准及其应用技术日益成为国际自动控制领域关注的一个焦点。CAN总线是德国Bosch公司为解决汽车中众多数据交换问题而开发的一种串行数据通信协议,是目前公认的几种最有前途的现场总线之一。它的通信介质可以是双绞线、同轴电缆和光纤,其通信速率可达1Mbps。通信CPU选择Philips公司的P80c592,它的内核为80C51单片机,并内带CAN控制器,可支持CAN2.0B协议。其系统组成原理图如图4所示。
设计时,可将ADSP-21065的MS3作为读写双口RAM的片选信号,对应地址为0x03000000-0x03001fff。若将P80c592外部存储器寻址空间的高端32kB作为双口RAM的地址,则双口RAM的寻址范围为0x8000-0x9fff,它的外部中断1可用于双口RAM的中断输入。
4.2 以太网接口通信插件
变电站通信体系结构IEC61850协议推荐使用的传输网络是以太网,因此,以太网接口的设计具有非常重要的现实意义。由台湾Realtek公司生产的RTL8019AS以太网控制器以其优良的性能、低廉的价格,而在市场上10Mbps网卡中占有相当的比例,设计时笔者就选择了该以太网控制器,并选用89C52单片机来控制RTL8019AS实现以太网接口。
图5只给出了通信CPU与以太网接口芯片的连接,它和双口RAM的连接与CAN总线组成原理图基本相同,不同之处在于片选信号的译码。在外存地址的分配中,高端32kB作为双口RAM和RTL8019AS的寻址空间,双口RAM的地址范围为0x2000-0x3fff,RTL8019AS的端口地址范围为0x8000-0x801f。89C52的中断0作为以太网接口使用,中断1用于双口RAM的中断输入。
5 总结
利用双口RAM在CPU之间传送数据具有传送速率高、实时性好、可靠性高、电路简单等优点,而采用插件形式来构成自动化系统的通信网络使系统具有良好的适应性和扩展性,能够很好地满足用户的需求。笔者按照这种思路设计的铁路牵引变电所自动化系统就充分利用了该特点。 |