用FPGA实现1553B总线接口中的曼码编解码器
摘要:介绍用FPGA设计实现MIL-STD1553B部接口中的曼彻斯特码编解码器。该设计采用VHDL硬件描述语言编程,并且专门的综合工具Synplify对设计进行综合、优化,在MAX+PLUS II进行时序仿真,最后在FPGA上实现。
关键词:曼彻斯特码 1553B总线 VHDL FPGA
引言
曼彻斯特码编码、解码器是1553B总线接口中不可缺少的重要组成部分。曼彻斯特码编解码器设计的好坏直接影响总线接口的性能。本文介绍的是MIL-STD-1553B接口中最曼彻斯特码的编码和解码器的设计实现。
在电子设计领域,可编程器件的广泛应用为数字系统的设计带来极大的灵活性,1片FPGA/CPLD芯片可替代上百个IC电路。同时,Altera公司开发的MAX+PLUS II和QUARTUS II软件,是完全集成化的可编程逻辑设计环境;Synplicity公司的Synplify是专门用于FPGA和CPLD的一种优秀逻辑综合工具;VHDL更是一种功能强大的硬件设计语言,可用简洁的代码描述来进行复杂控制逻辑的设计。所这些使得硬件的设计如同软件那样方便,极大方便了数字电路的设计。所有这些条件都为在实验室开发实现MIL-STD-1553B协议接口提供了有利条件。文中所设计的编码、解码器就是采用硬件描述语言VHDL进行编程,用Synplify进行综合,以及采用MAX+PLUS II进行时序仿真,在FPGA上实现的MIL-STD-1553B总线接口中的曼彻斯特码编码、解码器。
图1
1 1553B总线及其接口功能
MIL-STD-1553B的全称是:飞机内部时分制指令/响应式多路传输数据总线。它用可屏蔽双绞线进行数据传输,信号是以串行数字脉冲的形式进行传输,其数据代码用双相曼彻特码的形式来表示,其传输速率为1Mb/s。1553B数据总线上连接有三种类型的系统:①总线控制器(BC)——控制总线上的数据传输;②远程终端控制器(RT)——响应BC来的命令,执行数据传输;③总线监视器(BM)——有选择地接收数据总线上的信息并保存之。每个子系统可以通过1553B总线连接到任何一个子系统。数据就是在总线上进行传输的。
图2
在总线上传输的有三种类型的字:命令字、状态字和数据字。每种字的字长为20位,有效信息位是16位每个字的前三位为同步字头,最后一位为奇校验位。有效信息(16位)及奇偶校验位在总线上以曼彻斯特码的形式进行传输,每位占的时间为1μs。同步字头占三位,或先正后负(命令字、状态字)或先负后正(数据字)。正/负电平各占1.5μs,即占同位场的一半。由于系统的类型不同,可辨别出命令字和状态字,命令字由现行的总线控制器发出,而状态字总是由远程终端RT发出。
javascript:window.open(this.src);" style="cursor:pointer;"/>
作为MIL-STD-1553B总线的接口应完成以下功能:①将总线上的串行信息流转换成处理机可以处理的并行信息或者与之相反;②接收或发送信息时,能够识别或生成标准的1553B信息字和消息;③完成与处理机之间的信息交换,包括1553B信息地址的分配,命令字(或状态字)的译码或返回状态字、发送数据字等。曼彻斯特码编解码器完成的是曼彻斯特码的编码及解码,并检测错误。它接收具有有效同步字的曼彻斯特码,并进行译码,javascript:window.open(this.src);" style="cursor:pointer;"/>以及识别其类型和串/并转换、奇偶校验等;或者将处理器发出的并行二进制数据进行曼彻斯特码编码,再加上同步字头及奇偶位使之成为符合1553B标准的字进行输出。
编解码器是总线接口的一部分。一般说来,1553B总线接口由电平转换电路、曼彻斯特码编解码器、命令字/状态字译码逻辑和CPU及相关电路组成,如图1所示。
除了编解码器可由FPGA来实现外,它与CPU之间的相关电路,如共享RAM、命令字/状态字译码和存储器管理、处理器与存储器接口逻辑等也可以由FPGA来实现;CPU可采用TMS320LF2407。本文所介绍的就是其中的编码和解码器的设计。
2 曼彻斯特码编解码器的总体设计
在介绍编解码器的设计之前,有必要了解曼彻斯特码的特征,以便在设计中对其加以利用,达到简化电路的效果。
曼彻斯特码是一种广泛应用于航空电子综合系统中的总线数据传输的双极性码。它在每个码位中点存在一个跳变。1信号是一个由1到0的负跳沿,而0信号是由0到1的正跳沿。它本身包含了自定时的信息。因此它不需要独立的信道来传输位定信息,它可以直接从数据中分离出定时时钟,同时还能与变压器耦合相协调,十分适合用在变压器耦合形式,长度为150m(500英尺)左右的场合,因此在航空电子综合系统中,它是最主要的形式。
javascript:window.open(this.src);" style="cursor:pointer;"/>
在MIL-STD-1553B协议中其数据格式为如图2所示。
根据1553B的数据格式以及曼彻斯特码的特点,可采用状态机对其进行编码、解码的实现。状态机是一个广义的时序电路,像移位寄存器、计数器等都算是它的特殊功能类型中的一种。根据输入、输出及状态之间的关系,状态机可分为两类:一种是输出状态有关,而输入与状态无在的状态机类型,称为More状态机;另一种是输出及输入与状态皆有关系的状态机,称为Mealy状态机。本设计采用的是Mealy状态机。编码和解码是两个相互独立的模块。
2.1 解码
解码的过程可分为三部分:①同步字头检测,并辨别其为数据字还是命令字。②对曼码形式的数据进行解码。由于曼彻斯特码自带定时时钟,故可从数据中分离出同步时钟。本设计采用的是传统的用数字锁相环的方法来分离时钟;将时钟和数据进行处理使曼码数据转化为非归零二进制数据。③将串行数据转化为并行数据,并进行奇偶校验。解码器的逻辑图如图3所示。图中data为串行输入数据。当data开始发生跳变时进行同步头检测,若在data发生变化后检测到大于一个位时的高(或低)电平,则认为同步头有效,输出同步头类型(comnd)及同步头检测位(synerr)(为低电平,若为高电平则表示同步头有错)。在同步头有效后,进行时钟分离及码型变换及移位,移位完成后进行奇偶校验,并把数据定写入保持寄存器,此时rxrdy变为高电平,表示数据准备好可以读出数据。进入下一个解码周期,等待串行输入数据。
图6