基于FPGA的1553B总线曼彻斯特编解码器设计与实现
0 引 言
曼彻斯特码是一种传统、 经典的数据编码技术, 也叫相位编码(Phase Encoding), 具有自带时钟的特性, 是一种同步时钟编码技术, 能够很好地解决数字通信系统中同步难题。 按照编码原理及实现算法[1]的不同, 曼彻斯特码可以分为三种: 曼彻斯特双相电平码、 曼彻斯特Ⅱ型双相电平码以及差分曼彻斯特双相电平码, 可简称为曼彻斯特Ⅰ型码、 曼彻斯特Ⅱ型码和差分曼彻斯特码。 曼彻斯特码是在NRZ码(Non-Return to Zero, 非归零码)的基础上发展起来, 采用具有无直流分量特性的编码技术, 在电信业、 工业现场控制、 车辆总线及石油勘测等领域具有广泛的应用。
MIL-STD-1553B是美国关于数据总线传输的军方标准。 总线协议规定, 采用曼彻斯特Ⅱ型码作为1553B总线的数字编码技术标准[2], 因此, 曼彻斯特编解码器性能的好坏将直接影响1553B总线的通信质量。
要坚持问题导向,紧紧围绕系统内巡察中发现的选拔任用程序不规范,选任纪实工作不完整,干部档案审核不够严格规范等问题,进一步建立健全内控制度,充分发挥内控制度“过滤网”“保险阀”作用。坚持全过程监督,做到源头把关、全程防控、失责追究,坚决防止干部“带病提拔”。建立干部监督工作联席会议制度,健全系统内组织人事部门与纪检、巡察、信访等工作联席机制,切实增强监督合力。
目前FPGA集成了丰富的可编程器件门电路和部分IP核, 具有精确的时序处理能力, 在高速信号处理中应用广泛。 1553B总线曼彻斯特编解码器工作在兆赫兹以上, 对时序的要求比较高, 因此, 本文采用FPGA设计曼彻斯特编解码器。 其设计输入的硬件描述语言 VHDL于1987年被IEEE确认为国际标准, 具有设计的灵活性和器件定义的严谨性以及强大的行为级抽象描述能力, 在数字系统设计领域具有广泛的应用, 因此本文采用VHDL实现FPGA开发的设计输入。
上世纪90年代后期,党中央确定的国防和军队现代化建设“三步走”战略目标,要求到21世纪中叶基本实现现代化。国防和军队现代化新的“三步走”发展战略,不仅与新时代中国特色社会主义发展的总体战略安排相适应、相同步,有利于把国防和军队建设发展放在国家建设发展的大局中统筹考虑,协调发展,实现富国与强军相统一,而且把基本实现现代化的时间提前了15年,到本世纪中叶的目标确定为把人民军队全面建成世界一流军队。
1 曼彻斯特Ⅱ型码
1.1 曼彻斯特码编码原理
曼彻斯特码是用脉冲序列来表示数据“1”和“0”, 而脉宽是码元宽度的一半。 在曼彻斯特Ⅱ型码中, NRZ码元1对应于脉冲电平由高电平跳变到低电平; NRZ码元0对应于脉冲电平由低电平跳变到高电平, 在传输码元的中间时刻含有一个记录时钟信息的跳变, 因此说曼彻斯特码具有自带时钟的特征。 曼彻斯特Ⅱ型码的波形图如图1所示。

图1 曼彻斯特Ⅱ型码波形及其编码原理
Fig.1 Waveform and coding principle of ManchesterⅡ code
从图1的时序波形可以看出, 曼彻斯特Ⅱ型码是将NRZ码元与其编码时钟电平同或处理得到。 同或是指当两输入电平同为“1”或“0”时, 运算结果是逻辑1; 而输入电平不相同时, 运算结果是逻辑0。 由其逆向运算可知, 曼彻斯特Ⅱ型码的基本解码算法是将得到的曼彻斯特码与同步的编码时钟电平同或处理, 即可得到NRZ码元。
1.2 曼彻斯特编解码器与1553B总线通讯
曼彻斯特编解码器的功能是实现协议字和曼彻斯特码之间的相互转换。 曼彻斯特编码器将1553B协议终端的待发送数据, 经过编码后以曼彻斯特码的形式正确地发送给1553B总线专用收发器[4]HI-1573。 曼彻斯特解码器将对从收发器HI-1573接收到的数据进行解码, 提取出1553B总线协议规定的同步头和协议数据, 然后发送给1553B协议终端[2-5], 同时对可检测的错误进行必要的标记。

