BISS编码器硬件方案深度解析:从协议原理到FPGA实现

1次阅读
没有评论

共计 1635 个字符,预计需要花费 5 分钟才能阅读完成。

image.webp

背景痛点

在工业自动化领域,编码器作为位置反馈的核心传感器,其信号传输可靠性直接决定系统性能。传统增量式编码器采用 ABZ 信号接口,在长距离传输时面临三大挑战:

BISS 编码器硬件方案深度解析:从协议原理到 FPGA 实现

  • 信号衰减导致边沿抖动(实测 1 米电缆抖动达±15ns)
  • 差分线对布线成本高(需双绞线 + 屏蔽层)
  • 无法在单周期内获取绝对位置数据(必须依赖零位脉冲)

BISS 协议通过单线双向曼彻斯特编码(据 BISS 白皮书 v1.3 第 4 章),在 6MHz 时钟下可实现:

  • 传输距离延长至 100 米(CAT5e 电缆测试结果)
  • 32 位绝对位置 + 6 位 CRC 校验
  • 抗共模干扰能力达±7V(对比 SSI 仅±1.5V)

协议解析

时序机制

典型 BISS 帧结构如下图所示(省略图示,文字描述):

  1. 主机发送起始脉冲:低电平持续≥2 个时钟周期
  2. 从机响应:在时钟上升沿输出曼彻斯特编码数据
  3. CDS 同步:数据帧首个下降沿用于时钟相位校准
  4. CRC 校验:多项式 x⁶ + x + 1(BISS 规范附录 B)

关键时序参数:

  • 建立时间 t_su ≥ 15ns(Xilinx 7 系列 FPGA 约束)
  • 保持时间 t_h ≥ 10ns
  • 时钟抖动容限±5% 周期

FPGA 实现

模块架构

// 顶层模块
module biss_master (
  input wire clk_100m,    // 主时钟
  output wire biss_clk,   // 6MHz 生成时钟
  inout wire biss_data,   // 双向数据线
  output [31:0] pos_data  // 解码位置
);
  // PLL 生成 6MHz 时钟
  clk_wiz_0 pll_inst(.clk_out1(biss_clk), .clk_in1(clk_100m));

  // 曼彻斯特解码器
  manchester_decoder decoder(.clk(biss_clk),
    .data_in(biss_data),
    .pos_valid(pos_valid),
    .pos_out(pos_data)
  );

  // CRC 校验模块
  crc6_checker crc(.clk(biss_clk),
    .data_stream(pos_data[31:0]),
    .crc_in(pos_data[37:32]),
    .error(crc_error)
  );
endmodule

解码核心逻辑

曼彻斯特解码状态机设计要点:

  1. 边沿检测:使用双触发器消除亚稳态

    always @(posedge clk) begin
      data_dly <= biss_data;
      edge <= data_dly ^ biss_data; // 跳变检测
    end

  2. 数据采样:在时钟周期中点锁存

    if (edge & ~sampling) begin
      sample_timer <= 3'b100; // 启动 1 / 2 周期计时
      sampling <= 1'b1;
    end else if (sampling) begin
      sample_timer <= sample_timer - 1;
      if (sample_timer==0) begin
        data_shift <= {data_shift[30:0], biss_data};
        sampling <= 1'b0;
      end
    end

工程优化

PCB 设计规范

  • 阻抗匹配:单端 50Ω(FR4 板材线宽 0.3mm)
  • 走线间距:≥3 倍线宽防止串扰
  • 终端电阻:33Ω+10pF RC 网络(抑制反射)

调试技巧

  1. ILA 触发设置:
  2. 捕获模式:触发于 CRC 错误上升沿
  3. 存储深度:8192 点(覆盖完整帧)

  4. 眼图分析法:

  5. 使用高速示波器测量建立 / 保持时间余量
  6. 抖动容忍度测试:注入±10% 时钟偏移

避坑指南

典型问题解决方案

  1. 信号抖动处理:
  2. 添加 LTCC 低通滤波器(截止频率 8MHz)
  3. 启用 FPGA 输入的 IDELAYE2 模块

  4. 电源噪声抑制:

  5. 编码器供电采用 LCπ 型滤波(10μH+2×100μF)
  6. 数字地模拟地单点连接

  7. 误码率优化:

  8. 10 万次测试统计显示:
    • 无屏蔽时误码率 1.2×10⁻⁴
    • 增加屏蔽后降至 3.8×10⁻⁶

扩展思考

如何将当前单主单从架构扩展为 BISS- C 多从站系统?需考虑:

  • 拓扑结构:菊花链 vs 星型连接
  • 冲突仲裁:基于硬件地址的优先级机制
  • 时钟同步:全局时钟分发网络设计

期待读者在评论区分享实际应用中的解决方案。

正文完
 0
评论(没有评论)