微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > SoC技术在FC芯片设计中的应用

SoC技术在FC芯片设计中的应用

时间:07-31 来源:互联网 点击:
FC收发通道模块的设计

功能概述
该模块主要完成FC-2层帧的收发,包括:完成SERDES(串-并互相转换模块)与光电接口的连接、完成FC-1层的8b/10b编解码、FC-2层帧级的CRC校验和FC有序集码的译码;同时利用内置存储器构成FIFO与FC芯片后端模块进行数据交换的缓冲区。

组成结构
该模块分为“FC发送通道”和“FC接收通道”,如图5所示。在收发通道之间提供多种自环测试的通路(未在图中标出)。
“FC发送通道”主要由以下单元组成:
(1)并-串转化单元;
(2)发送时钟锁相环;
(3)8b/10b编码单元;
(4)CRC校验生成单元;
(5)TX-FIFO发送控制单元;
(6)TX-FIFO数据输入缓冲单元;
(7)自环控制单元。

“FC接收通道”主要由以下单元组成:
(1)串-并转化单元;
(2)接收时钟锁相环;
(3)时钟恢复单元;
(4)同步检测单元;
(5)有序集译码单元;
(6)8b/10b解码单元;
(7)CRC校验单元;
(8)RX-FIFO发送控制单元;
(9)RX-FIFO数据输出缓冲单元;
(10)自环控制单元。


图5FC通道结构框图

数据收发缓冲区的定义
数据缓冲区TX-FIFO、RX-FIFO的定义如表2所示:途中发送缓冲区是33位,低32位是发送的数据,第32位用于表示当前码字是否为有序集码。接收缓冲区是36位,低32位是接收到的数据,高位部分保存FC-2帧的CRC校验结果、8b/10b码的译码校验等信息。


5.1 功能概述
FC芯片中有两路“FC帧收发模块及其数据缓冲器”,它们实现FC-2层协议中的帧打包、开包。它是整个系统的软硬件交会点,是整个系统的核心,其关键在于制定相关的设计规则。

5.2 数据缓冲区的使用规则
根据多路总线并行工作的原则,设置四块独立的数据缓冲区,采用双口RAM,用于在CPU和帧收发器之间交换数据。收发数据缓冲区的使用规则如下:

(1)发送缓冲区TXBUF。根据图3所示的FC-2帧格式,该缓冲区用于存放帧头和有效数据。前24个字节是固定存放帧头的帧头区,后面是有效数据区。发送时,模块TXF-CTL从帧头区取帧头信息发送,根据寄存器中发送起始地址(TXOFFSET)和发送个数(TXCOUNT)的值从TXBUF中连续取数据发送。这里,只设置1个帧头区,是考虑到在“序列”中帧头具有相关性,同时1个帧头区不存在多个区域的切换,简化了硬件实现。

(2)接收缓冲区RXBUF。该缓冲区采用循环队列的方式,由模块RXF-CTL顺序写入数据,数据的存储顺序如图3所示的FC-2帧格式。在完成1帧数据接收后,模块RXF-CTL要在寄存器中表明当前帧在RXBUF中的接收起始地址(RXOFFSET)和接收到的个数(RXCOUNT)。CPU读取寄存器RXCOUNT后,该寄存器自动清零。上述使用规则是整个系统进行SoC设计的要点。

工作过程

数据的发送过程发送:
(1)CMD_RESET。模块TXF-CTL复位,进入空闲态。

(2)CMD_TEST:由CPU直接控制数据的发送,模块TXF-CTL进入空闲态。

(3)CMD_START_TX1:在空闲态并且CMD_TEST和CMD_START_TX2都无效时,进入按帧发送数据的状态,模块TXF-CTL发出SENDING信号。模块TXF-CTL先向FC发送通道的TX-FIFO发送有序集码lDLE(K28.5D21.4D21.5D21.5);根据SOF码型寄存器发送相应的SOF;然后从TXBUF的帧头区取数据依次发送;以后,如果数据从TXBUF取,则根据寄存器发送起始地址(TXOFFSET)和发送个数(TXCOUNT)从TXBUF中取出对应的数据发送;发送完有效数据后,再根据EOF码型寄存器发送相应的EOF;最后再发一个有序集码IDLE(K28.5D21.4D21.5D21.5)。一帧数据发完后,将SENDING信号清零,CMD_START_TX1清零,发中断信号INTTXi,然后回到空闲态。发送过程只有CMD_RESET可以中断。

(4)如果数据来在ULP-FIFO,则读发送个数(TXCOUNT),从ULP-FIFO中取数发送,若发送个数(TXCOUNT)大于FC-2帧规定的长度,则按2112字节的长度分多帧发送,每帧完毕,自动修改帧头中的帧记数值,并且自动选择相应的SOF和EOF定界符;若发送的过程中ULP-FIFO空,则自动结束这一帧的发送,并启动超时定时器,等待ULP-FIFO中的数据。当发送个数(TXCOUNT)规定的数据发完后,或者超时,则将SENDING信号清零,CMD_START_TX1清零,发中断信号INTTXi,然后回到空闲态。发送过程只有CMD_RESET可以中断。

(5)CMD_START_TX2:在空闲态当CMD_START_TX2有效时,模块TXF-CTL按有序
集码寄存器和有序集码参数寄存器的定义发送有序集码。

数据的接收过程
数据的接收有两种方式:由CPU直接控制;由RXF-CTL按FC-2帧格式接收数据。CPU可通过FC-2帧收发控制器的寄存器向模块RXF-CTL发命令来控制数据发送:

(1)CMD_RESET。模块TXF-CTL复位,进入空闲态。

(2)CMD_TEST:由CPU直接控制数据的接收。

(3)CMD_START_RXi:在空闲态并且CMD_TEST无效时,进入按帧接收数据的状态。模块RXF-CTL从FCSET-A的RX-FIFO中收到有序集码SOF后,发出RECEIVE信号,表示已经开始1帧数据的接收。模块RXF-CTL将收到的数据依次写入循环缓冲区RXBUF。再收到任一个有序集码后,1帧数据接收结束,将RECEIVE信号清零。更新寄存器接收起始地址(RXOFFSET)和接收到的个数(RXCOUNT)。如果接收到的CRC码无效或者最后一个有序集码不是EOF,则将接收有错(RXERR)置‘1’,否则发出INTRXi中断信号,表示收到1帧正确的数据。继续下一帧的数据的接收。在1帧数据接收的过程中,只有CMD_RESET可以中断;如果尚未开始接收1帧数据,则CMD_TEST可使其回到空闲态。CPU读寄存器RXOFFSET、RXERR和RXCOUNT可知道接收到的数据存放的地址和个数以及数据帧是否有效。

另外CMD_START_Rxi还用来控制FC接收通道中的RX-FIFO控制器。CMD_START_Rx1控制FC接收通道按FC-2帧接收数据存入RX-FIFO;CMD_START_Rx2控制FC接收通道接收所有数据(除了连续的IDLE有序集码之外)存入RXFIFO。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top