我参与了一个由 C++ 构建并在基于 linux ARM 的 zynq-7000 平台上编译的项目。这是一个什么样的平台?我知道 zynq-7000(或 UltraScale)是一种较新的 FPGA。我之前也在使用 C++ 的 ARM 处理器上做了很多工作。当这两者(ARM & zynq-7000)结合在一起成为一个 C++ 开发平台时,这个开发平台是如何构成的?
我通过互联网阅读:“基于 ARM 的 SoC 将硬核 ARM 处理器、内存控制器和外设与可定制的 FPGA 结构结合在一个 SoC 中”(https://www.intel.com/content/dam/www/programmable/我们/en/pdfs/literature/wp/wp-01167-custom-arm-soc.pdf)。在这种情况下,这个 SoC 应该被视为带有 ARM 处理器的 FPGA,系统设计需要通过 HDL 来完成。
但是,在我的开发环境中,ARM + zynq-7000 平台的处理方式与 x86 非常相似,我可以在其中使用 C++ 编译和运行我的项目。
对我的困惑有什么想法吗?
该链接描述了在FPGA 架构中模拟的 ARM 处理器,并且是一种创建功能齐全的处理器的方法,该处理器具有必要的自定义 I/O 组合。ARM 是一个流行的仿真目标,因为它是一个具有现成库的通用平台。该仿真 CPU 的编程将通过 C++ 完成,实际的 CPU内核将使用 VHDL 进行编程。它不会像真正的 CPU 那样高效或快速,但它更适合任何需要大量 I/O 或自定义数据处理的任务,这些任务可以在 FPGA 中完成,然后再交给 CPU 内核。
您在 Zync 中拥有的是一个成熟的、基于硅 ARM 的 CPU 系统,它运行一个完整的 Linux 发行版,并附有 FPGA。因为你有一个真正的 CPU,所以它可以通过 C++ 编程。它本质上是一台内置 FPGA 的完整计算机。
现代 FPGA 开发平台还允许通过 C++而不是 VHDL 或 VDL 完成 FGPA 设计的子集,但该语言不适合 FPGA 架构,需要做出一些让步。
这种 SoC 的主要目的是允许 FPGA 使用 ARM 处理器中的控制逻辑而不是静态存储器进行动态刷新。通过这种方式,FPGA 程序可以更快地更新并以更动态的方式进行更改以适应条件。处理器可以在几秒钟内检查 FPGA 固件更新并应用修复,而不需要让系统离线来应用它们、监控网络状况或其他事情,并更新或重新刷新 FPGA 以“原位”应用修复或改变行为完全。