【银杏科技ARM+FPGA双核心应用】GD32F4系列三十三—FSMC_DMA实验

[复制链接]
34623|396
fengm 发表于 2026-1-13 12:31 | 显示全部楼层
将 FPGA 的 RAM 映射到 FSMC 的指定地址空间,配置 FSMC 为 SRAM 模式,再通过 DMA 实现数据在 GD32 内存与 FPGA RAM 之间的高速传输,全程无需 CPU 参与。
jackcat 发表于 2026-1-13 12:35 | 显示全部楼层
如果 GD32 和 FPGA 内部逻辑 同时 读写双口 RAM 的 同一地址,会产生数据冲突或读到无效数据。
eefas 发表于 2026-1-13 12:54 | 显示全部楼层
FPGA可以根据地址线的不同位域,实现多个功能寄存器的映射,而不仅仅是RAM。
1988020566 发表于 2026-1-13 13:04 | 显示全部楼层
在进行读操作时,将 FSMC 的基地址作为 DMA 传输的源地址,将目标内存地址作为目的地址,设置好传输长度等参数后,启动 DMA 传输,DMA 控制器会自动将数据从 FSMC 对应的 RAM 存储块中读取到指定的内存区域。
jackcat 发表于 2026-1-13 13:09 | 显示全部楼层
如果 GD32 和 FPGA 内部逻辑 同时 读写双口 RAM 的 同一地址,会产生数据冲突或读到无效数据。
biechedan 发表于 2026-1-13 13:14 | 显示全部楼层
在 FPGA 内部使用硬件描述语言例化一个 RAM 存储块,可设置合适的位宽和深度。
mikewalpole 发表于 2026-1-13 13:18 | 显示全部楼层
FPGA 侧的读写建立 / 保持时间需≥GD32 FSMC 手册中的最小值,否则会出现数据错误。
cemaj 发表于 2026-1-13 13:27 | 显示全部楼层
通过 FSMC + DMA 实现 GD32 与 FPGA 之间的高速通信,是一种高效、低 单片机 占用的方案。
mikewalpole 发表于 2026-1-13 13:32 | 显示全部楼层
FPGA 侧的读写建立 / 保持时间需≥GD32 FSMC 手册中的最小值,否则会出现数据错误。
fengm 发表于 2026-1-13 13:55 | 显示全部楼层
将 FPGA 的 RAM 映射到 FSMC 的指定地址空间,配置 FSMC 为 SRAM 模式,再通过 DMA 实现数据在 GD32 内存与 FPGA RAM 之间的高速传输,全程无需 CPU 参与。
geraldbetty 发表于 2026-1-13 14:20 | 显示全部楼层
根据 FSMC 的控制信号,在 FPGA 中添加相应的控制逻辑,以实现对 RAM 存储块的正确读写操作。如当检测到 GD32 发出的读使能有效信号时,将指定地址的数据放到数据总线上供 GD32 读取;当写使能有效时,将数据总线上的数据写入到指定地址的 RAM 存储单元中
juliestephen 发表于 2026-1-13 14:25 | 显示全部楼层
GD32通过FSMC总线连接到这个RAM的一个端口,将其视为一片外部SRAM。
1988020566 发表于 2026-1-13 14:45 | 显示全部楼层
在进行读操作时,将 FSMC 的基地址作为 DMA 传输的源地址,将目标内存地址作为目的地址,设置好传输长度等参数后,启动 DMA 传输,DMA 控制器会自动将数据从 FSMC 对应的 RAM 存储块中读取到指定的内存区域。
cemaj 发表于 2026-1-13 14:55 | 显示全部楼层
通过 FSMC + DMA 实现 GD32 与 FPGA 之间的高速通信,是一种高效、低 单片机 占用的方案。
abotomson 发表于 2026-1-13 15:09 | 显示全部楼层
将内部 RAM挂载到 FSMC 总线上,模拟外部 SRAM 的时序,响应 GD32 的 FSMC 读写指令。
eefas 发表于 2026-1-13 15:22 | 显示全部楼层
FPGA可以根据地址线的不同位域,实现多个功能寄存器的映射,而不仅仅是RAM。
gygp 发表于 2026-1-13 15:36 | 显示全部楼层
这种方法非常适合入门级到进阶级的高速数据采集与处理,能够轻松达到 10MB/s ~ 50MB/s 甚至更高的传输速率,且几乎不占用 单片机 资源。
jackcat 发表于 2026-1-13 15:46 | 显示全部楼层
如果 GD32 和 FPGA 内部逻辑 同时 读写双口 RAM 的 同一地址,会产生数据冲突或读到无效数据。
eefas 发表于 2026-1-13 15:51 | 显示全部楼层
FPGA可以根据地址线的不同位域,实现多个功能寄存器的映射,而不仅仅是RAM。
1988020566 发表于 2026-1-13 15:56 | 显示全部楼层
在进行读操作时,将 FSMC 的基地址作为 DMA 传输的源地址,将目标内存地址作为目的地址,设置好传输长度等参数后,启动 DMA 传输,DMA 控制器会自动将数据从 FSMC 对应的 RAM 存储块中读取到指定的内存区域。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部
0