当前位置:   article > 正文

第24节 国产安路FPGA FSMC接口通讯应用实例

fsmc接口

        FSMC接口在一些ARM控制器上比较常用,通常可以通过FSMC的接口时序来对外部内存单元进行通讯访问。这一个小节主要介绍FSMC通信接口的通信原理,然后通过一个与MCU控制器进行通讯测试一下读写。硬件MCU控制器采用STM32F407,FPGA采用PH1A90控制器进行连接通讯。

        一、FSMC通讯原理

        FSMC 是 Flexible Static Memory Controller 的缩写,译为灵活的静态存储控制器。它可以用于驱动包括 SRAM、 NOR FLASH 以及NANDFLSAH 类型的存储器。具体端口的引脚和功能如下表所示:

FSMC引脚名称对应SRAM引脚名备注
FSMC_NBL[1:0]LB#、UB#数据掩码信号
FSMC_A[18:0]A[18:0]行地址线
FSMC_D[15:0]I/O[15:0]数据线
FSMC_NWEWE#写入使能
FSMC_NOEOE#输出使能(读使能)
FSMC_NECE#片选信号

        FSMC 外设支持输出多种不同的时序以便于控制不同的存储器,它有多种模式这是有MCU控制器决定的,针对于不同的控制器需要查阅相关的技术手册,找到对应时序,这里介绍STM32 FSMC其中的一种时序作为参考。

        当内核发出访问某个指向外部存储器地址时, FSMC 外设会根据配置控制信号线产生时序访问存储器,上图中的是访问外部 SRAM 时 FSMC 外设的读写时序。以读时序为例,该图表示一个存储器操作周期由地址建立周期 (ADDSET)、数据建立周期(DATAST) 以及 2 个 HCLK 周期组成。在地址建立周期中,地址线发出要访问的地址,数据掩码信号线指示出要读取地址的高、低字节部分,片选信号使能存储器芯片;地址建立周期结束后读使能信号线发出读使能信号,接着存储器通过数据信号线把目标数据传输给 FSMC, FSMC 把它交给内核。

         写时序类似,区别是它的一个存储器操作周期仅由地址建立周期 (ADDSET) 和数据建立周期(DATAST) 组成,且在数据建立周期期间写使能信号线发出写信号,接着 FSMC 把数据通过数据线传输到存储器中。 

        二、FPGA FSMC接口逻辑代码介绍

        本节介绍的FSMC接口是在通讯上以MCU位主控制器,FPGA为从控制器进行通讯交互数据,如果FPGA想要与MCU进行通讯之前需要发送请求信号,MCU产生应答,进行握手保证通讯可靠。MCU读取FPGA的地址数据得到具体的信息,然后读取数据。通过地址信息可以区分数据内容,如下图所示。

        FSMC的FPGA端需要满足MCU控制器FSMC时序要求,根据时序要求定义FPGA端端口如下表所示:

端口名称类型备注
clkinput系统时钟
rstinput系统复位
user_addr[31:0]input用户地址
user_wr_data[31:0]input用户写数据
user_wr_data_vldinput用户写数据有效
user_rd_validinput用户读数据请求
user_rd_data[31:0]output用户读数据
user_rd_data_vldoutput用户读数据有效
user_doneoutputFSMC操作完成
user_wr_reqoutputFSMC发送MCU写请求
user_rd_reqoutputFSMC发送MCU读请求
mcu_ackinput接收MCU应答握手信号
fsmc_noeinputFPGA读使能
fsmc_nweinputFPGA写使能
fsmc_data[15:0]inoutFSMC数据信号

FSMC信号同步处理,如下图所示。

        FSMC状态机跳转部分代码如下图所示。用户如果有读写请求,开始进行握手等待应答,进入MCU读取FPGA地址状态,再跳转到对应的具体读写数据状态进行数据交互。

        在空闲是等待用户的读写请求信号,如果存在读写请求信号,把相关的读写请求引脚拉高。

MCU应答把请求信号拉低。

MCU读取FPGA地址

MCU读写FPGA数据部分

        三、总结

               本节主要介绍FPGA与FSMC通信的接口设计,FSMC接口介绍和接口时序介绍。主要是想为多个控制器协同工作通讯问题提供一种设计思路,本节介绍的FPGA部分代码在下面链接感兴趣可以下载参考。由于板上验证还需要介绍MCU控制器代码,该专题只介绍国产安路的FPGA部分,所以这里只对FPGA部分进行介绍说明,后面有机会记录MCU专题时再进行分享。下一个小节介绍一款SD NANDFLASH的工作原理。

代码链接如下:

链接:https://pan.baidu.com/s/1ciLEj-qDfFkTNDL87jFDgA
提取码:ysir

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/496941
推荐阅读
相关标签
  

闽ICP备14008679号