完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
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是十分有意的。 |
|
|
|
只有小组成员才能发言,加入小组>>
663 浏览 0 评论
1083 浏览 1 评论
2454 浏览 5 评论
2783 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2618 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
639浏览 9评论
636浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
766浏览 6评论
610浏览 5评论
651浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 13:07 , Processed in 0.981276 second(s), Total 79, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号