ZYNQ中的双核处理器Cortex-A9中使用的Neon协处理器,
先了解一下neon,引用ARM的原文,
The ARM® NEON™ general-purpose SIMD engine efficiently processes current and future multimedia formats, enhancing the user experience.
NEON technology can accelerate multimedia and signal processing algorithms such as video encode/decode, 2D/3D graphics, gaming, audio and speech processing, image processing, telephony, and sound synthesis by at least 3x the performance of ARMv5 and at least 2x the performance of ARMv6 SIMD.
http://www.arm.com/products/processors/technologies/neon.php
NEON利用SIMD(single Instruction,Multiple Data)结构,即单指令多数据的方式,看来就是将串行处理的方式改为并行处理,引用原图,
指令执行时,所以通道(Lane)同时进行运算(Operation),从而得到结果;
其中,Register可以为32个64位寄存器或是16*128bit的寄存器;
可接受的数据类型可以是有符号或无符号的8位,16位,32位,64位,单精度浮点数;
所以...既然ZYNQ内部有了,我们就可以利用NEON这个协处理器,
完成一些复杂的运算,比如FFT,
当然你可以用PL(FPGA fabric)部分去实现FFT,效率可能会高一些,
但开发难度大...而且不灵活;
那就尝试着用一下,网上有个开源项目,就是为NEON来写库函数的,叫用Ne10;
参考网址:http://projectne10.github.io/Ne10/
现在实现的函数有,
如下表.
那理论上,我们用xilinx的SDK编译了这个库,我们就可以使用Ne10的函数了;
我们的虚拟示波器中想加入频域的显示,所以我们测试一下FFT这个函数;
先去实践一下:)
2014.03.19