硬件描述语言有几种

作者&投稿:钟离该 (若有异议请与网页底部的电邮联系)
硬件描述语言和一般的高级语言有什么不同?~

一、语言构成不同
1、硬件描述语言:是电子系统硬件行为描述、结构描述、数据流描述的语言。
2、高级语言:其语法和结构更类似汉字或者普通英文,且由于远离对硬件的直接操作,使得一般人更容易学习。
二、语言特点不同
1、硬件描述语言:是对电路系统的结构、行为的标准文本描述。硬件描述语言和一些并行编程语言一样存在并行性的表达方式。
2、高级语言:较接近自然语言和数学公式的编程,基本脱离了机器的硬件系统,用人们更易理解的方式编写程序。


三、优势不同
1、硬件描述语言:利用这种语言,数字电路系统的设计可以从顶层到底层(从抽象到具体)逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。
2、高级语言:与计算机的硬件结构及指令系统无关,有更强的表达能力,可方便地表示数据的运算和程序的控制结构,能更好的描述各种算法,而且容易学习掌握。

参考资料来源:百度百科-硬件描述语言
参考资料来源:百度百科-高级语言

硬件描述语言概述   随着半导体技术的发展,数字电路已经由中小规模的集成电路向可编程逻辑器件(PLD)及专用集成电路(ASIC)转变。数字电路的设计手段也发生了变化,由传统的手工方式逐渐转变为以EDA工具作为设计平台的方式。而随着EDA技术的发展,使用硬件语言设计PLD/FPGA成为一种趋势。目前最主要的硬件描述语言是VHDL和Verilog HD
目录
硬件描述语言概述
硬件描述语言用途
硬件描述语言与原理图输入法的关系
硬件描述语言开发流程
硬件描述语言的发展

硬件描述语言概述
随着半导体技术的发展,数字电路已经由中小规模的集成电路向可编程逻辑器件(PLD)及专用集成电路(ASIC)转变。数字电路的设计手段也发生了变化,由传统的手工方式逐渐转变为以EDA工具作为设计平台的方式。而随着EDA技术的发展,使用硬件语言设计PLD/成为一种趋势。目前最主要的硬件描述语言是和Verilog HDL。 VHDL发展的较早,语法严格,而Verilog HDL是在C语言的基础上发展起来的一种硬件描述语言,语法较自由。 VHDL和Verilog HDL两者相比,VHDL的书写规则比Verilog烦琐一些,但verilog自由的语法也容易让少数初学者出错。 国外电子专业很多会在本科阶段教授VHDL,在研究生阶段教授verilog。从国内来看,VHDL的参考书很多,便于查找资料,而Verilog HDL的参考书相对较少,这给学习Verilog HDL带来一些困难。 从EDA技术的发展上看,已出现用于CPLD/FPGA设计的硬件C语言编译软件,虽然还不成熟,应用极少,但它有可能会成为继VHDL和Verilog之后,设计大规模CPLD/FPGA的又一种手段。

