欢迎来到天天文库
浏览记录
ID:28106015
大小:26.50 KB
页数:5页
时间:2018-12-08
《浅谈VHDL-Verilog的可综合性以及对初学者的一些建议.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、浅谈VHDL/Verilog的可综合性以及对初学者的一些建议 最近在写代码的时候总是在思考,我写的这个能被综合吗?总是不放心,或是写完了综合的时候出问题,被搞的非常烦恼,虽然看了一些书,比如对组合逻辑用阻塞赋值,时序用非阻塞赋值,延时不能被综合等等,但是没有一本能完全将清楚所有的问题!今天无意中看到这篇文章,看来对于是否可综合依然是要靠经验判断!希望有一天能对常用的综合问题有个细致的了解! 一、HDL不是硬件设计语言过去笔者曾碰到过不少VHDL或VerilogHDL的初学者问一些相似的问题,诸如如何实现除法、开根号,如何写循环语
2、句等等。在这个论坛上,也时常能看到一些网友提出这一类的问题。对于这些问题,首先要明确的是VHDL和Veriglog并非是针对硬件设计而开发的语言,只不过目前被我们用来设计硬件。HDL是HardwareDescripTIonLanguage的缩写,正式中文名称是“硬件描述语言”。也就是说,HDL并不是“硬件设计语言(HardwareDesign浅谈VHDL/Verilog的可综合性以及对初学者的一些建议 最近在写代码的时候总是在思考,我写的这个能被综合吗?总是不放心,或是写完了综合的时候出问题,被搞的非常烦恼,虽然看了一些书,比如对
3、组合逻辑用阻塞赋值,时序用非阻塞赋值,延时不能被综合等等,但是没有一本能完全将清楚所有的问题!今天无意中看到这篇文章,看来对于是否可综合依然是要靠经验判断!希望有一天能对常用的综合问题有个细致的了解! 一、HDL不是硬件设计语言过去笔者曾碰到过不少VHDL或VerilogHDL的初学者问一些相似的问题,诸如如何实现除法、开根号,如何写循环语句等等。在这个论坛上,也时常能看到一些网友提出这一类的问题。对于这些问题,首先要明确的是VHDL和Veriglog并非是针对硬件设计而开发的语言,只不过目前被我们用来设计硬件。HDL是Hardw
4、areDescripTIonLanguage的缩写,正式中文名称是“硬件描述语言”。也就是说,HDL并不是“硬件设计语言(HardwareDesignLanguage)”。别看只差这一个单词,正是这一个单词才决定了绝大部分电路设计必须遵循RTL的模式来编写代码,而不能随心所欲得写仅仅符合语法的HDL代码。 二、HDL的来历之所以是“硬件描述语言”,要从HDL的来历说起。 VHDL于1980年开始在美国国防部的指导下开发,完成于1983年,并于1987年成为IEEE的标准。当初开发这种语言,是出于美国国防部采购电子设备的需要。美军
5、的装备采购自私人企业,时常要面对这样一种风险:如果某种武器大量装备部队,而其中某个零件的供应商却在几年后倒闭了,那这种武器的再生产、维修和保养都会出现大问题。而电子设备、尤其是集成电路的内部结构较为复杂,若出现前面所说的情况要找其他公司生产代用品非常困难。于是美国防部希望供应商能以某种形式留下其产品的信息,以保证一旦其破产后能由其他厂商迅速生产出代用品。 显然,当初的设计文档显然是不能交出来的,这在美国会涉及商业机密和知识产权问题。于是美国防部就想出了一种折衷的方法——描述硬件的语言,也就是VHDL。通过VHDL,供应商要把自己生
6、产的集成电路芯片的行为描述出来:比如说,加了什么样的信号后过多少时间它能输出什么等等。这样,如果有必要让其他厂商生产代用品,他们只需照着VHDL文档,设计出行为与其相同的芯片即可。这样的代用品相当于是新厂商在不了解原产品结构的情况下独立设计的,所以不太会涉及知识侵权。 VerilogHDL也形成于差不多的年代,是由GatewayDesignAutomaTIon公司大约在1983年左右开发的。其架构同VHDL相似,但主要被用来进行硬件仿真。或许私人公司更注重实用,Verilog要比VHDL简洁得多。 由此可见,这两种最流行的用于电
7、路设计的语言,没有一种是为了设计硬件而开发的(更何况80年代还没有现在的那些功能强大的EDA软件呢)。因此,当初制订HDL语言标准的时候,并没有考虑这些代码如何用硬件来实现。换句话说,有些代码写起来简单,实现起来却可能非常复杂,或者几乎不可能实现。 三、HDL代码的可综合性 现在回到最初的问题上。为什么诸如除法、循环之类的HDL代码总是会出错?由上一部分可知,任何符合HDL语法标准的代码都是对硬件行为的一种描述,但不一定是可直接对应成电路的设计信息。行为描述可以基于不同的层次,如系统级,算法级,寄存器传输级(RTL)、门级等等。
8、以目前大部分EDA软件的综合能力来说,只有RTL或更低层次的行为描述才能保证是可综合的。而众多初学者试图做的,却是想让软件去综合算法级或者更加抽象的硬件行为描述。 比如说,要想实现两个变量相除的运算,若在代码中写下C=A/B,你将会
此文档下载收益归作者所有