我有一块FPGA SoC板(DE1-SoC-MTL2)。该SoC是Altera的Cyclone V FPGA和Altera的ARM Cortex A9的组合,它们相互连接,可以使用AMBA网络交换数据。使用称为Platform Designer(以前称为Qsys)的工具,可以为HDL创建的块分配地址,从而可以从ARM Cortex A9处理器控制FPGA部分中的块。
简而言之,我有一个Linux系统,可以使用分配的基地址与FPGA交换数据。
我有一个二进制图像(黑白,1位),大小为300x1200,我必须将其存储在内置的FPGA RAM中。为此,我设计了一个具有1200个304位字的RAM(不允许将其设置为300,因为它必须是8的倍数,因为地址分配仅限于字节)。假设RAM地址从0x0000开始到0xB220结束。我应该怎么做才能将图像存储在该RAM中,以便将每个300位宽度的信息存储在RAM的每个字中? (我可以为此使用C,C ++(Qt创建器),我只想单击GUI中的一个按钮即可在其中存储图像)
答案 0 :(得分:1)
我能够解决问题,所以我将尝试回答我自己的问题。
304位措辞无法与使用AMBA互连的系统其余部分进行通信。我被迫设计一个RAM,其字大小为2(最小8位),因此我选择512位作为我的字长。我用零填充了未使用的部分(每个单词的位数从301到512)(我可以使用它们,但会使我的HDL算法更加复杂)。
正如@John Moon在评论中建议的那样,我首先使用mmap()并一次写入32位。为了在给定地址写入32位字,我使用了基址+偏移地址(如@Eugene Sh。所建议),并且为了能够使用自定义体系结构使用内存中的数据,我制作了RAM双端口。现在一切正常。