我曾经做过一个项目,是用 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/us/en/pdfs/literature/wp/wp-01167-custom-arm-soc.pdf)。这样的话,这个SoC就应该看作是一个带有ARM处理器的FPGA,系统设计需要通过HDL来完成。
然而,在我的开发环境中,ARM + zynq-7000 平台与 x86 非常相似,我可以用 C++ 编译和运行我的项目。
对于我在这里的困惑有什么想法吗?
答案1
该链接描述了一个模拟的 ARM 处理器之内FPGA 结构,是一种根据需要使用自定义 I/O 组合来创建功能齐全的处理器的方法。ARM 是一个流行的仿真目标,因为它是一个具有现成库的通用平台。该模拟 CPU 的编程将通过 C++ 完成,这是实际的 CPU核可以用 VHDL 进行编程。它不会像真正的 CPU 那样高效或快速,但它更适合任何需要大量 I/O 或自定义数据处理的任务,这些任务可以在 FPGA 中完成,然后才交给 CPU 核心。
Zync 中有一个功能齐全的基于真实世界硅片 ARM 的 CPU 系统,该系统运行完整的 Linux 发行版并附带 FPGA。由于您有一个真正的 CPU,因此可以通过 C++ 进行编程。它本质上是一台内置 FPGA 的完整计算机。
现代 FPGA 开发平台还可以实现 FGPA 设计的子集通过 C++而不是 VHDL 或 VDL,但该语言不适合 FPGA 架构,需要做出一些让步。
这种 SoC 的主要目的是允许使用 ARM 处理器内的控制逻辑而不是静态内存来动态刷新 FPGA。这样,FPGA 程序可以更快地更新,并以更动态的方式更改以适应条件。处理器可以在几秒钟内检查 FPGA 固件更新并应用修复,而不需要让系统离线来应用它们、监控网络状况或其他事物,以及更新或刷新 FPGA 以“就地”应用修复或完全改变行为。