基于令牌仲裁的双口RAM高速数据传输技术

    鲁盈悦+江驹+王新华+韩胜男

    摘 要:针对双CPU遥控模型直升机机载飞控系统中微处理器间高速可靠数据传输这一关 键性问题,设计了双口RAM数据共享的软硬件,在基于旗语逻辑的令牌仲裁方式下,实现了DSP 和单片机的双向数据通信。测试结果表明,本文所设计的双口RAM软硬件可满足机载飞控系统 双CPU间高速可靠数据通信的要求,数据传输效率高,为后续机载飞控系统的开发奠定了基础, 并对其他多CPU系统数据传输有很好的借鉴意义。

    关键词:遥控模型直升机;机载飞控系统;数据传输;双口RAM;令牌仲裁

    中图分类号:TN79 文献标识码:A 文章编号:1673-5048(2014)01-0053-04

    TheTechnologyofHighSpeedDataTransmission BasedonDualPortRAMinTokenArbitrationMethod

    LUYingyue,JIANGJu,WANGXinhua,HANShengnan

    (CollegeofAutomationEngineering,NanjingUniversityofAeronauticsandAstronautics,Nanjing210016,China)

    Abstract:Forthekeyproblemofhighspeedreliabledatatransmissionbetweenmicroprocessorsin theairborneflightcontrolsystemofdoubleCPUremotemodelhelicopter,thispaperdevisesboththesoft wareandthehardwareofdualportRAMdatasharingsystem,andrealizesthetwowaydatacommunica tionbetweenDSPandsinglechipprocessor.TestresultsshowthatthedualportRAMsystemcansatisfy theneedofhighspeedreliabledatacommunicationintheairborneflightcontrolsystemwithhighdata transferefficiency.Ithaslaidthefoundationforthedevelopmentoffollowupairborneflightcontrolsys tem,andisagoodreferencetodatatransmissioninothermultiCPUsystem.

    Keywords:remotecontrolmodelhelicopter;airborneflightcontrolsystem;datatransmission;du alportRAM;tokenarbitration

    0 引 言

    无人直升机自主飞行控制系统的设计一直是飞控领域的研究热点[1]。单CPU由于其控制能力 和信息处理能力有限,难以满足部分飞控系统实 时性和高效数据处理的要求[2]。因此,本文给出了 一种双CPU遥控模型直升机自主飞行控制机载电 路方案。

    多CPU间常采用串行方式进行通信,这种方 法的缺点是传输速率低、数据提取困难[3]。若采用 标准总线结构进行并行数据传输,其硬件结构和 软件协议都比较复杂,开发周期长[4]。对飞控系统 而言,双CPU间快速可靠的数据传输是整个系统 正常运行的基础,而高性能的双口RAM可保证高效的数据传送,其传输速度快、电路结构简单、可 靠性高,能满足多CPU系统的要求[5-6]。在此基 础上,本文设计了采用令牌仲裁方式、基于双口 RAM的双CPU间通信方案,完成了硬件搭建和软 件编程,并进行了性能测试。

    1 基于DSP和单片机的模型直升机飞控系 统方案设计

    遥控模型直升机机载飞控系统的结构设计框 图如图1所示。其结构按功能模块划分,主要分为 CPU最小系统模块、外扩存储器模块、无线通信模 块、传感器模块和执行器控制模块。本系统充分考 虑了系统接口的灵活性和可拓展性,飞控机硬件 资源丰富、成本低,便于调试。其主控制器采用双 CPU结构:DSP为主CPU,负责控制律解算、导航 算法、飞行管理以及舵面输出等功能;单片机作为 CPU,负责机载设备的信息采集、与地面监控设备 通信等功能;DSP和单片机之间通过双口RAM进 行实时通信。

    如图1所示,传感器子系统采集姿态角速度、 线加速度等数据,以数据帧的形式送往单片机,单 片机通过双口RAM将数据传输到DSP,DSP解帧 后即可提取出传感器数据;借助一对相互通信的 无线数传模块,地面站发送控制指令帧给单片机, 单片机通过双口RAM将指令传输到DSP,DSP解 帧后即可提取出指令:获取了必要的数据和指令后 DSP可进行控制律解算,产生PWM脉冲输出至4 个航模舵机,用于控制纵向周期变距、横向周期变 距、总距和尾桨桨距。此外,DSP输出的舵机PWM 占空比可以通过双口RAM传送至单片机,单片机 再通过无线数传模块发送到地面站显示,供地面实时监控用。

    由此可见,在以上的飞控计算机工作流程中, 双口RAM是单片机和DSP之间通信的桥梁,双 CPU间高速可靠的数据通信是系统得以正常运作 的关键技术。

    2 双CPU间数据通信的硬件设计

    作为一种不同于单端口RAM的高速并行传输 芯片,双口RAM配备两套独立的地址、数据和控 制线,数据存取功能与普通单端口RAM相同,存 取速度能满足不同CPU的要求而无需插入等待状 态,允许两个独立CPU同时异步地访问存储单元, 因此在多CPU系统中应用广泛。本文采用IDT公 司高性能CMOS工艺生产的容量4K×16位的高速 双口静态数据存储逻辑器件IDT70V24[7],可满足 应用需求。

    当两侧CPU在同一时刻对双口RAM的同一 内存单元写数据,或对同一存储单元一读一写数 据时,会发生竞争使用现象,此时大多数双口 RAM内部集成的几种仲裁逻辑可以仲裁CPU使用 权,以避免竞争发生。常见的有硬件地址仲裁 (BUSY)、令牌仲裁(SEM)和中断仲裁(INT) 等[8]。芯片自身并不具备以上这些仲裁功能,需要 用户编写软件以配合实现硬件的功能。本文采用 的是令牌仲裁方式。令牌仲裁方式与旗语(Sema phore,或SEM)有关。

    2.1 IDT70V24的旗语逻辑

    旗语单元是IDT70V24的8个不同于存储单元 的独立标志单元,用作端口间的标志(或称为令 牌)传送,以申明对某一块共享资源的使用权。从 硬件上来说旗语逻辑是8个锁存器,其闭锁逻辑框 图如图2所示。两个D触发器在初始化时均使 SEM输出高电平,等待双方申请SEM。如果收到 一方写入SEM低电平信号,仲裁电路将使该方的 触发器输出端为0,同时继续闭锁另一个SEM输 出端,使其继续保持1。只有当先请求的一方撤销 SEM信号,即写入1,才使得另一方SEM输出端的 闭锁信号得以解除,恢复等待新的SEM申请。也 就是说,任何想使用RAM共享资源的一方CPU首 先要申请令牌,即向SEM写0;然后通过读取SEM 的值以确定是否申请成功。若申请成功,则该CPU 获取了对RAM资源的使用权;若未成功,则表明 另一方CPU获取了令牌且正在使用共享资源,此 时用查询的方式等待另一方CPU释放了SEM后即 可获取对RAM资源的使用权。

    旗语单元内部的读写机制能保证在读写周期 间隙系统级竞争现象不会发生。旗语模式下,CPU 间的这种软件握手机制与硬件操作无关,因此为 资源共享提供了最大的灵活度。但需注意,旗语初 始化并不是自动发生的,程序初始阶段要用软件 释放所有要使用的令牌。

    2.2 双口RAM与CPU的硬件连接

    IDT70V24的引脚接线参照图1所示,电源引 脚和未使用到的引脚没有画出。其片选使能引脚 和旗语使能引脚与CPU的通用I/O口相连;读写 引脚与CPU的读写引脚相连,无需软件控制;本 文中只使用低8位数据,据此设置高/低位数据使 能引脚;每侧各12根地址线和8根数据线分别和 CPU的地址引脚、数据引脚对应相连,以便正确寻 址和读写。

    在开始针对飞控系统的特殊应用之前,首先 完成了一个全功能测试,即

    (1)测试是否每个地址空间都能正确读写数 据;

    (2)使用双CPU对双口RAM的同一地址单 元进行读写,观察双口RAM的通信功能是否正 常。

    本文对双口RAM的两种测试方案都编写了相 应的测试代码,并在飞控板硬件平台上进行了测 试验证。结果表明,双口RAM的每个地址单元都 能正确读写数据,且双CPU对同一地址单元的读 写也正确无误。这为下一步飞控系统特定功能的 实现奠定了保证。

    模拟遥控直升机飞控板的工作,验证令牌判 优下双口RAM在本系统中实现双CPU间数据通 信的流程,本文设计以下两种实验方案:

    (1)单片机通过串口接收地面监控站发送来 的指令帧并解帧,将指令存于双口RAM中;DSP 在定时器中断中从双口RAM里提取出指令,调用 相应的舵机PWM脉冲产生函数,控制某一通道舵 面偏转;

    (2)单片机采集航姿传感器AHRS每50ms发 送来的数据帧,于定时器中断处理程序中解帧,将 数据存储于双口RAM中;DSP也在定时器中断中从 双口RAM里提取出数据,以便做解算处理用。

    首先分析本文飞控系统CPU间数据传输软硬 件设计的可靠性:

    以上方案中,(1)是不定时接收小规模数据, (2)是定时接收大规模数据。实验证明,两者都取 得了满意的效果:方案(1)中,地面站发送对油门 通道的某一指令后,油门通道PWM脉冲输出的波 形能按既定规律变化,这一方案已在试飞中验证 成功,这表明指令帧读取正确;方案(2)中,多次 运行程序,对比单片机收到的数据帧和DSP接收 该数据帧的数组中的内容,发现每次结果两者都 几乎一致,误码率在1%以下,这表明数据帧读取 基本正确。以上说明令牌判优下基于双口RAM的 数据通信是可靠的,数据传输没有出现明显错误。

    再来分析本文飞控系统CPU间数据传输软硬 件设计的高速性。DSP部分的程序全速运行时,将双口RAM的写信号接往示波器观察,如图5所 示:图5(a)是读使能和写使能的总线时序,图5 (b)是放大后的某次写使能总线时序。

    首先分析图5(a)。图中体现出的是读写信号 之间的时序关系。写使能拉高后,经过不到80ns 的时间进入读使能时序,这对应于测试代码中,写 操作过后立刻进入读操作,在此期间需要经历一 个地址建立时间,估算值为42ns,因此这部分时 序正确。读使能拉低后,经过约500ns的时间进入 写使能时序;测试代码中,读操作过后,软件延时 了约600ns,才进入下一个写操作,故而这部分时 序也是正确的。

    再来分析图5(b)。低电平表示写信号使能, 从图中读出其持续时间约为180ns。可以通过计算 来验证:程序中根据DSP外设时钟配置知,读写外 扩RAM时前导阶段(LEAD)、有效阶段(ACTIVE) 和结束阶段(TRAIL)分别为3,7和3个机器周期, 而DSP初始化设置为2分频,其机器周期为6.67 ns,故理论上的写信号使能时间为(3+7+3)×2× 6.67ns=173ns,这表明计算值与实际值相当。

    当两侧CPU在同一时刻对双口RAM的同一 内存单元写数据,或对同一存储单元一读一写数 据时,会发生竞争使用现象,此时大多数双口 RAM内部集成的几种仲裁逻辑可以仲裁CPU使用 权,以避免竞争发生。常见的有硬件地址仲裁 (BUSY)、令牌仲裁(SEM)和中断仲裁(INT) 等[8]。芯片自身并不具备以上这些仲裁功能,需要 用户编写软件以配合实现硬件的功能。本文采用 的是令牌仲裁方式。令牌仲裁方式与旗语(Sema phore,或SEM)有关。

    2.1 IDT70V24的旗语逻辑

    旗语单元是IDT70V24的8个不同于存储单元 的独立标志单元,用作端口间的标志(或称为令 牌)传送,以申明对某一块共享资源的使用权。从 硬件上来说旗语逻辑是8个锁存器,其闭锁逻辑框 图如图2所示。两个D触发器在初始化时均使 SEM输出高电平,等待双方申请SEM。如果收到 一方写入SEM低电平信号,仲裁电路将使该方的 触发器输出端为0,同时继续闭锁另一个SEM输 出端,使其继续保持1。只有当先请求的一方撤销 SEM信号,即写入1,才使得另一方SEM输出端的 闭锁信号得以解除,恢复等待新的SEM申请。也 就是说,任何想使用RAM共享资源的一方CPU首 先要申请令牌,即向SEM写0;然后通过读取SEM 的值以确定是否申请成功。若申请成功,则该CPU 获取了对RAM资源的使用权;若未成功,则表明 另一方CPU获取了令牌且正在使用共享资源,此 时用查询的方式等待另一方CPU释放了SEM后即 可获取对RAM资源的使用权。

    旗语单元内部的读写机制能保证在读写周期 间隙系统级竞争现象不会发生。旗语模式下,CPU 间的这种软件握手机制与硬件操作无关,因此为 资源共享提供了最大的灵活度。但需注意,旗语初 始化并不是自动发生的,程序初始阶段要用软件 释放所有要使用的令牌。

    2.2 双口RAM与CPU的硬件连接

    IDT70V24的引脚接线参照图1所示,电源引 脚和未使用到的引脚没有画出。其片选使能引脚 和旗语使能引脚与CPU的通用I/O口相连;读写 引脚与CPU的读写引脚相连,无需软件控制;本 文中只使用低8位数据,据此设置高/低位数据使 能引脚;每侧各12根地址线和8根数据线分别和 CPU的地址引脚、数据引脚对应相连,以便正确寻 址和读写。

    在开始针对飞控系统的特殊应用之前,首先 完成了一个全功能测试,即

    (1)测试是否每个地址空间都能正确读写数 据;

    (2)使用双CPU对双口RAM的同一地址单 元进行读写,观察双口RAM的通信功能是否正 常。

    本文对双口RAM的两种测试方案都编写了相 应的测试代码,并在飞控板硬件平台上进行了测 试验证。结果表明,双口RAM的每个地址单元都 能正确读写数据,且双CPU对同一地址单元的读 写也正确无误。这为下一步飞控系统特定功能的 实现奠定了保证。

    模拟遥控直升机飞控板的工作,验证令牌判 优下双口RAM在本系统中实现双CPU间数据通 信的流程,本文设计以下两种实验方案:

    (1)单片机通过串口接收地面监控站发送来 的指令帧并解帧,将指令存于双口RAM中;DSP 在定时器中断中从双口RAM里提取出指令,调用 相应的舵机PWM脉冲产生函数,控制某一通道舵 面偏转;

    (2)单片机采集航姿传感器AHRS每50ms发 送来的数据帧,于定时器中断处理程序中解帧,将 数据存储于双口RAM中;DSP也在定时器中断中从 双口RAM里提取出数据,以便做解算处理用。

    首先分析本文飞控系统CPU间数据传输软硬 件设计的可靠性:

    以上方案中,(1)是不定时接收小规模数据, (2)是定时接收大规模数据。实验证明,两者都取 得了满意的效果:方案(1)中,地面站发送对油门 通道的某一指令后,油门通道PWM脉冲输出的波 形能按既定规律变化,这一方案已在试飞中验证 成功,这表明指令帧读取正确;方案(2)中,多次 运行程序,对比单片机收到的数据帧和DSP接收 该数据帧的数组中的内容,发现每次结果两者都 几乎一致,误码率在1%以下,这表明数据帧读取 基本正确。以上说明令牌判优下基于双口RAM的 数据通信是可靠的,数据传输没有出现明显错误。

    再来分析本文飞控系统CPU间数据传输软硬 件设计的高速性。DSP部分的程序全速运行时,将双口RAM的写信号接往示波器观察,如图5所 示:图5(a)是读使能和写使能的总线时序,图5 (b)是放大后的某次写使能总线时序。

    首先分析图5(a)。图中体现出的是读写信号 之间的时序关系。写使能拉高后,经过不到80ns 的时间进入读使能时序,这对应于测试代码中,写 操作过后立刻进入读操作,在此期间需要经历一 个地址建立时间,估算值为42ns,因此这部分时 序正确。读使能拉低后,经过约500ns的时间进入 写使能时序;测试代码中,读操作过后,软件延时 了约600ns,才进入下一个写操作,故而这部分时 序也是正确的。

    再来分析图5(b)。低电平表示写信号使能, 从图中读出其持续时间约为180ns。可以通过计算 来验证:程序中根据DSP外设时钟配置知,读写外 扩RAM时前导阶段(LEAD)、有效阶段(ACTIVE) 和结束阶段(TRAIL)分别为3,7和3个机器周期, 而DSP初始化设置为2分频,其机器周期为6.67 ns,故理论上的写信号使能时间为(3+7+3)×2× 6.67ns=173ns,这表明计算值与实际值相当。

    当两侧CPU在同一时刻对双口RAM的同一 内存单元写数据,或对同一存储单元一读一写数 据时,会发生竞争使用现象,此时大多数双口 RAM内部集成的几种仲裁逻辑可以仲裁CPU使用 权,以避免竞争发生。常见的有硬件地址仲裁 (BUSY)、令牌仲裁(SEM)和中断仲裁(INT) 等[8]。芯片自身并不具备以上这些仲裁功能,需要 用户编写软件以配合实现硬件的功能。本文采用 的是令牌仲裁方式。令牌仲裁方式与旗语(Sema phore,或SEM)有关。

    2.1 IDT70V24的旗语逻辑

    旗语单元是IDT70V24的8个不同于存储单元 的独立标志单元,用作端口间的标志(或称为令 牌)传送,以申明对某一块共享资源的使用权。从 硬件上来说旗语逻辑是8个锁存器,其闭锁逻辑框 图如图2所示。两个D触发器在初始化时均使 SEM输出高电平,等待双方申请SEM。如果收到 一方写入SEM低电平信号,仲裁电路将使该方的 触发器输出端为0,同时继续闭锁另一个SEM输 出端,使其继续保持1。只有当先请求的一方撤销 SEM信号,即写入1,才使得另一方SEM输出端的 闭锁信号得以解除,恢复等待新的SEM申请。也 就是说,任何想使用RAM共享资源的一方CPU首 先要申请令牌,即向SEM写0;然后通过读取SEM 的值以确定是否申请成功。若申请成功,则该CPU 获取了对RAM资源的使用权;若未成功,则表明 另一方CPU获取了令牌且正在使用共享资源,此 时用查询的方式等待另一方CPU释放了SEM后即 可获取对RAM资源的使用权。

    旗语单元内部的读写机制能保证在读写周期 间隙系统级竞争现象不会发生。旗语模式下,CPU 间的这种软件握手机制与硬件操作无关,因此为 资源共享提供了最大的灵活度。但需注意,旗语初 始化并不是自动发生的,程序初始阶段要用软件 释放所有要使用的令牌。

    2.2 双口RAM与CPU的硬件连接

    IDT70V24的引脚接线参照图1所示,电源引 脚和未使用到的引脚没有画出。其片选使能引脚 和旗语使能引脚与CPU的通用I/O口相连;读写 引脚与CPU的读写引脚相连,无需软件控制;本 文中只使用低8位数据,据此设置高/低位数据使 能引脚;每侧各12根地址线和8根数据线分别和 CPU的地址引脚、数据引脚对应相连,以便正确寻 址和读写。

    在开始针对飞控系统的特殊应用之前,首先 完成了一个全功能测试,即

    (1)测试是否每个地址空间都能正确读写数 据;

    (2)使用双CPU对双口RAM的同一地址单 元进行读写,观察双口RAM的通信功能是否正 常。

    本文对双口RAM的两种测试方案都编写了相 应的测试代码,并在飞控板硬件平台上进行了测 试验证。结果表明,双口RAM的每个地址单元都 能正确读写数据,且双CPU对同一地址单元的读 写也正确无误。这为下一步飞控系统特定功能的 实现奠定了保证。

    模拟遥控直升机飞控板的工作,验证令牌判 优下双口RAM在本系统中实现双CPU间数据通 信的流程,本文设计以下两种实验方案:

    (1)单片机通过串口接收地面监控站发送来 的指令帧并解帧,将指令存于双口RAM中;DSP 在定时器中断中从双口RAM里提取出指令,调用 相应的舵机PWM脉冲产生函数,控制某一通道舵 面偏转;

    (2)单片机采集航姿传感器AHRS每50ms发 送来的数据帧,于定时器中断处理程序中解帧,将 数据存储于双口RAM中;DSP也在定时器中断中从 双口RAM里提取出数据,以便做解算处理用。

    首先分析本文飞控系统CPU间数据传输软硬 件设计的可靠性:

    以上方案中,(1)是不定时接收小规模数据, (2)是定时接收大规模数据。实验证明,两者都取 得了满意的效果:方案(1)中,地面站发送对油门 通道的某一指令后,油门通道PWM脉冲输出的波 形能按既定规律变化,这一方案已在试飞中验证 成功,这表明指令帧读取正确;方案(2)中,多次 运行程序,对比单片机收到的数据帧和DSP接收 该数据帧的数组中的内容,发现每次结果两者都 几乎一致,误码率在1%以下,这表明数据帧读取 基本正确。以上说明令牌判优下基于双口RAM的 数据通信是可靠的,数据传输没有出现明显错误。

    再来分析本文飞控系统CPU间数据传输软硬 件设计的高速性。DSP部分的程序全速运行时,将双口RAM的写信号接往示波器观察,如图5所 示:图5(a)是读使能和写使能的总线时序,图5 (b)是放大后的某次写使能总线时序。

    首先分析图5(a)。图中体现出的是读写信号 之间的时序关系。写使能拉高后,经过不到80ns 的时间进入读使能时序,这对应于测试代码中,写 操作过后立刻进入读操作,在此期间需要经历一 个地址建立时间,估算值为42ns,因此这部分时 序正确。读使能拉低后,经过约500ns的时间进入 写使能时序;测试代码中,读操作过后,软件延时 了约600ns,才进入下一个写操作,故而这部分时 序也是正确的。

    再来分析图5(b)。低电平表示写信号使能, 从图中读出其持续时间约为180ns。可以通过计算 来验证:程序中根据DSP外设时钟配置知,读写外 扩RAM时前导阶段(LEAD)、有效阶段(ACTIVE) 和结束阶段(TRAIL)分别为3,7和3个机器周期, 而DSP初始化设置为2分频,其机器周期为6.67 ns,故理论上的写信号使能时间为(3+7+3)×2× 6.67ns=173ns,这表明计算值与实际值相当。