APP下载

流水线技术在FPGA设计中的运用

2016-02-19张立学尹东辉

计算机时代 2016年2期

张立学+尹东辉

DOI:10.16644/j.cnki.cn33-1094/tp.2016.02.012

摘  要: 应用FPGA设计数字电路时,芯片的运行速度优化与资源利用优化常常是相互矛盾的。以Viterbi译码器中加比选单元(ACS)的设计为例,对采用传统方法和流水线技术方法的设计进行对比,显示采用流水线技术的设计方法在占用较小系统资源情况下可以获得更高的系统运行速度,更适用于FPGA的数字电路设计。

关键词: 流水线技术; FPGA; ACS; Viterbi

中图分类号:TN79.1          文献标志码:A      文章编号:1006-8228(2016)02-42-02

Application of pipeline technology in FPGA design

Zhang Lixue1, Yin Donghui2

(1. The Research of Information and Communication Engineering, Shijiazhuang Non-commissioned Officer Academy of CAPF, Shijiazhuang, Hebei 050061, China; 2. The 3rd Communication Department, Shijiazhuang Non-commissioned Officer Academy of CAPF)

Abstract: When using FPGA to design digital circuit, the optimization of the operation speed and resource utilization of the chip is often contradictory. In this paper, taking the design of add compare select unit (ACS) of Viterbi decoder as an example, compares the design of traditional approach with the design of pipeline technology method, the result showed that the pipelining design method can get higher system running speed with less system resource occupation, more suitable for FPGA digital circuit design.

Key words: pipeline technology; FPGA; ACS; Viterbi

0 引言

FPGA(Field Programmable Gate Array)以其可重构与现场可编程的灵活性被人们所接受,相比于ASIC而言,有着更短的开发周期和更小的前期研发资金投入,在原型板的开发中占据着重要的地位,获得了越来越多的人的青睐[1]。但是EDA技术面对超大规模可编程器件PPGA进行系统设计时,面向芯片运行速度和面向芯片占用面积的两种选择常常是相互矛盾的。对速度指标进行优化的设计,往往占用较多的芯片资源;而对芯片面积指标进行优化的设计,一般难以摆脱系统速度下降的代价。随着深亚微米半导体制造工艺的不断创新和百万门可编程器件的不断推出,系统速度指标的意义日趋重要,采用流水线技术只需增加少量硬件,便可以大大提高系统速度[2]。

1 流水线技术的应用原理

流水线设计就是把规模较大、层次较多的组合逻辑电路分为几个级别,在每一级插入寄存器组暂存中间数据。例如K级的流水线就是从组合逻辑的输入到输出恰好有K个寄存器组(分为K级,每一级都有一个寄存器组),上一级的输出是下一级的输入而又无反馈的电路。

流水线结构电路属于同步时序电路,在同步系统中,时钟速度越快,电路处理数据的时间间隔越短,电路在单位时间内处理的数据量就越大[3]。对于同步系统的时钟速率计算公式为:

其中:Tco是数据输出的延时,Tdelay是组合逻辑的延时,Tsetup是触发器的建立时间。

在本例中(图2)ACS的延时就是Tdelay,ACS前级输入的锁存输出时间就是Tco,ACS的建立时间就是Tsetup。在FPGA中,由于Tco和Tsetup是由具体的器件和工艺决定的,芯片型号一旦选定,Tco和Tsetup也就固定不变了,因此设计电路时只可以改变Tdelay。所以缩短Tdelay是提高同步电路速度的关键,而在Viterbi译码器的设计中不只有一级锁存,要使电路工作稳定,时钟周期必须满足最大延时要求,缩短最大延时路径,才可以提高电路的工作频率。在应用流水线技术时,如图1所示可以把较大组合逻辑分解为较小的几块,中间插入寄存器,在图1的下半部分,系统的最高工作频率决定于两个组合逻辑延时的最大值,因此,在系统的设计中应尽量减小这个最大值,这样可以提高电路的工作频率。

