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

System verilog 试图了解更多关于verilog语言、vhdl和汇编语言的知识,system-verilog,System Verilog,我想知道verilog和汇编语言之间的区别是什么 下学期我们将学习微控制器,但我想在学期开始前学习一点。我一直在做大量关于低级编程的研究,到目前为止,我对汇编语言有了很好的理解,但我对理解Verilog和VHDL感到困惑?Verilog和VHDL是描述硬件的完全不同的语言,用于编程FPGA FPGA是可以动态编程以实现任何类型的数字逻辑(有时也可以是模拟逻辑)的设备 所以使用verilog或VHDL,我可以设计一个电路,创建一对锁存器,一些二进位加法器,一个mux和一个时钟源,然后突然间,你设计

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


下学期我们将学习微控制器,但我想在学期开始前学习一点。我一直在做大量关于低级编程的研究,到目前为止,我对汇编语言有了很好的理解,但我对理解Verilog和VHDL感到困惑?

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

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

所以使用verilog或VHDL,我可以设计一个电路,创建一对锁存器,一些二进位加法器,一个mux和一个时钟源,然后突然间,你设计了一个可以计算的电路。然后,您可以从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时,您可以让它实现您自己的自定义指令集。从那里,您可以将VHDL作为您的CPU,编译它,将其写入FPGA,并拥有自己的定制CPU。然后,您可以通过编写自定义汇编程序,开始使用自定义指令集为您的组合CPU编写程序。我在大学时的一些朋友这样做是为了取笑

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

  • 将值“1”加载到寄存器A中
  • 将值“2”加载到寄存器B中
  • 添加寄存器A和寄存器B,将结果存储在寄存器A中
(你刚刚加了1+2!呵呵)

这种计算模型碰巧是最流行的,但它不是进行计算的唯一方法。如果有一个基于堆栈的CPU,将值推送到硬件堆栈上,然后使用堆栈顶部的值进行计算,将结果推回到堆栈上,会怎么样

例如:

  • 将1推到堆栈上(堆栈当前包含:1)
  • 将2推到堆栈上(堆栈当前包含:2 1)
  • 将3推到堆栈上(堆栈当前包含:3 2 1)
    • “Add”获取堆栈顶部的两个元素,将它们相加,并将结果推送到堆栈顶部
    • 堆栈现在包含:5 1
    • 堆栈现在包含:6
整洁,不是吗?就计算模型而言,它有它的优点——操作数往往很短,并且需要更少的位。更小的指令意味着CPU可以更快

问题是这样的处理器已经不存在了

但是如果你知道你在做什么,你可以用VHDL设计一个,然后把它编程成FGPA,突然你就拥有了现存的唯一一个基于堆栈的处理器

比如说,如果你在做一篇硕士论文,你可能会仔细研究,发现基于虚拟机的编程语言,如C#和Java,可以编译成一个CPU的字节码,但实际上并不存在,但该CPU的模型对于使代码可移植非常有用。您可能会发现这些语言使用的虚拟机是基于堆栈的处理器模型的。如果您想做一些有趣的事情,也许可以用VHDL编写一个本机实现Java字节码语言的处理器。现在,您将是唯一拥有可以直接运行Java的计算机的人。

并且这两种语言(硬件描述语言)主要用于描述数字电子产品。他们的目标可能是或(定制硅)

另一方面,级别是使用处理器执行一系列计算。在计算机上执行的每一件事情最终都会成为一条汇编级指令。指令集的一个例子是


概述:,描述硬件。是在处理器上执行的低级程序。

您确实意识到汇编和verilog/vhdl与设置列车时刻表和铺设轨道有着相同之处。你的问题要更具体一些。告诉我们什么让你困惑,你尝试了什么,并修复标签。SystemVerilog与此问题无关。尝试组装verilog vhdl微控制器。