为避免因竞争而导致的通讯失败,设计者提出了各种解决方案。常见的有三种:
(1)设置标志位:在开辟数据通讯区的同时,可通过软件方法在某个固定存储单元设立标志位。这种方法要求两端CPU每次访问双端口RAM之前,必须查询、测试和设置标志位,然后再根据标志位的状态决定是否可以访问数据区;有的双端口RAM本身就个有专用的一个或多个硬件标志锁存器和专门的测试和设置指令,可直接对标志位进行读/写操作。这种方法通常用在多个处理器共享一个存储器块时。为了保证通讯数据的完整性,在采用这种方法时往往要求每个处理器能对该存储器块进行互斥的存取。
(2)软件查询BUSY引脚状态:双端口RAM必须具有解决两个处理器同时访问同一单元的竞争仲裁逻辑功能。当双方址发生冲突时,竞争仲裁逻辑可用来决定哪个端口访问有效,同时取消无效端口的访问操作,并将禁止端口的Busy信号置为低电平。因此Busy信号可作为处理器等待逻辑的输入之一,即当Busy为低电平时,让处理器进入等待状态。每次访问双端口RAM时,CPU检查BUSY状态以判断是否发生竞争,只有BUSY为高时,对双端口RAM的操作才有效。
(3)利用硬件解决竞争:将BUSY信号引入READY引脚可在发生竞争时使BUSY为低,从而使CPU内部总线时序根据READY引脚状态自动插入WAIT信号并展宽总线,以达到分时访问的目的。对于80C196KC和8098等MCS-96系列微处理器,利用这种方法便可通过硬件解决竞争问题。
另外,在使用BUSY信号时必须首先将此信号接上拉电阻,其次应在BUSY信号有效期间使处理器保持读写操作经及相应的地址和数据,但是需要说明的是:在BUSY信号变高之前,这种情况下的所有写操作都是无效的,图4所示发生竞争时的时序图。
3 RAM在雷达仿真平台中的应用
雷达仿真平台是用于雷达操作手训练的仿真设备。该平是一个由计算机、主控CPU(80C196KC)、手轮控制CPU(8098)等组成的多机系统。在主控CPU判断目标是否进入雷达波瓣作用范围时,必须将目标理想诸元与雷达的高低角和方位角做比较。在雷达仿真平台中,雷达的高低角和方位角是通过对高低手轮和方位手轮的轴角转换而获得的。主控CPU每隔20ms就向手轮控制CPU发送一次模拟目标的高低角、方位角、距离以及目标属性等多组数据(共200字节),同时接收手轮控制CPU的数据。为了加快通迅速度,简化通讯,提高通信的实时性指标,系统要用了双端口RAM(DPRAM)IDT7132/7142来进行CPU之间的数据交换。具体电路见图5。
80C196KC和8098均有READY引脚,通过80C196KC和8098的时序可知,当READY引脚出现低电平时,CPU可自动插入WAIT等待周期,以延长读写和片选信号,因此,设计时将80C196KC和8098的READY引脚与IDT7132/7142的BUSY引脚相连就可在发生竞争时,自动使80C196KC或8098处于等待状态。
在资源分配方面,该设计还划分了电视跟踪数据区、雷达跟踪数据区、手轮实测值数据区和命令状态区,并明确规定了各个通讯区的任务和性质,从而简化了通讯程序,提高了通讯速度。
通过雷达仿真平台控制系统的实时运行实验证明:主控CPU与手轮控制CPU之间的数据交换速率很高、运行可靠,大大提高了系统的实时性能。目前,该系统已经通过了技术鉴定。