1、1 绪论 1.1 引言 伴随科技发展及战争需要, 战车、 舰船、 飞机等武器平台上电子设备越来越多, 越来越复杂, 于是将电子设备按一定协议联网加以有效地综合, 使之达成资源和功效共享已成为肯定要求。电子综合支撑技术是联网技术, 而武器平台上联网技术不一样于通常局域网络技术, 它尤其强调网络可靠性和实时性[1]。1553B总线最初是在七十年代末为适应飞机发展由美国提出飞机内部电子系统联网标准, 其后因为它高可靠性和灵活性而在其她机动武器平台上也得到了较广泛应用。 MIL-STD-1553B是70年代发展起来“ 飞机内部时分制指令响应式多路传输数据总线”,它含有可靠性高、 速度快、 反应
2、灵敏、 双冗余等特点,尤其适适用于快速反应武器系统[2]。即使其传输速率只有1Mbit/s,但它并没有因以后发展起来高速网遭淘汰, 而是随微电子技术和计算机技术发展而不停提升。世界上很多集成电路企业和厂家都不停开发和生产集成度更高、 通用性更强1553B总线系列器件。这些器件优化了1553B总线通讯接口,减轻了主机通讯负担,从而提升了系统可靠性[3]。 1.2中国外1553B总线研究发展情况及包含领域 伴随时代发展, 对于增加飞机推力、 改善气动性能等技术成熟, 航空系统设计任务关键, 逐步集中在飞机内部电子设计上。与此同时, 信息工程、 计算机技术、 控制技术、 电子技术都有了长
3、足进步。航空电子综合化技术就是在这么背景下产生[3]。技术关键问题是实现信息采集、 处理、 分配、 存放一个系统。MIL-STD-1553B多路总线是综合化航空电子系统设备间数据交换纽带, 它将全部综合化航空电子子系统连接在一起, 共同组成含有特殊性分布式计算机网络, 从而实现综合系统内部信息共享和系统综合化控制。 航空电子系统中, 不仅需要不一样硬件接口来应付不一样航空设备, 而且航空设备内部接口连线也十分复杂和混乱, 可靠性能也不高[3]。为了处理这个情况, 提出了在航空电子系统中使用数据总线, 使得不一样航空电子设备之间能够相互通信。美国军方提出MIL-STD-1553B数据总线协议就
4、是在航空电子综合化技术发展过程中形成现代航空机载系统设备互联网络接口标准。从推出到现在, 经过三十多年发展, 1553B总线技术也在不停改善。现在1553B总线已经成为在航空航天领域占统治地位总线标准。 中国对 1553B 总线协议进行了跟踪研究,制订了对应国军标 GJB289A,科研院所和相关单位在这方面做了大量工作, 也取得了一定成绩。如成都恩菲特企业自主研发 eph31580 型芯片[1]。如图1.2所表示: 图1.1 成都恩菲特eph31580 型芯片 1.3本论文研究内容及安排 从接口实现具体功效出发, 采取自顶向下设计思想, 结合大型可
5、编程逻辑器件特点, 提出了一个基于FPGA1553B总线接口系统设计方法。对系统进行了总体分析及结构设计, 使用硬件描述语言VHDL对设计进行了描述, 最终在FPGA上进行了实现。 1553B总线系统关键关键部分是总线接口芯片, 在充足检索相关资料后, 对MIL-STD-1553B数据总线协议进行分析研究, 设计基于FPGA1553B总线控制器, 并要设计预留工作方法选择信号及控制信号, 以可将总线控制器、 远程终端接口、 总线监视器结合起来以达成通用航空总线接口功效。完成对应软件系统语言程序最终经综合和仿真验证后, 在特定FPGA中实现。 采取设计步骤安排以下: 第1章: 关键叙述了
6、MIL-STD-1553B总线技术中国外发展情况以及相关领域利用。 第2章: 查找部分MIL-STD-1553B数据总线协议资料, 并对其进行初步制订步骤。 第3章: 结合相关书籍和设计方法对1553B总线接口提出总体设计方案。 第4章: 应用1553B总线接口具体设计与实现FPGA, 并最终对其中每个小模块设计作具体设计。 第5章: 1553B总线接口试验分析, 关键介绍总线接口芯片测试系统设计及其测试结果分析以及系统性能分析。 第6章: 总结了本文研究设计工作, 并对未来深入工作做了展望。 2 MIL-STD-1553B数据总线协议介绍 2.1 1553B数据总线应用和特点
7、 因为其传输速率高, 设备之间连接简单灵活, 噪声容限高, 通信效率高而且可靠, 为美军标所采取, 将其作为机载设备相互通信总线标准。从推出到现在, 经过三十年发展, 1553B总线技术也在不停改善。现在1553B总线已经成为在航空航天领域占统治地位总线标准[4]。 MIL-STD-1553B其可靠性、 稳定性特点, 在美国等过早已得到认可, 且对1553B使用, 已由军飞机使用扩展到坦克、 船舶、 卫星、 武器等领域。 图2.1 1553B航空总线大致应用领域 综合起来1553B总线有以下多个优良特点[5][6]: (1)实时性好, 1553B总线传输码速率为1Mbps, 每
8、条消息最多包含32个字, 传输一个固定不变消息所需时间短。 (2)合理差错控制方法和特有方法命令, 为确保数据传输完整性, 1553B采取了合理差错控制方法——反馈重传纠错方法。当总线控制器BC向某一终端RT发出一个命令或发送一个消息时, 终端应在给定响应时间内发回一个状态字, 假如传输消息有错, 终端就拒绝发回状态字, 由此汇报上次消息传输无效。而方法命令不仅使系统能完成数据通讯控制任务, 还能调查故障情况并完成容错管理功效。 (3)总线效率高, 总线形式拓扑结构对总线效率要求比较高, 为此1553B对包含总线效率指标一些强制性要求如命令响应时间、 消息间隔时间以及每次消息传输最大和最
9、小数据块长度都有严格限制。 (4)含有命令/响应以及“广播”通讯方法, BC能够以“广播”方法向全部RT发送一个时间同时消息, 这么总线上全部消息传输都由总线控制器发出指令来控制, 相关终端对指令应给予响应并实施操作。这种方法非常适合集中控制分布式处理系统。 2.2 编码方法 1553B总线上数据是以双相曼彻斯特编码方法传输。曼彻斯特码是一个广泛应用于航空电子综合系统中、 线数据传输双极性码。它在每个码位中点存在一个跳变。1信号是一个由l到0负跳沿, 而O信号是由0到1正跳沿。它本身包含了自定时信息, 所以它不需要独立信道来传输位定时信息, 它能够直接从数据中分离出定时时钟, 在传输代
10、码信息同时, 也将时钟同时信号一起传输到对方, 每位编码中有一跳变, 不存在直流分量, 所以含有自同时能力和良好抗干扰性能[7]。 它是关键用在数据同时传输中一个编码方法。图2.2给出了 ManehesterIx编码方法 同时此种编码方法还能与变压器祸合相协调, 十分适适用在变压器祸合形式, 长度为6m(20英尺)左右场所, 在航空电子综合系统中, 它是最关键编码形式[8]。 图2.2 Manehester11编码 2.2.1 FPGA内部结构应用特点: 1)采取FPGA设计ASIC电路(专用集成电路), 用户不需要投片生产, 就能得到适用芯片。 2)FPGA可做其它全定
11、制或半定制ASIC电路中试样片。 3)FPGA内部有丰富触发器和I/O引脚。 4)FPGA是ASIC电路中设计周期最短、 开发费用最低、 风险最小器件之一。 5) FPGA采取高速CMOS工艺, 功耗低, 能够与CMOS、 TTL电平兼容[9]。 能够说, FPGA芯片是小批量系统提升系统集成度、 可靠性最好选择之一。 FPGA是由存放在片内RAM中程序来设置其工作状态, 所以, 工作时需要对片内RAM进行编程。用户能够依据不一样配置模式, 采取不一样编程方法。 加电时, FPGA芯片将EPROM中数据读入片内编程RAM中, 配置完成后, FPGA进入工作状态。掉电后, FPGA恢
12、复成白片, 内部逻辑关系消失, 所以, FPGA能够反复使用。FPGA编程无须专用FPGA编程器, 只须用通用EPROM、 PROM编程器即可。当需要修改FPGA功效时, 只需换一片EPROM即可。这么, 同一片FPGA, 不一样编程数据, 能够产生不一样电路功效。所以, FPGA使用非常灵活。 2.3 硬件描述语言(HDL) 硬件描述语言HDL(Hardware Description Language )是一个用形式化方法来描述数字电路和数字逻辑系统语言。数字逻辑电路设计者可利用这种语言来描述自己设计思想, 然后利用EDA工具进行仿真, 再自动综合到门级电路, 最终用ASIC或FPGA
13、实现其功效[7]。 举个例子, 在传统设计方法中, 对2输入与门, 我们可能需到标准器件库中调个74系列器件出来, 但在硬件描述语言中, “&”就是一个与门形式描述, “C = A & B”就是一个2输入与门描述。而“and”就是一个与门器件[10]。 硬件描述语言发展至今已经有二十多年历史, 当今业界标准中(IEEE标准)关键有VHDL和Verilog HDL 这两种硬件描述语言。 2.3.1 VeriIog HDL 在数字电路设计中, 数字电路可简单归纳为两种要素: 线和器件。线是器件管脚之间物理连线; 器件也可简单归纳为组合逻辑器件(如与或非门等)和时序逻辑器件(如寄
14、存器、 锁存器、 RAM等)。一个数字系统(硬件)就是多个器件经过一定连线关系组合在一块。所以, Verilog HDL建模实际上就是怎样使用HDL语言对数字电路两种基础要素特征及相互之间关系进行描述过程。 伴随Verilog-XL算法成功, Verilog HDL语言得到快速发展。1989年, Cadence企业收购了GDA企业, Verilog HDL语言成为Cadence企业私有财产。1990年, Cadence企业决定公开VerilogHDL语言, 于是成立了OVI(Open Verilog International)组织, 负责促进Verilog HDL语言发展。基于Verilo
15、g HDL优越性, IEEE于1995年制订了Verilog HDLIEEE标准, 即Verilog HDL1364-1995; 公布了Verilog HDL 1364-标准。在这个标准中, 加入了Verilog HDL-A标准, 使Verilog有了模拟设计描述能力[11][12]。Verilog HDL适合算法级(Algorithm)、 寄存器传输级(RTL)、 逻辑级(Logic)、 门级(Gate)和板图级(Layout)等各个层次设计和描述[11]。具体如表2.2所表示。 表2.2 不一样层级描述方法 设计层次 行为描述
16、 结构描述 系 统 级 系统算法 系统逻辑图 寄 存 器 数据步骤图、 真值表 寄存器ALUROL等 输 出 级 状态机 分模块描述 门 布尔方程 逻辑门触发器锁存器 级 真 值 表 组成逻辑图 版 图 级 几何图形 图形连接关系 2.3.2 VHDL语言 VHDL 语言能够成为标准化硬件描述语言并取得广泛应用, 它本身
17、肯定含有很多其她硬件描述语言所不含有优点[1]。归纳起来 VHDL 语言关键含有以下优点: (1) VHDL 语言功效强大, 设计方法多样 VHDL 语言含有强大语言结构, 只需采取简单明确VHDL语言程序就能够描述十分复杂硬件电路。同时, 它还含有多层次电路设计描述功效。另外, VHDL 语言能够同时支持同时电路、 异步电路和电路设计实现, 这是其她硬件描述语言所不能比拟。VHDL 语言设计方法灵活多样, 既支持自顶向下设计方法, 也支持自底向上设计方法; 既支持模块化设计方法, 也支持层次化设计方法。 (2) VHDL 语言含有强大硬件描述能力[10] VHDL 语言含有多层
18、次电路设计描述功效, 既可描述系统级电路, 也能够描述门级电路; 描述方法既能够采取行为描述、 寄存器传输描述或者结构描述, 也能够采取三者混合描述方法。同时, VHDL 语言也支持惯性延迟和传输延迟, 这么能够正确地建立硬件电路模型。VHDL 语言强大描述能力还表现在它含有丰富数据类型。VHDL 语言既支持标准定义数据类型, 也支持用户定义数据类型, 这么便会给硬件描述带来较大自由度。 (3) VHDL 语言含有很强移植能力 VHDL 语言很强移植能力关键表现在: 对于同一个硬件电路 VHDL 语言描述, 它能够从一个模拟器移植到另一个模拟器上、 从一个综合器移植到另一个综合器上或者从
19、一个工作平台移植到另一个工作平台上去实施。 (4) VHDL 语言设计描述与器件无关 采取VHDL 语言描述硬件电路时, 设计人员并不需要首先考虑选择进行设计器件。这么做好处是能够使设计人员集中精力进行电路设计优化, 而不需要考虑其她问题。当硬件电路设计描述完成以后, VHDL 语言许可采取多个不一样器件结构来实现。 (5) VHDL 语言程序易于共享和复用 VHDL 语言采取基于库 ( library) 设计方法。在设计过程中, 设计人员能够建立多种可再次利用模块, 一个大规模硬件电路设计不可能从门级电路开始一步步地进行设计, 而是部分模块累加。这些模块能够预先设计或者使用
20、以前设计中存档模块, 将这些模块存放在库中, 就能够在以后设计中进行复用[11]。 因为 VHDL 语言是一个描述、 模拟、 综合、 优化和布线标准硬件描述语言, 所以它能够使设计结果在设计人员之间方便地进行交流和共享, 从而减小硬件电路设计工作量, 缩短开发周期。 2.3.3 veriIog HDL和VHDL比较 现在最关键硬件描述语言是VHDL和Verilog HDL。VHDL发展较早, 语法严格, 而Verilog HDL是在C语言基础上发展起来一个硬件描述语言、 语法较自由(现在ASIC设计多采取Verilog语言)[10]。VHDL和VerilogHDL二者相比, VHDL是一
21、个高级描述语言, 通常更适合行为级和RTL级描述, 能够用于高级建模, 而VerilogHDL则是一个比较低级描述语言, 更适合于RTL级, 尤其是门级电路描述, 易于控制电路资源。另外, 从两种语言推进过程来看, VHDL语言偏重标准化考虑, 而Verilog语言因为是在Cadence扶植下针对EDA工具开发硬件描述语言, 所以, 跟EDA工具结合更为亲密。学习VHDL比学习Verilog难部分, 但Verilog自由语法也使得初学者轻易上手但也轻易犯错。国外电子专业很多在本科阶段教授VHDL, 在硕士阶段教Verilog。从中国来看, VHDL参考书很多, 便于查找资料, 而Verilog
22、HDL参考书则极少, 这给学习Verilog HDL带来不少困难。结合二者优点, 常常采取VHDL和VerilogHDL两种混合语言进行电子线路描述, 使得利用语言描述硬件效果更佳[12][13]。 2.4 1553字结构 1553B总线协议要求, 总线上数据是以曼彻斯特编码字格式进行传输。协议要求每次信息传输包含命令字、 数据字(指令字和状态字)等多个字格式。每种字字长为20位, 因为总线数据传输速率是1Mb1t/s, 所以传输每一位需要 1us时间, 传输一个完整字需要20us。这多个字格式有效信息位是16位, 每个字前3位为同时位, 用来表示数据到来并区分为何种字类型。最终一位为校验
23、位, 1553B协议要求总线上传输数据全部采取奇校验, 这种做法方便各个终端设备接口统一, 确保数据传输可靠性。由发送端为数据进行补奇, 接收端进行奇校验。数据是以曼彻斯特编码方法传输。同时头是判定数据类型和捕捉总线上数据关键信息, 同时头总共占用3个数据位, 它特点就是电平改变以1.5个数据位为单位, 所以接收端只要判定电平在1.5个数据单位改变就认为是同时头。同时头分为两种:前 1.5个数据位为高电平, 后1.5个数据位为低电平同时头用来表示这个字为命令字(方法指令字)或者状态字; 前1.5个数据位为低电平, 后1.5个数据位为高电平同时头用来表示这个字为数据字[15]。 图2.3 15
24、53B总线命令字/数据字/状态字格式图 2.5 155B总线网络拓扑结构 MIL-STD-1553B总线网络由终端、 字系统和总线传输介质组成。终端是使数据总线和子系统相连接电子组件。字系统为多路数据总线上接收数据传输服务装置或功效单位。总线控制器(BC)是总线系统上传输信息并有选择地提取信息以备后用终端。 1553B总线系统采取命令、 响应式传输操作方法。只有当总线控制器发出命令后, 远程终端才能做出响应, 也即远程终端永远是被动, 即使它想给BC或者给别RT发信息。 2.6 对于BC功效155B工作模式 1553B三种工作模式: 总线控制器(Bus Controller)
25、远程终端(Remote Terminal),总线监控器(Bus Monitor)。 其中总线控制器(BC): 对1553B总线控制和管理, 也是全部信息传输动作提议者。任何时刻总线上只有一个总线控制器, 其负责发送命令、 参与数据传输、 接收状态响应和检测总线系统。 2.7 155B总线传输方法和数据格式 1553B总线传输速度是1Mb/s, 采取曼彻施特II型编码, 半双工工作方法。信号以串行数字脉冲编码调制(PCM)形式在数据总线上传输。逻辑1为双极编码信号1/0, 即一个正脉冲继之一个负脉冲, 逻辑0为双极编码信号0/1, 即一个负脉冲继之一个正脉冲[14][15]。
26、 图2.4 155B总线传输方法 1553B信息流由一串1553B消息由命令字、 数据字、 状态字组成。全部1553B字都是20bit长, 每一个字都应是: 3为同时头+16位数据/命令/状态为+1为奇偶校验。同时和奇偶校验位被1553硬件用在确定1553信息格式和数据错误时候[17]。 3 155B3总线接口设计总体方案 3.1 1553B数据总线系统设计 总线系统原理工作硬件组成如图3.1 双通道收发器 宿主机接口 双端口存放器 C P U 接口寄存器及控制逻辑 1553协议处理器 (耦合器
27、 da 通道A ad cs 通道B 读写RAM控制 (耦合器) 图3.1 总线总体设计思绪组成 1553B总线接口关键包含3大模块, 双通道收发器、 1553B协议处理器和接口寄存器, 以及使用FPGA片内双口RAM存放器。双通道收发器属于电平转换设备, 不能够在FPGA内部实现, 能够用收发芯片等来完成其功效。1553B协议处理器完成总线控制器关键功效。CPU处理器, EPROM, RAM, 信道切换逻辑等组成, 完成接收与发送消息打包和解包处理, 方便于子系统接收/发送。与宿主机接口模块实现宿主机与总线接口板间接口, 连有双端口存放器
28、 驱动电路和译码电路。双口存放器关键用于主机和总线接口板进行信息交换缓冲区, 降低主机负荷。 3.2 1553B协议处理器结构 1553B协议处理器是一个1553B总线接口关键部分。它完成包含收发消息, 数据流控制等多个协议处理步骤。因为总线接口能够分为总线控制器BC、 远程终端RT和总线监视器BM三种类型, 所以协议处理器按功效能够划分为BC、 RT或者BM。本设计要实现BC和RT在有些功效上是相同, 所以部分模块是BC/RT通用。 总线控制器BC实现功效[18] 总线控制器是总线信息传输提议者, 要实现具体功效包含: (l)信息正确发送:包含命令字/方法指令写入、 添加
29、同时头、 字计数、 曼彻斯特编码等。 (2)信息正确接收:包含状态字和数据字接收、 同时头识别、 字计数、 曼 彻斯特解码、 产生中止及奇偶校验等。 (3)字/消息处理:包含命令字提取, 双命令字协调、 状态字分析、 接口 寄存器读写、 自测试、 存放器及缓冲器读写等。 所以, 以下试验内容关键是围绕着这子模块进行编写和设计。如图3.3 就是对该些部分划分结构。 时钟产生模块 主处理器 地址控制 存放器接口 并行通信接口 串行通信接口 数字接收器 模拟接收器 双口RAM 命令字/状态字译码及发送命令字控制 发生器控制
30、 模拟发送器 数字发送器 状态字设置/命令字寄存器 发送超时监测 检错控制 图3.2 总线接口系统结构图 (1)模拟收发器部分:简明来说接收部分是将双电平曼彻斯特码转化为单电平曼彻斯特码, 而发送部分则是将单电平曼彻斯特码转化为双电平曼彻斯特码, 包含模拟接收器和模拟发送器两部分。 ①模拟接收器:数字逻辑与数据总线相接最基础前端模拟部件。因为FPGA纯粹基于数字电路设计, 所以对于模拟接收中模拟量处理部分, 要经过外部模拟电路进行实现。尽管总线上信号是以数字形式传输, 但连接终端双绞屏蔽线电缆, 其特征会引发信号衰减, 终端收到信号常是一个失真正弦波
31、总线上输入信号经过滤波消除了高频噪声。门限检出为抑制低频噪声发明了条件且含有与逻辑检测相兼容数字输出。并将双极性曼彻斯特码转换为单极性曼彻斯特码。 ②模拟发送器:数字逻辑与数据总线相接模拟部件, 它是将FPGA发出单极性信号转变为符合MIL-STD-1553B标准双极性信号。 (2)总线接口部分:接收部分实现功效是将曼彻斯特码转换为单极性不归零码(NRZ码), 而且实现对同时头检测, 以及奇偶位校验, 实现串/并转换。发送部分实现功效是将曼彻斯特码转换为双极性不归零码(NRZ码), 而且实现对同时头编码, 实现实状况态字、 数据字和命令字编码, 以及奇偶位产生, 进行并/串转换。依据15
32、53B通讯协议要求, 发送器要严禁发送大于800微秒消息。包含数字接收器, 数字发送器和发送超时检测三部分。 ①数字发送器:该部分即为曼彻斯特码编码, 它是将单极性不归零码转换为单极性曼彻斯特码, 而且实现对同时头编码, 以及奇偶位产生, 并对数据进行并/串转换。 ②数字接收器:该部分即为曼彻斯特码解码, 功效与发送器刚好相反, 是将单极性曼彻斯特码转换为单极性不归零码, 同时实现对同时头检测, 以及奇偶位校验位检测, 位计数检测, 同时时钟提取, 以及数据串/并转换。 ③发送超时检测:在MIL-STD-1553B协议标准中要求发送器要严禁发送大于800微秒消息。本模块就是对发送器进行计
33、时控制, 当发送器发送消息时间大于800微秒时, 它就关断发送器。 (3)总线协议处理模块:实现命令字、 状态字以及方法命令译码, 进行RT地址比较, 子地址比较, 进行命令字、 状态字和方法命令译码, 进行错误检测及发送中止信号等。并要为其它模块发送对应控制量, 实现对总线接口控制。包含命令字/状态字译码及数据控制, 地址控制, 检错控制, 命令字发送及状态字设置, 发送器控制等几部分。 ①命令字/状态字译码及命令字发送控制部分:该模块实现功效是在BC工作方法下发送命令字, 且在BC/RT/MT三种工作模式下对命令字或状态字进行译码, 产生对应控制信号实现对其她模块控制, 如对地址控制部
34、分, 检错控制部分, 命令字发送/状态字设置部分, 以及发送器控制部分等, 本部分是接口芯片一个关键部分。 ②地址控制部分:该模块实现对各工作方法下输入双口RAM地址控制以及读写使能。包含地址变换和地址选择两部分。 ③检错控制部分:该模块用于检测消息传输过程中发生错误, 包含字计数检测及RT响应超时检测, 而且依据其它模块检测到RT地址错误、 奇偶校验错误和位计数错误等产生中止信号[17]。 ④状态字设置部分:该模块实现RT工作方法下返回状态字设置, 及对状态字和目前命令字和上一命令字进行存放, 以备方法命令消息方法实现。 ⑤发送器控制模块:针对不一样工作方法所需要发送数据选择。 ⑥
35、时钟产生:对外部输入时钟进行处理产生不一样频率时钟。它实质上是一个计数器, 对外部输入时钟进行分频处理。 (4)主处理器接口部分:实现主处理机与总线接口交换信息功效, 经过共享RAM来实现。包含并行通信接口、 串行通信接口、 存放器接口和双端口RAM。其中每部分具体功效以下: ①存放器接口:它实际上是一个隔离器, 对外部子系统处理器和总线接口芯片对双口RAM进行访问信号进行处理, 它不许可二者同时对双口RAM进行读或者写, 当二者同时读或写时, 进行对应控制, 要求二者访问优先级。 ②双口RAM:它是整个芯片数据存放区, 用以存放不一样工作方法下各类字, 是传输消息内容数据, 也是处理器
36、与总线接口芯片通信数据交换媒介[18]。 ③并行通信控制接口:该部分关键实现总线接口芯片与主处理器并行通信。 ④串行通信接口:该部分即为了实现总线接口芯片串行通信, 在FPGA中嵌入UART(通用异步收发器), 能够与含有UART通信接口部件相连接, 比如经过RS232总线与PC机进行串行通信。 3.3 总线接口寄存器模块功效 接口寄存器是以控制和状态寄存器来实现, 关键有以下多个寄存器:远程终端命令字寄存器:RT模式下, 存放接收到全部命令字和方法指令字。接收命令字寄存器:只在RT模式下使用, 信息完整接收后, 命令字会从远程终端命令字寄存器送入此寄存器[18]。 第一命令字寄存器
37、存放BC要发送命令字, 或者存放RT一>RT传输第一个命令字。 矢量字/第二命令字/方法指令数据寄存器:在BC模式下, 能够存放RT一>RT传输时第二个命令字或者方法指令需要数据字;在RT模式下, 存放方法指令提取矢量字。 第一状态字寄存器:存放RT返回状态字, 或者是RT一>RT模式下RT返回第一个状态字。 同时/第二状态字/返回方法指令数据寄存器:在BC模式下, 此寄存器既能够存放来自RT一>RT模式下传输第二个状态字也能够存放来自RT方法指令返回字:RT模式下, 作为存放带数据字方法指令字数据字寄存器。 操作寄存器:子系统用来控制总线接口寄存器。配置整个接口功效选择。方法指令寄
38、存器:RT接收到方法指令[14]。 4 1553B总线接口具体设计与实现 4.1总线BC功效 总线控制器BC是1553B总线上唯一能够提议和终止消息传输任务终端。一条总线上只能够存在一个总线控制器, 它是1553B总线指挥和调度者。其关键功效是, 向系统中远程终端发出指令, 控制终端行为。包含发送广播指令, 模式代码(mode code)指令; 一般发送数据指令, 一般接收数据指令。 作为总线控制器, 要实现任务包含: (1)数据字正确接收:包含接收器, 同时检出, 数据检出, 曼彻斯特n码错误检出奇偶检测, 位/字计数; (2)数据字发送:包含发送控制, 同时/数据
39、编码, 时钟产生; (3)字/消息处理:包含, a接收部分, 计数器, 状态寄存器;b自测试部分;c主子系统接口部分, 控制, 数据地址, 控制寄存器; d存放器缓冲器部分; e状态字译码部分, 字计数识别, 消息错误检出等任务[18]。 作为MILSTD一1553B总线通用接口应完成以下功效: ①将总线上串行信息流转换成处理机能够处理并行信息或者与之相反; ②接收或发送信息时, 能够识别或生成标准1553B信息字和消息; ③完成与处理机之间信息交换, 这包含1553B信息地址分配, 命令字(或状态字)译码或返回状态字、 发送数据字等。 4.2 1553B协议处理器BC功效模块设计
40、4.2.1 模拟收发器 模拟收/发器是BCR/T/MT直接与传输电缆接口关键部件, 1553B总线采取是双相码中曼彻斯特码, 本身包含了自定时信息, 同时它能与变压器祸合协调, 十分适宜用于变压器祸合形式, 电缆长度为500英尺左右航电综合系统中。简明说就是将双电平曼彻斯特码转化为单电平曼彻斯特码, 以及将单电平曼彻斯特码转化为双电平曼彻斯特码。 4.2.2 总线控制器BC设计 总线接口每一个类型终端设计都包含模拟收发器、 总线接口模块、 总线控制模块、 处理机接口模块四部分, 都需要完成字处理和消息处理, 而BC是总线上唯一被安排为实施建立和开启数据传输任务终端, 被指派开启数据总
41、线上信息传输任务终端。针对BC功效, 其FPGA部分逻辑结构如图4.1示。 时钟产生模块 地址控制 存放器接口 并行通信接口 外部时钟 发送命令字 串行通信接口 外部控制信号 数字接收器 双口RAM 状态字译码/接收数据字 发生器控制 数字发送器 发送超时监测 检错控制 图4.1 总线控制器内部结构图 下面将结构图中各小模块进行设计说明。 4.2.3 消息发送器 在BC模式下, 需要包含到发送指令文字, 所以发送消息控制模块依据工作模式从接口寄存器中读取对应指令字, 从而判定消息传输模式是否带数据字等。然
42、后控制发送单元将指令字和数据字发送出去。BC在发送命令字同时也对发出命令字进行译码, 包含提取RT地址, 以及要发送数据字个数, 来产生控制信号提供给其她模块。在RT模式只需要发送状态字、 数据字和方法指令数据码, 数据字计数需要从命令字字计数字段提取, 方法指令数据码是BC经过方法指令字读取RT状态, 包含上一状态字、 上一命令字、 矢量字等。 Moore型有限状态机输出只与有限状态机目前状态相关, 与输入信号目前值无关。在图4.2中描述了Moore型有限状态机示意图. state logic output logic state re
43、gister input state output current state clok reset 图4.2 Moore型有限状态机示意图 Moore型有限状态机在时钟clock脉冲有效边缘后有限个门延时后, 输出达成稳定值。即使在一个时钟周期内输入信号发生改变, 输出也会在一个完整时钟周期内保持稳定值而不变。输入对输出影响要到下一个周期才能反应出来, Moore型有限状态机最关键特点就是将输入与输出信号隔离开来。 单进程Moore型有限状态机, 其VHDL语言描述以下: Library ieee; Use ieee.std_logic_1164.al
44、l; Entity moore is Port(datain : in std_logic_vector(1 downto 0); Clk,clr : in std logic; q : out std_logic_vector(3 downto 0); End moore; Architecture behav of moore is Type st_type is (st0,st1,st2,st3,st4); Signal c_st : st_type; Begin Processs(clk,clr) Begin If clr=’1’ then
45、 C_st<=st0; q<=”0000”; Elsif clk event and clk=’1’ then Case c_st is When st0=>if datain”10” then c st<=st1; Else c_st<=st0; end if; q<=”1001”; When st1=>if datain”11” then c st<=st2; Else c_st<=st1; end if; q<=”0101”; When st2=>if datain”01” then c st<=st3;
46、 Else c_st<=st0; end if; q<=”1100”; When st3=>if datain”00” then c st<=st4; Else c_st<=st2; end if; q<=”0010”; When st4=>if datain”11” then c st<=st0; Else c_st<=st3; end if; q<=”1001”; When others=>c_st,=st0; End case; End if; End process; End behav; 其特点是组合进程和时序进
47、程在同一个进程中, 此进程能够认为是一个混合进程。注意在此进程中, CASE语句处于测试时钟上升沿ELSIF语句中, 所以在综合时, 对Q赋值操作肯定引进对Q锁存锁存器。这就是说, 此进程中能产生两组同时时序逻辑电路, 一组是状态机本身, 另一组是由CLK作为锁存信号4位锁存器, 负责锁存输出数据Q。与多进程状态机相比, 这个状态机结构优势是, 输出信号不会出现毛刺现象。这是因为Q输出信号在下一个状态出现时, 由时钟上升沿锁入锁存器后输出, 即有时序器件同时输出, 从而很好地避免了竞争冒险现象。 从输出时序上看, 因为Q输出信号要等到进入下一状态时钟信号上升沿进行锁存, 即Q输出信号在目前状
48、态中由组合电路产生, 而在稳定了一个时钟周期后在次态由锁存器输出, 所以要比多进程状态机输出晚一个时钟周期, 这是这类状态机缺点。图4.3单进程Moore状态机工作时序图: 图4.3 单进程Moore型状态机工作时序 4.2.4寄存器 1: I/O写寄存器 寄存器写操作VHDL语言描述以下: write:proeess(strb, wr) FPGAI/O端口进程 begin if(wr’event and wr=’0’)then 写信号wr有效时继续实施该进程 if(ios=’0’ and strb=’0’)then 判定是信息否是写外部I/O端口
49、case addr is when”11111”=>commandword<=datadsp; 写入I/O地址IF when”11110”=>dataword<=datadsp; 写入I/O地址IE when”11101”=>timerword<=datadsp; 写入I/O地址ID when others=>null; end case; end if; end if; end proeess; 其操作波形如图4.4所表示:图中在wr下降沿, 在strb和ios信号为低电 平时分别对I/O端口1F, lE, 1D都进行了写操作。 图4.4 I
50、/O接口写操作 2: I/O读寄存器 读寄存器VHDL实现以下: read:process(strb, rd) 读FPGAI/O进程 begin if(rd’event and rd=’0’)then 读信号rd有效时实施该进程 if(ios=’0’ and strb=’0’)then 判定端口状态 case addr is when”11100”=>datadsp<=datal553; 读出1553B数据, 地址IC when”11011”=>datadsp<=statusl553; 读出1553B状态, 地址IB






