微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > FPGA和CPLD > 基于FPGA的1553B通信模块的设计

基于FPGA的1553B通信模块的设计

时间:11-09 来源:互联网 点击:
A实现

本系统中的FPGA芯片采用Xilinx公司的Spartan-3A XC3S200。该系列产品采用了90 nm工艺,支持业界最广泛的I/O标准(26种),具备独特的功耗和配置功能以及防克隆(anti-cloning)安全性优势。

FPGA的功能全部采用VHDL语言实现,其功能框图如图2所示。其主要完成的工作有:(1)曼彻斯特码的编解码,包括串/并转换。(2)1553B协议的消息的解析,包括同步头的识别,以及各种错误的识别、奇偶校验等。(3)1553B协议的消息发生,包括同步头的产生、各种状态位的产生以及各种错误信息的产生。(4)与CPU接口的实现。(5)各种中断信号的实现。(6)定时和超时控制电路等。

3.1 总线发送电路实现

如果没有注入错误的要求,编码器的实现就比较简单,只需要用若干倍1553B的传输速率(本设计采用12倍频)将并行数据转换为串行数据,加上相应的同步头即可。在硬件上数据发送电路主要由一个状态机、双口FIFO、注入错误标志寄存器以及控制电路组成。状态机的状态图如图3所示。复位之后,该状态机在每个时钟的上升沿都检测FIFO中是否有数据,若为空则停留在空闲状态。一旦上层软件通过EBC接口向FIFO写入数据后, 硬件电路自动将数据读出。进入到同步头发送状态,硬件电路根据命令寄存器的控制字送出相应的串行同步头,随后进入数据发送状态。在每个时钟沿,移位寄存器将数据寄存器的数据移出,进行曼码编码后发出,同时,数据计数器自动加1。当计数值为16时,则转入到奇偶校验状态,将异或得到的检验位编码后发出。



本系统要求具有测试功能,主要有以下注入错误的要求:

(1)EI_BITCOUNT:消息中指定数据的位数错误(不为16位);

(2)EI_PARITY:消息中指定数据的校验位错误;

(3)EI_SYNC:错误的同步头;

(4)EI_WORDCOUNT:使消息中的数据长度不等于命令字中的长度;

(5)EI_MIDBIT:指定数据位过零点错误,比期望位置延时300 ns;

(6)EI_MIDSYNC:同步头的过零点错误,比期望位置延时300 ns;

(7)EI_BIPHASE:整个位时无过零点。

硬件电路要求在状态机中加入对应的电路,检测错误寄存器中的标志位,并产生对应的错误。  

3.2 总线接收电路实现

无论是BC还是RT都需要对收到的数据进行解析。接收电路的主要功能有:曼码的解码、串并转换、同步头检测、奇偶校验以及各种错误的检测。如图4所示,状态机复位之后进入同步头搜索状态。硬件电路以12倍1553总线传输速率的频率去检测几种同步头。若收到同步头,则将状态寄存器中的对应位置位,并转入数据接收状态;否则,停留在该状态下。数据接收状态下,移位寄存器在时钟沿将经过解码的数据移入。在数据计数器计数到16之后转入到奇偶校验状态;之后,将数据和状态写入到FIFO中。硬件电路在状态机的每个阶段都要检测各种错误,如果出错则回到同步头搜索状态。同时,产生错误标志和中断信号。



3.3 硬件中断功能的实现

如上所述,本系统软件和硬件的通信主要通过中断和查询的方式进行信息交互。硬件电路实现了如下中断功能:

(1)每收到1个命令/状态字产生中断;

(2)数据长度计数器中断和使能。软件对收到的命令/状态字进行解析,如果有数据准备接收,将数据长度值写入数据长度计数器,同时使能计数器。硬件收到1个数据字,递减计数器,直到0产生中断,同时禁止该数据计数器中断;

(3)接收FIFO半满或3/4满产生中断;

(4)接收FIFO全满(overflow)产生中断;

(5)发送FIFO为空产生中断;

(6)中断状态/使能寄存器;

(7)等待超时中断(接收数据长度不够);

(8)数据计数器中断处,打上时间戳;收到每个命令/状态字打上时间戳;发送的命令/状态字的同步头过零点打上时间戳。

4 软件设计

软件设计包括板载嵌入程序、主机驱动程序设计。板载嵌入程序和主机驱动程序通过共享PPC外挂内存来完成数据交互,板载嵌入式程序通过访问FPGA的寄存器和FIFO来完成硬件操作和数据收发。其结构如图5所示。



主机驱动程序的开发平台是LabWindows/CVI,为用户提供方便实用的API接口函数及其定义。

嵌入式程序的开发平台是Tornado2.2。该程序主要完成模块的初始化、各通道BC\RT\BM的消息解析、中断服务处理、与主机交互等功能。其中消息解析是嵌入式程序的核心部分。

当模块选项为多功能模块时,要求各通道在同一个工作时期可同时作为BC、BM和最多31个RT进行工作。当被测系统的可得终端有限时,又希望获得充足完备的测试,多功能模块将提供充足的终端用以测试。为了能同时且正确充当BC、BM、RT 3个不同的角色,模块的嵌入式程序设计引入了可编程逻辑设计的状态机设计思想。BC、BM、RT各自拥有自己的状态机。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top