目录
3. BC调度器 (BC Scheduler / Sequencer)
4. 协议有限状态机 (Protocol Finite State Machine)
6. Manchester II 编解码器 (Encoder/Decoder)
方案概述
本方案的核心是使用FPGA作为硬件平台,通过硬件描述语言(如VHDL或Verilog)实现MIL-STD-1553B协议中总线控制器(BC)的所有功能,包括协议处理、消息调度、曼彻斯特编解码以及与主机处理器的接口。
优势:
灵活性高: 消息列表、调度表均可软件定义,易于升级和修改。
性能强劲: FPGA的并行处理能力可以轻松满足1553B 1Mb/s的速率和严格的时序要求(如响应超时)。
高度集成: 可以将BC、RT仿真、甚至BM监控功能集成到单一芯片中。
成本可控: 相对于专用的ASIC协议芯片,FPGA方案在中小批量应用中更具成本优势。
系统架构与模块设计
整个BC控制器可以分为以下几个核心模块,其顶层架构如下图所示:
+-----------------------+ | Host Processor | | (CPU/MPU) | +-----------------------+ | | +-----------------------+ | Host Interface | | (e.g., SPI, PCIe) | +-----------------------+ | | +----------------------------------------------------------------+ | FPGA Logic | | | | +-------------------+ +-----------------+ | | | | | | | | | BC Scheduler |<-->| Message RAM | | | | (Sequencer) | | | | | | | | | | | +-------------------+ +-----------------+ | | | | | | +-------------------+ +--------------------------------+ | | | Protocol FSM |<-->| TX/RX FIFOs | | | | (State Machine) | | | | | +-------------------+ +--------------------------------+ | | | | | | | +-------------------------------------+ +----------------+| | | Manchester Encoder | | Timer Module || | | | | (Timeout, Gaps)| | +-------------------------------------+ +----------------+| | | | | | +-------------------------------------+ | | | Manchester Decoder | | | | (with Sync & Bit Detection) | | | +-------------------------------------+ | | | | | | +-----------------------------+ +----------------------------+ | | TX Driver Logic | | RX Receiver Logic | | |(Serialization & Driver Ctrl)| | (Sampling & Data Recovery) | +-----------------------------+ +----------------------------+ | | | | +----------------------------------------------------------------+ | | To 1553B Bus Transformer & Coupler |
核心模块详细说明
1. 主机接口 (Host Interface)
功能: 负责与外部主处理器(如CPU、DSP)通信。
实现: 可以采用常见的接口标准,如:
并行总线: 类似SRAM的接口,简单直接。
SPI / I2C: 引脚数少,适合微控制器连接。
PCIe / AXI4: 高性能,适合SoC或与高性能处理器连接。
任务:
接收主机下发的消息帧描述符(命令字、数据地址、数据长度、下次消息间隔等)。
将接收到的RT数据、状态字以及BC自身状态(错误、中断)上传给主机。
2. 消息存储器 (Message RAM)
功能: 在FPGA内部使用Block RAM (BRAM) 实现一个双端口RAM。
内容: 存储由主机配置的消息调度表。每个表项包含一个消息帧的所有信息。
作用: BC调度器按顺序读取该RAM,依次执行每条消息。
3. BC调度器 (BC Scheduler / Sequencer)
功能: 整个BC的“大脑”,控制消息发送的节奏和流程。
实现: 一个状态机,循环遍历消息RAM。
任务:
读取当前消息的描述符。
触发协议状态机(Protocol FSM)处理当前消息。
在消息传输结束后,等待消息间隔时间(Inter-Message Gap, 至少4μs),然后处理下一个消息帧。
支持多种调度模式:循环调度、单次触发、由主机命令触发。
4. 协议有限状态机 (Protocol Finite State Machine)
功能: 负责处理单条1553B消息的完整协议流程。这是协议实现最核心的部分。
状态包括: 空闲、加载TX FIFO、发送命令字、等待响应时间、接收状态字、发送数据字、接收数据字、错误处理等。
任务:
根据消息描述符,生成命令字并将其写入TX FIFO。
控制编码器开始发送。
在响应超时(通常为12μs)内等待RT回复。
验证接收到的状态字。
根据消息类型(BC->RT, RT->BC, RT->RT)管理数据的收发。
5. 定时器模块 (Timer Module)
功能: 提供各种精确定时。
关键定时:
响应超时: 从命令字结束到开始接收状态字,通常为12μs。
消息间隔: 两条消息之间的间隔,最小为4μs。
位时间: 1MHz时钟,用于控制编解码节奏。
6. Manchester II 编解码器 (Encoder/Decoder)
编码器 (Encoder):
输入:并行数据(如16位)、发送使能。
功能:将并行数据转换为串行比特流,并进行曼彻斯特II型编码(‘1’=码元前半段高电平,后半段低电平;‘0’=相反)。
输出:两路互补的串行数据流(直接驱动后级驱动芯片)。
解码器 (Decoder):
输入:来自收发器的模拟差分信号经过比较器后的数字信号(或直接采样,但更复杂)。
功能:同步头检测(1.5个位时间的正脉冲或负脉冲)、比特判决(在码元中点采样)、串并转换。
难点:需要处理总线噪声和抖动,通常需要过采样(例如16MHz时钟对1Mb/s信号采样)和数字锁相环(DPLL)来保证采样点准确。
7. TX/RX FIFO
功能: 缓冲待发送和已接收的数据。
TX FIFO: 缓存协议FSM要发送的命令字和数据字。
RX FIFO: 缓存解码器接收并组装好的数据字和状态字,供协议FSM读取和处理。
8. TX驱动与RX接收逻辑
TX Driver Logic: 将编码器输出的串行比特流正确地送到1553B总线驱动芯片(如ADM2682E)的输入端。
RX Receiver Logic: 对从总线接收芯片来的信号进行预处理,如去除毛刺、同步。
FPGA实现要点与注意事项
时钟设计: 需要一个高精度的主时钟(例如16MHz)。16倍过采样1MHz的数据流是一个常见选择。
时序约束: 必须为设计添加精确的时序约束,确保内部逻辑满足1MHz的位速率和严格的协议时序。
资源利用: 主要消耗BRAM(存储消息和数据)和逻辑单元(状态机和处理器)。需要根据选用的FPGA型号进行估算。
IP核: 可以考虑将Manchester编解码器甚至协议FSM封装成可重用的IP核。
外部芯片: FPGA本身输出的是数字信号,需要外接1553B总线收发器/变压器(如ADM2682E)来完成电平转换、隔离和驱动功能。
调试: 充分利用FPGA开发工具的嵌入式逻辑分析仪(如Xilinx的ILA,Intel的SignalTap)来抓取内部信号,这对于调试复杂的协议状态机至关重要。
开发流程
需求分析: 明确需要支持的1553B消息类型(方式代码、广播等)、调度方式、主机接口类型。
模块划分与定义: 如上所述,明确每个模块的接口和功能。
编码: 使用VHDL/Verilog编写各个子模块。
功能仿真: 使用测试平台(Testbench)模拟1553B总线行为,对每个模块和整体设计进行充分的仿真验证。
综合与实现: 在FPGA工具中编译、综合、布局布线。
时序分析: 确保时序收敛,满足所有建立和保持时间。
板级调试: 将比特流下载到FPGA开发板,连接1553B总线分析仪或真实的RT设备进行联合调试。
系统集成: 与主机处理器软件对接,完成整个系统。
总结
用FPGA实现1553B BC控制器是一个系统工程,其核心在于对1553B协议的深刻理解和精确的硬件逻辑设计。该方案提供了极高的灵活性和性能,是现代航空、航天、军工电子系统中常见的实现方式。成功的关键在于严谨的模块化设计、充分的前仿真和高效的板级调试手段。