图2 1553B总线规定的3种协议字组成
Fig.2 Three protocol words specified in the 1553B bus
1553B总线规定[2], 协议字分为数据字、 命令字和状态字, 其位长是20, 包括同步头、 有效数据和奇校验三部分[3], 如图2所示。 其中, 同步头波形占据3个位宽, 有效数据为16位, 最后1位是前16位数据的校验码(协议规定采用奇校验)。 从图中看出, 数据字的同步头波形是先低后高, 而命令字和状态字的同步头是先高后低。
1.3 曼彻斯特码在1553B总线中的波形
根据曼彻斯特Ⅱ型码的编码原理以及1553B总线协议[2], 传输线上不跳变电平的码元组合[6]有8种, 分别是“0000”, “1111”, “111”, “000”, “11”, “1”和“00”以及“0”。 1553B总线的位时钟为1 MHz, 曼彻斯特Ⅱ型码的一个码元宽度是0.5 μs。 因此, 传输线上曼彻斯特Ⅱ型码的电平脉宽为500 ns, 1 000 ns, 1 500 ns和2 000 ns。 其中脉宽1 500 ns出现在同步头电平中, 而脉宽2 000 ns出现在随后的数据位与同步头电平相一致的同步头电平中; 脉宽500 ns和1 000 ns出现在数据位电平中, 由正反向数据以及排列组合关系可知有8种组合。 同步头和数据位的脉宽类型如图3~4所示。

图3 曼彻斯特Ⅱ型码同步头脉宽类型
Fig.3 Pulse width types of synchronization head in Manchester Ⅱ code

图4 曼彻斯特Ⅱ型码数据位脉宽类型
Fig.4 Pulse width types of data in Manchester Ⅱ code
2 曼彻斯特编解码器
(4) WAIT: 同步头配置态, 将同步头的6或7位数据位串行写入寄存器, 并设置同步头类型。 完成后, 判断正反向数据位电平, 若正向出现高电平, 则进入SAMPLE1; 若反向出现高电平, 则进入SAMPLE2。
2.1 编解码时钟的设计
1553B协议允许的时间误差范围为150 ns, 因此最坏情况下, 曼彻斯特Ⅱ型码电平脉宽为500±150 ns, 1 000±150 ns, 1 500±150 ns和2 000±150 ns。 在采样时钟的选取中, 为了保证时钟沿的一致性和提高抗干扰性, 采样时钟常取位时钟的4, 8或10倍。 1553B协议规定, 数据传输的比特率是1 Mbps。 因此, 若采样时钟为8 MHz时, 脉宽计数器的计数值范围分别是2~5, 6~9, 10~13和14~17; 若选10 MHz, 脉宽计数器的取值分别是3~6, 8~11, 13~16和18~21; 若选16 MHz, 脉宽计数器的取值分别是5~10, 13~18, 21~26和29~34。 设计中若采用8 MHz的采样时钟, 计数器的计数误差可能会导致解码错误; 同时若采用更高倍如16 MHz的采样时钟, 虽然会降低计数误差导致的解码错误概率, 但由于计数器的计数范围大, 会浪费一部分寄存器资源。 综合各种因素, 采用10 MHz的编解码时钟。
方达生和陈清都没有责备我,只是小心翼翼地安抚我,唯恐绊动了我脆弱的神经。他们还感谢我能将孩子还给他们,并承诺再往我的账户里打十万块钱以示感谢。钱?我自嘲地笑了。
2.2 编码器设计
根据曼彻斯特Ⅱ型码的编码原理, NRZ码元1对应于脉冲电平由高电平跳变到低电平, NRZ码元0对应于脉冲电平由低电平跳变到高电平。 因此每一位NRZ数据的上半脉冲沿与NRZ数据的电平相同, 而下半脉冲沿与NRZ数据的电平相反, 即取非运算, 因此, 可考虑将待发送数据转化为脉冲数据的上半沿和下半沿。 这是设计曼彻斯特Ⅱ型码编码器的主体思想。
在设计编码器时, 考虑到编码器的通用性和可扩展性, 设计了消息帧长、 发送使能设置和FIFOs地址自增等功能, 同时分别实现同步头、 数据位发送及校验位的发送。 设计中采用2个16位串行移位寄存器分别实现正向数据和反向数据的串行发送。 基于以上考虑, 本文设计了有限状态机实现时序逻辑的转换。
编码器的有限状态机为IDLE, START, WAIT, SHIFT1, WAIT1, SHIFT2, WAIT2, CHECK和CHECK_WAIT以及STOP等10个状态, 其之间的状态转换如图5所示。
各个状态的功能如下:
(1) IDLE: 空闲态, 系统初始化处于该空闲态, 同时一个合法字发送完成以及一帧发送完成后, 都返回该态; 当检测到发送命令, 进入同步头发送的START态。
(6) SAMPLE2: 采样反向数据高电平脉宽, 判断正向数据位。 若出现高电平, 则采样计数器停止, 并判读位计数以及采样计数; 若位计数到40, 则进入STOP, 并从寄存器中按次序取出17位数据位写入暂存寄存器, 其中前16位是有效数据位, 最后一位是其校验结果; 反之位计数不到40, 此时若采样计数是1或2, 则进入SAMPLE1, 同时将数据位串行写入寄存器, 否则进入IDLE, 并置Manchester码错误。
(10) STOP: 停止态, 初始化几个位计数, 有效字计数自加, 自动进入IDLE态。

