您的位置 首页 系统

FPGA体系规划准则和技巧之:FPGA体系规划的3个基本准则

在FPGA设计领域,面积通常指的是FPGA的芯片资源,包括逻辑资源和I/O资源等。速度一般指的是FPGA工作的最高频率。和DSP或者ARM芯片不同,FPGA设计的工作频率不是固定的,而是和设计本身的延

9.1FPGA体系规划的3个根本准则

9.1.1面积与速度的平衡交换准则

在FPGA规划范畴,面积一般指的是FPGA的芯片资源,包含逻辑资源和I/O资源等。速度一般指的是FPGA作业的最高频率。和DSP或许ARM芯片不同,FPGA规划的作业频率不是固定的,而是和规划自身的推迟紧密相联。

在实践规划中,运用最小的面积规划出最高的速度当然是每一个开发者寻求的方针。但往往面积和速度是不行兼得的。想运用最低的本钱规划出最高功用的产品是不现实的,只需统筹面积和速度,在本钱和功用之间有所取舍,才能够到达规划者的产品需求。

1.速度换面积

速度优势能够交换面积的节约。面积越小,就意味能够用更低的本钱来完结产品的功用。

所谓的速度优势指的是在整个FPGA规划中,有一部分模块的算法运转周期较其他部分快许多,这部分模块就相对与其他的部分具有速度优势。运用这部分模块的速度优势来下降整个FPGA规划的运用资源便是速度换面积准则的表现。

速度换面积准则在一些较杂乱的算法规划中常常会用到。在这些算法规划中,流水线规划常常是有必要用到的技能。在流水线的每一级,常常有同一个算法被重复的运用,可是运用的次数不相同的现象。在正常的规划中,这些被重复运用可是运用次数不同的模块将会占用很多的FPGA资源。

跟着FPGA技能的不断开展,FPGA内部越来越多的内嵌了DSP乘法模块,为一些常用算法的完结供给了很大的便利,也大大进步了运算的速度和才能。因而,在以往规划中那些被重复运用的算法模块的速度能够很高,即相对其他部分具有速度优势。

运用这个特色,从头对FPGA的规划进行改造。将被重复运用的算法模块提炼出最小的复用单元,并运用这个最小的高速单元替代原规划中被重复运用但次数不同的模块。当然在改造的时分必然会添加一些其他的资源来完结这个替代的进程。可是只需速度具有优势,那么添加的这部分逻辑仍然能够完结下降面积、进步速度的意图。

如图9.1所示,是一个流水线的n个进程,每个进程都相应地运算必定次数的算法,每个进程的算法都占用独立的资源完结。其间运算次数方框的巨细表明占用的规划资源。

图9.1未运用速度换面积的流水线算法

假定这些算法中有能够复用的根本单元,而且具有速度优势,那么就能够运用如图9.2所示的办法完结面积的节约。在这种办法中,经过将算法提取出最小单元,合作算法次数计数器及流水线的输入输出选择开关,即可完结将原规划中杂乱的算法结构简化的意图。

图9.2运用速度换面积的流水线算法

能够看到,速度换面积的关键是高速根本单元的复用。

2.面积换速度

面积换速度正好和速度换面积相反。在这种办法中,面积的仿制能够交换速度的进步。支撑的速度越高,就意味着能够完结更高的产品功用。在某些运用范畴,比方军事、航天等,往往重视的是产品的功用,而不是本钱。这些产品中,能够选用并行处理技能,完结面积换速度。

如图9.3所示是运用并行技能、面积(资源)仿制的办法完结了高速的处理才能。

在进行FPGA进行规划时,咱们有必要注意到,FPGA的作业频率是有限的。由于FPGA是作业在TTL电平下,该电平结构(晶体管-晶体管)所能支撑的切换频率是有限的。可是在实践的产品规划中,高频的处理需求越来越多,怎么处理这个对立?

