基 于FPGA 和B61580S3 的1553B 总线RT/MT 功能 的设计与验证

2023-01-24 12:52王越涛赵冬青武慧军
电子设计工程 2023年2期
关键词:堆栈指针中断

王越涛,赵冬青,武慧军

(1.中北大学仪器与电子学院,山西太原 030051;2.中北大学电子测试技术与重点实验室,山西 太原 030051)

为提高现代飞行控制系统运行过程中的通信效率,适应数量不断增加的内部电子通信设备,提出了MIL-STD-1553B“数字时分制命令/响应多路复用数据总线”的电子信息系统传输标准。

在设计系统时选用B61580S3 国产协议芯片,通过芯片内置的16 位非零等待缓冲模式来实现RT/MT功能。相比16 位透明模式[1]将电路内部的存储器旁路而使用外部存储器,虽具有外部扩展、存储容量更大的优点,但由于透明模式对外部存储器有特定要求,使用不当很容易发生协议或主机的存储访问失败,因此选用具有程序设计简洁、实时性高的16 位缓冲模式。在目前芯片价格不断上涨、电路板空间资源受到限制的情况下,使用FPGA 配合协议芯片实现远程终端与总线监控器功能,降低了生产成本,资源得到了合理利用。

1 总线接口电路设计

总线接口电路主要由可编程逻辑器件FPGA、协议芯片B61580S3、电平转换芯片和1553B 耦合变压器四部分构成。

1553B 的协议主硬件系统采用XC6SLX150_FGG484 型号的FPGA 芯片,利用VHDL 对FPGA 的功能做行为描述。协议芯片内部配备有地址锁存器和双向的数据缓冲电路,有利于其与处理器FPGA总线进行数据交互;4kB×16 位的静态存储器容量足够满足1553B 总线传输需求。主机具有可编程的中断结构,通过中断信号为FPGA 预留出一段时间,由协议芯片中断状态寄存器对消息类型进行判断,进而执行下一步的消息处理操作。同时,由于芯片可配置为BC(Bus Controller)、RT(Remote Terminal)、MT(Monitor Terminal)三种模式[2-3],每种模式都可作为广播通路,因此,为保证数据的完整性和系统的容错率,将BUS_A 作为主总线通路,BUS_B 为冗余通路。1553B 标准总线拓扑结构如图1 所示。

图1 1553B标准总线拓扑结构

由于FPGA 为3.3 V 逻辑高电平,协议芯片采用5 V 的TTL 逻辑电平且可向下兼容至最高2 V 电压,因而FPGA 可向协议芯片直接传输,反之则会引起电流倒灌[4-5]将FPGA 烧毁,故在协议芯片向FPGA传输的信号引脚上增加电平转换芯片具有一定的必要性。

将终端RT 接入总线时,使用曼彻斯特码[6]有利于数据传输的快速稳定,所以1553B 总线内部采用此码进行串行传输[7]。由于接口电路耦合方式有直接与间接两种,而间接耦合具有故障隔离特性,一路终端故障并不会影响整个总线网络,因此采用匝数比为1∶1.79 的变压器耦合。相比于直接耦合,在变压器引脚根部焊接隔离电阻和终端电阻,故耦合时具有较高的噪声抑制性能和电气隔离特性[8]。电气隔离提高了短截线阻抗匹配,降低了终端发生故障时对1553B 总线的影响,提升了可靠性,保障了设备的安全。图2 所示是为实现RT/MT 功能所设计的16位缓冲模式1553B 总线接口电路原理图。

图2 总线接口电路原理图

1553B 总线采用中央集权方式响应,由总线控制器发出命令,各RT 比较命令字中的地址与自身地址,若相同则发出响应,执行BC 后续的操作,相异则忽略此命令[9]。与RT 模式不同,MT 仅对总线上的消息进行监控并上传至存储器存储区。相比12 MHz频率时钟,协议芯片采用较高频率的16 MHz[10]频率时钟,高的采样频率将极大提高其电路内部编码器和解码器的容错能力。

由于总线上各个终端的地址不同,因此对协议芯片的地址配置引脚RTAD4-RTAD0 置高或低,达到对协议芯片地址配置的目的。当工作在缓冲模式时,TRAN/BUFF 引脚置低,16/8 和ZERO_WAIT 引脚置高[11],此时芯片将使用内部缓冲区对数据进行缓冲,随后存入存储器供脱机分析使用。

2 协议芯片工作原理

发送数据时,协议芯片会将待发送数据根据数据类型自动添加相应同步头[12],计算奇偶校验结果,待数据处理为20 位的曼彻斯特标准Ⅱ型编码后,串行发送至总线。接收数据时,总线控制器与各终端交互的串行数据信息被采集至协议芯片内部,FPGA通过中断类型将协议芯片配置为对应模式,并为其子地址分配空间;在协议芯片筛选出数据有效信息后,FPGA 执行后续操作,最后将解码后的数据存入缓冲FIFO[13]。

2.1 RT/MT中断处理

协议芯片B61580S3 内部具有十分方便的中断机制。通过协议芯片的中断和对消息类型的识别,MT 可完成消息的有序归类,为RT/MT 的实现提供了可能。