2 系统设计实现

下面以Viterbi译码器中的ACS(加比选单元)的设计为例,对比分析采用流水线设计和不采用流水线设计性能和资源占用的差异。

2.1 直接实现

ACS是Viterbi译码器核心部分,图2为ACS的组成逻辑结构图,主要完成度量值的加比选,具体的工作过程是:得到BMU单元送过来的分支度量值和分支状态值之后,将相应的分支状态值对应的度量值从度量存储单元取出来再相加,比较两种状态度量值的大小,将小的度量值存入次态的地址并更新原有的度量值。

直接按照图2的逻辑关系用Verilog语言描述形成ACS模块,包括一个加法器、一个比较器和一个多路选择器,将其下载到EPF10KE30ETC144-1上,得到的部分参数如下:

最大延时为18.2ns,工作频率为86.7MHz,占用55个逻辑单元。

由此可以看出,直接实现该电路整个运算至少需要经过3级门延时,即使用5ns延时的器件运算最快也需要15ns相应的工作速度为66.7MHz,随着相关位数的增加速度还将随之降低。

2.2 三级流水线实现

用组合逻辑的方式直接生成的ACS的电路延时主要集中在两个加法器和一个比较器上。

延时的粗略计算式如下:

其中,Tadd为加法器的延时,Tc为比较器的延时,Tx为多路选择器的延时,主要延时为Tadd和Tc。

在ACS中应用流水线技术,可以把ACS的大的组合逻辑延时分成三个较小的组合逻辑,分别是加法组合逻辑、比较组合逻辑和多路选择组合逻辑,它们的延时比较平均,有利于提高ACS的整体工作频率,因为系统的最高频率决定于系统中的最大延时,然后在三个小的组合逻辑中间加入寄存器,这样就得到流水线结构的ACS框图,如图3所示。

其运算过程是对每一步运算结果进行锁存,按照时钟的节拍逐步完成运算的全过程,虽然每组输入值需要经过三个节拍才能得到运算结果,但是由于每个节拍都有一组新值输入到下一级运算电路,每级运算电路上都有一组数据同时进行运算,所以总的来看,每步运算花费的时间只有一个时钟周期。将采用流水线结构的ACS下载到在EPF10KE30ETC144-1,得到的部分参数如下:

最大延时6.9ns,工作频率153.84MHz,占用63个逻辑单元。

与没有采用流水线时相比,工作频率提高了65.5MHz,输出延时缩短了11.3ns,而从资源占用上来看,仅仅多占用了8个逻辑单元,可见在FPGA上采用流水线代价还是较小的。

3 结论

通过上面分析可以看出,采用流水线技术对Viterbi译码器中的ACS进行设计,提高了数字系统运行速度,并不会增加太多的系统资源占用量,有效解决了应用FPGA进行数字电路设计中选择芯片的运行速度优化与资源利用优化之间相互矛盾的问题。所以流水线技术是提高数字系统运行速度的一种有效方法,其设计的关键在于整个时序的合理安排[4],这对于实施性要求高,运算量大的系统(例如DDS[5])流水线方法尤其适用。

参考文献(References):

[1] 李宏钧,胡小龙.流水线的FPGA低功耗设计[J].计算机系统

应用,2010.19(8):234-237

[2] 孙启良.CPU流水线技术中的结构相关和数据相关[J].福建

电脑,2010(7):49-50

[3] 李云鹏,王新梅,谢显中等.基于FPGA自适应高速RS编译码

器的IP核设计[J].重庆邮电大学学报,2004.15(1):25-28

[4] 邱志宏.信号线速度处理的FPGA流水实现[J].柳州职业技术

学院学报,2009.9(2):79-82

[5] 岳伟甲,刘昌锦.一种基于FPGA的32位快速加法器设计[J].

四川兵工学报,2011.32(7):78-81