张小红
基于ZYNQ-7000的1553B总线接口设计
张小红
(海军装备部,西安 710068)
Zynq-7000系列是由Xilinx公司研发制造的处理平台结构,具有可编程、可拓展的特征,归属于SoC芯片,将FPGA和Cortex-A9双核ARM有机融为一体。我们在利用Vivado对Zynq-7000系列芯片进行开发的过程当中,可以同时使用自己创建的IP核以及IP Catalog中的IP核,具备个性化、机动灵活的特性。文章简要论述了Zynq-7000系列芯片的功能,浅谈了1553B接口总线的工作原理和特点,以及根据1553B总线的特征及协议如何在Vivado中利用Zynq-7000提供的自定义IP核实现1553B总线接口方案的设计,提升接口性能,简化应用,降低成本。
Zynq-7000;自定义IP;1553B总线;接口设计
MIL-STD-1553B总线(简称1553B总线)是美国专门为飞机设备信息传输制定的一种总线类标准,是一种设备之间通信的协议,在当代航天系统以及飞机系统上得到大量推广运用。1553B总线具有1 Mbps的工作频率,使用的均是曼彻斯特II码,工作方式为半双工,该总线系统由三部分组合而成:总线控制器装置(Bus Controller,BC)、远程终端装置(Remote terminal,RT)和总线监视器装置(Bus monitor,BM)。1553B总线所包含的消息格式有10种,每条消息包含不小于2个字,每个字包括消息位16个,奇偶位1个,同步头位3个[2]。
本文利用1553B总线系统的结构特点,在以Zynq-7000系列芯片为中央处理器的ARM处理系统的基础上,设计出1553B总线接口部件。双核的CortexTM-A9处理芯片包含在Zynq-7000系列芯片当中,整个芯片以处理器为核心进行创建,内存控制器以及大量的外设被集成在整个处理器子系统之中,使得在Zynq-7000中的CortexTM-A9的核运作时可以完全与可编程逻辑控制单元相互独立,即Zynq-7000系列芯片包含ARM的PS部分和FPGA部分。
为方便用户开发使用,Xilinx公司为开发者提供了许多现成的IP核方便用户使用,有时候这些接口并不能完全满足用户的实际应用。因此,Xilinx公司还提供了自定义IP核的方法来满足用户的个性需求。本文提出一种利用自定义IP核的方法实现1553B总线接口的时间方案,该通信是使用Xilinx提供的IP封装工具,将用户的1553B接口的相关代码封装成为标准AXI总线形式模块,即用户自定义的IP核。使用时只需将模块以图形化的方式加入顶层文件中并进行AXI总线的自动连接,这种方式为用户提供了系统化、个性化、简单化的服务。
1553B这个串行总线体现出中央集权的特征,其数据传输方式为异步传输,具有1 Mbps的传输频率,也就是每秒钟传输106位。其中数据全部采用曼彻斯特II型码进行编制,传输型号呈现差分特性,过去的传输介质一般都是使用屏蔽双绞线。图1所示是一种典型的1553B总线硬件拓扑结构图[3-4]。
图1 1553B总线拓扑结构
总线本身是一个二冗余的结构,包括总线和总线,二者为相互冗余的备份,所有的总线设备并联共享总线主线部分。总线只有1个总线控制器和小于31个远程终端,总线监视器可选,用于监视总线通讯。
BC用于对总线通讯进行发起和相关组织,同时调度和管理总线通讯。因为1553B采用的总线管理模式是中央集权方式,所以在参与总线通讯的整个过程之中,由总线控制器启动全部的数据传输成为了必然,在接收与发送数据方面,远程终端装置只可以是被动进行。每个远程终端装置的数据通讯以及传输会在总线控制器装置的发起以及组织下按照相关的通信协议进行运作。
RT在数据的发送以及接收方面只能处于较为被动的地位。远程终端装置接收与发送数据只是起到了桥梁的作用,其操作只能够依据通讯协议进行运转。
BM可以看见总线上面全部的通讯进程,所以对于整个通讯过程,总线监视器可以全部或者有选择性地进行监视,同时分析与评估整个通讯的情况,从而能够推断出总线控制器装置以及所有远程终端装置的运作情况。但值得说明的是,总线的通讯始终不由总线监视器装置参与。
1553B总线信息是以位为最小单元的,每个字主要由20个位组成,每个字只有16 bit的有效信息,有3位同步头在有效信息的前面,同步头由2个一位半组成,校验位处于有效信息位的后面,奇校验模式被用于1553B总线数据传输当中。一条消息是指1553B总线上传送一次数据的过程。每个消息包括不少于1个,不大于2个的命令字,至多32个数据字,至多2个状态字。
1.3.1 命令字
当BC发出命令字的时候,总线通讯即是开始了。命令字的具体格式如表1所示。命令字主要由四个域组成,顺次是5 bits的远程终端地址、1 bit收发位、5 bits子地址和5 bits字计数/方式码。总线传输格式为3 bits同步头、16 bits命令字有效数据位和1 bit校验位。每次传输不小于1个命令字。
对于RT到RT的数据传输,BC先发出接收命令字,通知相关的远程终端准备接收数据,然后发出发送命令字,通知相关的远程终端发出需要传输的数据。对于RT和BC直接数据传输,BC只发出1个命令字,通知相关的远程终端准备接收或者发送数据。
表1 命令字格式
1.3.2 数据字
数据字为需要传输的用户数据,有效位16 bits,在总线上的传输格式为同步头3 bits,数据字有效数据位16 bits,校验位1 bit。每次通讯传输的数据字个数由命令字的字计数/方式码域确定,对于非方式码传输,数据字的个数即为BC发出的命令字低 5位表示的字计数,对于方式命令,是否需要数字由方式命令的定义确定。
1.3.3 状态字
状态字为远程终端向BC发出的响应数据,所有非广播消息至少包含1个状态字,广播消息由于有多个远程终端参与通讯,所有接收的远程终端均不发出状态字,状态字的位定义如表2所示。
表2 状态字格式
总线的通讯启动由BC发出命令字开始,对于不同的通讯过程,数据传输的数量、意义有很大的差别,最常用的数据传输方式包括远程终端RT到总线控制器BC、总线控制器BC到远程终端RT、远程终端RT到远程终端RT、总线控制器BC到多个远程终端RT的广播等10种,在此简单介绍常用几种,如下所述。
1.4.1 总线控制器BC向远程终端RT的传输
总线控制器向远程终端发送一个接收指令及数据字,远程终端回送1个状态字,指令字和状态字没有间隔的连续发送。
1.4.2 远程终端RT向总线控制器BC的传输
总线控制器向远程终端发送一个发送指令,远程终端回送1个状态字,继之以规定数目的数据字,状态字和数据字没有间隔的连续发送。
1.4.3 远程终端RT向远程终端RT的传输
总线控制器向远程终端发送一个接收指令,紧接着向远程终端发出一个发送指令,远程终端发出1个状态字,继之以规定数目的数据字,状态字和数据字没有间隔的连续发送,远程终端接收到数据字后,回送1个状态字。
ZYNQ-7000系列芯片提供了FPGA的灵活性和可扩展性,集成了PS和PL,在PL中实现自定义逻辑,在PS中实现自定义软件,两者可独立工作也可协作。本文提出了一种基于ZYNQ-7000的1553B总线接口设计方案。该方案通过ZYNQ-7000的PS部分和PL部分协作来实现,基于ZYNQ-7000系列芯片的1553B总线接口方案的整体设计如图2所示[5-6]。
图2 基于ZYNQ-7000系列芯片的1553B总线接口方案的整体设计
由图2可知,总线接口包括模拟收发器、曼彻斯特编解码和协议处理逻辑三大模块。模拟收发器是完成FPGA输出信号与总线信号之间的电平转换,曼彻斯特编解码器和1553B协议处理逻辑是接口主要组成部分,完成数据编解码和协议处理,通过ZYNQ-7000系列芯片可以实现。总线接口通过一定的地址、数据和握手信号与外部系统相连接。
其ZYNQ-7000实现方式如下:
(1)创建自定义IP。
1)点击菜单Tools->Create and Package IP;
2)点击next,选择Create a new AXI4 peripheral选项;
3)显示IP的名字、版本和描述等信息。这里可以修改IP的名字为1553B_IP,以及该IP核的存放位置,用户可以根据需求自己定义;
4)显示AXI总线接口名字,接口是Slave,数据宽度是32位,IP内部的寄存器数量为32个。默认选项,点击Next;
5)点击Finish完成。
(2)添加自定义IP核的功能。
1)打开IP Catalog界面,右键选中1553B_IP_ip_v1.0,然后选择Edit in IP Packager选项;
2)点击OK,软件会自动打开另外一个Vivado窗口对用户自定义的IP核进行编辑;
3)双击顶层文件1553B_IP_ip_v1_0.v打开,在“users to add ports here”位置添加管脚端口定义,如时钟、数据的发送端和接收端使能;
4)在顶层文件1553B_IP_ip_v1_0.v的程序对上述管脚进行例化;
5)双击打开rtc_ip_v1_0_s00_AXI.v文件,在以下的位置添加上述管脚端口定义;
6)在“Add user logic here”根据协议要求在该位置添加实现1553B通讯的代码,在此处进行曼彻斯特解码和编码,并根据协议完成1553B总线的控制字、数据字及状态字的相关处理。按照1553B协议规范,通过接收端接收总线上的数据并存入缓存寄存器,通过发送器取出缓存中的数据并发送到总线上,同时通知外部系统向缓存中写入代发数据或者从缓存中读取已接收的数据;
7)点击Save All Files,编译文件;
8)双击IP-XACT下的component.xml文件,返回到Package IP-test_IP_ip窗口,点击Port and Interfaces顷,点击Merge changes from Ports and Interface Wizard;
9)再对前面没有打钩的File Groups点击Merge changes from File Groups Wizard来更新文件和驱动。选择Review and Package选项,然后点击Re-Package IP结束IP核的设置。关闭IP核的Vivado工程,回到系统工程界面。
至此,自定义1553B总线的IP核已添加完成。
(3)使用时直接调用上文中(2)产生的1553B_IP核,添加相应的约束文件,就能完成1553B总线接口的功能。
本文通过介绍1553B总线的原理、协议相关内容以及ZYNQ-7000相关的知识,通过自定义IP核的方式实现了1553B总线接口的设计,将其封装成通用的1553B总线IP核。其使用简便灵活,实用性高,可满足用户的个性化要求,提升了系统集成度,扩展性增强。
[1] Xilinx, Serial RapidIO Gen2 Endpoint v4.0LogiCORE IP Product Guide[EB/OL], 2015.
[2] Zhan X. SRIO Programming and Performance Data on Keystone DSP[EB/OL], 2011.
[3] 泮朋军,朱浩文. 基于FPGA的1553B总线接口设计与验证[J]. 现代电子技术,2015(03):26-30.
[4] 曾清乐,李敬磊,李颖臻. 基于ZYNQ 7000的1553B总线控制器测试系统的设计与实现[J]. 电子世界,2019(19).
[5] 李家星. 嵌入式系统和FPGA的总线控制器的设计实现[J]. 微计算机信息,2007,23(01Z):242-243.
[6] 江志东,霍立平,张弟,等. 基于SoC芯片的1553B总线仿真平台设计与实现[J]. 电子设计工程,2020,28(24):6.
Design of 1553B Bus Interface Based on Zynq-7000
ZHANG Xiaohong
The Zynq-7000 series is based on Xilinx's fully programmable and extensible processing platform architecture. It is a SoC chip that integrates Cortex-A9 dual-core ARM and FPGA. During the development process of Zynq-7000 series chips using Vivado, IP cores in IP Catalog can be used. Users can also create their own IP cores for personalized and flexible use. The paper briefly introduces the functions of Zynq-7000 series chips, discusses the working principle and characteristics of 1553B interface bus, and according to the characteristics and protocols of 1553B bus, how to use the custom IP core provided by Zynq-7000 in Vivado to realize the design of 1553B bus interface scheme and improve the interface performance, simplify applications and reduce costs.
Zynq-7000; Custom IP; 1553B Bus; Interface Design
TP273
A
1674-7976-(2021)-04-276-05
2021-07-14。张小红(1978.04-),山西山阴人,研究生,高级工程师,主要研究方向为雷达通信工程。