6678EMIF总结

EMIF特征:

  • 四个片选空间各64MB,组成256MB的异步地址寻址范围(不是全用)
  • 8位和16位数据宽度
  • 24位地址线,每个空间可寻址16M地址空间
  • 可编程配置的时序周期
  • 时钟为CPU/6
  • 不支持32位数据宽度
  • 不支持同步设备操作(DRAM、DDR)

6678EMIF可以在以下两种模式下操作:

  • WE strobe mode(we 选通模式):CE3的默认模式,其他空间不支持该模式
  • Select strobe mode:四个空间都支持该模式,会覆盖we模式

EMIF可配置的参数主要为:

  • Setup(R/W):默认16个周期
  • Strobe(R/W):默认64个周期
  • Hold(R/W):默认8个周期

WE模式读
(WE模式读)
在这里插入图片描述
(WE模式写)
在这里插入图片描述
(SS模式读)
在这里插入图片描述
(SS模式写)

地址线在FPGA中的映射关系

6678EMIF为每个CE空间分配了64MB的访问空间,CE0-CE3对应起始地址分别为70000000-74000000-78000000-7C000000,在16位数据宽度模式下,访问空间为(2^24 2)/1024/1024=32MB,8位数据宽度为(2^24 * 1)/1024/1024=16MB。
DSP生成的是32位地址,而EMIF只能发送其中的24位,是DSP的第1位到第24位,第0位不发送,DSP地址的
*第1位连接在A23引脚**上,第2到第24位分别映射A0到A22。举个例子容易理解,运行以下程序:(这里直接用int16 int32代表不同数据宽度整型类型)

int16 data = 1;
*(int16*)78001003 = data;

在FPGA抓取EMIF总线可以看到地址为800800,对应【A23:A0】,将A23拼到最低位,整理得到的地址成为801。左移一位变为1002,所以可以看到发送的是78001003的第1位到第24位,0位没发送。
在FPGA中处理接收到地址首先将A23拼到最低位,即【A22:A0,A23】,将拼完后的十六进制地址左移一位,便是DSP实际发送的地址。

那么第0位干嘛用的,为什么不发送呢?据我研究,这一位主要用于8位数据模式下工作,0发送低八位,1发送高八位,对于16位数据模式这一位没有任何影响。举例说明,将emif配置为16位模式,发送一个十六位的数据给8位地址线

int16 data = 0x1007*(int8*)78001000 = data;//A
*(int8*)78001001 = data;//B

A语句后总线数据为0x0007
B语句后总线数据为0x0700
所以第0位控制八位数据放在高8位还是低8位。当然,如果emif配置为8位模式,也就不存在这个问题了,直接发送0x07到data线上。

那么,可以推理出在16位emif宽度下,发送或者接收32位数据时,第1bit起到了类似的作用,所以将其放在了最高位发送。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值