双口RAM在组合导航系统中的应用
2008-07-31
作者:黎玉刚, 张英敏, 付强文
摘 要: 介绍了双口" title="双口">双口RAM器件CY7C028的内部结构及工作原理,详细讨论了CY7C028在INS/GPS导航系统" title="导航系统">导航系统" title="组合导航系统" title="组合导航系统">组合导航系统">组合导航系统中的具体应用,给出了CY7C028与TMS320F240和TMS320VC33之间的接口电路,并对CY7C028的分区处理进行了独特的软件设计,提高了实时性" title="实时性">实时性。
关键词: 双口RAM TMS320VC33 TMS320F240 组合导航系统 CY7C028
导航系统是负责将载体从起始点引导到目的地的系统装置。近年来,随着计算机技术和卫星通信技术的发展和实际应用,使得导航系统的精确性和可靠性达到了更高的要求,促使导航系统向综合化和容错化方向发展,进而发展了以惯性导航为主体的各种组合导航系统。在众多组合导航系统中,INS/GPS组合导航系统更是发展迅速,在军用和民用领域均已获得广泛应用,而且愈来愈受到重视。就INS/GPS组合导航系统而言,除了要完成大量的导航解算工作外,还要完成控制、人机接口、与外部系统的通信等功能。由于导航系统对实时性要求较高,采用单个CPU来实现上述功能是不现实的。在研制某弹载INS/GPS组合导航系统时,针对弹载导航系统体积小、重量轻、功耗小的特点,设计了一种嵌入式高速处理系统。该系统采用TI公司的TMS320VC33和TMS320F240组成双DSP系统,即由两个DSP构成一个主从式系统完成相应功能。主从式系统设计的关键是主机与从机之间的数据通信。主从机之间的数据通信主要有串行、并行、DMA及双口RAM四种方式。综合各种通信方式的优缺点,考虑到导航系统实时性高、数据量大的特点,笔者以双口RAM器件 CY7C028作为共享存储器,通过独特的软件分区处理设计有效地实现了导航系统中的主计算机与从计算机之间的通信。
1 双口RAM芯片CY7C028的内部结构及工作原理
CY7C028是CYPRESS公司研制的64K×16低功耗CMOS型静态双口RAM,最大访问时间为12/15/20ns,可与大多数高速处理器配合使用,无需插入等待状态。采用主从模式时可以方便地将数据总线扩展成32位或更宽。其内部功能框图如图1所示。
双口RAM芯片CY7C028作为一种性能优越的快速通信器件,在多CPU的高速数字系统中非常适用。其特点是:提供两套完全独立的数据线、地址线、读写控制线,允许两个CPU对双端口存储器同时进行操作;具有两套完全的中断逻辑,用于实现两个CPU之间的握手信号;具有完全独立的忙逻辑,可保证两个CPU对同一地址单元进行正确的读写操作。当两个CPU对双口RAM存取时,存在以下四种情况:
(1) 两个CPU不同时对同一地址单元存取数据。
(2) 两个CPU同时对同一地址单元读出数据。
(3) 两个CPU同时对同一地址单元写入数据。
(4) 两个CPU同时对同一地址单元操作,一个写入数据,另一个读出数据。
不难看出,在第一和第二种情况下,两个端口的存取不会出现错误,而第三种情况会出现写入错误,第四种情况会出现读出错误。为了避免两个CPU对同一地址单元进行访问时由于地址数据争用而造成的数据读写错误,CY7C028主要提供了以下几种工作方式[1],下面逐一介绍。
1.1 硬件判优方式
双口RAM CY7C028具有解决两个处理器同时访问同一地址单元的硬件仲裁逻辑。在双口RAM的两套控制线中,各有一个BUSY引脚。当两端的CPU不对双口RAM的同一地址单元存取时,BUSYL=H、BUSYR=H,可正常存储;当两端的CPU对双口RAM同一地址单元存取时,哪个端口的存取请求信号出现在后,则其对应的BUSY=L,禁止其存取数据;在无法判定两个端口存取请求信号出现的先后顺序时,控制线BUSYL、BUSYR只有一个为低电平。这样,就能保证对应于BUSY=H的端口能进行正常存取,对应于BUSY=L的端口不能存取,从而避免了两个CPU同时竞争地址资源而引发错误的可能。
1.2 中断判优方式
中断判优方式又称邮箱判优方式。CY7C028具有两套中断逻辑,通过两个INT引脚分别接到两个CPU的中断引脚上,以实现CPU的握手。在双口RAM的数据传送中,两端的CPU都把双口RAM作为自己存储器的一部分。当两个CPU需要数据传送时,假设左端CPUL向右端CPUR传送,首先CPUL将需要传送的数据存放到双口RAM某段约定的地址单元中,然后向双口RAM的最高奇地址单元0xFFFF即右端口的邮箱进行写操作,用以向CPUR发出一个中断,这样CPUR就进入其相应的中断服务子程序,将约定地址单元的数据读出,然后对双口RAM右端口的邮箱进行写操作,用以清除该中断。
1.3 令牌" title="令牌">令牌判优方式
令牌判优方式是一种快速数据交换方式。在此方式中有信令锁存逻辑,CY7C028内部提供了八个相互独立的锁存逻辑单元,最多可将RAM空间分成八个区段。这些锁存逻辑单元独立于双口RAM存储区,并不能控制RAM区、封锁两端CPU的读/写操作,而是被作为信令,只提供指示逻辑,由两端CPU按约定的规则,轮流地占用它们划定的RAM区,各区的大小及地址由软件自由设定,且左右端操作完全一样,只要不超过令牌的限制次数即可。当左右端口同时申请同一令牌时,令牌逻辑将裁定谁先占用,从而保证只有一个端口获取令牌。而在占用令牌期间,CPU可以按最高速无等待存取数据,这对实现高速、多CPU数据采集与处理系统无疑是非常有利的。但是,为了避免令牌方式争用出错,应尽可能使两端CPU分时占用同一RAM区。
2 双口RAM在组合导航系统中的应用
2.1 系统总体设计
导航系统的主要任务是测量飞行载体的即时位置、速度、航向等导航参数,具有实时性高、运算量大等特点。因此在导航系统中,计算机设计是系统设计的关键之一。在INS/GPS组合导航系统中,导航计算机的任务主要有三类[6]:
(1) 数据采集,包括采集惯性测量单元元件输出信号,接收外部系统校正信息,如GPS输出信息、初始位置信息等。
(2) 数据处理与运算,包括惯性测量元件的误差补偿、初始对准、导航参数解算、组合导航算法实现等。
(3) 输出导航数据及系统状态量,包括输出导航参数以及与其它设备交换信息等。
所有这些任务,如果都由一个CPU来完成,那么CPU在进行运算的同时,还要兼顾系统控制和数据输入输出,并响应频繁的中断,必然降低系统运行效率。所以,为了兼顾系统运行效率,减轻导航计算机负担,设计一种以TMS320VC33为主机和以TMS320F240为接口机的双DSP主从式系统。系统总体结构如图2所示。
主机TMS320VC33主要用来定时采样陀螺、加速度计的数据,并完成姿态阵计算、组合系统卡尔曼滤波器计算等导航解算。接口机TMS320F240主要完成系统相关状态的检测/控制,与GPS接收机、弹载计算机及其它外设的通信等任务。主机和接口机之间的通信利用双口RAM CY7C028实现。量化器模块主要是将加速度计输出的电流信号转换成主机可直接读取的数字量。此外,由于TMS320VC33和TMS320F240的串口资源有限,无法满足系统需要,系统中采用EXAR公司的ST16C554进行相应的串口扩展。
2.2 DSP与双口RAM的接口设计
在组合导航系统中,CY7C028与两个DSP芯片TMS320VC33和TMS320F240之间的接口电路如图3所示[2~4]。TMS320VC33的数据线宽度为32位,而CY7C028的数据位宽为16位,因此采用将TMS320VC33数据总线的低16位与双口RAM的数据总线相连。TMS320VC33在发送32位的数据至双口RAM时,分两次完成,先写低16位,再写高16位。从双口RAM读取数据操作与发送类似。如前所述,使用双口RAM的关键是解决左右端口同时操作同一RAM单元的竞争问题。图3中采用了硬件判优的方法,即将左右端口的BUSY信号经相应处理后分别引至支持插入等待时序的TMS320VC33和TMS320F240 的对应引脚,以解决左右端口对同一单元的争用问题。
为了使整个系统成为完全可编程系统,增加系统的灵活性,系统中逻辑控制选用可编程的逻辑器件GAL实现[5]。GAL选用Lattice公司的GAL20V8B芯片,并采用Lattice公司提供的ispDesignEXPERT集成开发软件对其进行逻辑编程。ispDesignEXPERT支持多种硬件编程语言,系统中采用ABEL语言进行编程。左、右两端GAL的输入管脚信号定义如图3中所示。
左端译码电路的逻辑方程为:
分别为双口RAM左端口的片选、读/写及输出使能控制信号。为引至TMS320F240 READY引脚的信号。
在右端译码电路中,引至TMS320VC33 引脚的信号为双口RAM右端口输出信号,其余逻辑控制信号编程与左端类似,不再赘述。
CY7C028具有64K字的存储空间,存储资源较为丰富。系统设计时,根据实际需要将其前32K字存储空间作为TMS320F240仿真程序的存储空间,将其后32K字的存储空间作为双DSP的共享数据存储空间。这样设计,既减小了电路板面积又简化了系统的构成。在本系统中,CY7C028共享数据存储区的地址确定如下:TMS320F240端为0x8000~0xFFFF,TMS320VC33端为0xC88000~0xC8FFFF。
采用上述接口电路,使得导航计算机系统电路简单、可靠性高,同时使主从计算机之间具有很高的通信速度。经实验测试,在传输4K字节的系统数据过程中,其传输速率高达6.6M字节/秒,能很好地满足系统导航解算周期为5ms的实时性要求。
2.3 双口RAM的分区处理及软件设计
利用双口RAM的BUSY信号线,虽然可以保证左右两个端口能可靠地完成数据的传送,但当两个端口对同一地址单元同时存取数据时,其中一个端口要处于等待状态。对于导航系统来说,插入等待状态会降低数据交换率,这在一定程度上会影响系统的实时性。为了尽可能地避免出现等待状态,结合系统中的数据总以帧的方式进行数据处理的特点,在对双口RAM编程时,采用了地址分区方式。即将共享数据区按一定的标准划分成若干个数据块并制定相应的软件协议,使得主、从机以适当的时序读写数据,从而避免对同一单元的竞用,提高实时性。
在本系统中,主、从机之间需要交换的数据主要是与GPS接收机、弹载计算机、火控系统、地面检测系统进行双向通信的数据。软件分区处理时,按照交换数据的类型将双口RAM的共享存储区从起始单元开始分成四个大的数据区,数据区大小由实际的数据帧长度确定。每个大数据区又细分为一个数据接收缓冲区和一个数据发送缓冲区,且每个缓冲区都定义有相应的数据存取基地址和读、写指针。主、从机根据缓冲区数据存取基地址及读、写指针,对相应单元进行读、写操作,整个缓冲区等效于一个环形数组。若缓冲区大小设置合理,当新数据覆盖旧数据时,旧数据已经处理,既不会遗漏数据又节省了存储单元。
在本系统中,所有对外部系统的通信工作均由从机TMS320F240通过扩展串口ST16C554来完成。考虑到整个系统的数据处理流程及时序要求,在TMS320F240的软件设计中,数据接收采用中断方式,数据发送则是在软件的主流程内部维持一个无限循环,将发送程序驻留在此循环中,通过查询发送缓冲区的读、写指针,实时发送数据。ST16C554共有四个串口,分别负责与前述四个外部系统的数据通信。主机TMS320VC33只需对双口RAM中相应的数据缓冲区写入要发送的数据或读取需要的数据即可。鉴于主、从机对这四种类型数据的存取操作程序类似,在此只给出TMS320F240接收火控系统数据和TMS320VC33读取火控系统数据的程序流程图,分别如图4和图5所示。其中,Base为火控系统数据接收缓冲区数据存取基地址。
从图4和图5的流程图可以看出,采用地址分区方式后,主从计算机对双口RAM的软件控制变得较为简单。同时,为了验证地址分区方式避免双口RAM地址争用现象的有效性,在系统的数据传输过程中,用示波器监测双口RAM左右端口BUSY引脚的电平,发现无等待状态信号出现,这表明对双口RAM的软件分区处理模式的确是一种比较理想的处理方法。
本文结合组合导航系统设计,介绍了利用双口RAM实现导航计算机主从机之间通信的一种实用、高效的系统设计方法。该方法不仅简化了系统的硬件配置和软件编程,而且使系统具有较高的通信速度,保证了系统的实时性。此外,系统中所设计的DSP与双口RAM之间的接口电路,简单实用且逻辑控制可编程实现,对其它应用系统具有较好的可移植性。
参考文献
1 CY7C028 DataSheet[Z].USA:Cypress Semiconductor Corporation,2000
2 TMS320F/C240 DSP Controllers Reference Guide[Z].USA:Texa Instruments,2002
3 TMS32OC3X User’s Guide[Z]. USA:Texa Instruments,2002
4 张雄伟,陈 亮,徐光辉.DSP集成开发与应用实例[M].北京:电子工业出版社,2002
5 徐惠民,安德宁.数字逻辑设计与VHDL描述[M].北京:机械工业出版社,2002
6 以光衢.惯性导航原理[M]. 北京:航空工业出版社,1987