最近学习了ARM+FPGA的规划架构,ARM和FPGA结构的通讯大致能够分为两种:
一种是数据量小、通讯速率要求不高的状况,能够考虑选用SPI、IIC等差UN星通讯方法。ARM都带有相关的SPI通讯操控器等,在ARM端直接对相关的SPI通讯操控器操作就能够了。而FPGA这一端可作为SPI从,依照SPI协议的时序写好从设备接口,这个工作量没有多大,所以相对都比较简略。
另一种是数据量大、通讯速率要求较高的状况,就要选用并行总线的方法了。这时把FPGA作为ARM的一个片外的SRAM拜访就能够,能够在FPGA内部生成一个双口RAM,输出的数据总线管腿直接连接到ARM的并行总线的数据总线上,双口RAM一端的地址总线也相同直接连接到ARM的并行总线中的地址总线。这样就能够完成FPGA从DPRAM一端读写,ARM从DPRAM的另一端读写的功用了,当然还需求其他一些使能或片选的操控信号。这儿FPGA一侧较好完成,而ARM一侧需求开发SRAM(FPGA)驱动,这个还没有实践做过,所以没有掌握。
NXP的ARM即LPC系列的并行总线称之为外扩地址与数据总线,由EMC(外部存储器操控器)操控,经过对EMC寄存器的操控就能够完成在外扩地址和数据总线上的数据收发。若是选用LPC系列ARM加一片FPGA,完成他们通讯的要害应该在于这个EMC寄存器的操控,不知道依照必定的次序操作这个寄存器组写出来的数据收发程序是不是就能够称之为所谓的驱动,求大神解说。
TI的ARM或DSP都有一个GPMC(通用内存操控器),它类似于LPC的EMC,是TI的芯片中用于与外部存储设备如NORFLASH、NANDFLASH、SRAM等通讯的一个托言。关于这个相同也有上边的那个疑问。
三星的S5PV210则是有一组并行总线接口,称之为SROM,相同也有一个SROM操控器,支撑外扩的NORFALSH、NANDFLASH、SRAM 等,应该也类似于LPC系列的EMC。我经过对这个操控寄存器的操作就能够完成对外部SRAM(FPGA)的读写,不知道这样了解对不对。
还有一个疑问便是,如果有操作系统,再要完成ARM和FPGA的通讯是不是就没有这样简略了?在没有操作系统时,我仅仅对某个相关的操控寄存器操作就能够完成,这时就不可行了?这些都是今后要弄了解的。调研了这么长期,一直没有着手找找现有的资源,写写程序做一下这个通讯,感觉仍是没有了解到位。果真是什么东西都要实践一下才干了解深入。手头有一块LPC2478($11.0980)的ARM加FPGA的板子,但没有操作系统或许只要UC/OSII,不知道跟ARM有操作系统如Linux时,有什么区别。先上手做一做吧。