大多数工程师通过学习微控制器开始嵌入式系统培训。微控制器在单个集成电路上需要一个完整的微型计算系统。CPU、RAM、ROM 和输入/输出外围设备都在一个拇指大小的片上系统 (SoC) 上——包含所有或大部分电子元件的集成电路。 除了组件之外,嵌入式设计的另一部分涉及软件开发。微控制器(和微处理器)有一个在大小和操作上保持固定的指令集,这意味着工程师通过汇编语言或嵌入式 C 使用相同的指令来解决计算任务,通常用于实际应用程序。 好消息是,如果有编程语言方面的经验,使用微控制器学习起来相对简单。流行的版本,如 AVR、8051、PIC 和 ARM,使工程师能够接触到嵌入式系统的软件开发方面。因此,有几种选择。 然而,还有另一种嵌入式软件开发方法是微控制器所不具备的能力:基于硬件的嵌入式设计。为此,需要现场可编程门阵列 (FPGA)。 FPGA 由 Xilinx 于 1984 年发明。它们是包含数百万个逻辑门的集成电路,这些逻辑门以电子方式配置以执行特定任务(这意味着门是现场可编程的)。 让我们将 FPGA 与计算机进行比较。计算机(可以是微控制器、微处理器或图形处理器)是一种基于指令集执行任务的数字电子电路。这些指令包含由计算机的数字电路在数据上实现的机器代码,其中数据在寄存器或存储芯片上存储和操作。 或者,FPGA 将设计带到硬件中,因此工程师可以从架构级别设计一个(简单的)计算设备来执行特定的任务或应用程序。 微控制器与 FPGA
尽管 FPGA 通常用于设计数字电路以执行简单的计算任务,但在计算方面它无法与微控制器相提并论。微控制器和微处理器是真正的具有复杂架构的计算设备。 FPGA 可与专用集成电路 (ASIC) 相媲美,并可与其一起工作。ASIC 是为特定任务定制的,而不是用于一般用途。事实上,任何 ASIC 功能都可以在 FPGA 上定制设计和制造。 微控制器让具有汇编或高级编程语言专业知识的工程师为计算机设计软件,而 FPGA 允许设计简单的计算设备。这种基于硬件的嵌入式设计需要对数字电路和计算机体系结构有详细的了解。 语言上的一些差异: - 微控制器使用汇编语言或高级语言(例如“C”)进行编程,然后将其转换为机器代码以在 CPU 上执行。
- FPGA 芯片使用 Verilog 或超高速集成电路硬件描述语言 (VHDL) 进行编程。VHDL 被转换为在 FPGA 芯片上制造的数字逻辑块,以设计用于特定应用的定制计算机。通过使用 VHDL 或 Verilog,工程师可以从根级别设计数据路径和算术逻辑单元 (ALU) 硬件。如果有足够的逻辑块来支持设计,甚至可以在 FPGA 上设计微控制器。
首先了解微控制器和微处理器是有意义的,因为了解计算机如何运行以及如何编程以执行特定任务非常重要。微控制器、FPGA 和 CPLD(复杂可编程逻辑设备)是独立的嵌入式系统,各有优缺点。 FPGA 将这种知识扩展到硬件电路,了解如何构建计算机。 FPGA 的优势
FPGA 不仅可以作为学习数字设计和计算机体系结构的一种方式,而且这些芯片还可以在嵌入式系统工程中提供实际应用。它们提供了 ASIC 的替代方案,具有某些优势…… 多线程。 FPGA 可以同时或以并行形式处理多条指令。与微控制器相比,这是一个很大的优势,微控制器一次只能按顺序执行一条指令。这意味着 FPGA 在处理任务时通常要快得多。由于这些过程在硬件级别进行逻辑编码,因此 FPGA 芯片非常适合专用或专业应用,包括预处理传感器数据、密码学、逻辑电路设计、数字音频应用、视频流等。 另一方面,微控制器具有带有专用指令集的通用架构,这使得它们更适合以较慢的速度解决可能需要标准接口的复杂计算任务。 总的来说,由于这种多线程特性,当应用程序中要处理的数据量很大时,FPGA 具有优势。如今,FPGA 板可提供内置 CPU,因此特定应用程序处理只需要设计逻辑。 灵活性和设计范围。 任何数字电路,无论复杂程度如何,都可以在 FPGA 上设计,前提是该芯片包含足够数量的逻辑块来模拟设计。因此,从技术上讲,FPGA 可用于设计任何外围设备或执行任何计算任务。 它们还可以被编程为具有多个定时器、通道 UART 或通道脉冲宽度调制 (PWM) 发生器——这与不提供这种灵活性的微控制器不同。这是因为无法更改微控制器中的芯片组以适应应用程序。相反,它们具有通用计算单元和内置外围设备(例如定时器、GPIO、中断和串行接口)。 FPGA 的这种灵活性为专门设计的工程师提供了更大的能力。 模拟因素。通常,在任何嵌入式系统中,控制器或处理器与提供模拟输入的传感器或需要来自控制器或处理器的模拟输出的执行器耦合。 现场可编程模拟阵列 (FPAA) 也是让设计人员对复杂模拟电路进行编程的一种选择。许多 FPGA 芯片都包含 FPAA,因此可以针对数字电路对芯片进行编程并处理模拟信号。这些混合信号芯片包含模数转换器 (ADC) 或数模转换器 (DAC) 外围设备,以及模拟信号调节块。 此类设备中的输出引脚可以根据该引脚上负载的需要,针对驱动强度和转换速率进行编程。这是 FPGA 如何提供更大灵活性的另一个示例,能够为特定应用提供模拟编程。 可重用性。FPGA 可以重新编程以模拟任何其他数字(或模拟)电路,因此电路永远不会固定。当芯片上电时,根据配置数据的数字设计被加载到芯片上。每次芯片上电时都会发生这种情况。 下一次启动新设计时可以更改配置数据。由于芯片是可重复使用的,工程师可以在同一芯片上无休止地试验不同的数字设计。 单芯片解决方案。FPGA 为应用程序提供单芯片解决方案。这不同于通常必须与其他外围设备(可能不是内置的)、接口或 ASIC 接口的微控制器。 实时处理。FPGA 不是通用计算 IC,而是用于在芯片上设计专用计算设备。与运行程序(机器代码)的微控制器不同,数据路径和 ALU 在 FPGA 上制造以解决计算任务。 这意味着 FPGA 不是运行程序,而是被编程为执行特定任务。这种在硬件级别执行的逻辑允许实时处理数据和信息。这就是为什么 FPGA 通常用于高速、关键的应用程序,在这些应用程序中,微控制器可能会因为依赖代码在指令集有限的固定架构上运行而出现故障。 鉴于这些优势,FPGA 是高速并行处理的理想选择,在这些情况下,要处理的数据量很大,或者处理芯片需要定制的外围设备、可配置的模拟输出或时间关键的专用应用程序(这在其他情况下是不可能的)通用 CPU)。 FPGA 提供了对复杂集成设计的访问,否则这些设计只能以高昂的工程成本获得。这种芯片就像信用*大小板上的微型半导体铸造厂。 在实际应用中,FPGA 用于产量较低的特定垂直领域。它广泛用于 ASIC 设计原型制作,通常无需冗长的制造过程即可快速上市。 常见应用包括数字信号处理、图像处理、生物信息学、密码学、软件设计的无线电、医学成像、语音识别、电信、数据中心、航空航天电子和安全系统。 相比之下,微控制器用于一般嵌入式应用,例如汽车、消费和工业电子产品、通信系统等。 FPGA 的缺点
FPGA有一些明显的缺点,具体取决于应用。这些包括复杂性、高功率要求和价格点。 成本——FPGA 板比微控制器成本更高(大约 50 美元,而 10 美元或更低)。这是嵌入式设计培训课程开始时通常不讨论 FPGA 芯片的原因之一。 然而,FPGA 是可重复使用的,从而赋予它们更大的长期价值,特别是对于研发或原型目的。在其他情况下,尽管微控制器的速度低且架构通用,但它们通常更实惠。
高功率要求。大多数 FPGA 板由 48V 背板供电。不幸的是,高功率要求使它们不适用于多种嵌入式应用。将此与微控制器板进行比较,微控制器板通常只需要 5 或 3.3 V 电源 即可运行。它们是设计任何电池供电的便携式嵌入式设备的不二之选。 挥发性。FPGA 的数字设计通过配置数据传递给它。通电后,电路板会进行相应配置并开始运行。配置数据必须在主模式下存储在闪存中,或者在从模式下由处理器通过边界扫描 (JTAG) 接口传递。一旦电路板断电,这些数据就会丢失。 大多数 FPGA 的易失性使其不适合存在断电或中断风险的应用。 启动时间。FPGA 每次上电时都必须加载配置数据。这会显着增加其操作的启动时间。然而,一旦加载了配置数据,FPGA 板的运行速度通常比微控制器快得多。 对于某些需要在激活后立即采取行动的关键应用程序,启动时间可能是个问题。FPGA 不适合嵌入式设备频繁开关机的应用。由于嵌入式设备的高功率要求,也不可能让这些芯片在嵌入式设备中持续通电。 高引脚数。通常,大多数 FPGA 都有多个引脚。因此,这些芯片不适合计算处理器或控制器必须紧凑的狭小空间或受限嵌入式应用。相比之下,有许多具有八个或更少引脚的微控制器,很容易安装在小型设备中。 复杂。使用 FPGA 需要详细了解数字设计和计算机体系结构。它不像微控制器那么简单。与软件开发所需的高级编程或汇编语言相比,FPGA 的语言(VHDL 或 Verilog)学习起来相当复杂。 虽然大多数用于 FPGA 开发的工具都是免费提供的,但它们使用起来很复杂,而且很难选择理想的电路板。数字设计中也有许多并发症、陷阱和注意事项,只能通过时间和实践经验来学习。 设计限制。只能将数字设计的逻辑块与 FPGA 互连。在门级也没有控制,而且通常合成是非标准的。但是,FPGA 非常适合测试架构或早期 ASIC 设计。 耐用性。与微控制器相比,FPGA IC 的使用寿命较短。虽然微控制器可以在设备中使用数十年,但嵌入式设备中的 FPGA 芯片通常需要每两到五年更换一次。 高成本、引脚、数量和功率要求,以及复杂性、易变性和设计限制意味着 FPGA 在嵌入式应用中不太常见。目前,它们仅用于需要专用架构、定制外围设备或通过并行处理执行关键机器代码的高功率设备。 结论
FPGA 有优点也有缺点。这取决于应用程序。总的来说,它们使工程师能够更好地访问硬件设计并能够探索集成电路,而微控制器是不可能做到的。但这需要一定程度的知识和经验。全面了解嵌入式设计工程是值得的。 微控制器和处理器提供软件经验,而 FPGA 提供硬件知识。就像第一次从头开始构建代码一样,经验会随着时间的推移变得更容易。
|