首页 > 范文大全 > 正文

片上网络GALS接口设计

开篇:润墨网以专业的文秘视角,为您筛选了一篇片上网络GALS接口设计范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:本文提出了一种基于握手协议的GALS接口设计方法。该接口采用异步FIFO作为输入缓冲区,有效降低了数据传输延迟;采用环形缓冲的概念来管理缓冲区,使接口具有了可扩展性。FPGA验证结果表明,该接口保证了适配单元与网络路由之间完成准确的异步传输,4通道的接口共占用了405个ALUT(Adaptive Look-Up Table)和支持211 MHz的时钟频率。

关键词: 片上网络gals;异步FIFO;环形缓冲

中图分类号:TP302.1文献标识码:A

Design of GALS Interface for Network-on-Chip

HONG Jia-jie, WU Ning

(College of Information Technology Science, Nanjing University

of Aeronautics and Astronautics; Nanjing China; 210016)

Abstract:This paper proposes a design method for GALS(Globally Asynchronous and Locally Synchronous) interface based on handshake protocol. The delay of data transfer is reduced by using asynchronous FIFOs as input buffers. The interface also uses concept of circular buffer to manage multi-buffers, so that the interface is scalable. The synthesis and simulation in FPGA show that our GALS can provide reliable asynchronous communication services, an interface with 4 channels required 405 ALUT (Adaptive Look-Up Table) and ran at 211MHz.

Key words: Network-on-Chip; GALS; Asynchronous FIFO; Circular buffer

随着片上系统(SoC,System-on-Chip)集成的IP核数目的不断增大,传统的基于总线的通信结构将严重制约整个芯片的性能[1]。片上网络(NoC,Network-on-Chip)将是一种有效的通信解决方案,它可以看作是将互联网应用到SoC设计领域的结果[2]。

NoC不需要全局同步时钟是其较之于总线结构的一个优点。随着工艺技术的进步和系统规模的增大,低延迟的全局时钟布线将会变得非常困难;同时,全局时钟产生了巨大的功耗[3]。全局异步局部同步架构(GALS)可以解决全局同步时钟带来的诸多问题,它可以应用于NoC的设计,NoC中的每个IP核是一个工作于独立时钟局部同步子系统,IP核与网络通过GALS接口以异步的方式进行数据传输[4]。

GALS接口是NoC同步时钟域与异步时钟域的分界,本文设计GALS接口是按照握手协议来协调数据在不同时钟域之间的异步传输。

1GALS接口总体结构

GALS网络接口可分为输出、输入两个端口,每个端口主要由通道缓冲区、缓冲区选择模块、基于握手机制的自时钟发生器、信号同步器四部分组成,它的总体结构如图1 所示。

数据缓冲区由若干个缓冲块组成,缓冲块可以由RAM或FIFO实现。在NoC中可以将通信服务划分为保证服务(Guaranteed services,GT)和尽力服务(Best-effort services,BE)[5],相应的数据包也分为GT包和BE包。为此,可以将通道缓冲块分为两类,一类存储GT包,另一类用来存储BE包。GT服务的优先级较高,所以GT缓冲块的数据将优先得到服务。

对于输出缓冲区,往缓冲块写数据的过程同时也是数据组包的过程。数据从缓冲块的第二个地址开始依次写入,数据写入完毕后,再将数据包头写入首地址,这样就完成了一个数据包的组包过程,而从缓冲块读数据是从首地址开始的,所以输出缓冲块需用RAM实现。

对于输入缓冲区,从网络来的数据输入到缓冲对列,解包模块首先从首地址读取的包头信息,再根据包头信息从输入缓冲块中读取有效数据,由此可见,存取过程是一个先进先出的过程,为了提高数据吞吐率可采用异步FIFO实现,异步FIFO的设计可参看文献[6]。

自时钟发生器用于产生读写时钟,以输出端口为例,request信号将在缓冲区满信号afull和目的缓冲区有空闲时被触发,request有效后,自时钟发生器将产生缓冲区读时钟控制数据从缓冲区中读出;当空标志aempty有效时,自时钟发生器将停止产生读时钟。缓冲区的空/满标志(aempty和afull)由于与本地时钟不同步,需要经过同步器后才能进入组包或解包模块。

2GALS接口关键设计

2.1基于握手协议的自时钟发生器

本文采用了基于握手协议的自时钟发生器来协调数据包的异步传输。握手协议主要有两种形式:二相握手和四相握手,对于前者,它采用双时钟沿触发,不适合于在FPGA上实现。本文的自时钟发生器是基于四相握手协议的,它的电路如图2所示。

在图2中,当request被触发时,读时钟r_clk产生一个上升沿,数据将会被读出。为了保证数据能正确写入,w_clk的上升沿只能在数据到达后产生,因为数据传输有一定的延迟,所以在自时钟发生器中需要插入延迟单元,而FPGA中延迟单元对工艺、温度、压力等因素敏感,因此需要留有足够的设计余量,延迟时间TDelay应满足TDelay>TDelay_Data + TR_co +Tack_su。

TDelay_Data为数据延迟时间,Tack_su为ack时钟信号的最小建立时间,TR_co为寄存器固有属性,是数据送到输出端口的内部延时参数。

2.2输入缓冲区

