基于BISS-C协议的编码器接口及其FPGA实现 蔡彦博

发表时间:2021/7/5   来源:《论证与研究》2021年5期   作者:蔡彦博 杜叶宣
[导读] 摘要:本文论述了BISS-C协议的内容、接口连方式和BISS帧结构,提出了基于的FPGA的BISS-C协议解码以及CRC校验软件设计方法,并给出了最终的modelsim仿真结果。

                                                                          蔡彦博   杜叶宣
                                                       (华北光电技术研究所 北京 100015)
        摘要:本文论述了BISS-C协议的内容、接口连方式和BISS帧结构,提出了基于的FPGA的BISS-C协议解码以及CRC校验软件设计方法,并给出了最终的modelsim仿真结果。
        关键词:BISS-C协议;FPGA;解码;CRC校验
        1 引言
        BISS接口协议为传感器和控制器提供了双向快速的通信标准,使用简单硬件即可实现,适用于实时数据采集[1-2]。它具有开放性、高速性等优点,并且在组网方式和线延迟补偿方面较其他接口有领先优势[3]。
        BISS-C协议在接口上与BISS-B完全兼容,BISS-C接口的特征是双向同步通信。由于其协议设计为全数字连接,保证了通传输的安性和可靠性。同时,其对硬件要求小、可在极大程度上节省安装和维护的成本。BISS-C是高速串行协议,适用于需要大瞬时加速度、良好的速度平滑性、优异双向重复性和超强的位置稳定性要求的动态系统之中。BISS-C协议已被广泛的应用于高精度绝对式编码器中[3]。
        本文首先介绍了BISS-C协议,然后阐述其通过接口的连接电路以及FPGA 模块的设计,最后给出了FPGA软件设计的Modelsim仿真结果。
        2 BISS-C协议简介
        BISS-C模式是一种用于采集编码器位置数据的 高速同步串行接口,它是一种主-从接口 。控制器端为主接口,控制位置采样时序和数据传输速率,编码器端为从接口,主从接口之间由两对单向差分双绞线连接。主-从接口交换的两对数据分别为MA和SLO,MA将位置采集请求和时序信息从主接口传输至编码器;SLO将位置采样数据从编码器传输到与MA同步的主接口。
        2.1 BISS-C接口的连接方式
        2.1.1点对点模式
        在点对配置中,只有一个配有一个或多个从接口(传感器)的设备连接到主控 接口上。主控制器通过MA信号线将时钟传输到从接口。SL信号线将传感器数 据从第一个接口 (First Slave)直接送回主控接口。在点对配置中,BISS-C接口只有两根单向差动信号线,其硬件与BISS-B和SSI接口完全兼容。在点对点配置中,最后一个从接口 (Last Slave)的输入信号SL的输入为0[4]。图1为点对点模式的连接图。

        图1  BISS-C协议点对点模式连接图

        2.2 BISS-C接口的数据帧结构
        点对点模式的传输数据格式如图3所示。由图3可以看出,BISS-C模式的请求循环进程为:当空闲时,主接口使MA 保持高电平;编码器通过使SLO线保持高电平显示它已准备就绪;主接口通过开始在MA上传输时钟脉冲来请求位置采集;编码器通过将MA的第二个上升沿的SLO线设为低电平做出响应;完成ACK周期后,编码器将数据传输到与时钟同步的主接口,如图3所示;当所有数据传输完毕,主接口停下数据时钟 ,将MA线设为高电平;如果编码器尚未准备请求下一个周期,它会将SLO线设为低电平进入超时周期;当编码器准备进行下一请求周期时,它通过将SLO线设为高电平的方式提示主接口其准备完毕。
        图3中SLO数据段中,ACK是编码器读数头计算绝对位置的时间段。“Start” 和“0”位为数据传输的起始标志,每个数据为时钟对应的1位数据,起始 “Start” 位始终为高电平,持续一个时钟周期,“0”位始终为低电平,同样持续一个时钟周期。位置数据为26或32位的二进制绝对位置数据。“Error Error”为误差位,低电平有效, “1”表示结果正确, “0”表示内部检测失败。“Warn”为警告位,低电平有效,“0”表示应对光栅进行清洁。CRC为6位位置数据校验,位置、错误及警告数据的CRC多项式为:x6+x1+x0,起始位和0位从CRC计算中忽略。“Timeout”为超时信息。另外主接口可以通过停止时钟或者将MA设置为高电平的方式,在请求循环过程中随时重置光栅编码器。

        图2  BISS-C协议的数据帧结构图


        3基于BISS-C协议的编码器通信接口的软件设计与仿真
        按照BISS-C协议特点,在FPGA内部需要实现的模块功能为:实现BISS协议的串行数据接收,并且将串行数据转换为并行数据,再对接收到的数据进行 CRC校验,最后将校验结果上传给上位机。将FPGA的程序设计按照功能进行模块化,包括时钟模块、解码模块和CRC校验模块。
        3.1 时钟模块设计
        时钟模块负责产生MA线上的时钟。仿真中设计FPGA的全局时钟为100MHz,通过分频器产生MA线上所需要的10MHz时钟。在一帧数据传输完成后,SLO线会变成低电平,进入Timeout状态,同时MA线上时钟停止,MA拉高。此时主接口需要不断检测SLO线,当SLO线上为高电平时,主接口会再在MA上传输时钟脉冲。
        3.2 解码模块设计与仿真
        解码模块用来解码收到的数据,它是由状态机实现[5-6]。解码模块状态流程图如图4所示。具体步骤为:
        1.在初始上电或者复位后,首先检测编码器发送的数据是否处在高电平,即空闲(Idle)状态,当检测到空闲状态时,就发送时钟MA。
        2.这时,按照BISS帧应依次出现“ACK”、“Start”和“0”状态。“ACK”状态持续时间不定,一般为2-5个MA时钟周期 ,主接口在此循环检测SLO,一旦检测到SLO为高电平则进入“Start”状态,“Start”状态规定持续一个MA时钟周期,由于本文中FPGA的全局时钟频率为MA时钟频率的10倍,在检测 “Start”状态时,可通过一个计数器计数采样到“1”的个数,如果达到10个且此时检测到SLO 线上为低电平,则进入“0”状态;否则直接进入超时(Timeout)状态等待下一次再接收数据;由于“0”状态和“Start”状态相似,检测方法是一致的,这里不再叙述。
        3.如果“ACK”、“Start”和“0”状态检测通过,就进入读数(Read)状态, 接收“0”位之后的26位位置信号,2位检测信号和6位校验码。读数状态下设置一个0-9循环计数的器,每当计数到5时进行一次读数,可以让每次读数都在 MA时钟下降沿的中间进行,确保读数的准确性。
        4.接收完毕之后停止发送MA时钟,完成初始化工作,进入“Timeout”状态,等待超时结束后,接着再进入下一次的循环。

        图4 解码模块状态机流程图


        图5为解码模块的modelsim仿真图,图5.1是传输第一个数据34’h0048d17c8的解码时序仿真图,5.2是传输第二个数据34’h3fb72ebd0的解码时序仿真图, O_R x_Data表示解码模块接收的数据,从图5中可以看到,解码模块正确接收并解码了传输的数据,表征状态的State_SLO寄存器的值从0-5依次 循环,表示解码按“Timeout”到“Idle”到“ACK”到“Start”到“0”到“Read”再到“Timeout”的顺序不断进行。O_Rx_Ready表示解码模块接收一组数据是否结束,0表示仍在接收数据,1表示接收一组数据完毕。


        图5 数据解码模块modelsim仿真图


        3.3 CRC校验模块设计与仿真
        由于各种干扰的存在,这对数据传输的可靠性提出了更高要求。循环冗余校验(Cyclic Redundancy Check,简称CRC)是一种重要的线性分组码,编和解方法简单,检错和纠能力强,在通信领域广泛地用于实现差错控制[7]。
        CRC校验模块完成数据的校验以及结果输出工作。设计中,解码模块将接收到的26位角度采样信号、2位检测信号和6位校验码共34位数据传输给CRC校验模块,CRC模块根据解码模块传递过来的O_Rx_Ready信号,判断一组数据是否传输完成,如果传输完成,CRC模块则将其与校验码“1000011”进行校验,如果校验通过,即34位信号与校验码进行模2除余数为0,就将信号输出给上位机;如果校验错误,则接收下一组数据,并发送1次“出错”信号上传给位机,供上位机记录数据采集过程中数据出错个数,仿真中将该错误信息定为34位的0。
        用Verilog实现CRC校验需要采用 LFSR(Linear Feedback Shift Register)电路,并引入数据输入端,及解码得到的34位数据,反馈项为生成多项式x6+x1+x0的系数,1代表存在反馈,0代表不存在反馈,图6为生成CRC校验码的串行线性移位寄存器原理图。

        图6 生成CRC校验码的串行线性移位寄存器


        图7为通过CRC校验的modelsim仿真图,O_Data是最终上传给位机的数据,仿真循环传输34’h0048d17c8和34’h3fb72ebd0,FPGA会将解码后通过校验的数据传给上位机。

        图7 通过CRC校验的modelsim仿真图


        图8为出现传输错误,CRC校验存在未通过情况的modelsim仿真图。设计 中,人为的将要传输第一组数据修改掉一位,从图中可以看出,FPGA在循环发送表征解码错误的34位的“0”信号。
        3.4 测试向量Textbench设计
        测试向量中需要完成初始化、生成CRC校验码、产生SLO数据等工作。初始化工作包括时钟、状态、置位、SLO等信号的初始化以及生成CRC寄存器的初始化。如何生成CRC校验码已在3.3节中详述,这里重点阐述如何模拟产生实际光栅编码器发送的SLO数据。首先定义两组需要传输的28位数据,假设为 0000_0001_0010_0011_0010_11_1_1和1111_1110_1101_1100_1011_1010_00_1_
        1,各包括26位置信号和2位检测信号,设计中通过一个选择信号控制循环传输这两组数据。然后根据传输的数据生成6位的CRC校验码,分别是001000和 010000。放在要传输的28位数据后面一同传输。同样是利用状态机实现要传输 的BISS帧结构,定义一个状态寄存器State用来控制进入不同的状态,通过调用时钟模块生成的MA信号依次产生“Idle”、“ACK”、“Start”、“O”和“Timeout”的帧结构。
        3.5 整体仿真结果
        图9包括了所有模块各个信号的时序图,仿真信号从上到下依次为FPGA全局时钟、复位信号、SLO线上传输信号、MA线上传输信号、顶层模块输出数据、顶层模块数据准备完成信号、CRC校验结果、解码模块数据准备完成信号、解码模块输出数据、数据选择信号、解码模块状态信号、从接口原始传输数1、从接口原始传输数据2、当前从接口传输数据、当前从接口传输数据的CRC码。图10是ISE综合结果和实现后的FPGA资源使用情况。

       

 图9 所有信号的modelsim仿真时序图


        4 结论
        本文研究了BISS-C接口协议的特点,并给出了使用 FPGA实现解码和CRC 校验的软件设计方法以及相应的modelsim仿真图。基于BiSS-C协议具有传输速度快,精度高,安全可靠性和装调试方便等优点,BiSS-C协议具有其他通信协议不可比拟的优势。未来工业控制领域内,以BiSS-C协议为代表的高速双向同步串行编码器将会有越来好的发展前景。
        参考文献:
        [1]王列虎,皮佑国.基于BISS协议的编码器接口技术研究及应用[J].机床与液压,2011,39(8) :103-105,121.
        [2]肖鲲,王莉娜.基于FPGA 的BISS协议光电编码器通信模块设计[J].电子测量技术,2008, 31( 7):188 -191.
        [3]商怀昊,韩基,鹏肖,等.基于BISS-C协议的编码器接口技术研究及其在伺服驱动系统中的应用[J].工业技术创新,2014,1(2):211 -215.
        [4]朱磊,朱元.基于S曲线的永磁同步电机加减速控制及算法分析研究[J].数字技术与应用,2013(4):155-156.
        [5] ERKORKMAZ K,ALTINTAS Y. High speed CNC systemdesign:part I:jerk limited trajectory generation and quinticspline interpolation[J]. International Journal MachineTools & Manufacture. 2001,41(9):1323-1345.
        [6]郭新贵,李从心,阮雪榆. 采用线性加减速伺服系统的快速准确定位方法[J]. 机械工程学报,2003,39(7):74-78.
        [7]王正玺.机载光电侦察平台高精度视轴稳定及像移补偿控制技术研究[D].长春.中国科学院长春光学精密机械与物理研究所,2016.
        作者简介:蔡彦博(1993-),男,助理工程师,主要从事机载光电探测系统稳定控制技术研究。Email:1518736257@qq.com
        杜叶宣(1990-),女,工程师,主要从事机载光电探测系统六性设计研究。

投稿 打印文章 转寄朋友 留言编辑 收藏文章
  期刊推荐
1/1
转寄给朋友
朋友的昵称:
朋友的邮件地址:
您的昵称:
您的邮件地址:
邮件主题:
推荐理由:

写信给编辑
标题:
内容:
您的昵称:
您的邮件地址: