以Zynq-7000为例,里面集成了FPGA和ARM处理系统,这两个模块在此板上是分别独立存在的。FPGA对应Vivado以及Vivado HLS进行HDL或者C/C++ to HDL的处理。ARM-A9(A9是ARM核的型号,其实目前比较常见的还有ARM-M4/M9,即ARM的M系列。)对应Vivado SDK(C/C++/近似汇编的C/汇编,其中近似汇编的C和汇编是听同学说的,今年的双创大赛第二题就是与此有关。)进行处理。
另外有可能你听说过Xilinx有一个针对自家的FPGA有一款可以烧到上面的处理器叫做MicroBlaze,然后你也听说过Altera公司也有一款可以烧在FPGA上的核叫Nios2。这两种核都是32位嵌入式RISC处理器。但是另外还有一个东西,叫NEON,这个是Xilinx的Zynq7000板上ARM佩戴的协处理器,这个协处理据说是必须要用汇编写的。之前因为NEON和Nios2的读音有点像,我把这俩搞混了,结果发现这根本没有关系。无奈。
这里涉及一个概念软核处理器和硬核处理器,顺便解释一下。软核处理器指的是用HDL编写的,在FPGA内烧上的处理器,这种处理器是可以通过HDL改写的。而硬核处理器指的是在FPGA内已经特定烧制好的处理器/甚至是与FPGA无关的独立的处理器,是不能用HDL改写的/与HDL无关,只能调用。
其实完全可以把硬核处理器理解成ARM,而软核处理器就是FPGA。在这里,MicroBlaze和Nios2都是软核处理器。ARM和NEON是硬核处理器。你搜一下硬核处理器,就可以直接看到“硬核处理器-ARM”这种网站标签;搜一下软核处理器,就可以看到MicroBlaze 软核处理器这种标签。
另外对于Xilinx的ARM和FPGA,他们还可以协同工作。具体我也没做过LAB,回头请教大神去。
… 未完待续