初始化时,芯片处在等待中断信号状态[14],等待总线通信的发生;当通信发生时,芯片内部产生下降沿触发的中断请求脉冲,通过INT 引脚向FPGA 发送中断请求信号,同时中断状态寄存器会自动判断中断状态并保存;FPGA 读取并判断中断状态寄存器的第0、1、4 位,以确定该帧消息位的中断类型,之后将中断信号的结果存入寄存器,待后续执行消息时使用。FPGA 对中断类型进行判断,若为RT 中断,则协议芯片置为远程终端RT 模式,由中断状态寄存器为FPGA 指出具体指令类型;若为MT 中断,则芯片置为监控器MT 模式,并将监控数据存入缓存FIFO。中断处理流程如图3 所示。

图3 中断处理流程图

2.2 MT工作流程

通过读取状态寄存器的中断标志信息,确定为MT 中断时,协议芯片将进行MT 工作流程。MT 的任务是将消息的指令字、数据字、状态字从协议芯片内有序取出并全部存入存储器内部缓存FIFO。当收到消息后,协议芯片将根据字标志位的不同自动识别字类型并做相应存储[15]:指令字存入指令堆栈,数据字及状态字作为数据块,先后被存入数据堆栈。初始化阶段,FPGA 自动配置数据堆栈和指令堆栈的首地址,并为其分别分配足够的空间来存放指针。初始化完成后,消息将按照堆栈指针所指向的地址依次存储。若存满,则指针跳回初始地址,将原有数据覆盖,继续循环存储。

消息执行时,协议芯片将数据块存入数据堆栈,指令字被存入指令堆栈[16]。当消息执行完毕,FPGA分别读取存放在存储器地址为“0102H”和“0103H”内的指令堆栈指针与数据堆栈指针。之后,FPGA 依据指针指向,依次逆序读取指令堆栈中存放的四种信息与数据堆栈中的数据块,并将所读取的信息一同存入缓存FIFO[17]。至此,该次MT 工作结束,等待下次数据的到来。编帧后,FPGA 将FIFO 中的消息下发至记录器供脱机分析使用。

2.3 RT工作流程

由BC 下发的指令字分为方式代码指令与一般指令两种,一般指令用来传输数据,方式代码指令用于数据流的管理。当终端处于RT 模式下时,需要对指令字的类别做出判断并执行对应操作。

1553B 总线协议有多种5 位方式代码指令,该终端仅使用其中两种,即00011B 和10001B。如图4 所示,当总线控制器发送方式代码指令00011B 时,终端将进行自检,FPGA 启动测试电路对自身进行测试检查,并将检查后的结果存于状态寄存器中。在BC端发送完自检结果回读指令后,测试结果被读取并发送至接口寄存器,由BC 获取结果。

图4 自检指令及状态反馈

图5 为利用示波器在1553B 总线上抓取的时间同步指令及状态反馈波形图。当进行时间同步操作时,BC 将指令字与数据字先后下发至RT 终端,协议芯片在收到字后,将执行解析到的方式代码指令10001B,同时数据字被存至定时器标签中进行RT 同步,2 μs 后同步完成并在BC 的状态回读指令发送后获取结果。

图5 时间同步指令及状态反馈

3 实验结果

测试台作为总线控制器BC 对终端RT 下发测试指令,RT 对所收到的命令进行响应,MT 监控到的消息集如图6 所示。

图6 总线监控器消息集

消息集每行记录一条80 字的消息。第一条是测试台上位机模拟总线控制器BC 下发的自检指令,EB90H 为消息头,0001H 为消息计数,B7E3H 为方式指令,第7 至第14 字依次为数据块指针、时间标签字、块状态字和有效数据个数。由于自检指令未发送数据字,且数据块指针处于初始化状态,故数据块指针为0000H,有效数据个数为0,并以DDDDH 作为填充。第二至第四条分别为自检状态反馈、时间同步命令下发及状态反馈,与预定结果保持一致,表明远程终端RT 的功能得到实现。

第五条及以后的消息是上位机下发的测试数据,A8A0H 为命令字,数据以FDB1H 和8540H 为头部,0000H、0001H、0002H 依次递增被监控并存入存储器FIFO 中。每条消息的数据块指针地址与上一条始终相差0020H,表明数据被准确无误地进行了存储。综上可知,MT 监控到了包括RT 模式在内总线上的所有消息,RT/MT 的功能得到了实现。

4 结论

文中基于1553B 总线通信协议,直接利用B615 80S3 协议芯片,避免了繁琐的协议设计;在VIVADO环境下编写的VHDL 硬件描述语言,对硬件接口电路进行描述编程、仿真烧录,实现了1553B 总线接口功能;经过上位机软件对芯片功能的测试,表明该设计方法灵活可靠,单片协议芯片设计时系统更简单、效率更高、功耗更小,生产成本得到大幅降低。

猜你喜欢
堆栈指针中断
基于行为监测的嵌入式操作系统堆栈溢出测试*
垂悬指针检测与防御方法*
基于FPGA的中断控制器设计*
Linux中断线程化分析及中断延时测试
为什么表的指针都按照顺时针方向转动
跟踪导练(二)(5)
千里移防,卫勤保障不中断
基于堆栈自编码降维的武器装备体系效能预测
浅析C语言指针
一种用于分析MCS-51目标码堆栈深度的方法