我们这块板子是用于图像高速处理,ARM与FPGA进行高速的数据交换,设计想法是在ARM与FPGA之间设计一块儿存储体作为二者之间通信的数据缓存。可是ARM的外部存储的控制只有2个,一个是DDR用于启动UBOOT,一个是NAND用于存放程序,请问有没有设计过类似功能的设计师,ARM与FPGA之间的缓存要怎么设计?可以与NAND或DDR的控制接口共享接口么?
leo chen:
可以类似与接个norflash,
用到片选,数据线,地址线,读、写信号
Steven Liu1:
直接用GPMC和FPGA进行通信,同步模式+brust read+EDMA,这样应该可以大幅提高读写速率。这种速率能满足你需求吗?
Yalan Han:
回复 Steven Liu1:
我看了手册,GPMC有七个片选信号,可是我看手册里写的是Flexible 8-Bit and 16-Bit Asynchronous Module Memory Interface with up to Seven Chip – Controls the Entry and Exit of Stand-By and Selects (NAND, NOR, Muxed-NOR, SRAM),应该是异步模式吧?另外请问,因为存放程序的NAND连接的GPMC接口,如我现在再连一块存储体到GPMC接口,与NAND进行切换,会对ARM读取应用程序造成影响吧?谢谢啦
Steven Liu1:
回复 Yalan Han:
同步,异步的读取方式,是可以自由配置的。要针对你外面用的设备类型。
如果你用的而是NAND的话,一般都是异步咯,NOR现在看到的大部分也是异步。但你要接FPGA的话,我这边客户有同步的玩法,也有异步的玩法,完全看你自己的选择。
数据地址线共用,是不会造成影响的,因为片选信号会对其进行逻辑控制,不会让两个片选设备在同一时间点使能片选,所以一个时间点上只有一个cs是active的。不会造成影响。
Yalan Han:
回复 Steven Liu1:
明白了,谢谢啦!我们现在打算选用两片异步SRAM作为ARM和FPGA之间的共享内存,
1)NAND的片选信号端口为CS0,请问2片SRAM的片选信号可以在CS1~6之间随意选都行是么?没有特定的要去吧?我们现在设计2片SRAM的片选信号分别为端口CS1、CS2,没有问题吧?
2)ARM与FPGA交替读取或写入数据到SRAM,也就是FPGA读取数据时,ARM不读取,请问ARM的地址位和数据位以及控制信号的输出是三态的么?
谢谢
Yalan Han:
回复 Steven Liu1:
谢谢您的帮助啦!还有一点需要和您请教一下,您之前说 同步+burst read+EDMA,可实现高速的数据传送,可是我看了一下用户手册有关GPMC这部分,有提到GPMC的性能,Up to 100 MHz external memory clock performance (single device),这是说GPMC控制外部存储体的时钟速率最大只有100MHz么?括号里单一设备又是指的什么意思?如果我选择异步存储体的话,起时钟速率是不是就不受这个100MHz限制了?谢谢啦
Yalan Han:
回复 Steven Liu1:
好的,谢谢您的帮助
shixm.zh:
回复 Yalan Han:
Hi,Yalan Han同学
你为什么还要加2片SRAM的芯片,FPGA和ARM处器可以直接通过数据总线直接通讯的,就算有数据要缓冲,你也可以放在FPGA内部去缓存,没必要另外再设计2片芯片,除非你要大量的数据FPGA内部无法存储。