
STM32H723 AD/DA FSMC接口拓展模块
简介
基于STM32H723ZGT6设计的FSMC接口的核心板。适用不熟悉Xilinx ZYNQ 平台,但需要FPGA进行高带宽运算/并行加速的场景。
简介:基于STM32H723ZGT6设计的FSMC接口的核心板。适用不熟悉Xilinx ZYNQ 平台,但需要FPGA进行高带宽运算/并行加速的场景。开源协议
:MIT License
(未经作者授权,禁止转载)描述
引言:总所周知,STM32是目前电子类专业大学生最熟悉不过的MCU,其开发环境简单,公开教程资料众多,是电子竞赛中使用最多的单片机芯片。目前,STM32H723芯片在淘宝上的售价已降到¥20左右,却拥有550MHz+的主频(实测可超频到660MHz+),外加许多参数非常不错的模拟IP(ADC、DAC、AMP等)。本项目基于STM32H723微控制器芯片,设计一款带有ADC、DAC模拟接口以及FSMC并行接口的模块。
关键词:STM32;FPGA;数字信号处理;高速接口设计;卷积加速;
摘要:本模块基于STM32H723ZGT6,等长引出FSMC接口,引出2通道ADC及2通道DAC(包括ADC前级输入调理电路、DAC输出RC低通滤波网络),可选外部/内部模拟基准电压。适用于使用FPGA做主控的情况下,需要使用ADC、DAC或协处理器的情景。
应用场景及方案:
本模块可应用于STM32进行数据采集,FPGA进行并行数据处理加速(如卷积滤波运算),最后由STM32进行模拟数据输出等场景。相较于STM32与FPGA之间使用SPI等串行协议通信方式,具有访问简单(可直接地址访问)、Verilog设计简单(可映射到FPGA RAM资源)、访问延时低、带宽高 等突出优点;相较于使用ZYNQ SoC,有开发简单、入门门槛低、可移植性强等优点。
本模块引出16根FSMC地址线以及16根FSMC数据线,2根NE片选线,最大可支持2个设备 X 216 X 16bit 的地址空间映射(在不复用地址和数据线的情况下)。使用4层PCB设计,拥有内层完整参考平面,模拟、数字电源及GND隔离,可选外部/内部基准电压,板载ADC前级调理(支持抬升及预增益控制功能,无需外接前级电路,信号可直接输入)。
(Tips: 一般情况下,由于FPGA端存在 已更新共享内存空间的数据需STM32读出 的情况,故需要留出1根高位地址线作为外部中断输入IO,供发送FPGA to STM32 中断请求使用)。

图1 模块原理及应用框图
结语:通过FSMC接口,STM32H723(本模块)为主机,FPGA按照FSMC SRAM接口设计从机接口,可实现FPGA和STM32的直接内存交互访问。
附注:
以下是使用FPGA模拟SRAM(Slave),STM32(Host)通过FSMC接口读写的时序参考

图2 FSMC 读时序(FPGA从机模拟SRAM模式)

图3 FSMC 写时序(FPGA从机模拟SRAM模式)
附: systemverilog 从机(伪)代码 (仅供参考)
module fmc_int #( parameter ADDR_WIDTH = xx, parameter DATA_WIDTH = xx) ( //sys_signal input wire rst_n, input wire clk, //fmc interface //fmc选择信号 input wire fmc_ne_i, input wire fmc_noe_i, //0:rd,1:wr input wire fmc_nwe_i, //fmc数据地址线 inout wire [DATA_WIDTH-1:0] fmc_data_io, input wire [ADDR_WIDTH-1:0] fmc_addr_i, input wire fmc_interrupt0_i, //寄存器输出供其他模块使用 output wire [DATA_WIDTH-1:0] reg_out,
...........
) //mem_rd_data:数据读取 reg [DATA_WIDTH-1:0] mem_rd_data; //fmc_wr_en:fmc写入使能信号 wire fmc_wr_en; //fmc_wr_en:fmc读取使能信号 wire fmc_rd_en;
//***************寄存器组*******************//
/* 外部逻辑的读取信号 */ //fmc_wr_en:fmc写入使能信号 assign fmc_wr_en = !fmc_ne_i & !fmc_nwe_i; //fmc_rd_en:fmc读取使能信号 assign fmc_rd_en = !fmc_ne_i & !fmc_noe_i; //fmc_rd_en 电平触发 assign fmc_data_io = fmc_rd_en ? mem_rd_data : {DATA_WIDTH{1'bz}};
//mem_rd_data:数据读取 always_comb begin : FMC_RD_LOGIC case (fmc_addr_i) 'd1: mem_rd_data = reg_out;
.................. default: mem_rd_data = 16'hca_00; endcase end
//wr posedge 写入数据 always @(negedge fmc_wr_en) begin : FMC_WR_LOGIC case (fmc_addr_i)
'd1: mem_rd_data <= reg_out;
.................. default: mem_rd_data <= 16'hca_00;
endcase end
endmodule
本模块40pin接口兼容微相FPGA开发板,可直接连接微相开发板。
(本模块已于2024年打样测试通过,并在2024年电赛作品中应用且获奖)
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程

评论