目录
实际工作中使用的是型号为TMS320C6678的DSP,并通过EMIF接口与FPGA通讯。
由于EMIF接口比较简单,本文以FPGA的角度作为EMIF接口的slave端进行设计。参考手册为KeyStone Architecture External Memory Interface (EMIF16) User Guide - May 2011
FPGA与DSP之间的EMIF接口调试
EMIF接口
DSP之外部设备连接接口之EMIF
DSP学习笔记----EMIF(外部存储器接口)
1. Overview
外部存储器接口(External Memory Interface, EMIF)主要用来同并行存储器连接,这些存储器包括SRAM、NOR Flash、NAND Flash存储器等
还可以同外部并行设备进行连接,包括并行A/D、D/A转换器、具有异步并行接口的专用芯片,并可以通过EMIF同FPGA、CPLD等连接。
不支持诸如 SDR DRAM, DDR1 SDRAM and Mobile SDR的同步设备
EMIF时钟为CPU载频的1/6,例如1GHz载频的EMIF工作时钟为166.6MHz
EMIF接口可根据不同的存储器类型使用不同的接口信号。对于FPGA而言,可看作是DSP的一种外部存储器,进行通信。
2. Block Diagram
接口及说明如下
2.1. Addressing
注意所采用的协议为EMIF16,即16bit数据位、24bit地址位,4bit片选。因此总共可寻址范围为 4 × 2 24 × 2 B y t e s = 128 M B 4×2^{24}×2Bytes=128MB 4×224×2Bytes=128MB,每片 32 M B 32MB 32MB
但在TMS320C6678的DSP手册中,EMIF地址如下所示,为什么每片寻址范围变成是64M呢?
- 下面的黄字指出对于NOR 和 SRAM为32MB,与算得一致
- 按字节寻址EMIFA需要25bit。但EMIFD位宽是双字节,故地址线EMIFA需要24bit即可,最低位没有体现在EMIFA中
- 对于SDRAM等需要区分行列地址来说,容量可为64MB
因此每次EMIF握手的地址应为:0x7000_0000+0、0x7000_0000+2、0x7000_0000+4、0x7000_0000+8、…、0x7200_0000,以此类推
3. Timing Description
时序图如下,分为Setup、Strobe和Hold三个阶段。三个阶段的持续时间取决于Async 1 Config Register寄存器
3.1. Read Timing
读时序如下,EMIFD数据在HOLD阶段的第一个上升沿采样
3.2. Write Timing
4. EMIF Slave Design Spec
EMIF的Slave端的RTL逻辑设计。