SPI4.2总线测试仪逻辑的设计

时间:2022-11-16 21:45:08 浏览量:


打开文本图片集

摘 要:该设计基于FPGA为SPI4.2总线提供自发包和收包校验功能。在系统的下行侧,根据要求发送数据包,在包文的传输过程中采用整包模式和BURST突发模式传输数据,利用SPI4.2的状态字控制数据的发送过程,并运用CRC冗余算法对包文进行校验,将其校验结果加在包文最后4字节。在系统的上行侧检测数据包,接受满足SPI4.2总线协议的包文,对包长,包头内容,包尾CRC分别进行检验,检测到错误则报警。该设计满足了检验SPI4.2总线好坏的目的,为使用SPI4.2总线的工程设计提供了有益的帮助。

关键词:FPGA SPI4.2总线 检测

中图分类号:TP393 文献标识码:A 文章编号:1007—3973(2012)009—079—03

SPI4.2标准由光网际交换论坛(OIF)于2001年颁布,是一项新的系统级接口标准,它支持多个协议以各不相同的高速率传输,这些协议包括SONET/SDH上的信息包(POS)、OC—192、以太网、快速以太网、兆位以太网、10兆位以太网和10兆位光纤通道SAN。SPI4.2摒弃了传统上用来支持宽范围数据速率和服务、专有的基于ASIC的或专门的网络处理器接口,代之以符合共同标准的接口,方便了来自多个生产商的不同器件之间的互连。

本设计基于FPGA为SPI4.2总线提供自发包和收包校验功能。在系统的下行侧,根据要求发送数据包,在系统的上行侧,检验数据的正确性。系统主要包括SPI4.2接口的控制、数据包的生成和检验、CPU控制模块等。本设计还提供了FPGA内部寄存器的配置与状态读取、时钟复位管理等功能。

1 SPI4.2接口简介

SPI4.2是一项新的系统级接口标准,设计人员可依照该标准为集中的数据和通讯设施开发灵活的、可升级的系统。SPI4.2 接口分为数据通道和状态通道。数据通道最多分成256个逻辑通道,16bit 位宽,采用LVDS 信号电平,按照cell 格式传送数据,cell 的长度为16 字节的整数倍,可随意配置,根据网上流量的分析,一般配置成128 字节。每个cell 都是以控制字开始的,控制字一共16bit,包含逻辑端口号、报文起始标志位、报文结束标志位、控制字交验等信息。状态通道传输对端反馈的逻辑通道接收FIFO 的状态,2bit 位宽,LVTTL 或者LVDS 信号电平,一般采用LVTTL 信号电平。状态通道的数据结构为Calendar[0:n],n 最大为256,长度一般与逻辑通道数对应,Calendar[n]表示逻辑通道n 的接收FIFO 状态。数据通道根据状态通道提供的信息控制数据的发送过程。FIFO状态通道有四种状态信息,它的表示采用两位编码表示,MSB表示为其最高位,LSB表示为其最低位。SPI4.2接口具有如下特征:

(1)点对点连接;

(2)支持最大256端口;

(3)数据端口,16比特宽度,带内端口地址,起止标志以及误差控制,LVDS的输入输出接口,源同步双边沿采样时钟,最小311MHz时钟频率,最小每线622Mbps的数据传输速率;

(4)状态端口,可以为LVTTL或者LVDS的接口电平,对于LVTTL接口有最大1/4的数据端口时钟频率,对于LVDS接口最大时钟频率和数据端口一致,2比特并行的FIFO状态信息控制。带内的FIFO起始信号源同步时钟。

SPI4.2接口的数据具备一个可定义的最大长度以及一个可定义或者固定的最小长度。但是无论最大还是最小阵长度都必须是16字节的倍数。实际数据传输中,除了带有EOP标志,其余必须是16字节的倍数。每一次传输的附带信息(端口地址,起止标志,差错控制)以16比特的控制字发送。

2 SPI4.2总线测试仪发包逻辑设计

本设计用到的FPGA型号为Xilinx XC5VLX110t—2ff1136,FPGA提供SPI4.2总线自发包和收包检验功能,在包文的生成过程中采用最实用有效的背靠背传输方法,在系统的下行侧,根据要求发送数据包。在包文的传输过程中采用整包模式和BURST突发模式传输数据,利用SPI4.2的状态字控制数据的发送过程,并运用CRC冗余算法对包文进行校验,将其校验结果加在包文最后4字节。在系统的上行侧检测数据包,接受满足SPI4.2总线协议的包文,对包长,包头16字节内容,包尾CRC分别进行检验,检测到错误则报警。系统结构如图1所示。

图1所示,clk_manager主要完成时钟和复位信号的生成和管理。spi4_tx完成对发送Core的配置和使能,spi4_rx完成对接受Core的配置和使能。Pktgen为发包模块,根据要求发包给发送Core,并由发送Core通过SPI4总线对外发包。Ptkcheck为收包检测模块,接收Core收到的包进入Ptkcheck,完成对收到包的包头,CRC,包长等检测。cpu为LocalBus的桥接模块,提供FPGA内部寄存器的读写访问,软件可通过该模块进行对FPGA的配置和状态的读写。

