您的位置 首页 主动

VHDL规划中电路优化问题

VHDL设计是行为级设计,所带来的问题是设计者的设计思考与电路结构相脱节。实际设计过程中,由于每个工程师对语言规则和电路行为的理解程度不同,每个人的编程风格各异,往往同样的系统功能,描述的方式不一,综

近年来,跟着集成电路技能和EDA技能的不断发展,集规划、模仿、归纳和测验功用为一体的VHDL言语,已作为IEEE标准化的硬件描绘言语。因为其在语法和风格上相似于现代高档汇编言语,具有杰出的可读性,描绘能力强,规划办法灵敏,易于修正,又具有可移植性,可重复运用别人的IP模块 (具有知识产权的功用模块)等许多优势而成为EDA规划办法的首选。VHDL规划是行为级规划,所带来的问题是规划者的规划考虑与电路结构相脱节。规划者首要是依据VHDL的语法规矩,对体系方针的逻辑行为进行描绘,然后经过归纳东西进行电路结构的归纳、编译和优化,并经过仿真东西进行逻辑功用仿真和体系时延的仿真。实践规划进程中,因为每个工程师对言语规矩和电路行为的了解程度不同,每个人的编程风格各异,往往相同的体系功用,描绘的办法纷歧,归纳出来的电路结构更是截然不同。即便终究归纳出的电路都能完成相同的逻辑功用,但其电路的杂乱程度和时延特性不同很大,乃至某些臃肿的电路还会发生难以意料的问题。因而,对VHDL规划中简化电路结构,优化电路规划的问题进行深入讨论,很有必要。

VHDL电路规划的优化与VHDL描绘句子、EDA东西以及可编程器材(PLD)的选用都有着直接的联系。规划人员首要应留意到以下基本问题:

① PLD器材的逻辑资源是有限的。
② 可编程器材具有特定的结构,应留意器材结构与实践体系的匹配,使体系功用到达最佳。  
③ 不是一切的规划都能完成到恣意挑选的结构中去。  
④ 电路优化的方针相当于求最优解的问题。

1 VHDL规划中进步硬件归纳功率的首要战略

VHDL作为一种硬件描绘和仿真言语,终究要完成的是实践硬件电路。可是其规划初衷并非归纳,某些句子并不被归纳器支撑,所以在挑选句子时应考虑到归纳与仿真的功率。只要运用归纳东西支撑的句子,规划出的程序才有含义。在编程时要留意以下几点:

① 尽量不运用WAIT FOR XX ns句子和AFTER XX ns句子。XX ns标明在履行下一操作之前需求等候的时刻,但归纳器不予支撑,一般疏忽该时刻,而不会归纳成某种元件,故关于包括此类句子的程序,仿真成果与归纳成果往往纷歧致。

② 声明信号和变量时尽量不赋初值,界说某确认数值时,运用常量而不必变量赋初值的办法。因为大多数归纳东西将疏忽赋值等初始化句子,比如:VARIABAL S∶INTEGER∶=0。

③ 函数或进程调用时尽量运用称号相关。因为称号相关能够比方位相关更好地避免发生不正确的端口衔接和元件声明,也不要在同一个句子中一起运用两种相关。比如:

clk_1:bufes port map(I=>clock_in,clock_out);(不正确的用法)

clk_1:bufes port map(I=>clock_in,O=>clock_out);(正确的用法)

④ 正确运用when_else句子、if_else句子和case句子。VHDL规划电路的杂乱程度除取决于规划功用的难度外,还受规划工程师对电路描绘办法的影响。最常见的使电路杂乱化的原因之一是,规划中存在许多本不必要的相似LATCH的结构,并且这些结构一般都由很多的触发器组成,不只使电路更杂乱,作业速度下降,并且因为时序合作的原因还会导致不行意料的成果。例如,描绘译码电路时,因为每个工程师的写作习气不同,有的喜爱用IF…ELSE 句子,有的喜爱用WHEN…ELSE办法,而用IF…ELSE时,稍不留意,在描绘不需求寄存器的电路时没加ELSE,则会引起电路不必要的开支。

