1 导言
VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)是IEEE工业规范硬件描绘言语,是跟着可编程逻辑器材(PLD)的开展而开展起来的。这种用言语描绘硬件电路的方法,简略修正和保存,且具有很强的行为描绘才能,所以在电路规划中得到了广泛运用。运用VHDL言语对PLD开发,面积(Area)是一个很重要的目标。经过“面积”优化能够运用规划更小的可编程逻辑芯片,然后下降体系本钱;改进电路功用,下降器材功耗;为今后的技能晋级留下更多的可编程资源,便利增加产品的功用。
VHDL包括的句子非常丰富,不同的描绘能够完结相同的逻辑功用。但应留意,完结相同功用的不同描绘,或许在归纳出的电路规划上存在差异,也就是说,对资源的运用率有所不同。本文就有关VHDL编码方面的面积优化问题进行评论。
2 常见问题
2.1 防止引进不必要的寄存器元件
在描绘组合逻辑电路时,应运用完好的条件句子结构。由于不完好条件句子的运用会引进不必要的寄存器元件,既糟蹋逻辑资源,又下降电路的作业速度,影响电路的可靠性[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句子的履行具有次第/并行性[1][2],其履行不依赖于时钟条件,故而能够归纳出图4所示的电路。明显,例4要优于例3。
2.3 资源共享
在规划数字体系时常常需求重复地调用一个相同结构的模块,这类模块往往是算术模块。如例5中两个加法器是在s不同取值时分别运用的,且输入a一向接入加法器。略作修正,如例6,能够只用一个加法器完结相同功用,然后有效地减小运用面积。
2.4 慎用CASE句子
CASE句子描绘的程序可读性较好,由于它把条件中一切或许呈现的状况悉数列出来了,可履行条件一望而知,且条件句的次第并不重要。故而是常用的条件句子之一。由于它的履行进程更接近于并行方法,一般地,归纳后,关于相同的逻辑功用CASE句子比IF句子(次第条件句子)的描绘耗用更多的硬件资源[1]。
别的,Max+plusⅡ有时对NULL会呈现私行参加锁存器的状况,在用CASE句子描绘组合逻辑电路时,应尽量防止运用NULL来表明未用条件下的操作行为,改用确认操作,如例7。
2.5 在进程中,对变量要先读后写[3]
由于变量值是当即取得的,假如先写后读就会发成长的组合逻辑和锁存器。因而,在编写代码时,对变量要先读后写,如例8。
2.6 简略的比较运算符比排序操作符大大节约资源
就归纳而言,简略的比较运算符(=和/=)在完结硬件结构时,比排序操作符(>、>=、、=)构成的电路芯片资源运用率要高。因而,如有或许,应尽量用比较运算府替代排序操作符。
2.7 尽量选用可计算型下标名
下标名用于指示数组型变量或信号的某一元素。假如下标名是一个可计算的值,则此操作数可很简略地进行归纳。不然,只能在特定的状况下归纳,且消耗资源较大。所以,在进行电路规划时尽量选用可计算型下标名,以进步资源运用率。
3 结束语
功用强大的EDA开发软件和专业的归纳东西的不断开展,使运用VHDL进行PLD规划变得更简略、更方便。但决不能忽视VHDL言语的运用。跟着所规划电路规划的增大,对有限的芯片资源的运用率问题就显得特别重要。在不影响速度要求前提下,应尽或许地进行面积优化。适当地进行编码是优化规划的重要保障,对高质量、高效率地完结VHDL是非常有意的。
参考文献:
[1] 潘松,黄继业.EDA技能实用教程.北京:科学出版社,2002
[2] 赵刚 等.EDA技能简明教程.成都:四川大学出版社,2004
[3] 林瑶,运用VHDL言语中几个常见问题的讨论,微计算机信息:2004年,20卷,9期,136~137页
立异点:寄存器描绘中有节点信号时,依据由节点信号向端口赋值句子在程序中的不同方位,归纳的成果存在差异:此句子在IF条件句子之内时寄存器占用的逻辑资源比它在IF条件句子之外时多一倍。