图5 编码器状态机转换图
Fig.5 Transition diagram of state machine in encoder
(4) SHIFT1: 移位有效字的脉冲上半沿态, 设计一个16位的移位寄存器, 按照时序逻辑逐位移位, 准备脉冲上半沿; 完成后自动进入WAIT1。
(5) WAIT1: 等待脉冲上半沿发送态, 按照时序逻辑发送有效字的脉冲上半沿, 并逐位判断位计数是否到39。 若到了, 则进入CHECK态; 若未到, 则进入SHIFT2态。
5.应该将导体的正常的最高工作温度控制在 70度以内,当收到日照时,应该控制在80度以内,当导体接触到有镀锡的覆盖层时,应该将温度可适当的控制在85 度以内。
各个状态的功能如下:
(7) WAIT2: 等待脉冲下半沿发送态, 按照时序逻辑发送有效字的脉冲下半沿, 并逐位判断位计数是否到39。 若到了, 则进入CHECK态; 若未到, 则进入SHIFT1态, 即进行16位有效字的循环发送。
考虑到墩柱的抗侧力性能,实际工程中优先选用带耗能钢筋的局部现浇墩柱,较其他墩柱,具有良好的耗能能力,增强抗侧力,在遭受水平荷载之后,局部现浇处混凝土开始出现裂缝耗散能量.之后可以将出现裂缝的现浇混凝土击碎进行二次现浇修复.具体节段墩柱的构造形式如图3所示,在墩柱预制时,对侧边预留接口处进行打毛处理,现场施工时可以采取从接口两侧同时灌注混凝土以保证局部现浇段的混凝土密实无空隙.
(8) CHECK: 校验态, 将SHIFT1态16位移位寄存器生成的奇校验准备成奇校验位的脉冲上下半沿, 完成后自动进入CHECK_WAIT态。
(9) CHECK_WAIT: 等待校验发送, 逐位发送校验的脉冲上下半沿, 并判断校验计数是否到1。 若等于1, 则进入STOP态; 若没有, 则进入CHECK态进行校验发送。
(3) WAIT: 等待同步头发送态, 设计一个6位的移位寄存器, 逐位发送同步头; 当位计数到7时, 进入SHIFT1态。
2.3 解码器设计
解码器的关键技术是实现同步头的识别。 1553B协议规定, 同步头位长为6, 时长为3 μs; 考虑到HI-1573专用收发器的工作机理[7](如图6所示), 若先检测到正向端高电平, 说明接收到命令字或状态字的同步头; 而先检测到反向端高电平, 说明接收到数据字同步头。 当采用10 MHz 的采样时钟进行脉宽检测时, 对同步头的采样计数范围是13~16或18~21, 数据位的采样计数范围是3~6或8~11。 这是解码器设计主体思想。

