先楫FEMC的基本概念介绍
FEMC (Flexible External Memory Controller)全称为多功能外部存储器控制器。作为并行接口控制器,FEMC具有访问存储数据速度快的特点。
HPM的FEMC只有一路,由于FEMC是并口,所以占用的管脚较多。而且HPM的FEMC信号引脚都是唯一的,没有重复管脚。如果用户使用FEMC接口,建议在硬件上先进行FEMC的设计。以下是HMP6700系列引脚配置。
|------------------------|-----------|----|
| 引脚 | 名称 | 数量 |
| FEMC_A_00~FEMC_A_12 | 地址信号 | 13 |
| FEMC_BA0~FEMC_BA1 | Bank选择信号 | 2 |
| FEMC_CAS | 列地址选通 | 1 |
| FEMC_CKE | 时钟使能信号 | 1 |
| FEMC_CLK | 时钟信号 | 1 |
| FEMC_CS_0~FEMC_CS_1 | 片选信号 | 2 |
| FEMC_DM_0~FEMC_DM_3 | 数据掩码 | 4 |
| FEMC_DQS | 数据选通信号 | 1 |
| FEMC_DQ_00~FEMC_DQ_31 | 数据输入和输出信号 | 32 |
| FEMC_RAS | 行地址选通 | 1 |
| FEMC_WE | 写使能 | 1 |
HPM的FEMC在系统内存有两块区域。其中0xF3050000~0xF3053FFF为FEMC控制器区域,对应FEMC控制器的寄存器空间。0x40000000~0x4FFFFFFF为FEMC外部存储器的空间范围,该区域最大为256MB。因此,外扩的存储器范围最大为256MB。
FEMC使用的功能时钟为CLK_TOP_DRAM,最大支持166MHz工作频率。
HPM全系列FEMC配置情况
HPM的MCU只有部分型号支持FEMC。配置FEMC的MCU,其接口信号的引脚数量稍有不同。
|--------------|----------|-------------|-------------|
| HPMicro | FEMC | FEMC_DQ | FEMC_DM |
| HPM6700/6400 | Y | 32 | 4 |
| HPM5300 | N | | |
| HPM6200 | N | | |
| HPM6300 | Y | 16 | 2 |
| HPM6800 | N | | |
| HPM6E00 | Y | 32 | 2 |
FEMC的典型应用
HPM的FEMC作为高性能存储器接口,适用于下面的典型应用。
-
- SDRAM
-
- SRAM
-
- LCD屏
-
- FPGA
下面是FEMC的主要特性:
● DRAM控制器,支持连接外部SDRAM
**--**支持8/16/32 位数据模式
**--**可以使用高16 位数据线访问16 位 SDRAM(当低16 位数据线的IO 被其他功能占用时)
**--**最大支持166MHz 工作频率
**--**支持通过APB 总线往SDRAM 发命令(READ, WRITE, MODE_SET, AUTO_REFRESH 等)
**--**32位AXI 总线,内部读写数据buffer,最大outstanding支持8 级读和8 级写
**--**auto-refresh时间, bank 数, CAS 延迟, column 地址位数, burst 长度可配
● SRAM控制器,支持连接外部SRAM 或者兼容 SRAM 访问接口的器件
**--**支持异步访问
**--**支持数据地址复用模式(ADMUX) 或者非复用模式(Non-ADMUX)
**--**支持8 位或16 位数据端口
HPM的FEMC支持DRAM控制器和SRAM控制器,如下表所示是HPM6700系列FEMC的信号映射表。FEMC_CS_1 信号或者用作 DRAM 的 CS_1,或者用作 SRAM 控制器的 SRAM_NCE。即 FEMC 外部可以同时连接 2 个 SDRAM 或者 1 个 SDRAM 和 1 个 SRAM。
|------------------------|--------------|--------------------|----------------------|
| FEMC 引脚名称 | DRAM 信号 | SRAM 信号(Non-ADMUX) | SRAM 信号(ADMUX) |
| FEMC_A_00~FEMC_A_07 | A_00~A_07 | A0~A7 | A16~A23 |
| FEMC_A_08~FEMC_A_10 | A_08~A_10 | | |
| FEMC_A_11 | A_11 | NWE | NEW(写使能信号 ) |
| FEMC_A_12 | A_12 | NOE | NOE(读使能信号) |
| FEMC_BA0 | BA0 | | |
| FEMC_BA1 | BA1 | | NADV(地址/数据有效信号) |
| FEMC_CAS | CAS(列地址选通) | | |
| FEMC_CKE | CKE | | |
| FEMC_CLK | CLK | | |
| FEMC_CS_0 | CS_0 | | |
| FEMC_CS_1 | CS_1 | NCE | NCE(片选信号) |
| FEMC_DM_0 | DM_0 (数据掩码) | NLB | NLB(低字节控制) |
| FEMC_DM_1 | DM_1 | NUB | NUB(高字节控制) |
| FEMC_DM_2 | DM_2 | | |
| FEMC_DM_3 | DM_3 | | |
| FEMC_DQS | DQS | | |
| FEMC_DQ_00~FEMC_DQ_15 | DQ_00~DQ_15 | D0~D15 | AD0~AD15(地址/数据共享信号) |
| FEMC_DQ_16~FEMC_DQ_31 | DQ_16~DQ_31 | A8~A23 | |
| FEMC_RAS | RAS(行地址选通) | | |
| FEMC_WE | WE | | |