硬件描述语言和一般的高级语言有什么不同?

作者&投稿:拱奋 (若有异议请与网页底部的电邮联系)
硬件描述语言与高级编程语言有何区别?~

用途不一样
VHDL等硬件描述语言主要用于CPLD、FPGA的大规模可编程逻辑器件

而C语言等高级编程语言主要用于计算机等方面

机器语言 (Machine language)

机器语言Machine Language(低级语言)

机器语言是计算机唯一能接受和执行的语言。机器语言由二进制码组成,每一串二进制码叫做一条指令。一条指令规定了计算机执行的一个动作。一台计算机所能懂得的指令的全体,叫做这个计算机的指令系统。不同型号的计算机的指令系统不同。

指令通常由几个字节组成,第一个字节是操作码,它规定了计算机要执行的基本操作;后面的字节是操作数,它规定了操作对象或操作对象的地址。

机器语言是直接用二进制代码指令表达的计算机语言,指令是用0和1组成的一串代码,它们有一定的位数,并分成若干段,各段的编码表示不同的含义,例如某台计算机字长为16位,即有16个二进制数组成一条指令或其它信息。16个0和1可组成各种排列组合,通过线路变成电信号,让计算机执行各种不同的操作。

如某种计算机的指令为1011011000000000,它表示让计算机进行一次加法操作;而指令1011010100000000则表示进行一次减法操作。它们的前八位表示操作码,而后八位表示地址码。从上面两条指令可以看出,它们只是在操作码中从左边第0位算起的第6和第7位不同。这种机型可包含256(=28)个不同的指令。

机器语言或称为二进制代码语言,计算机可以直接识别,不需要进行任何翻译。每台机器的指令,其格式和代码所代表的含义都是硬性规定的,故称之为面向机器的语言,也称为机器语言。它是第一代的计算机语言。机器语言对不同型号的计算机来说一般是不同的。

使用机器语言编写程序是一种相当烦琐的工作,既难于记忆也难于操作,编写出来的程序全是由0和1的数字组成,直观性差、难以阅读。不仅难学、难记、难检查、又缺乏通用性,给计算机的推广使用带来很大的障碍。

最早的程序设计语言都采用机器语言来编写。当时,要在计算机上运行的所有算法都必须直接用机器语言来表达,计算机才能接受。算法的运算序列包括运算对象和运算结果都必须转换为指令序列。其中的每一条指令都以编码(指令码和地址码)的形式出现。与算法语言表达的算法,相差十万八千里。对于没受过程序设计专门训练的人来说,一份程序恰似一份"天书",让人看了不知所云,可读性极差。

用机器语言表达算法的运算、数据和控制十分繁杂琐碎,因为机器语言所提供的指令太初等、原始。机器语言只接受算术运算、按位逻辑运算和数的大小比较运算等。对于稍复杂的运算,都必须一一分解,直到到达最初等的运算才能用相应的指令替代之。机器语言能直接表达的数据只有最原始的位、字节、和字三种。算法中即使是最简单的数据如布尔值、字符、整数、和实数,也必须一一地映射到位、字节和字中,还得一一分配它们的存储单元。对于算法中有结构的数据的表达则要麻烦得多。机器语言所提供的控制转移指令也只有无条件转移、条件转移、进入子程序和从子程序返回等最基本的几种。用它们来构造循环、形成分支、调用函数和过程得事先做许多的准备,还得靠许多的技巧。

直接用机器语言表达算法有许多缺点。

Ø 大量繁杂琐碎的细节牵制着程序员,使他们不可能有更多的时间和精力去从事创造性的劳动,执行对他们来说更为重要的任务。如确保程序的正确性、高效性。

Ø 程序员既要驾驭程序设计的全局又要深入每一个局部直到实现的细节,即使智力超群的程序员也常常会顾此失彼,屡出差错,因而所编出的程序可靠性差,且开发周期长。

Ø 由于用机器语言进行程序设计的思维和表达方式与人们的习惯大相径庭,只有经过较长时间职业训练的程序员才能胜任,使得程序设计曲高和寡。