图6 HI-1573输出电平的特性
Fig.6 Characteristics of the HI-1573 output level
在设计解码器时, 考虑到HI-1573数据电平抖动和延时现象, 设计采用接收端的正向或反向电平的上升沿终止前一个电平的采样计数, 即数字上实现了对HI-1573输出数据电平的调理。 在此基础上, 基于字核实功能, 设计了校验错误检查、 码元错误检查和字连续检查等逻辑接口功能。 最后采用有限状态机分层次实现时序逻辑的状态转换。
解码器的状态有IDLE, START1, START2, WAIT, SAMPLE1和SAMPLE2以及STOP等7个状态, 其之间的状态转换如图7所示。
(6) SHIFT2: 移位有效字的脉冲下半沿态, 设计一个16位的反相移位寄存器, 按照时序逻辑逐位移位, 准备脉冲下半沿; 完成后自动进入WAIT2。
(1) IDLE: 空闲态, 初始化后处于该空闲态, 总线上没有数据传输时默认处于该态。 当检测到HI-1573正向数据的高电平时, 进入START1; 若检测到HI-1573反向数据位的高电平时, 进入START2。
(2) START1: 启动命令字或状态字同步头检测, 判断反向数据位。 若出现高电平, 采样计数器停止, 并判读计数; 若计数是7或6, 则进入WAIT; 若计数是3或4, 则进入START2; 否则, 进入IDLE, 并置Manchester码错误。
由于新闻的时效性特点,加上灾难发生的比较突然,记者往往对于灾难事件掌握信息不全,或没有办法得到精确的信息,新闻记者借助这些模糊限制语确保实际情况准确地、客观地得以报道,使话语表述更符合客观真实。模糊限制语的使用有可能改变了原来新闻的真值,但通过限定真值的范围,却恰恰精确了新闻所传达的信息。
(3) START2: 启动数据字同步头检测, 判断正向数据位。 若出现高电平, 采样计数器停止, 并判读计数; 若计数是7或6, 则进入WAIT; 若计数是3或4, 则进入START1; 否则, 进入IDLE, 并置Manchester码错误。

图7 解码器状态机转换图
Fig.7 Transition diagram of state machine in decoder
曼彻斯特Ⅱ型编解码器按功能可划分为编码时钟、 编码器控制器和解码时钟以及解码器控制器。 不同的1553B协议终端, 如总线监视器、 总线控制器、 总线终端, 其功能会有差别。 总线监视器不具有总线数据发送功能, 但另三种协议终端发送或接收数据均可通过曼彻斯特编解码器实现, 因而具有一定的共性特征, 如编解码器使能、 奇偶校验、 同步头和数据位等, 可据此进行通用化设计, 通用的编解码器应具有协议规定的字核实、 同步头收发、 数据位收发等功能。
(5) SAMPLE1: 采样正向数据高电平脉宽, 判断反向数据位。 若出现高电平, 则采样计数器停止, 并判读位计数以及采样计数; 若位计数到40, 则进入STOP, 并从寄存器中按次序取出17位数据位写入暂存寄存器, 其中前16位是有效数据位, 最后一位是其校验结果; 反之位计数不到40, 此时若采样计数是1或2, 则进入SAMPLE2, 同时将数据位串行写入寄存器, 否则进入IDLE, 并置Manchester码错误。
(2) START: 开始态, 根据发送字同步头准备待发送同步头数据, 完成后自动进入WAIT态。
班主任要跟着时代跑,不断创新。这几年我醉心于研究班级管理艺术,自己探索了一些班主任工作的方法,如“名言管理法”“名著管理法”“市场经济管理法”等。
(7) STOP: 停止态, 初始化各个计数器, 判断16位有效数据位的奇校验与第17位的校验结果是否一致。 若一致, 则设置parity 和Manchester码正确, 并将暂存寄存器的17位数据写入输出端口, 同时进入IDLE; 若不一致, 则设置parity 和Manchester码错误, 并进入IDLE。
3 仿真验证及硬件综合
3.1 仿真验证
为了验证所设计编解码功能模块的正确性, 在ISE14.7软件开发环境[8], 采用Xilinx仿真工具ISE Simulator进行了时序仿真。 编写测试文件时, 考虑到协议字收发的连续性和便于仿真结果观察, 设计了帧长为3的协议字收发测试文件。 编解码器的仿真结果如图8~9所示。

图8 编码器发送3个连续协议字的仿真时序图
Fig.8 Simulation sequence diagram of three continuous protocol words sent from encoder
图8中, 方框表示同步头正确发送。 从图看出编码器实现了协议字的无间隔连续发送。
1号交通洞进口土洞段的施工顺序为:施工准备直径42 mm小导管超前支护 全断面土洞开挖 钢支撑加系统锚喷支护 进行下一个循环。

