Menu Close

高速串行通信帧结构设计初步

上节内容讲解在接收端串并转换后需要捕获同步字,这在通信中是个广泛和通用的概念。例如UART需要起始位和停止位在异步串行通信中就起到了同步字的作用,以太网的 “前导字+帧起始”(Preamble +SFD)同样起到同步字的作用。其它还有在无线领域经常使用的调制方式如OFDM,就是利用自相关的特性进行同步字或同步信号的搜索。同步字可以在时域实现也可以在频域实现,根据不同的应用选择不同的方式。本章内容借鉴以太网MAC层对同步字的处理,在串行通信中插入Preamble+SFD的结构,从而初步实现二层结构的通信方式,通信结构的初步框架如图1所示:

图1

1. 各分层细节

由于本章内容采用循序渐进的方式逐步介绍通信中分层的概念,因此对于数据链路层的介绍也是由浅入深的方式逐步深入的。初步设计如下:

图2

一般在通信中把物理层划分为3个子层,每层各完成不同的任务,如以太网通信中把物理层分为PCS(Physical Coding Sublayer),PMA( Physical  Media Attachment),PMD (Physical Media Dependent)3个子层,关于这方面的内容参照网络通信相关的章节。在本章的异步串行通信中也分为PCS, PMA, PMD 3个子层。 其中PMA对应是并/串转换和串/并转换,PMD对应的是LVDS接口。

由于物理层中并/串(PMA子层),串/并转换(PMA子层),LVDS (PMD子层)以及数据链路层接收侧的同步字搜索,接收端的帧形成已经讲解,下面重点是设计应用层(APP)到数据链路层的实现。

 

2. 发送端数据链路层设计

继续在hs_txrx的工程文件下修改trans_data.v文件,增加握手信号tx_vld,tx_done。这样在应用层(如tb.v)文件里就不需要处理数据链路层的信息了。

 

图3

  • 修改链路层trans_data.v文件

新的trans_data.v文件如下:


 

  • 修改仿真文件tb.v

在tb.v文件里处理好握手信号tx_vld和tx_done,同时将Preamble,SFD等信息移出,只实现用户数据与数据链路层的传递。添加包与包之间的间隔控制(inter-packet interval )


 

  • 修改hs_txrx.v

主要目的是令新添加的控制信号能正确传递, 代码修改如下:


 

仿真波形下:

图4   tb.v仿真波形

 

从图4的波形和发送与接收对比看,已经成功完成数据包的正确收发。而且tb.v可以认为是应用层,因此只关心APP数据,将数据链路层和物理层需要的处理措施,交给底层处理。

图5  数据链路层波形(trans_data.v)

 

图6 接收端数据帧

从上面讨论的结果看,我们已经实现了三层协议,应用层,数据链路层和物理层。其中物理层又实现了PMA和PMD层。后续章节将会讲解物理层中控制子层PCS层的构建。

Posted in FPGA, FPGA 教材教案, IP开发, 教材与教案, 文章, 集成电路