【发布时间】:2014-10-09 22:44:13
【问题描述】:
我来自编程背景,不太喜欢硬件或固件(最多有点电子和 Arduino)。
使用诸如 Verilog 和 VHDL 之类的硬件描述语言 (HDL) 而不是诸如 C 或某些汇编之类的编程语言的动机是什么?
这个问题完全是一个选择问题吗?
我读到了硬件,它的固件是用 HDL 编写的,在并行运行指令方面具有明显的优势。但是,我很惊讶地看到有人对 whether to write firmware in C or Assembly 表示怀疑的讨论(如果您不一定有 CPU,Assembly 怎么合适?)但我得出结论,这也是一种选择。
因此,我有几个问题(请毫不犹豫地解释一下):
固件真的可以用 HDL 或软件编程语言编写,还是只是执行相同任务的另一种方式?我喜欢现实世界的例子。每个选项会产生什么限制?
我知道固件优于软件的常见用途是硬件加速器(例如 GPU、网络适配器、SSL 加速器等)。据我了解,这种加速并不总是必要的,只是推荐使用(例如,在 SSL 和复杂算法加速的情况下)。在所有情况下都可以在固件和软件之间进行选择吗?如果不是,我很乐意看到固件明确且明确合适的情况。
我了解到固件大多烧录在 ROM 或闪存上。它在那里是如何表现的?以比特为单位,比如软件?如果是这样,有什么深刻的区别?在固件的情况下是否有适配电路的可用性?
我想我在某些假设中到处都犯了错误,请原谅我。谢谢!
【问题讨论】:
-
虽然存在一些重叠(状态机等),但 HDL 语言通常用于描述计算设备的 结构(最终称为“接线”),而语言例如 C 用于给它一个 list 任务以按顺序执行。 “固件”通常是指后者(基本上是存储在芯片中的“软件”与“磁盘”)——HDL 等价物是加载到 FPGA 中或用于指导定制的物理生产的“设计文件”我知道了。一个项目同时具有描述定制处理器的 HDL 和在其上运行的固件的情况并不少见。
标签: embedded verilog hdl firmware