硬件描述语言用途
HDL有两种用途:系统仿真和硬件实现。 如果程序只用于仿真,那么几乎所有的语法和编程方法都可以使用。 但如果我们的程序是用于硬件实现(例如:用于FPGA设计),那么我们就必须保证程序"可综合"(程序的功能可以用硬件电路实现)。 不可综合的HDL语句在软件综合时将被忽略或者报错。 我们应当牢记一点:"所有的HDL描述都可以用于仿真,但不是所有的HDL描述都能用硬件实现。
硬件描述语言与原理图输入法的关系
HDL和传统的原理图输入方法的关系就好比是高级语言和汇编语言的关系。HDL的可移植性好,使用方便,但效率不如原理图;原理图输入的可控性好,效率高,比较直观,但设计大规模CPLD/FPGA时显得很烦琐,移植性差。在真正的PLD/FPGA设计中,通常建议采用原理图和HDL结合的方法来设计,适合用原理图的地方就用原理图,适合用HDL的地方就用HDL,并没有强制的规定。在最短的时间内,用自己最熟悉的工具设计出高效,稳定,符合设计要求的电路才是我们的最终目的。
硬件描述语言开发流程
用VHDL/VerilogHD语言开发PLD/FPGA的完整流程为:
1.文本编辑:用任何文本编辑器都可以进行,也可以用专用的HDL编辑环境。通常VHDL文件保存为.vhd文件,Verilog文件保存为.v文件
2.功能仿真:将文件调入HDL仿真软件进行功能仿真,检查逻辑功能是否正确(也叫前仿真,对简单的设计可以跳过这一步,只在布线完成以后,进行时序仿真)
3.逻辑综合:将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布尔表达式和信号的连接关系。逻辑综合软件会生成.edf(edif)的EDA工业标准文件。
4.布局布线:将.edf文件调入PLD厂家提供的软件中进行布线,即把设计好的逻辑安放到PLD/FPGA内
5.时序仿真:需要利用在布局布线中获得的精确参数,用仿真软件验证电路的时序。(也叫后仿真)
6.编程下载:确认仿真无误后,将文件下载到中
硬件描述语言的发展
硬件描述语言HDL的发展至今已有20多年的历史,并成功地应用于设计的各个阶段:建模、仿真、验证和综合等。到20世纪80年代,已出现了上百种硬件描述语言,对设计自动化曾起到了极大的促进和推动作用。但是,这些语言一般各自面向特定的设计领域和层次,而且众多的语言使用户无所适从。因此,急需一种面向设计的多领域、多层次并得到普遍认同的标准硬件描述语言。20世纪80年代后期,VHDL和Verilog HDL语言适应了这种趋势的要求,先后成为IEEE标准。
现在,随着系统级FPGA以及系统芯片的出现,软硬件协调设计和系统设计变得越来越重要。传统意义上的硬件设计越来越倾向于与系统设计和软件设计结合。硬件描述语言为适应新的情况,迅速发展,出现了很多新的硬件描述语言,像Superlog、SystemC、Cynlib C++等等。

