首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

1553B总线远程端点数据链路层协议的FPGA实现

1553B总线远程端点数据链路层协议的FPGA实现

 0 引 言  用于车辆、舰船、飞机等机动平台上的电子设备越来越多,并且越来越复杂。将电子设备加以有效的综合,使之达到资源和功能共享已成为必然趋势。电子综合的支撑技术是联网技术,而机动平台上的联网技术不同于一般的局域网技术,它特别强调网络的可靠性和实时性。1553B总线是在20世纪70年代末为适应飞机的发展,由美国提出的飞机内部的电子系统联网标准;其后由于它的高可靠性和灵活性而在其他机动平台上得到了广泛应用。国内上世纪80年代中期已开始接触这类技术,目前它的研究与应用范围正在迅速扩大。
  1553B总线标准由美国军方制定。支持该标准的协议芯片有DDC公司的BU一6517X,BU一615XX系列;HOLT公司的HI一61XX系列;UTMC公司的BCRTM等。这些芯片都集成了BC,RT,BM的功能,但是这些芯片都由美国公司生产,价格非常昂贵。为了能低成本地使用这种可靠性非常好的数据总线,采用FPGA设计并实现远程端点的数据链路层协议,通过外接一个总线收发器完成1553B远程端点协议芯片功能。
  在电子设计领域,可编程逻辑器件的广泛应用为数字系统的设计带来极大的灵活性,1片FPGA芯片可代替上百个IC电路。Altera公司开发的Cyclone系列FPGA芯片价格便宜,功能强大,而且配套的开发软件QuartusⅡ更是集成了时序仿真、编译、综合、优化等功能,这为实现1553B总线远程节点通信协议提供了有利条件。文中所实现的1553B总线远程端点数据链路层协议采用VerilogHDL语言编写;采用ModelSim仿真;采用QuartusⅡ编译、综合、优化,并在A1tera的EPlC6系列FPGA上实现。
  1 1553B总线及其接口功能
  1553B的全称是:飞机内部时分制指令/响应式多路传输数据总线。它对物理层,如:传输介质、屏蔽条件、耦合方式、阻抗匹配以及输入输入兼容性等都做了严格规范。1553B总线是以串行数据脉冲的形式进行传输的,其数据用双相曼彻斯特码的形式来表示,其传输速率为1 Mb/s。1553B数据总线上连接有3种类型的节点:
  (1)总线控制器(BC):控制总线上的数据传输;
  (2)远程终端(RT):响应BC命令,执行相关操作;
  (3)总线监视器(BM):有选择地接收数据总线上的信息并保存。
  飞机上的每个子系统可以通过1553B总线连接到任何一个系统中并与其通信。
  在总线上传输字有3种类型:命令字、状态字和数据字。每种字的字长为20位,有效信息位为16位,每个字的前三位为同步字头,最后一位为奇偶校验位。有效信息(16位)及奇偶校验位在总线上以曼彻斯特码的形式进行编码,每位占的时间为1μs。同步字头占3位,或先正后负(命令字、状态字)或先负后正(数据字),正、负电平各占1.5μs,即占同步头位场的50%。
  由于系统类型的不同,可辨别出命令字和状态字,命令字由总线控制器发出,而状态字由远程终端RT发出。
  作为1553B总线的远程端点,应完成以下功能:
  (1)将总线上的串行信息流转换成微控制器可以处理的并行信息或者与之相反;
  (2)接收或者发送信息时,能够识别或生成标准的1553B信息字;
  (3)完成与微控制器之间的信息交换,包括1553B信息地址的分配、命令字的译码或返回状态字、发送数据字等。
  1553B远程端点数据链路层协议需要完成上述的1553B远程端点的大部分功能,包括同步头添加与检测,曼彻斯特码编解码,命令字译码与接收数据字,状态字反馈与收发数据字,数据缓冲以及与微控制器之间的接口等。整个数据链路层协议内部采用寄存器控制的方式进行操作,上层微控制器通过读写实现程序的寄存器,以完成对协议的控制,而内部操作也是根据相关寄存器的状态来进行的,因此设计时,首先定义相关寄存器,根据数据线的宽度,所有寄存器都定义为16位。
  (1)控制寄存器:它完成内部时钟、总线端口选择、节点状态设定、状态字保留位、节点ID以及全局复位等状态的设置和操作。
  (2)错误寄存器(ER):当通信协议中出现了奇偶校验错误,数据不连续错误,接收数据个数错误,接收FIFO错误,发送FIFO错误时就会置位其相关位,上层微控制器通过读取ER就知道错误的类型。
  (3)状态寄存器(SR):SR中反映了当前数据链路层协议的状态,包括接收数据状态、接收FIFO长度、发送FIFO长度、接收错误状态、中断信号状态nINT和nINTD。
  (4)接收命令字寄存器(RCR):RCR用于保存当前接收到的命令字。
  (5)发送矢量字寄存器(SVWR):该寄存器用于存放总线控制器要求的矢量字,这个矢量字由微控制器写入。
  (6)接收同步字寄存器(SYNDR):用于存放接收到的带数据字同步命令中的数据字。
  (7)自测结果寄存器(STRR):STRR用于存放上次自测的结果。为了方便地址分配,设计中把发送和接收FIFO都作为一个16位寄存器来对待。
  2 1553B远程端点数据链路层协议的FPGA实现的总体设计
  1553B远程端点数据链路层协议的FPGA实现一共分为4个模块:序列解析模块、命令解析模块、发送模块和上层交互模块。整个协议实现采用时序驱动的方式进行,时钟频率为8 MHz,下面就按照数据进入的顺序介绍整个协议的FPGA实现过程。
  2.1 序列解析模块
  这个模块接收从收发器接收的信号序列,先后进行同步头检测,曼码解码,奇偶校验,ID检测等步骤,最后给命令解析模块一个只包含命令信息的16位数据,以及其字特性。其实现流程如图1所示。

  序列解析模块首先对进入的总线序列进行同步头检测,如果有效,则进行曼彻斯特码解码。曼彻斯特码解码是在同步头检测有效时同步开始的,它在同步头检测有效后每隔1 000μs对序列采样一次,并把采样值作为解码值,同时判断在采样时序列是否发生了跳变,如果发生,则说明序列满足曼彻斯特码编码,否则认定序列存在编码错误,停止解码并置位错误寄存器,而第一次采样是在同步头检测有效后250ns。解码完成后进行奇偶校验,接收模块对有效序列进行奇偶校验,如果奇偶校验错误,则丢弃这个序列,同时置位消息差错位;如果奇偶校验正确,则进入ID检测部分。奇偶校验在VerilogHDL中通过位异或就可以实现。
  当奇偶校验正确以后,接收模块就根据从同步头检测得到的字类型进行不同操作。对于数据字,接收模块收到序列后就检测等待数据字寄存器的值,如果不为零,则把这个数据放入到接收缓冲器中,如果等待数据字寄存器的值为1,则首先把寄存器清零,然后把中断请求信号置位,最后把状态寄存器的值放入发送缓冲器中,并通知发送模块发送以及复位等待数据字寄存器,否则把等一待数据字寄存器的值减1,等待下一个字的到来。如果等待数据字寄存器值为零,则认为传输错误,丢弃这个数据字。对于命令字,接收模块进行ID验证,检查所收到的命令是否是总线控制器发给本节点的。它提取所收到的16位有效信息序列中的高5位,与本节点的ID比较,如果不相同,则丢弃这个序列,等待下一个序列的到来;如果相同,则表示这个序列是总线控制器发给本节点的命令,保存命令,启动命令解析模块。
返回列表