Ø 因为它的书面形式全是"密"码,所以可读性差,不便于交流与合作。

Ø 因为它严重地依赖于具体的计算机,所以可移植性差,重用性差。

这些弊端造成当时的计算机应用未能迅速得到推广。



汇编语言(Assember language)
汇编语言Assembler Language(低级语言)

为了克服机器语言上述的缺点,出路在于程序设计语言的抽象,让它尽可能地接近于算法语言。为此,人们首先注意到的是可读性和可移植性,因为它们相对地容易通过抽象而得到改善。于是,很快就出现汇编语言。这种语言对机器语言的抽象,首先表现在将机器语言的每一条指令符号化:指令码代之以记忆符号,地址码代之以符号地址,使得其含义显现在符号上而不再隐藏在编码中,可让人望"文"生义。其次表现在这种语言摆脱了具体计算机的限制,可在不同指令集的计算机上运行,只要该计算机配上汇编语言的一个汇编程序。这无疑是机器语言朝算法语言靠拢迈出的一步。但是,它离算法语言还太远,以致程序员还不能从分解算法的数据、运算和控制到汇编才能直接表达的指令等繁杂琐碎的事务中解脱出来。

用能反映指令功能的助记符表达的计算机语言叫汇编语言。它是符号化了的机器语言。用汇编语言编写的程序叫汇编语言源程序,计算机无法执行。必须用汇编程序把它翻译成机器语言目标程序,计算机才能执行。这个翻译过程称为汇编过程。