一、HDL不是硬件设计语言 过去笔者曾碰到过不少VHDL或Verilog HDL的初学者问一些相似的问
题,诸如如何实现除法、开根号,如何写循环语句等等。
在这个论坛上,也时常能看到一些网友提出这一类的问题。 对于这些问题,首先要明确的是
VHDL和Veriglog并非是针对硬件设计而开发的语言,只不过目前被我们用来设计硬件。
HDL是Hardware Description Language的缩写,正式中文名称是“硬件描述语言”。也就是说,
HDL并不是“硬件设计语言(Hardware Design Language)”。别看只差这一个单词,正是这一个
单词才决定了绝大部分电路设计必须遵循RTL的模式来编写代码,而不能随心所欲得写仅仅符合
语法的HDL代码。
二、HDL的来历 之所以是“硬件描述语言”,要从HDL的来历说起。 VHDL于1980年开始在美国
国防部的指导下开发,完成于1983年,并于1987年成为IEEE的标准。当初开发这种语言,是出于
美国国防部采购电子设备的需要。美军的装备采购自私人企业,时常要面对这样一种风险:如果
某种武器大量装备部队,而其中某个零件的供应商却在几年后倒闭了,那这种武器的再生产、维
修和保养都会出现大问题。而电子设备、尤其是集成电路的内部结构较为复杂,若出现前面所说
的情况要找其他公司生产代用品非常困难。于是美国防部希望供应商能以某种形式留下其产品的
信息,以保证一旦其破产后能由其他厂商迅速生产出代用品。 显然,当初的设计文档显然是不
能交出来的,这在美国会涉及商业机密和知识产权问题。于是美国防部就想出了一种折衷的方法
——描述硬件的语言,也就是VHDL。通过VHDL,供应商要把自己生产的集成电路芯片的行为描述
出来:比如说,加了什么样的信号后过多少时间它能输出什么等等。这样,如果有必要让其他厂
商生产代用品,他们只需照着VHDL文档,设计出行为与其相同的芯片即可。这样的代用品相当于
是新厂商在不了解原产品结构的情况下独立设计的,所以不太会涉及知识侵权。 Verilog HDL也
形成于差不多的年代,是由Gateway Design Automation公司大约在1983年左右开发的。其架构
同VHDL相似,但主要被用来进行硬件仿真。或许私人公司更注重实用,Verilog要比VHDL简洁得
多。
由此可见,这两种最流行的用于电路设计的语言,没有一种是为了设计硬件而开发的(更何况80
年代还没有现在的那些功能强大的EDA软件呢)。因此,当初制订HDL语言标准的时候,并没有考
虑这些代码如何用硬件来实现。换句话说,有些代码写起来简单,实现起来却可能非常复杂,或
者几乎不可能实现。
三、HDL代码的可综合性 现在回到最初的问题上。为什么诸如除法、循环之类的HDL代码总是会
出错? 由上一部分可知,任何符合HDL语法标准的代码都是对硬件行为的一种描述,但不一定是
可直接对应成电路的设计信息。行为描述可以基于不同的层次,如系统级,算法级,寄存器传输
级(RTL)、门级等等。以目前大部分EDA软件的综合能力来说,只有RTL或更低层次的行为描述才
能保证是可综合的。而众多初学者试图做的,却是想让软件去综合算法级或者更加抽象的硬件行
为描述。 比如说,要想实现两个变量相除的运算,若在代码中写下C=A/B,你将会发现只有一些
模拟软件在前仿真中能正确执行这句代码,但几乎任何软件都不能将其综合成硬件。不要怪软件
太笨。试想一下,如果我们自己笔算除法是怎么做的?从高位到低位逐次试除、求余、移位。试
除和求余需要减法器,商数和余数的中间结果必须有寄存器存储;而此运算显然不能在一个时钟
周期里完成,还需要一个状态机来控制时序。一句简单的C=A/B同所有这些相比显得太抽象,对
于只能接受RTL或更低层次描述的EDA软件来说确实太难实现
。而如果代码是类似于(Verilog) always @(posedge clk) c<=A/B; 这样的,要求除法在一个时
钟延上完成,那更是不可能实现的。(注:有些FPGA的配套软件提供乘除法的运算模块,但也只
能支持直接调用,不支持把形如C=A/B的语句综合成除法模块。) 又比如,一个很多初学者常见
的问题是试图让HDL进行循环运算,形同(Verilog): for (i=0; iparity = parity xor data
[i]; 一些功能比较简单的综合软件会完全拒绝综合循环语句;而一些功能较强的软件仅当
wordlength是常数的时候能综合;当wordlength为变量时,任何软件都不能综合上面的语句。这
是因为硬件规模必须是有限的、固定的。
当综合软件遇到循环语句时,总是将其展开成若干条顺序执行的语句,然后再综合成电路。若
wordlength是常数,则展开的语句数是确定的,具有可综合性;而若它是变量时,展开的语句数
不确定,对应的硬件电路数量也不能确定,无法被综合。或许有人说用计数器就能实现变量循环
,但这情形又和上面的除法运算相同。那需要额外的硬件,用来存储中间结果和进行时序控制,
象上面那样的循环语句对此描述得太抽象,软件接受不了。
四、如何判断自己写的代码是可综合的? 用一句简单的话概括:电脑永远没有你聪明。具体来
说,通常EDA软件对HDL代码的综合能力总是比人差。对于一段代码,如果你不能想象出一个较直
观的硬件实现方法,那EDA软件肯定也不行。比如说,加法器、多路选择器是大家都很熟悉的电
路,所以类似A+B-C,(A>B)?C:D这样的运算一定可以综合。
**************************
而除法、开根、对数等等较复杂的运算,必须通过一定的算法实现,没有直观简单的实现方法,
则可以判断那些计算式是不能综合的,必须按它们的算法写出更具体的代码才能实现。
***************************
此外,硬件无法支持的行为描述,当然也不能被综合(比如想在FPGA上实现DDR内存那样的双延触
发逻辑,代码很容易写,但却不能实现)。 不过,这样的判断标准非常主观模糊,遇到具体情况
还得按设计人员自己的经验来判断。如果要一个相对客观的标准,一般来说:在RTL级的描述中
,所有逻辑运算和加减法运算、以及他们的有限次组合,基本上是可综合的,否则就有无法综合
的可能性。当然,这样的标准仍然有缺陷,更况且EDA的技术也在不断发展,过去无法综合的代
码或许将来行,某些软件不支持的代码换个软件或许行。比如固定次数的循环,含一个常数参数
的乘法运算等等,有些EDA软件支持对它们的综合,而有些软件不行。 所以,正确的判断仍然要
靠实践来积累经验。
当你可以较准确判断代码的可综合性的时候,你对HDL的掌握就算完全入门了。

fpga开发的语言是什么
答:fpga开发的语言是Verilog HDL。Verilog HDL是一种硬件描述语言,以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。Verilog的设计初衷是成为一种基本语法与C语言相近的硬件描述语言。这是因为C语言在Verilog设计之初,已经在许多...

硬件描述语言vhdl的特点是什么
答:采用 VHDL 语言描述硬件电路时,设计人员并不需要首先考虑选择进行设计的器件。这样做的好处是可以使设计人员集中精力进行电路设计的优化,而不需要考虑其他的问题。当硬件电路的设计描述完成以后,VHDL 语言允许采用多种不同的器件结构来实现。(5) VHDL语言程序易于共享和复用 VHDL 语言采用基于库 ( ...

FPGA和Zynq有什么区别?
答:FPGA 是一种硬件设备,它包含了大量可编程的逻辑门和资源,可以根据设计者的需求进行编程和配置。这意味着您可以根据特定应用的需求,以编程的方式创建和定制硬件电路。FPGA 可以用于各种不同的应用,包括数字信号处理、加密算法、嵌入式系统、通信设备等。它们通常以硬件描述语言(如VHDL或Verilog)编写,...

Verilog HDL与FPGA是什么关系啊?
答:Verilog HDL是一种硬件描述语言,FPGA是一种需要硬件描述语言来“编程”的硬件。它们之间的关系就像c语言之于计算机

计算机硬件描述语言(VHDL)与编程语言(C语言)的区别及关系,
答:首先说VHDL:它是描述电路的计算机工具,早期的CPLD等器件是基于与-或阵列的,更容易说明这点,VHDL是描述电路行为的,当下载到器件后,它就是具体的电路,这个电路全由与-或阵列组成。后期的FPGA也一样,只是它是基于查找表的。再说C语言:我们可以认为它是用于控制特定电路的工作。我们都知道可以C编程...

计算机硬件描述语言(VHDL)与编程语言(C语言)的区别及关系,
答:首先说VHDL:它是描述电路的计算机工具,早期的CPLD等器件是基于与-或阵列的,更容易说明这点,VHDL是描述电路行为的,当下载到器件后,它就是具体的电路,这个电路全由与-或阵列组成。后期的FPGA也一样,只是它是基于查找表的。再说C语言:我们可以认为它是用于控制特定电路的工作。我们都知道可以C编程...

在Verilog HDL设计中用什么表示异或
答:位运算符: ~:表示非;&:表示与; |:表示或; ^:表示异或; ^~:表示同或。Verilog一般全称指Verilog HDL,是用于数字逻辑设计硬件描述语言HDL的一种,普遍认为另一种是VHDL。Verilog可以进行数字逻辑的仿真验证、时序分析、逻辑综合,具有描述电路连接、电路功能、在不同抽象级上描述电路、描述电路...

如何用Verilog HDL语言实现Viterbi算法?
答:Verilog HDL是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。Verilog HDL 语言具有下述描述能力:设计的行为特性、设计的数据流特性...

想学一种硬件描述语言,但不知道学VHDL还是学AHDL,这两种语言有什么区别...
答:AHDL已经过时了,在现在用得还是比较少的是VHDL,用VERILOG的更多.

硬件描述语言是什么
答:硬件描述语言就是所谓的VHDL,在电子设计中有重要的应用。具体描述这里有:http://baike.baidu.com/view/1201.html?wtp=tt 补充:硬件描述语言可以在某个芯片中实现若干个芯片的功能。比如现在常用的CPLD芯片,他有很多个引脚,可以通过VHDL设计软件,让它实现众多与非门、触发器等等组合逻辑和时序逻辑的...