采用片上系统技术来设计FC协议芯片的方案解析

时间:2012-05-09来源:网络

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。

内置CPU的配置及ULP的设计

内置CPU通过嵌入的软件完成FC-2层的序列和交换的协议,同时实现ULP与上层的通讯。

CPU外设的配置

CPU配置的外设和总线接口定义如下:

(1)两个RS232串行口。

(2)看门狗定时器:WATCHDOG-TIMER。

(3)两个FC-2层通讯用的定时器:FCTIMER1,FC-TIMER2。

(4)接收两路FC-2帧收发控制器中断的PIO:INTFRAME-PIO。两个接受来自RX-FIFO的有序集译码的PIO:ORDERSET- PIO1,ORDERSETPIO2。两个内总线接口,用于操作两路FC-2帧收发控制器。可根据操作功能需要,对FC-2帧收发控制器的各寄存器进行定义。

(5)四个独立的连接收发数据缓冲区的内总线接口。

(6)三条独立的存储器总线接口:双口RAM、程序存储器和数据存储器。

(7)与ULP交换数据的ULP-RXFIFO接口。

(8)与ULP握手的ULP-PIO接口。

1 2 3 4

关键词: 片上系统 方案 协议芯片

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版