例程1: if ina=″00000″ then
Outy<=″0000111″;
elsif ina=″00001″ then
Outy<=″0001000″;
elsif ina=″00010″ then
Outy<=″0001001″;
……
else
Outy<=″0000000″;
end if;
例程2: Outy<=″0000111″ when ina=″00000″ else
″0001000″ when ina=″00001″ else
″0001001″ when ina=″00010″ else
……
″0000000″;
例程2因为运用WHEN…ELSE完好条件句子,不会生成锁存器结构,所以不会有问题。而例程1若不加else Outy<=″0000000″句子,则归于不完好条件表达办法,会生成一个含有7位寄存器的结构。尽管上述例程都能完成相同的译码功用,可是电路杂乱度会大不相同。

⑤ 留意算术功用的规划优化。例如下面两条句子:
Out=A+B+C+D;
Out=(A+B)+(C+D);

第一条句子归纳后将会接连叠放3个加法器(((A+B)+C)+D);第二条句子(A+B)和(C+D)运用两个并行的加法器,一起进行加法运算,再将运算成果经过第三个加法器进行组合。尽管运用资源数量相同,但第二条句子速度更快。以4位和16位加法器为例,选用Altera公司 EPF10K30AQC240_3芯片,经过synopsys FPGA Express归纳东西完成的成果进行测验,比较成果如表1所列。

2 优化体系速度的VHDL规划战略

选用依据VHDL规划的CPLD/FPGA器材往往首要是为了满意高速运转的需求,如通讯体系。体系运转速度与电路节点之间的延时直接相关,因而,削减冗余逻辑,缩短节点延时是进步体系速度的要害。速度优化与电路结构规划(如器材结构特性、体系电路构成和PCB制板状况)和软件运用(如归纳器功用和 VHDL描绘办法)都有联系。

2.1 电路结构方面速度优化的首要办法

① 流水线规划是最常用的速度优化技能。选用流水线规划尽管不能缩短总作业周期,但经过把一个作业周期内的逻辑操作分红几步较小操作,并接连同步完成的战略,可大大进步体系整体运转速度。

② 合理运用嵌入式阵列块EAB资源和LPM宏单元库。在DSP、图画处理等范畴,乘法器是运用最广泛、最基本的模块,其速度往往限制着整个体系功用。而EAB是PLD器材中非常有用的高速资源,运用EAB单元和参数化模块LPM,能够规划出乘法器等高速电路。

③ 要害途径优化。所谓要害途径是指从输入到输出延时最长的逻辑通道。要害途径优化是确保体系速度优化的有用办法。

2.2 软件运用方面速度优化的办法

一般EDA软件尤其是归纳器,均会供给一些针对详细器材和规划的优化选项。规划者在运用软件时应留意依据优化方针的要求,恰当修正软件设置。在MAX+plusII中,就能够运用Assign/Device指令挑选不同速度等级的芯片。

3 面积优化的VHDL规划战略

面积优化是进步芯片资源运用率的另一种办法,经过面积优化能够运用规划更小的芯片,然后下降成本和功耗,为今后技能晋级预留更多资源。面积优化最常用的办法是资源同享和逻辑优化。

3.1 资源同享办法

资源同享的首要思维是经过数据缓冲或多路挑选的办法来同享数据通道中占用资源较多的模块(如乘法器、多位加法器等算术模块)。

例程3: process(A0,A1,B,sel)
begin
if(sel=‘0’)then result=A0*B;
else result=A1*B;
end if;
end processs;

例程4: process(A0,A1,B,sel)
begin
if(sel=‘0’)then temp=A0;
else temp=A1;
end if;
result=temp*B;
end processs;

例程3的规划可用图1描绘,例程4的规划可用图2描绘。可见例程4节省了一个价值昂扬的乘法器,整个规划占用面积比例程3简直削减了一半。

3.2 逻辑优化办法

经过逻辑优化以削减资源运用也是常用的面积优化办法(如常数乘法器的运用,并行逻辑串行化处理等),但其价值往往是速度的献身。在延时要求不高的状况下,选用这种办法能够到达削减电路杂乱度、完成面积优化的意图。

4 定论

经过以上开始的讨论可知,用VHDL进行%&&&&&%的规划,不只需求了解VHDL言语的运用办法和对规划要求的深刻了解,并且应在规划全程中遵从最优化规划的基本原则,在电路结构规划和软件运用中寻觅满意规划要求的最佳计划。

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部