基于STM32F407VGT6单片机的FSMC与FPGA通信

这篇博客介绍了如何使用STM32F407VGT6单片机通过FSMC(Flexible Static Memory Controller)与FPGA进行通信。内容涉及FSMC的引脚定义、FPGA的测试程序以及STM32的测试程序,包括读写函数和FSMC初始化设置。最后提到了在Quartus II中使用SignalTap II进行测试。
摘要由CSDN通过智能技术生成

1. 关于FSMC

FSMC引脚定义:
地址线:A16-23 共8根地址线

数据线有16根(看单片机的原理图)

控制信号RD、WR、NE1/NCE2,这两个片选都接的是PD7,NE1即选中BAN1,用于扩展外部SRAM,FPGA相当于挂在单片机的BANK1,实质就是单片机进行读写FPGA。

2.FPGA测试程序(网上找的)

module STM32_FPGA(
                 input  main_clk,
                     // output arm_clk,
                      
                      output led,
                      
                      input [2:0] addr,
                      inout [15:0] data,
                      input FPGA_CS0,//FPGA片选
                      input RD,
                      input WR
                      
                     );


wire clk;

pll_50M    pll_50M_inst (
                                .inclk0 ( main_clk ),//25M
                                .c0 ( clk ),         //50M
                                .c1 ( arm_clk )      //8M                        
                             );


//reg [24:0] cnt = 0;
//always @(posedge clk)
 // cnt <= cnt + 1'b1;             

//assign led = cnt[24];


//AWE的上升沿,将数据写入FPGA寄存器

reg [15:0] ARM_FPGA_REG0;                     
reg [15:0] ARM_FPGA_REG1;
reg [15:0] ARM_FPGA_REG2;                     
reg [15:0] ARM_FPGA_REG3;                     
reg [15:0] ARM_FPGA_REG4;
reg [15:0] ARM_FPGA_REG5;                     
reg [15:0] ARM_FPGA_REG6;                     
reg [15:0] ARM_FPGA_REG7;                     
                     

wire rd_en = ~FPGA_CS0 && ~RD;

reg [15:0] data_reg;                     
                             
always @(

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值