图9 解码器接收4个连续协议字的仿真时序
Fig.9 Simulation sequence diagram of four continuous protocol words accepted in decoder
图9中, 方框表示一个协议字的解析完成, 包括校验正确和码元正确等处理, 椭圆框表示同步头识别, 可以看出解码器收到1个命令字同步头和2个数据字同步头。
(2)不确定性。财务风险不是必然的,如果企业能够提前察觉到风险的存在,便可以及时地掌握财务风险,采取重要的措施,有效控制风险,并且能够转变局面,提高企业的经济效益。
[12]蔡立东:《转让合同效力与善意取得构成的立法选择——基于立法技术的考量》,《吉林大学社会科学学报》2006年第2期。
3.2 硬件综合
为了验证编解码器具有硬件综合能力, 在Spartan6系列XC6SLX9-2TGQ144上进行综合优化, 利用ISE14.7软件自带的综合工具XST进行综合, 综合后编解码器的RTL模块结构如图10~11所示, 可以看出综合后的RTL结构符合设计的接口。
在此基础上, 进行UART闭环硬件测试, 具体方案是上位机发送数据→下位机UART接收并处理→编码器→解码器→下位机处理数据并经UART发送→上位机接收数据, 并通过上位机串口调试助手查看收发结果。 整个硬件测试的结构框图如图12所示, 串口助手收发结果如图13所示。 从图13可以看出数据收发一致, 说明编解码器收发功能正确。
为切实加强地质灾害防治工作,各县市区均建立健全了一系列的制度,如年度地质灾害防治方案编制与发布、“两卡一预案”填制发放、汛期值班值守、宣传培训与演练、灾险情速报月报年报、建设有用地地质灾害危险性、地质灾害防治项目管理等制度,地质灾害防治管理工作不断规范化、制度化和常态化。

图10 编码器RTL结构图
Fig.10 RTL structure diagram of encoder

图11 解码器RTL结构图
Fig.11 RTL structure diagram of decoder

图12 硬件测试的结构框图
Fig.12 Structure diagram of hardware test

图13 串口助手测试结果
Fig.13 Test results of serial port assistant
4 总 结
作为1553B协议终端的功能模块, 本文设计的通用型编解码器, 具有消息帧长设置、 同步头生成和识别、 字计数设置和连续性检查、 校验生成和错误检查以及码元生成和错误检查和地址自增等接口逻辑。 采用VHDL语言在ISE集成开发环境中进行逻辑功能的设计输入, 使用XST和ISE Simulator完成逻辑综合和仿真, 并通过了异步收发器UART的硬件测试, 完成了1553B总线曼彻斯特编解码器数据接收和发送的设计目标。
参考文献:
[1] 支超有. 机载数据总线技术及其应用[M]. 北京: 国防工业出版社, 2009: 34-57.
Zhi Chaoyou.Avionics Data Bus Technology and Its Applications[M]. Beijing: National Defense Industry Press, 2009: 34-57. (in Chinese)
[2] 国防科学技术工业委员会. GJB 289A-97数字式时分制指令/响应型多路传输数据总线[S]. 1997.
Commission of Science, Technology and Industry for National Defense. GJB 289A-97 Digital Time Division Command/Response Multiplex Data Bus[S].1997.(in Chinese)
[3] 易凡, 雷杰. 1553B总线在某制导控制系统中的设计与实现[J]. 航空兵器, 2011(2): 61-64.
Yi Fan, Lei Jie. Design and Implementation of 1553B Bus in a Guidance and Control System[J]. Aero Weaponry, 2011(2): 61-64.(in Chinese)
[4] 陈结合, 罗丰. 基于1553B的总线接口卡设计[J]. 航空兵器, 2009(1): 57-61.
Chen Jiehe, Luo Feng. Design of Interface Board Based on 1553B Bus[J]. Aero Weaponry, 2009(1): 57-61.(in Chinese)
[5] 李明. 1553B总线通讯在ATLAS语言中的实现[J]. 航空兵器, 2008(4): 61-64.
Li Ming. Implementation of 1553B Bus Communication in ATLAS [J]. Aero Weaponry, 2008(4): 61-64.(in Chinese)
[6] 武鹏, 毕君懿.1553B总线中曼彻斯特编解码器的设计[J]. 现代电子技术, 2011, 34(4): 61-64.
Wu Peng, Bi Junyi. Design of Manchester Codec in 1553B Bus [J]. Modern Electronics Technique, 2011, 34(4): 61-64.(in Chinese)
[7] HOLT INC. HI-1573 for MIL-STD-1553 Datasheet [DB/OL]. [2017-04-26]. www.holtic.com.
[8] 薛小刚,葛毅敏.Xilinx ISE9.X FPGA/CPLD设计指南[M]. 北京: 人民邮电出版社, 2007: 87-207.
Xue Xiaogang, Ge Yimin. Xilinx ISE9.X FPGA/CPLD Design Guide[M]. Beijing: Posts & Telecom Press, 2007: 87-207.(in Chinese)
上一篇:备件分类算法研究综述
下一篇:没有了