原创 【博客大赛】逻辑实现PCS模块

2014-11-7 14:58 3246 17 17 分类: FPGA/CPLD 文集: ALTERA FPGA

前面介绍到使用cmu通道来实现transceiver功能,必须使用用户逻辑来实现pcs功能。图1是StratixIVGX器件Transceiver的数据路径框图,上半部分灰色是发送通道的数据路径,下半部分蓝色是接收通道数据路径。

1.jpg

图1:StratixIVGX器件Transceiver数据路径框图

可以看到每个transceiver通道包括发送和接收通道,其中发送通道包含了发送通道PCS以及发送通道的PMA;同样接收又进一步分为接收PCS和PMA。

根据我们前面的介绍,我们知道,CMU通道中没有中间的PCS模块,需要我们自己通过代码来实现。

我们首先来看发送路径,对于发送路径相对比较简单,主要实现8b10b编码即可,如图2所示

 1.jpg

图2:CMU发送路径PCS模块逻辑实现框图

如图2所示,紫色方框就整个Transmitter模块了,包括pcs和pma。那么对于pcs来说就是实现8b10b编码,我们可以调用altera的8b10b IP来实现,使用k28.5这个码来作为对齐K码。需要提醒大家的是,从Quartus II14.0开始已经不提供8b10b这个IP了,但是以前版本生成的IP还是可以继续使用。另外,使用这个IP需要altera的授权。

 

接下来,就是比较复杂的接收路径,如图3所示,在接收路径上,我们主要需要实现8b10b解码,字节对齐,ratematcher FIFO以及自同步功能模块。

1.jpg

图3:CMU接收路径上PCS逻辑实现框图

和发送路径一样,8b10b解码可使用同样的IP。ratemacher FIFO其实就是一个普通的FIFO用于,只是该FIFO的读只有在FIFO达到半满的时候才开启,FIFO读写使用相同的时钟,两侧数据速率相等。而对齐模块其实就是一个普通的移位寄存器,根据子同步器给出的bitlist信号来确定是否进行移位。8b10b解码器是将10bit的并行数据解码成8bit并行的数据,并需要给出是否出现解码错误的指示给自同步器。

相对来说,自同步器模块逻辑设计更关键一些。只要aligner输出的10-bit数据没有与8b10b解码器对齐,就会产生很多错误码组合,那么此时,就会置位8b10b解码错误,该错误标识输出给自同步器模块,而自同步器模块根据这个标识来产生两个输出标志,即对齐标志和移位标志。其中所谓的移位标志用于对齐模块移位控制,而对齐标志用于产生我们在普通GXB接收通道看到rx_ctrldetect控制信号,用于指示当前是数据还是K码。

文章评论0条评论)

登录后参与讨论
我要评论
0
17
关闭 站长推荐上一条 /2 下一条