首要运用简略的串/并转化完结多路的速度降频,如图9.3所示,450Mbit/s的频率分为3路,每路150Mbit/s;其次在每一路上运用相同算法但各占规划资源的处理模块进行低频(相对)的处理;最终再将每一路的处理成果进行并/串转化成为高频的输出数据。

图9.3面积换速度完结并行高速处理

串/并和并/串转化能够支撑那么高的频率吗?这个问题的处理得益于FPGA技能的开展。现在干流的FPGA器材中,都带有高速的I/O资源及内部RAM供用户运用。这些高速I/O资源及内部RAM能够完结I/O接口的安稳高速切换和数据总线宽度的转化。这部分的具体介绍拜见9.3节。

9.1.2硬件可完结准则

FPGA规划一般会选用HDL言语,比方VerilogHDL或许VHDL。当选用HDL言语来描绘一个硬件电路功用的时分,必定要确保代码描绘的电路是硬件可完结的。VerilogHDL言语的语法与C言语很相似,可是它们之间有实质的差异。

C言语是根据进程的高档言语,编译后能够在CPU上运转。而VerilogHDL言语描绘的自身便是硬件结构,编译后是硬件电路。因而,有些句子在C言语的环境中运用没有问题,可是在HDL言语环境下就会导致成果不正确或许不抱负。

比方for句子,以下代码在C言语下是一段一般代码:

for(i=0;i16;i++)

DoSomething(); //完结函数的重复调用

在C言语下运转没有任何问题,可是在VerilogHDL的环境下编译就会导致归纳后的资源严峻糟蹋。所以for句子在VerilogHDL环境下一般只用来做仿真或许行为级的描绘。那么for句子在HDL言语中怎么完结呢?有几种不同的方式,其间最常见的是以下办法。

reg[3:0]counter; //调用次数计数器

always@(posedgeclk) //计数器计数模块

if(syn_rst)

counter=4’b0;

else

counter=counter+1;

always@(posedgeclk) begin //运用case句子完结分支调用,

case(counter) //合作计数器计数,各分支可运用相同的履行句子

4’b000: DoSomething; //完结该句子的重复调用

4’b0001:DoSomething; //等同于高档言语中的for句子

……

default:DoSomething;

endcase

end

在counter计数器的不同状况能够规划不同的动作。假如都是完结相同的操作,便是循环for句子了。

9.1.3同步规划准则

同步电路和异步电路是FPGA规划的两种根本电路结构方式。

异步规划的中心电路是由组合逻辑电路构成的,比方异步的SRAM、FIFO的读写操控信号,地址译码电路等。这类电路的输出信号不依赖于任何时钟信号。异步电路最大缺点便是会发生毛刺。

同步规划的中心电路是由各种触发器构成的。这类电路的任何输出都是在某个时钟的边缘驱动触发器发生的。所以,同步规划能够很好地防止毛刺的发生。

在专用芯片(AS%&&&&&%)的规划进程中,同步规划一般会比异步规划占用更多的资源。可是在FPGA规划进程中并不是这样。FPGA内部的最小单元是LE,每个LE里边既包含了完结异步电路需求的查找表资源,也包含了完结同步电路需求的寄存器资源。

如图9.4所示是Altera公司的Cyclone系列FPGA的LE结构图。从图中能够看出,这个LE中包含了输入输出的MUX,同步和异步的操控逻辑,LUT以及可编程寄存器。假如运用这个系列的FPGA(其他的FPGA相似)进行同步电路或异步电路的规划,那么不论运用的是LE中的LUT仍是寄存器,归纳东西归纳的成果都是耗费一个LE。

图9.4CycloneLE结构图

因而,单纯的运用异步电路也并不会节约触发器的资源。或许说,运用同步规划电路,并不会带来FPGA资源的糟蹋。可是全同步的规划关于FPGA的仿真验证是有优点的。由于电路的一切动作都是在相同的时钟边缘来触发,能够削减整个规划的推迟,进步体系的作业频率。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/xitong/194182.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部