我想知道verilog和汇编语言之间有什么区别。
下学期我们将使用微控制器,但我想在学期开始前学习一点。我一直在做很多关于低级编程的研究,到目前为止我已经在汇编语言方面有了很好的理解,但是我很难理解Verilog和VHDL?
答案 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 + 2!嘿)
这种计算模型恰好是最受欢迎的,但它不是你计算的唯一方法。如果您有一个基于堆栈的CPU,将值推送到硬件堆栈,然后计算使用堆栈顶部的值,将结果推回堆栈,该怎么办。
例如:
整洁不是吗?就计算模型而言,它有其优点 - 操作数往往很短,需要的位数较少。较小的指令意味着CPU可以更快。
问题是没有这样的处理器了。
但是如果你知道自己在做什么,你可以用VHDL设计一个,将它编程到FGPA,突然你就拥有了唯一一个基于堆栈的操作处理器。
比如说,如果你正在做硕士论文,你可能会四处寻找并发现像C#和Java这样的基于虚拟机的编程语言可以编译为一个字节码,而不是真正存在的CPU,但该CPU的模型证明有助于使代码可移植。您可能会发现这些语言使用的虚拟机器基于基于堆栈的处理器模型。如果您正在寻找有趣的事情,也许您在VHDL中编写一个本机实现Java字节码语言的处理器。现在,您将成为唯一拥有可以直接运行Java的计算机的人。
答案 1 :(得分:0)