基于双口RAM的TCR数据通信系统
1引言
近年来,随着电力电子器件的不断发展,高压静止型动态无功补偿装置(SVC)的应用也越来越多,特别是在冶金、采矿和电气化铁路等重要场合中,TCR装置都扮演着重要角色。而对于高压无功补偿控制器的控制过程来说,快速实时地进行数据处理是非常重要的,需要将现场不断变化的数据在最短的时间内传送给控制器,由控制器进行相应处理,最终完成对整个系统的控制。以往的高压无功补偿设备中一般采用一片DSP加上存储器、模/数转换单元和外设接口来构成一个完整的控制系统,但这种方案要达到高速实时控制是不可行的。因为一个实时控制系统一般需要完成数据采集、模/数转换、分析计算、数/模转换、实时过程控制以及人机接口、与外部系统的通信等任务,单靠一片DSP来完成这些工作势必会大大延长系统对控制对象的控制周期,降低了控制精度,从而影响整个系统的性能。而采用双CPU的方式可以解决这一问题,即由两个CPU构成一个主从式系统完成相应功能。主从式系统设计的关键是主CPU与从CPU之间实现高速数据通信。一般来说,主从机之间的数据通信主要有串行、并行、DMA及双口RAM四种方式。综合各种通信方式的优缺点,考虑到TCR系统实时性高、控制精度高的特点,以双口RAM器件CY7C133作为共享存储器,完成了TCR数据通信系统设计,实现了TCR系统主从CPU之间的高速数据通信。
2TCR数据通信系统组成结构
TCR数据通信系统组成框图如图1所示。系统选用TI公司DSP芯片TMS320F2812和INTEL公司16位单片机80C196作为控制系统的CPU。两个CPU之间通过双口RAMCY7C133完成数据交换。
TCR数据通信系统主要功能是接收CPU(INTEL80C196)写入双口RAM的控制命令和设定参数,并将这些命令和参数传送给DSP,而当DSP接到这些指令后或设定数据范围或做出相应的控制策略,并控制系统做出相应的调整,待系统稳定后,DSP再将系统的一些重要的实时数据写入双口RAM中,由CPU取出。CPU可以将双口RAM中的数据传送到上位计算机中作实时监测处理。采用双口RAM是解决CPU之间的数据共享的有效办法。与传统串行通信相比,采用双口RAM不仅数据传输速度高,而且抗干扰性能好。
本系统所用DSP芯片是TI公司新一代芯片TMS320F2812,其数据总线宽度为32位,地址总线宽度为24位,速度跃升到150M,芯片内置18K×16位SRAM,128K×16位FLASH,4K×16位BootROM,1K×16位OTPROM,还具有2×8通道、12-位、80ns转换时间、0~3V量程的ADC,CAN总线收发器及12路PWM输出等丰富的外设。另一CPU电路为INTEL80C196,是INTEL公司的一款16位单片机,内部带有一个8通道的10位高速A/D转换器,并具有PWM输出,是一款高性能单片机。而双口RAM采用的是CYPRESS公司研制的CY7C133,该芯片是高速2K×16CMOS双端口静态RAM,具有两套相互独立、完全对称的地址总线、数据总线和控制总线,采用68脚PLCC封装形式,最大访问时间可以为25/35/55ns。CY7C133允许两个CPU同时读取任何存储单元(包括同时读同一地址单元),但不允许同时写或一读一写同一地址单元,否则就会发生错误。双口RAM中引入了仲裁逻辑(忙逻辑)电路来解决这个问题:当左右两端口同时写入或一读一写同一地址单元时,先稳定的地址端口通过仲裁逻辑电路优先读写,同时内部电路使另一个端口的信号有效,并在内部禁止对方访问,直到本端口操作结束。由于TMS320F2812的数据线宽度为32位,而CY7C133的数据位宽为16位,因此采用将TMS320F2812数据总线的低16位与双口RAM的数据总线相连。
图1TCR数据通信系统组成框图
3TCR数据通信系统设计
3.1TCR数据通信系统工作过程
首先CPU将数据发送到双口RAM的数据总线上,若此时DSP没有向双口RAM中的同一单元写入数据,则CPU的数据可以写入双口RAM中,而此时DSP若从该单元读取数据,就可将这些数据取出,进行相应的处理,待系统响应这些处理并调整输出后,DSP得到系统最新的实时数据并将其送到双口RAM的数据总线上,若此时CPU没有对双口RAM进行写操作,DSP的数据就可以写入双口RAM中,同样,CPU可以随即对该数据进行读取,并将这些数据用于实时监测显示。
3.2TCR数据通信系统硬件设计
图2是TCR数据通信系统电路连接图。由于双口RAM(CY7C133)的内部结构是双端口存储阵列,左右两个端口可以共用该存储阵列,并且拥有各自的控制线,在单独存取数据时,和普通的RAM相同。同时读取不同存储空间的数据和同时读取相同数据空间的数据时,DSP端和CPU端可以同时进行。即CPU对双口RAM进行读数据时,先将CPU端的片选信号/CER置为有效电平,再将双口RAM的读使能信号/OER变为低电平,然后向A0R—A10R地址总线发送相应的地址,则存储在双口RAM中该地址处的16位数据同时被读出,并通过D0R—D15R数据总线送入到80C196中;当CPU对双口RAM进行写操作时,也需将CPU端的片选信号/CER置为有效电平,然后将双口RAM的控制信号/OER变为高电平,最后通过D0R—D15R数据总线将数据送入到A0R—A10R地址总线所对应的地址中去。当DSP对双口RAM进行读数据时,方法与上面所述的方式一致,只不过DSP端的片选信号变为/CEL,控制信号变为/OEL,地址线变为A0—A10,数据线变为D0—D15。然而若同时对相同的数据空间做写操作,或一端口对一数据空间作读操作的同时另一端口对该数据空间作写操作,CPU端口与DSP端口将发生冲突。这时CY7C133通过BUSY管脚来处理这两种情况。当CPU端口与DSP端口对不同存储空间进行读写操作时,可同时存取。此时,CPU端口与DSP端口的BUSY信号同时置高。若对同一存储空间同时进行存储操作时,哪一端的存储请求信号先出现,则该端的BUSY信号置高,允许存储。哪一端的存储信号出现在后,则这一端BUSY信号置低,禁止存储。值得注意的是,左右两端存取请求信号出现的时间差必须大于5ns,不然仲裁逻辑无法判断哪一边的存取请求信号出现在前。如果出现两端存取请求信号出现的时间差小于5ns的情况,仲裁逻辑将一边的BUSY信号置高,将另一边的BUSY信号置低,从而保证两个端口一个执行数据存储,另一端口进行数据读取,避免了冲突。
图2TCR数据通信系统电路连接图
3.3TCR数据通信系统软件设计
双口RAM必须采用一定的机制来协调CPU端与DSP端对它的读写操作,否则会出现读写数据的错误。在这里可以把双口RAM的存储空间分为奇、偶地址两个空间。其中,奇地址空间专供80C196写,偶地址空间专供80C196读。那么我们只需对TMS320F2812的软件作相应处理即可,也就是说,TMS320F2812对双口RAM的奇地址空间只读,对偶地址空间只写。这样就避免了TMS320F2812和80C196对双口RAM同一地址单元的写入操作。另外,在对双口RAM进行访问之前,CPU或DSP首先对本端的/BUSY信号进行查询,只有本端/BUSY信号无效时才进行读写操作,进一步保证了数据读写的可靠性。
4结束语
本文介绍一种应用于TCR装置中的高速数据通信系统,该系统解决了以往数据通信装置数据传输时间长、处理速度慢、结构复杂、影响整个系统的性能等难题。为CPU端与DSP端实现高速通信提供了一种实用、高效的系统设计方法。该方法不仅简化了系统的硬件配置和软件编程,而且使系统具有较高的通信速度,保证了系统的实时性与可靠性。此外,系统中所设计的CPU/DSP与双口RAM之间的接口电路,逻辑控制简单实用,对其它应用系统具有较好的可移植性。
文章版权归西部工控xbgk所有,未经许可不得转载。