SPI4.2数据包的生成模块的功能为根据需求生成数据包。SPI4.2总线在下行方向支持最大32通道的数据发送。包长为8字节的整数倍加4字节(CRC沉余校验位)。发包前状态机处于IDLE状态,当开始发包,此时从0通道开始找到一个可发包的通道,进入GEN_TSX状态,同时生成sop前一拍,在下一拍状态机进入GEN_PAYLOAD,同时生成包文和vald信号,包文开始内容可配,如没配置,则使用默认值。后面的包文从0开始计数。同时burst计数和包长计数开始从初始值开始递减,如果当前剩余包长数小于等于burst长度,则不采用burst计数产生burst_end。当目前剩余包长数大于burst长度计数且burst计数到burst长度少三拍的时候,确定了下一个发包的通道,burst计数到burst长度少两拍的时候,生成burst_end。此时状态机在下一拍调到IDLE,并判断此时的可发包通道包长是否为零,为0则跳到GEN_TSX,发送新的sop前一拍,在下一拍进入GEN_PAYLOAD继续发送包文。不为0则表示当前通道为上一个burst发完,则跳到GEN_BURST_MIDDLE,再下一拍进入GEN_PAYLOAD继续发送包文。同样,当计数包长计数到包长长度少两拍的时候,生成packet_end,并把该通道的包长计数清零。在packet_end前一拍确定下一个发包的通道。packet_end下一拍,状态机调到IDLE,并判断此时的可发包通道包长是否为零,为0则跳到GEN_TSX,生成新的sop前一拍,再下一拍进入GEN_PAYLOAD继续发送包文。不为0则表示当前通道为上一个burst发完,则跳到GEN_BURST_MIDDLE,再下一拍进入GEN_PAYLOAD继续发送包文。此时vald信号在跳空的两拍仍打有效,这样可以做成背靠背的传输。发包过程如图2所示。

为了实现背靠背的传输,则需在idle的时刻(即burst_end或者packet_end的下一拍)能够从ram中读到发包通道的状态,如此时刻的包长等,进而判断此时的发包通道下一步是从sop开始发包文或者接着上一次的burst继续发包文。进而则需在burst长度(或者packet长度)少三拍的时候,确定了下一个发包的通道,包内容暂时为计数器模式。crc从偏移开始算起,只要vald信号有效就计算,由于crc的计算是当前拍提取数据和crc值,下一排计算,并当拍给出新的crc值。所以我们在vald信号由高拉底的当拍,把此时的crc值存入ram,当又轮到该通道的时候,当前burst第一个数据crc验证的时候,从RAM 读出其值。crc校验直到eop前一排,计算结束,并把4字节crc结果付值给eop那拍的前32位,后32位写0,mod值写4。

SPI—4.2数据包的检验模块检测SPI4.2上行传回来的数据。SPI4.2总线在上行方向支持最大32个通道的数据包接受。各SPI4.2子通道的数据包头可分别配置检验模版,并和接受到的数据包头进行比较,若不相符则包头报错,并计数报错次数。数据部分采用并行校验方式对数据进行crc32校验字段,将计算结果与包尾4字节比较,若不相符则crc报错,并计数报错次数。该模块同时检验各数据包长,判断是否为配置包长或者默认值中的一种情况,若不相符则包长报错,并计数报错次数。

3 仿真

使用ModelSim仿真软件对收发包的两种模式进行仿真,波形图如图3、图4。

图3为配置包个数的BURST收发包模式的仿真波形,可以看出系统在下行侧的四个通道循环发送了8个数据包,数据通过线路侧环接到上行,对接收到的数据包进行验证,其结果包头检测不报错,crc检测不报错,包长检测不报错,SPI4.2总线上数据传输正常。

图4为连续收发包模式的仿真波形,可以看出系统在下行侧的八个通道循环发送数据,数据通过线路侧环接到上行,对接收到的数据包进行验证,其结果包头检测不报错, crc检测不报错,包长检测不报错,SPI4.2总线上数据传输正常。

4 结论

本设计基于FPGA实现了SPI4.2总线测试仪逻辑的设计,在发送端生成满足SPI4.2总线协议的包文,其包文长度支持用户自定义配置,包头内容支持用户自定义配置,并对包文进行crc校验,其校验结果加在包文最后4字节,支持包文的整包模式发送和BURST模式发送。在接收端对包长, 包头内容, 包尾crc分别进行检验,检测到错误则报警。该设计满足了检验SPI4.2总线好坏的目的,为使用SPI4.2总线的工程设计提供了有益的帮助。

参考文献:

[1] 周梦然.CLPD/FPGA的开发与应用[M].徐州:中国矿业大学出版,2007.

[2] 王金明.VerilogHDL程序设计教程[M].北京:人民邮电出版社,2004.

[3] 孙航.Xilinx可编程逻辑器件的高级应用与设计技巧[M].北京:电子工业出版社,2004.

[4] OIF—SPI4—2.01v2.pdf[M].OIF.

[5] LogiCORETM SPI—4.2 Core v8.4 User Guide[M].Xilinx.

推荐访问:测试仪 总线 逻辑 设计 SPI4