采用可编程逻辑器件实现PL4通用接口的设计

1 引言
pos-phy level 4(pl4)是用于在物理层和链路层之间传输分组和信元的通用接口,支持多种物理层协议,广泛应用于atm、pos(packet over sonet/sdh)以及10吉以太网,迅速成为用于物理层设备与链路层设备间进行分组或信元传输的最通用的接口标准。
pos-phy level 4是由saturn development group在pos-phy level 3的基础上制定出的接口标准,在光互联网论坛(oif)被标准化为spi-4 phase 2(spi-4.2),在atm论坛中被标准化为frame-based atm level 4(fbatm-4)。与之前的10gbit/sec接口相比,pl4接口协议更易于工程实现,减少了管脚数量和功耗,增强了信号完整性,被业界广泛采用。
pl4接口采用16位的基于lvds i/o的数据总线,数据速率622mbits/sec,提供带内控制字和用于流量控制的带外状态通道。带内控制字指示各个通道的地址、分组的起始和结尾,以及校验和;状态通道采用2位状态总线,提供接收方的通道状态信息,并对发送方各通道的数据进行轮询调度。pl4接口协议还定义了训练序列,用来消除数据总线传输过程中各传输线上数据的不同步现象。
我们的设计目标是实现10路1gbps以太网线路接口功能。物理层设备采用pmc-sierra公司的pm3388芯片,链路层设备采用两块altera公司的stratix gx系列fpga芯片,分别完成数据的发送和接收并对数据进行处理。stratix gx系列fpga芯片提供了速率达500mbps~3.1875gbps高速通道,最高1gbps的源同步差分串行接口,和最多达4m的ram,能够满足pl4接口10gbps速率的设计需求。
如图1所示pl4接口设计模型,pl4接口可分为发送器和接收器两部分。由于pl4接口数据总线只有16位,时钟速率达到320mhz(ddr),在fpga内是难以达到这样的速度的,因此在fpga内部采用128位数据总线,80mhz的时钟。
2 发送器工作原理:
在电路上电复位后,首先,数据总线控制模块连续发送训练模板,通道状态记录模块检查接收方发送来的10个通道的状态信息是否有效,并锁存有效的状态信息。如果状态信息有效,说明接收方电路已处于稳定的正常工作状态,向总线控制模块发送信号status_ok,通告已获得有效的通道状态信息。然后,数据总线控制模块停止发送训练模板,检查输出数据队列的状态标志fifo_empty。如果为空,没有数据要发送,则数据总线控制模块发送空闲控制字;如果为非空,则向输出数据队列发送数据传输允许信号send_ack,输出数据队列模块将队列中的数据读出并发送到差分信号接口模块,进行并串转换后发送到pl4总线上。
在发送器正常工作时,从数据处理器侧接收数据并按照数据的目的接口送到相应的缓存队列中。流量控制模块根据各个通道的状态信息,采用加权轮询调度(wrr)的策略从10个缓存队列中读取数据,送到封控制字模块添加相应的控制字,再送到dip-4编码模块计算dip-4校验码,最后送到输出数据队列等待发送。
3 接收器工作原理:
在接收器中通道状态记录模块将各接口的缓存队列的状态发送到状态总线。差分信号接口模块接收16位的差分信号,经串并转换变为128位数据。在dip-4检验模块检查校验码,如果有错误,则将错误的分组或信元抛弃,检查后的数据送入输入数据队列模块。在拆控制字模块将控制字去掉,添加相关的帧头、帧尾标志,并根据控制字送到相应的接口缓存队列。
由于stratix gx系列器件中嵌入了专用电路动态相位定位器dynamic phase aligner(dpa),能够纠正由于漂移引起的时钟和数据线上的相位差,所以在接收器中不需要通过训练序列实现数据线和时钟线的相位同步,对接收到的训练序列直接丢弃,不再做进一步处理。
4 差分信号接口模块的实现
stratix gx系列芯片内嵌了专用的差分源同步串行接口电路,提供了移位寄存器、锁相环和动态相位对齐(dpa)电路,数据传输速率可达到1gbps。通过设置串并转换系数和时钟倍频/分频系数,可以得到所需要的数据总线宽度和时钟频率。在我们的设计中串并转换系数和时钟倍频系数均设为8,可将128位宽总线上的数据串行化,发送到16位差分数据总线上,也可将16差分数据总线上的数据解串为128位宽的数据。
将128位宽的数据写入移位寄存器时,把第128位数据以16比特为单位划分为8块,按照数据在16位差分数据总线上传输的顺序,处于最高位的16比特块的每一位分别写入16个移位寄存器的第一位,第n个16比特块的每一位分别写入16个移位寄存器的第n位,如图4所示。
从16位差分数据总线解串为128位的过程与前面相似。
5 对角交叉奇偶校验(dip)的实现
5.1 16位对角交叉奇偶校验(dip)的规则
dip-4校验码仅对控制字及其前面的载荷数据进行计算,如果控制字的前面仍然是控制字,那么仅计算控制字本身。计算时控制字的低四位按全1计算,计算的结果填写在控制字的低四位。图5对dip-4校验码进行了功能性描述。第一次到达的16比特数据循环右移一位后,与第二次到达的16比特数据进行模2加运算,运算的结果再循环右移一位,依此类推,遇到控制字停止,将得到的16位校验和的高8位与低8位进行模2加运算,得到8位校验和,再将高4位与低4位模2加,得到4位的dip-4校验码,并填写到控制字的低四位。
5.2 128位数据的对角交叉奇偶校验的算法
如果采用16位的数据总线,要达到10gbits/sec的速率,就要求使用640mhz(sdr)的时钟,这在现有的fpga内是做不到的,因此我们必须寻找一种易于实现的解决方法,能够采用160mhz或80mhz的时钟对64位或128位宽的数据进行dip-4编码,这在fpga内比较容易实现。图6给出了128位宽数据的dip-4编码的方法。
如图6所示,将128位宽的数据分成8个16比特块,把每次到达的128比特数据的处于同一列的16比特块,按照与图5中类似的方法进行运算。不同之处在于,16比特数据每次循环右移8位后与下一次到达的128位数据中处于同一列的16比特块进行模2加运算,而不是循环右移一位。将第n列16比特块运算后的16位校验和sum n循环右移n-1位,再将8个新的16位校验和sum n进行模2加,得到最后的16位校验和,再将高8位和低8位模2加得到8位校验和,将高4位和低4位模2加得到最后的dip-4校验码。
如果图6中128位宽数据的最后一行中,第二列即26×16比特块为控制字,其后的16比特块也以空闲控制字填充,则对本段载荷数据的dip-4码的计算范围包括载荷数据和26×16比特块的控制字,其后填充的控制字按全0计算,并且要对计算的结果进行修正。修正的方法是,最后一行中,第一个控制字后如果有w个填充的空闲控制字,那么将计算得到的4位dip-4码循环左移w位,这是由于27~32×16比特块虽然按全0计算,但前面的数据与这些全0的比特块进行模2加时,仍然要循环右移,所以我们通过循环左移恢复到正确的校验和。这样做看起来似乎有些麻烦和多余,但用硬件实现时这样做是简单高效的。图7给出了对128位宽的需进行修正的一段数据计算dip-4校验码的仿真结果,可以得出结论,这种方法能正确计算dip-4校验码,并且比较简单、高效。
6 结束语
本文介绍了在altera公司的stratix gx系列fpga器件中实现pos-phy level 4接口协议的一种设计方案,并详细介绍了128位宽数据的4位对角交叉奇偶校验码的计算方法,通过仿真证明这种方法是正确的。此方案可以应用于路由器的线路接口、交换背板等通信设备中,并且已经在国家863项目“高性能t比特路由器”的10×1g比特以太网线路接口的设计中得到应用。


智慧路灯杆对车联网发展的关键作用在哪里?
大咖云集探讨自动驾驶落地 第二届全球自动驾驶论坛开幕日速递
比亚迪版小米充电器曝光,面向红米手机
电子产业将经历震痛?
ICM7211在微电机无接触测速系统中的应用
采用可编程逻辑器件实现PL4通用接口的设计
华为鸿蒙手机端即将大面积商用,鸿蒙系统8月正式开源
全球范围内加密货币的使用情况分析
数字化尖峰制造,江波龙中山二期封顶,打造11万平米企业级存储专线
三分看懂,MES系统实施前的准备工作——数据录入
CWDM和DWDM有何区别?该如何进行选择
京东方推动国际赛事直转播全面迈入8K新时代
提高FPGA设计效能的方案
Profinet转TCP协议转换网关Step7软件配置方法
有什么性价比高的运动蓝牙耳机、评价较高的运动蓝牙耳机
齐聚上海汽车城!国内新能源汽车元器件方案商携新品参展
OB FC FB块如何使用
FPGA学习步骤是怎样的
如何正确区分强电和弱电
这些黑科技,我只看上了华为P10,当然有我的理由!