微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > FPGA和CPLD > VHDL编码中面积优化探讨

VHDL编码中面积优化探讨

时间:10-02 来源:互联网 点击:
1 引言

VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)是IEEE工业标准硬件描述语言,是随着可编程逻辑器件(PLD)的发展而发展起来的。这种用语言描述硬件电路的方式,容易修改和保存,且具有很强的行为描述能力,所以在电路设计中得到了广泛应用。利用VHDL语言对PLD开发,面积(Area)是一个很重要的指标。通过“面积”优化可以使用规模更小的可编程逻辑芯片,从而降低系统成本;改善电路性能,降低器件功耗;为以后的技术升级留下更多的可编程资源,方便添加产品的功能。

VHDL包含的语句非常丰富,不同的描述可以实现同样的逻辑功能。但应注意,实现同样功能的不同描述,可能在综合出的电路规模上存在差异,也就是说,对资源的利用率有所不同。本文就有关VHDL编码方面的面积优化问题进行讨论。

2 常见问题

2.1 避免引入不必要的寄存器元件

在描述组合逻辑电路时,应使用完整的条件语句结构。因为不完整条件语句的使用会引入不必要的寄存器元件,既浪费逻辑资源,又降低电路的工作速度,影响电路的可靠性。例如用IF条件语句设计一个纯组合电路的比较器,比较以下两例:


例1中未提及当a1=b1时q1作何操作,结果导致了一个不完整条件语句,VHDL综合器对此解释为:当条件al=bl时ql保持原值,这意味着必须给ql配置一个寄存器。综合结果如图1所示。例2中“ELSE ql <= ‘0’”语句交代了除“al = bl”以外的所有情况下ql的赋值行为,从而综合出如图2所示简洁的组合电路。


2.2 寄存器描述中存在信号节点时

信号可以作为设计实体中并行语句模块间的信息交流通道,是具有全局性特征的数值容器。在时序电路设计中,为了在设计更大的电路时使用由此引入的时序电路的信号,常在电路内部定义节点信号。通过信号完成进程之间的通信,从而保证结构体中多个进程能够并行同步运行。寄存器描述中有节点信号时,不同的描述会产生不同的综合结果。如以下两例:


虽然例3与例4都欲描述D触发器的逻辑功能,但综合的结果却不同。因为进程语句本身属于并行描述语句,只要进程中定义的任一敏感信号发生变化,进程可以在任何时刻被激活,而所有被激活的进程都是并行运行的。例3中的两个赋值语句QQ <= din 和qout <= QQ都在IF语句中,而IF语句属于顺序条件语句,并且它们的执行都依赖于时钟条件,即这两条语句中的QQ并非是同一时钟周期的值。因此在一个时钟周期内,din不可能将值传到qout。实际运行中QQ被更新的值是上一时钟周期的din,而qout被更新的值也是上一时钟周期的QQ。显然此程序的综合结果只能是图3所示的电路。而例4中的qout <= QQ在END IF语句之后,它与IF语句的执行具有顺序/并行性,其执行不依赖于时钟条件,故而可以综合出图4所示的电路。显然,例4要优于例3。


2.3 资源共享

在设计数字系统时常常需要反复地调用一个同样结构的模块,这类模块往往是算术模块。如例5中两个加法器是在s不同取值时分别使用的,且输入a一直接入加法器。略作修改,如例6,可以只用一个加法器完成同样功能,从而有效地减小使用面积。


2.4 慎用CASE语句

CASE语句描述的程序可读性较好,因为它把条件中所有可能出现的情况全部列出来了,可执行条件一目了然,且条件句的次序并不重要。故而是常用的条件语句之一。因为它的执行过程更接近于并行方式,一般地,综合后,对于相同的逻辑功能CASE语句比IF语句(顺序条件语句)的描述耗用更多的硬件资源。

另外,Max+plusⅡ有时对NULL会出现擅自加入锁存器的情况,在用CASE语句描述组合逻辑电路时,应尽量避免使用NULL来表示未用条件下的操作行为,改用确定操作,如例7。


2.5 在进程中,对变量要先读后写

因为变量值是立即获得的,如果先写后读就会产生长的组合逻辑和锁存器。因此,在编写代码时,对变量要先读后写,如例8。


2.6 简单的比较运算符比排序操作符大大节省资源

就综合而言,简单的比较运算符(=和/=)在实现硬件结构时,比排序操作符(>、>=、<、<=)构成的电路芯片资源利用率要高。因此,如有可能,应尽量用比较运算府代替排序操作符。

2.7 尽量采用可计算型下标名

下标名用于指示数组型变量或信号的某一元素。如果下标名是一个可计算的值,则此操作数可很容易地进行综合。否则,只能在特定的情况下综合,且耗费资源较大。所以,在进行电路设计时尽量采用可计算型下标名,以提高资源利用率。  

3结束语

功能强大的EDA开发软件和专业的综合工具的不断发展,使应用VHDL进行PLD设计变得更简单、更快捷。但决不能忽视VHDL语言的使用。随着所设计电路规模的增大,对有限的芯片资源的利用率问题就显得尤其重要。在不影响速度要求前提下,应尽可能地进行面积优化。适当地进行编码是优化设计的重要保障,对高质量、高效率地完成VHDL是十分有意的。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top