Embedded 什么';在C上使用Verilog或VHDL的动机是什么?

Embedded 什么';在C上使用Verilog或VHDL的动机是什么?,embedded,verilog,hdl,firmware,Embedded,Verilog,Hdl,Firmware,我有编程背景,对硬件或固件(最多一点电子和Arduino)没有太多干扰 使用硬件描述语言(HDL),如Verilog和VHDL,而不是像C或某些汇编语言的动机是什么 这是一个选择的问题吗 我读到硬件,它的固件是用HDL写的,在并行运行指令方面有明显的优势。然而,我很惊讶地看到讨论中表达了怀疑(如果您不一定有CPU,那么组装如何合适?) 因此,我有几个问题(请毫不犹豫地解释): 固件真的可以用HDL或软件编程语言编写,或者只是执行相同任务的另一种方式?我很喜欢现实世界的例子。每个选项会产生哪些约束

我有编程背景,对硬件或固件(最多一点电子和Arduino)没有太多干扰

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

这是一个选择的问题吗

我读到硬件,它的固件是用HDL写的,在并行运行指令方面有明显的优势。然而,我很惊讶地看到讨论中表达了怀疑(如果您不一定有CPU,那么组装如何合适?)

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

  • 固件真的可以用HDL或软件编程语言编写,或者只是执行相同任务的另一种方式?我很喜欢现实世界的例子。每个选项会产生哪些约束

  • 我知道在硬件加速器(如GPU、网络适配器、SSL加速器等)中,固件比软件更常见。据我所知,这种加速并不总是必要的,只是建议(例如,在SSL和复杂算法加速的情况下)。在所有情况下都可以在固件和软件之间进行选择吗?如果不是的话,我很乐意在一些情况下,固件是明确和明确的适当

  • 我已经读到固件大部分烧录在ROM或flash上。它在那里是如何表现的?以比特为单位,比如软件?如果是的话,有什么深刻的区别?固件情况下是否有适配电路

  • 我想我在一些假设中犯了一些错误,请原谅我。谢谢大家!

    术语“固件”充其量是定义不清的,我相信这可能是您感到困惑的原因

    历史ym-在可编程逻辑设备可用之前,“固件”一词被用来指存储在只读存储器(ROM)中并从只读存储器(ROM)执行的代码。当时唯一可用的ROM技术是掩膜ROM,在硅制造时,代码被烧制到设备中,因此不更换芯片就无法更改,这相当“牢固”。即使是后来的可编程只读存储器(PROM),因为它是一次性可编程的(OTP),所以可以在制造后编程,但这个术语仍然适用

    随着UV可擦除EEPROM的引入,固件可能变得不那么“牢固”,但缺乏电路内可编程性以及需要将设备暴露在UV下进行擦除,这仍然使得更换嵌入式软件成为一件烦琐的事情-通常需要移除芯片,将其放入橡皮擦中一个小时左右,然后在一个专门的程序员中编程

    NOR闪存的出现,代码可以直接从设备存储和执行,但也可以在电路中随时更改,在这种情况下,术语固件变得不太常见。然而,它仍然被使用(可能主要由老从业者使用)来指代从随机访问只读存储器设备存储和执行的嵌入式软件,而不是从文件系统加载到RAM中

    术语“固件”指的是可编程逻辑配置,它的使用较新,可能仅仅是因为它是硬件,但配置的编写非常类似于使用高级语言的软件

    结果是你没有选择

    “Verilog和VHDL在C或某些汇编等编程语言上的应用”

    因为在每个上下文中,术语固件只是指不同的概念

    最好避免使用固件这个术语,因为它对不同的人或在不同的上下文中意味着不同的东西


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

    这个问题在一段时间之前不会出现太多,但在当前的平台上,您现在可以在C和HDL语言之间进行转换(从90年代开始,不再使用C的Handel-C扩展),主要是在C和行为VHDL之间,以及企业提供的许多较新工具,如Xilinx电子系统级设计生态系统或Pulse-C()

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

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


    在这两种语言中,您都关心资源的使用,但方式不同(除非您是为资源受限的设备编程)。但是当涉及到VHDL时,除了内存之外,FPGA中的其他逻辑元素也受到限制(通常将VHDL代码放在FPGA中)。

    虽然存在一些重叠(状态机等),HDL语言通常用于描述计算设备的结构(最终称为“布线”),而C等语言则用于为其提供按分支顺序依次执行的任务列表。“固件”通常指后者(基本上是存储在芯片中的“软件”与“磁盘”)—HDL等价物是“设计文件"要么加载到FPGA中,要么用于指导定制IC的物理生产。一个项目既有HDL来描述定制处理器,又有固件在其上运行,这并不少见。您似乎认为Handel-C已经过时,不再相关。它仍然是Mentor Graphic的核心。如果您从上世纪90年代起就没有使用过它90年代你可能不知道它有多强大