对于输入缓冲块,若采用双端口RAM实现,则需要将包中所有的微片都加载到缓冲块后才能读出,数据的延迟将与数据包的长度成线性关系。而输入缓冲块数据的存取是一个先进先出的过程,可以采用异步FIFO来实现。输入缓冲区的结构如图3所示。

输入缓冲区设计的关键是准确地设计控制信号,与外部模块相连的两个关键信号是afull和aempty。afull并不反映异步FIFO的满状态,而是标志在该异步FIFO缓冲块中还有包微片没有读完,其它数据包不允许写入到该缓冲块,它是由w_ok与r_ok异或得到的,w_ok和r_ok分别在一个数据包写完和读完时翻转。aempty标志在该异步FIFO缓冲块有数据可以读取,它是由w_begin与r_ok异或得到的,w_begin在数据包头写进缓冲块后翻转。为了防止亚稳态的发生,afull和aempty需要经过同步器后才可以送到外部模块。

3.3环形缓冲区

本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文

缓冲区的大小需要根据实际的网络通信量确定,这就要求缓冲区具有良好的可扩展性。为此,在本文中采用了环形缓冲的概念来管理缓冲区,即将缓冲块按环形组合起来。

对于环形缓冲区的管理,在同步系统中可以用状态机来实现,而在本系统中,由于缓冲区的读写时钟不同,不宜用状态机来实现。最终,本文采用的是如图4所示的电路,该电路当任意两个缓冲块同时为满时将出现不确定情况。但是在这里,同时为满的情况不可能出现,所以该电路是可行的。

路由单元向输入通道缓冲区输入数据包,一次只能对一块缓冲块进行操作,控制电路是通过缓冲块的空标志来对环形缓冲区的缓冲块进行操作。因为缓冲块有可能同时为空,所以缓冲块选择模块不能采用如图4所示的电路。根据环形缓冲区的存取特点,满的缓冲块必是连续的,例如由4个缓冲块组成的环形缓冲区,“满空空满”的情况是可能的,而“满空满空”是不可能的。而将要选择的缓冲块必为沿存储方向的第一个空缓冲块。由此得出write_enn=fulln・fulln-1(除缓冲块全为空、满时不适用),full为缓冲块满信号,下标为缓冲块编号,write_en为1的存储块即是可以写入的数据块。

4仿真结果

输入输出端口分别为4缓冲块的网络接口用Altera公司的Stratix II器件EP2S15F484C3进行布局布线后仿真,共占用了405个ALUT,可以达到的最高频率为211MHz。

输出端的波形如图5所示,data_out为组包模块输出的数据,在时钟clk_r的驱动下写入到输出缓冲块,flit_from_GT_a为从网络接口输出的数据,在握手时钟request的驱动下从输出缓冲块读出。

从图5中可以看出,数据微片延迟了m×Tclk_r+3×Tclk_tran,m为数据包长度,Tclk_r为发送端时钟周期,Tclk_tran位握手时钟周期,延迟时间与数据包长度成线性关系。

输入端的波形如图6所示,data_net为来自网络的数据,在握手时钟ack的驱动下写入的输入缓冲块,de_data为输入到解包模块的数据,在目的时钟clk_d的驱动下从输入缓冲块读出。

从图6中可以看出,当往输入缓冲区输入两个微片后,FIFO的空标志才无效,这是因为异步FIFO的空标志是保守的,在读使能fifo_read_en_a有效后,数据开始从异步FIFO中读出,数据微片延迟了2×Tclk_tran+2×Tclk_d,Tclk_d为接收端的时钟周期,与数据包的长度无关。

5结论

本文基于GALS思想设计了片上网络适配单元与网络路由之间的异步通信接口,采用的基于四相握手协议的自时钟发生器保证了可靠的跨时钟域数据传输,用异步FIFO作为输入缓冲区消除了数据包长度对传输延迟的影响,将多个缓冲块组成循环缓冲区,使接口具有了良好的可扩展性。仿真结果表明:该接口支持较高的时钟频率和占用较少的面积。作为NoC的一个重要部件,该接口适用于各种拓扑结构的NoC。

参考文献

[1] Benini, L., and De Micheli, G. Networks on chips: a new SoC paradigm[J]. Computer, 2002, 35(1): 70-78.

[2] William J. Dally, Brian Towles. Route Packets, Not Wires: On-Chip Interconnection Networks[C]. Proceedings of the 38th Conference on Design Automation, Las Vegas, NV, 2001:684-689.

[3] E. G. Friedman. Clock Distribution Networks in Synchronous Digital Integrated Circuits[J]. Proceedings of the IEEE, 2001, 89(5): 665-692.

[4] Andrew Linus. Nexus: An Asynchronous Crossbar Interconnect for Synchronous System-on-Chip Design[C].11th Symposium on High Performance Interconnects, Stanford, Calif, USA, 2003: 2-9.

[5] K.Goossens, J. van Meerbergen, A.Peeters, and P.Wielage. Networks on Silicon: Combining Best Effort and Guaranteed Services[C]. Proceedings of Design, Automation and Test in Europe Conference and Exhibition (DATE '02), Paris, France, 2002: 423-425.

[6] 赵永建, 段国东, 李苗. 集成电路中的多时钟域同步设计技术[J].计算机工程, 2008, 34(9): 246-247.

.

作者简介

洪佳洁,硕士研究生,研究方向为集成电路设计和片上网络。

吴宁,教授,博士生导师,研究方向为数字系统理论与技术、电子系统集成、专用集成电路设计等。

本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文