汇编语言是用助记符表示指令功能的计算机语言。与机器语言相比,汇编语言具有以下的几个特点:第一,它使用符号来表示操作码和地址码,这种符号便于记忆,称为记忆码。第二,汇编程序自动处理存储分配,毋需程序员做存储分配工作。第三,程序员可以直接书写十进制数`

例如,要计算c=7+8,可以用如下几条汇编命令:

标号 指令 说明

START GET 7; 把7送进累加器ACC中

ADD 8; 累加器ACC+8送进累加器ACC中

PUT C; 把累加器ACC送进C中

END STOP; 停机

其中(ACC)表示累加器中的值,等等。

如此简单的汇编语言,只是符号形式的机器语言,但用它来编写程序或阅读已经编写好的程序比起机器语言来要简单和方便多了。这就是计算机语言发展中的第二代语言—汇编语言。人们使用这种助记符编写程序后,要是计算机能够接受,还必须把编好的程序逐条翻译成二进制编码的机器语言。当然,这个工作并不是有程序员来完成,而是有称为“汇编程序”的程序自动完成的。汇编程序的功能就是把由汇编语言编写的程序(称为汇编语言源程序)翻译成机器语言程序,计算机才能执行该程序。这个翻译过程称为汇编。

汇编语言比起机器语言在很多方面都有很大的优越性,如编写容易、修改方便、阅读简单、程序清楚等,但在计算机语言系统中,把汇编语言仍然列入“低级语言”的范畴,它仍然是属于面向机器的语言,也就是说,不同的计算机可以有不同的指令集。

高级语言(High-level language)
高级语言

机器语言和汇编语言都是面向机器的,高级语言是面向用户的。到了50年代中期,出现程序设计的高级语言如Fortran,Algol60,以及后来的PL/l,Pascal等,算法的程序表达才产生一次大的飞跃。用高级语言编写的程序叫做高级语言源程序,必须翻译成机器语言目标程序才能被计算机执行。高级语言的翻译有两种方式:编译方式和解释方式。

Ø 编译方式:先由编译程序把高级语言源程序翻译成目标程序,执行时运行目标程序。

Ø 2.解释方式:在运行高级语言源程序时,由解释程序对源程序边翻译边执行。

诚然,算法最终要表达为具体计算机上的机器语言才能在该计算机上运行,得到所需要的结果。但汇编语言的实践启发人们,表达成机器语言不必一步到位,可以分两步走或者可以筑桥过河。即先表达成一种中介语言,然后转成机器语言。汇编语言作为一种中介语言,并没有获得很大成功,原因是它离算法语言还太远。这便指引人们去设计一种尽量接近算法语言的规范语言,即所谓的高级语言,让程序员可以用它方便地表达算法,然后借助于规范的高级语言到规范的机器语言的"翻译",最终将算法表达为机器语言。而且,由于高级语言和机器语言都具有规范性,这里的"翻译"完全可以机械化地由计算机来完成,就像汇编语言被翻译成机器语言一样,只要计算机配上一个编译程序。

上述两步,前一步由程序员去完成,后一步可以由编译程序去完成。在规定清楚它们各自该做什么之后,这两步是完全独立的。它们各自该如何做互不相干。前一步要做的只是用高级语言正确地表达给定的算法,产生一个高级语言程序;后一步要做的只是将第一步得到的高级语言程序翻译成机器语言程序。至于程序员如何用高级语言表达算法和编译程序如何将高级语言表达的算法翻译成机器语言表达的算法,显然毫不相干。

为了解决低级语言的缺点,人们为了从根本上摆脱语言对机器的依赖,使之独立于机器,由面向机器改为面向过程,经过多年精心的研究,终于在1954年首先创造出一种与具体的计算机指令系统无关的、表达方式或接近于人们对求解过程或问题的描述方式,且易于掌握和书写的语言,这就是FORTRAN语言。人们把具有以上特点的语言称为高级语言,这就是计算机语言系统中的第三代语言。

例如计算A=1+2,若用高级语言(如BASIC语言)编写,只要两条语句:

10 A=1+2

11 END

就可以完成A=1+2的操作。这种语言,人们易于掌握和理解,即使小学生也容易掌握,便于推广,它不再是面向机器,而是“面向过程”,即用户不仅要告诉计算机“做什么”,还要告诉计算机“怎么做”,也就是把每一步操作事先设计好,然后再编写程序,让计算机按照指定的步骤去执行。目前,世界上已经有几百种不同类型、功能各异的高级语言。使用较多的有:

BASIC

FORTRAN

PASCAL

C

PL/I

ADA

LISP

程序设计语言从机器语言到高级语言的抽象,带来的主要好处是:

高级语言接近算法语言,易学、易掌握,一般工程技术人员只要几周时间的培训就可以胜任程序员的工作;
高级语言为程序员提供了结构化程序设计的环境和工具,使得设计出来的程序可读性好,可维护性强,可靠性高;
高级语言远离机器语言,与具体的计算机硬件关系不大,因而所写出来的程序可移植性好,重用率高;
由于把繁杂琐碎的事务交给了编译程序去做,所以自动化程度高,开发周期短,且程序员得到解脱,可以集中时间和精力去从事对于他们来说更为重要的创造性劳动,以提高程序的质量。

一、语言构成不同

1、硬件描述语言:是电子系统硬件行为描述、结构描述、数据流描述的语言。

2、高级语言:其语法和结构更类似汉字或者普通英文,且由于远离对硬件的直接操作,使得一般人更容易学习。    

二、语言特点不同

1、硬件描述语言:是对电路系统的结构、行为的标准文本描述。硬件描述语言和一些并行编程语言一样存在并行性的表达方式。

2、高级语言:较接近自然语言和数学公式的编程,基本脱离了机器的硬件系统,用人们更易理解的方式编写程序。


三、优势不同

1、硬件描述语言:利用这种语言,数字电路系统的设计可以从顶层到底层(从抽象到具体)逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。

2、高级语言:与计算机的硬件结构及指令系统无关,有更强的表达能力,可方便地表示数据的运算和程序的控制结构,能更好的描述各种算法,而且容易学习掌握。


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

参考资料来源:百度百科-高级语言



高级语言更贴近人类使用得语言,硬件语言就是机器代码,由0,1组成

硬件描述语言就是可以描述硬件电路的功能,信号的连接关系及定时(时序)关系的语言,也是一种形式化方法来描述数字电路和设计数字系统的语言,目前最主流的是VHDL和Verilog HDL两种

  硬件描述语言和高级语言的区别:
  硬件描述语言最终靠硬件电路实现,高级软件语言靠CPU运算实现对于一个设计,编写硬件描述语言其实就是在画电路原理图,首先要清楚电路是怎么实现的,再去动手写HDL, 而不能先去用高级软件语言的思路写,再改成硬件描述语言。
  如果连电路都画不出来,就不要动手去写HDL,把电路想好了再动手。
  现在QuartusII,ISE,Synplify pro都有RTL View功能,软件可以自动显示硬件描述语言对应的电路图,经常使用这个功能,就可以理解硬件描述语言和电路的关系,时间长了,就会熟能生巧。

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

Verilog HDL和VHDL的区别?
答:目前版本的 Verilog HDL 和 VHDL 在行为级抽象建模的覆盖面范围方面有所不同。一般认为 Verilog 在系统级抽象方面要比 VHDL 略差一些,而在门级开关电路描述方面要强的多。近 10 年来, EDA 界一直在对数字逻辑设计中究竟用哪一种硬件描述语言争论不休,目前在美国,高层次数字系统设计领域中,应用 ...

你知道工业机器人是用什么语言编程的吗?
答:MATLAB是非常受欢迎的一些机器人工程师分析数据和开发控制系统。还有一个非常受欢迎的机器人工具箱用于MATLAB。使用MATLAB开发整个机器人系统的人,如果要分析数据,生成高级图形或实现控制系统,需要学习MATLAB。6.硬件描述语言(HDL)硬件描述语言基本上是描述电子设备的编程方式。这些语言对于一些机器人专家来...

常见的硬件描述语言有哪些
答:随着系统级 FPGA 以及系统芯片的出现,软硬件协调设计和系统设计变得越来越重要。传统意义上的硬件设计越来越倾向于与系统设计和 软件设计结合。硬件描述语言为适应新的情况,迅速发展,出现了很多新的硬件描述语言,像 Superlog 、 SystemC 、 Cynlib C++ 等等。

高级语言与机器语言的主要区别
答:可作为高级语言的一个外部过程或函数,利用堆栈来传递参数或参数的地址。2、机器语言:是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。是计算机的设计者通过计算机的硬件结构赋予计算机的操作功能。参考资料来源:百度百科-机器语言 参考资料来源:百度百科-高级语言 ...

机器语言、汇编语言和高级语言的区别
答:它主要是面向硬件,比c语言等高级语言要低级点,比机器语言(就是计算机能直接执行的程序,我们编的程序都要翻译成机器语言才能执行)要高级点。‍高级语言高级语言是编一些应用软件,与硬件不直接打交道的语言,比较直接,医懂,一般人都用高级语言编写程序。数据传送语句在高级语言中,数据的传送语句就简单多...

对比说明机器语言、汇编语言和高级语言,并举例说明.
答:依赖于计算机硬件,程序的可读性和可移植性差;高级语言 ---面向问题、面向对象的语言 就是“算法语言”,它“不是面向机器的,而是面向问题的”,不依赖于具体机器,具有良好的通用性.高级语言的表达方式接近于被描述的问题,又由于接近于自然语言和数学语言,从而易于为人们接受掌握和书写.高级语言的显著特点...

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

硬件描述语言vhdl的特点是什么
答:VHDL语言能够成为标准化的硬件描述语言并获得广泛应用,它自身必然具有很多其他硬件描述语言所不具备的优点。归纳起来,VHDL 语言主要具有以下优点:(1)VHDL语言功能强大,设计方式多样 VHDL 语言具有强大的语言结构,只需采用简单明确的VHDL语言程序就可以描述十分复杂的硬件电路。同时,它还具有多层次的电路...

机器语言汇编语言高级语言各有什么特点
答:高级语言有更强的表达能力,可方便地表示数据的运算和程序的控制结构,能更好的描述各种算法,而且容易学习掌握。但它编译生成的程序代码一般比用汇编程序语言设计的程序代码要长,执行的速度也慢。特点:接近于自然语言和数学语言,容易为人们掌握;独立于机 器,有一定的通用性;计算机不能直接识别和执行...