试图了解更多关于verilog语言,vhdl和汇编语言的知识

时间:2014-01-03 19:45:48

标签: system-verilog

我想知道verilog和汇编语言之间有什么区别。

下学期我们将使用微控制器,但我想在学期开始前学习一点。我一直在做很多关于低级编程的研究,到目前为止我已经在汇编语言方面有了很好的理解,但是我很难理解Verilog和VHDL?

2 个答案:

答案 0 :(得分:5)

Verilog和VHDL是用于描述硬件的完全不同的语言,用于编程FPGA。

FPGA是可以实时编程实现任何类型的数字逻辑(有时也是模拟)的设备。

因此,使用verilog或VHDL,我可以设计一个创建一对锁存器,一些二进制补码加法器,一个多路复用器和一个时钟源的电路,突然之间你就设计了一个可以计算的电路。然后,您可以从VHDL编译器(或其任何调用的)获取输出,将其“下载”到FPGA,现在您实际上有一些可用于计算的硬件。

当然,您可以使用FPGA来实现各种复杂的东西 - 甚至是完全自定义的CPU。一个使用verilog和VHDL来设计编程到FPGA的电路。这些电路可以实现像纹波计数器这样简单的东西,或像LCD驱动器那样更复杂的东西,或像USB收发器那样更复杂的东西。您可以从简单的几个锁存器到完全运行的CPU一样复杂;只要是数字硬件,您就可以用VHDL和一些FPGA做任何你想做的事。

进一步澄清 -

“汇编语言”通常是指给予某种CPU的原始指令。当然,有许多不同类型的CPU(x86,ARM,SPARC,MIPS)以及这些类型的CPU的更多不同变体。每个CPU都有自己的指令集。

机器代码完整,完全指定,准备执行指令。汇编语言允许您以纯文本形式从CPU指令集中键入指令,使用标签等,并描述程序的存储器布局结构。将组件放入汇编程序,然后在CPU机器指令集中输出机器代码。

您可以使用VHDL从头开始设计自己的CPU。在设计CPU时,您可以实现自己的自定义指令集。从那里,您可以为您的CPU采用VHDL,编译它,将其写入FPGA并拥有您自己的自定义CPU。然后,您可以通过编写自定义汇编程序,使用自定义指令集开始为编写的CPU编写程序。我大学的一些朋友这样做是为了咯咯地笑。

例如,您知道大多数CPU是如何加载存储的,基于寄存器的CPU吗?说明往往是这样的:

  • 将值'1'加载到寄存器A
  • 将值'2'加载到寄存器B
  • 添加寄存器A和寄存器B,将结果存储在寄存器A

(你刚加了1 + 2!嘿)

这种计算模型恰好是最受欢迎的,但它不是你计算的唯一方法。如果您有一个基于堆栈的CPU,将值推送到硬件堆栈,然后计算使用堆栈顶部的值,将结果推回堆栈,该怎么办。

例如:

  • 将1推入堆栈(堆栈电流包含:1)
  • 将2推入堆栈(堆栈电流包含:2 1)
  • 将3推入堆栈(堆栈当前包含:3 2 1)
  • 添加
    • '添加'获取堆栈中的前两个元素,将它们一起添加,并将结果推送到堆栈顶部。
    • Stack现在包含:5 1
  • 添加
    • Stack现在包含:6

整洁不是吗?就计算模型而言,它有其优点 - 操作数往往很短,需要的位数较少。较小的指令意味着CPU可以更快。

问题是没有这样的处理器了。

但是如果你知道自己在做什么,你可以用VHDL设计一个,将它编程到FGPA,突然你就拥有了唯一一个基于堆栈的操作处理器。

比如说,如果你正在做硕士论文,你可能会四处寻找并发现像C#和Java这样的基于虚拟机的编程语言可以编译为一个字节码,而不是真正存在的CPU,但该CPU的模型证明有助于使代码可移植。您可能会发现这些语言使用的虚拟机器基于基于堆栈的处理器模型。如果您正在寻找有趣的事情,也许您在VHDL中编写一个本机实现Java字节码语言的处理器。现在,您将成为唯一拥有可以直接运行Java的计算机的人。

答案 1 :(得分:0)

VerilogVHDL都是HDL(硬件描述语言),主要用于描述数字电子产品。他们的目标可能是FPGAASIC(自定义芯片)。

另一方面,

Assembly级别使用处理器instruction set来执行一系列计算。在计算机上执行的每一件事最终都会以汇编级指令结束。指令集的一个示例是x86 ISA

摘要:VerilogVHDL描述硬件。 Assembly是在处理器上执行的低级程序。