概述
利用高云 FPGA 与 STM32 进行 FMC 通信,核心在于地址映射与控制信号的时序配合。通过合理配置引脚和逻辑,可以实现稳定的数据交互。

STM32 侧配置
这里的 FMC_A0 表示的是地址线。系统中有 13 位地址线和 16 位数据线,行地址与列地址是公用的:作为行地址时使用了 012 位,作为列地址时使用了 08 位。
关键控制信号定义如下:
- FMC_SDNWE:低电平时写,高电平时读;
- FMC_SDNCAS:列地址选通信号,低电平有效;
- FMC_SDNRAS:行地址选通信号,低电平有效;
- FMC_SDNE0:片选信号,低电平有效;
- FMC_BA0~1:Bank 选择信号,两位对应 4 个区域;
- FMC_SDCKE0:时钟使能信号;
- FMC_SDCLK:时钟信号;
- FMC_NBL0~1:写访问的输出字节屏蔽,即数据掩码。
在实际板子中,这实际上是 FMC 控制器对内核地址映射的结果,其实质就是对于地址的控制。有没有简单的方法呢?有的!STM32 自带的 FSMC 功能,就是专门为这类存储器设计的。在 STM32 上,有一些引脚被专门设计成地址线,还有一些被专门设计成数据线,还有一些被设计成控制线。然后这些地址线和数据线对应着固定的地址,只要外部的 DRAM 等存储器将对应的数据线连接到 STM32 这些对应的引脚上,引脚功能设置为复用模式,通过配置 FSMC,你可以直接给上面那个固定的地址赋值,其他操作 STM32 都会自动给你完成,就可以把数据存储到 SRAM 中。
这里 FPGA 的通信也是如此,在配置好引脚后对其进行自动赋值,然后再对地址进行读写操作。

在高云这里,有二十二个引脚需要我们去配置。这个是目前对于 Muxed PSRAM 的配置。







