java怎么拦截某个对象
298
2022-11-02
采用可编程逻辑器件实现PL4通用接口的设计
1 引言
2 发送器工作原理:
3 接收器工作原理:
4 差分信号接口模块的实现
将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比特以太网线路接口的设计中得到应用。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~