【问题标题】:What's the motivation in using Verilog or VHDL over C?在 C 上使用 Verilog 或 VHDL 的动机是什么?
【发布时间】:2014-10-09 22:44:13
【问题描述】:

我来自编程背景,不太喜欢硬件或固件(最多有点电子和 Arduino)。

使用诸如 Verilog 和 VHDL 之类的硬件描述语言 (HDL) 而不是诸如 C 或某些汇编之类的编程语言的动机是什么?

这个问题完全是一个选择问题吗?

我读到了硬件,它的固件是用 HDL 编写的,在并行运行指令方面具有明显的优势。但是,我很惊讶地看到有人对 whether to write firmware in C or Assembly 表示怀疑的讨论(如果您不一定有 CPU,Assembly 怎么合适?)但我得出结论,这也是一种选择。

因此,我有几个问题(请毫不犹豫地解释一下):

  1. 固件真的可以用 HDL 或软件编程语言编写,还是只是执行相同任务的另一种方式?我喜欢现实世界的例子。每个选项会产生什么限制?

  2. 我知道固件优于软件的常见用途是硬件加速器(例如 GPU、网络适配器、SSL 加速器等)。据我了解,这种加速并不总是必要的,只是推荐使用(例如,在 SSL 和复杂算法加速的情况下)。在所有情况下都可以在固件和软件之间进行选择吗?如果不是,我很乐意看到固件明确且明确合适的情况。

  3. 我了解到固件大多烧录在 ROM 或闪存上。它在那里是如何表现的?以比特为单位,比如软件?如果是这样,有什么深刻的区别?在固件的情况下是否有适配电路的可用性?

我想我在某些假设中到处都犯了错误,请原谅我。谢谢!

【问题讨论】:

  • 虽然存在一些重叠(状态机等),但 HDL 语言通常用于描述计算设备的 结构(最终称为“接线”),而语言例如 C 用于给它一个 list 任务以按顺序执行。 “固件”通常是指后者(基本上是存储在芯片中的“软件”与“磁盘”)——HDL 等价物是加载到 FPGA 中或用于指导定制的物理生产的“设计文件”我知道了。一个项目同时具有描述定制处理器的 HDL 和在其上运行的固件的情况并不少见。

标签: embedded verilog hdl firmware


【解决方案1】:

“固件”一词充其量定义不明确,我相信这可能是您感到困惑的原因。

从历史上看 - 在可编程逻辑设备出现之前 - 术语“固件”已用于指代存储在只读存储器 (ROM) 中并从其执行的代码。在当时唯一可用的 ROM 技术是 mask-ROM 时,代码在制造硅时被烧入设备中,因此在不更换芯片的情况下无法更改 - 这是相当“牢固”的。即使使用后来的可编程只读存储器 (PROM),因为它是一次性可编程 (OTP),所以该术语仍然适用,因为它可以在制造后进行编程。

随着 UV 可擦除 EEPROM 的推出,固件可能变得不那么“牢固”了,但缺乏在线可编程性以及需要将设备暴露于 UV 以擦除它仍然使替换嵌入式软件成为一件苦差事——通常需要移除芯片,将其放在橡皮擦中一个小时左右,然后在专用编程器中对其进行编程。

NOR 闪存的出现,代码可以直接从设备存储和执行,但也很容易更改电路内,在此上下文中的术语固件已经变得不那么常见了。然而,它仍然(可能主要由老从业者使用)指代从随机访问、只读存储设备存储和执行的嵌入式软件,而不是从文件系统加载到 RAM 中。

使用术语固件来指代可编程逻辑配置是较新的,并且可能仅仅是因为它是硬件,但配置的编写方式很像软件使用高级语言。

这样做的结果是你不选择

“Verilog 和 VHDL 优于 C 或某些汇编等编程语言”

因为在每种情况下,固件 一词只是指不同的概念。

最好完全避免使用固件这个词,因为它对不同的人或在不同的环境中意味着不同的东西。

由于某些硬件描述语言是基于软件开发语言的事实可能会造成一些进一步的混淆 - 例如Handle C,它是一个C -类似硬件描述语言。

【讨论】:

    【解决方案2】:

    这个问题在不久前不会出现太多,但使用当前平台,您现在可以在 C 和 HDL 语言之间进行翻译(而不是使用 90 年代 C 的 Handel-C 扩展),主要是在 C 和行为 VHDL 之间进行翻译。还有很多企业提供的更新工具,比如 Xilinx 电子系统级设计生态系统,或者 Impulse-C (http://www.impulseaccelerated.com/products_universal.htm)

    重要的是要知道,因为 C 是一种中级语言,而 VHDL 是一种硬件描述语言。 C 只能处理顺序指令,而 VHDL 允许顺序和并发执行。

    即使可以用纯逻辑或算法思维成功编写 C 程序, 一个成功的 VHDL 程序员需要对硬件电路有全面的工作知识。能够预测给定代码将如何在硬件中实现。

    在这两种语言中,您都关心资源使用情况,但方式不同(除非您正在为资源受限的设备进行编程)。但是对于 VHDL,除了内存之外,其他逻辑元素都限制在 FPGA 中(通常将 VHDL 代码放入其中)。

    【讨论】:

    • 您似乎暗示 Handel-C 可能已过时且不再相关。它仍然是 Mentor Graphic 的 DK Design Suite 的核心。如果您从 90 年代开始就没有使用过它,您可能不知道它的强大功能,尤其是在优化方面。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多