FPGA 上的嵌入式 linux

电器工程 FPGA 嵌入式 linux
2022-01-25 16:30:40

我对 FPGA 的经验非常有限(Altera - 仅使用可视化设计工具)。

我正在计划一个需要 FPGA 的新项目,我可以从在同一块板上运行的实际 linux 中受益匪浅(主要用于 TCP 通信以及一些 DSP)。

我的问题是,是否有推荐的 FPGA 为其准备了受支持的嵌入式 linux?没有花哨的驱动程序(只是以太网,wifi 可能是一个加号,...)。我想在 FPGA 中会内置一个微控制器(这意味着它会占用大量 FPGA,我需要更大的 FPGA)。

4个回答

一个能够运行 no-mmu 版本的 linux 的教科书 32 位 RISC 处理器内核实际上并不需要那么大 - 你需要的真正资源是比任何 FPGA 中可用的更多的 RAM(10 兆字节),所以你'可能需要板上的 SDRAM 和 FPGA 中的控制器。

也就是说,如果您想要的不仅仅是微不足道的性能水平,您可能需要一个具有一些优化(流水线等)的核心,并且开始在一定程度上增加大小。添加完整的 mmu 将使内存(重新)分配更有效,并启用通常的写时复制 fork() 行为。

两家主要的 FPGA 供应商都有带有可用 linux 端口的软处理器内核——用于 Xilinx 的 Microblaze,用于 Altera 的 Nios II。您可能应该阅读他们的文档以获取特定的平台建议,因为它当然是一个随时间变化的目标。如果第三方内核设计以更便携的方式编写,并且没有针对给定的 FPGA 系列进行专门优化,则其性能可能会稍大一些。

从历史上看,已经有将硬核处理器内核(通常是 powerpc)与可配置 FPGA 结构区域结合在一起的芯片。另一种选择是在与 FPGA 相同的板上安装一个单独的处理器(可能是 ARM)。

很多决定将取决于您需要将处理器和 FPGA 耦合到何种程度。如果您可以将问题减少到配置寄存器和数据流,它可以像将带有快速 USB 芯片的 FPGA 板挂在嵌入式 Linux 板(如 BeagleBoard 或 RasberryPi)的 USB 主机端口上一样模块化。为了更紧密的集成,您可能希望 FPGA 在同一块板上并位于处理器的外部总线上。或者对于低数据速率,将 SPI 寄存器接口放在 FPGA 中是微不足道的,而 UART 接口是完全可行的,尽管有点棘手。

最后,如果您真的需要一个完整的操作系统(例如 linux),或者一个更“微控制器大小”的嵌入式 TCP 堆栈是否可以在需要更少内存的同时解决您的问题,那么存在一个问题。

Xilinx 的 Microblaze 可以很好地运行 Linux,假设它的速度足以满足您的目的 - 它只会在更便宜的设备中执行 10s 的 MIPS,在昂贵的设备中为 100-200 MIPS。

Xilinx 有一个git repo,或者有一些 Xilinx 特定的发行版。FPGA 的灵活性可能会带来一些痛苦和好处,因为您的内存映射和 IRQ 映射,甚至可用的外围设备都可能在项目开发过程中发生变化。

Petalinux有脚本来管理这类事情并根据您最新和最好的系统设计更新内核配置中的重要部分。

Xilinx 的 Virtex 系列具有带有硬核 PowerPC 的 FPGA 版本。在 PowerPC 上运行 Linux 相当容易,我的学生已经为许多高级设计项目做过。他们仍然有大量可配置的结构供您的硬件设计填充。

Virtex2 Pro 评估板在教育和学术研究项目中非常常见。由于赛灵思在他们最近的工具中已经放弃了对这个版本芯片的支持,你可以相当便宜地选择一个。我相信它被支持到 9.x 版本左右。唔。那是几年前的事了,所以也许我有点怀旧。无论如何,我仍然将这些板分发给感兴趣的学生,让他们用它们做任何他们想做的事情。

Actel 的 SmartFusion 将 FPGA 与硬 IP ARM Cortex-M3 内核和先进的模拟引擎集成在单芯片设备中。

uClinux 在 SmartFusion 的 Cortex-M3 内核上运行良好。检查此站点以获取更多详细信息。