电子产业一站式赋能平台

PCB联盟网

搜索
查看: 223|回复: 0
收起左侧

什么是串行Flash的Continuous read模式?

[复制链接]

355

主题

360

帖子

2831

积分

三级会员

Rank: 3Rank: 3

积分
2831
发表于 2021-5-22 11:30:00 | 显示全部楼层 |阅读模式
大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是在FDCB里使能串行NOR Flash的Continuous read模式1 c/ B0 L" P- m3 A, L
前面关于串行Flash传输时序的文章 《Fast Read Quad I/O SDR模式》 与 《Fast Read Quad I/O DTR模式》, 痞子衡介绍的其实都属于经典SPI工作模式大类下的Non-Continuous read传输模式,即任何独立的Fast Read Quad I/O读数据时序(一次CS低有效期间),都必须由Command子序列(命令码0xEB/0xEC/0xED/0xEE)先行,且不管是SDR还是DTR模式,命令码都是要在8个SCK周期内由IO0信号进行传输(别小看这8个SCLK周期,对于小数据块读取时序,它在总传输时间里占比是不可忽视的)。
& C& U& j& O3 h3 a$ l  i我们知道在XIP情况下CPU从Flash里取指令数据往往是非常随机且零碎无序的,这时候虽然有L1 Cache和和FlexSPI Prefetch Buffer加速,但如果还想再进一步提升访问性能,就只能从Flash底层传输序列里想办法了。Flash读时序里有五大子序列CMD + ADDR + MODE + DUMMY + READ,其中除了CMD和DUMMY子序列是固定的,其他子序列参数值都可能会变,会变的就不能被优化,所以只能想办法在CMD和DUMMY子序列里做文章。今天痞子衡要介绍的Continuous read模式就是拿CMD子序列开刀:& A# M7 T6 [5 f
一、什么是Continuous read模式?Continuous read顾名思义就是连续读。在串行Flash世界里,连续读的意思是读传输时序里除了第一次CS有效期必须传输Command子序列,其后的读传输时序里均省去Command子序列。下面痞子衡结合i.MXRT的FlexSPI外设来对比介绍Non-Continuous read与Continuous read模式的区别:+ y: V. Y$ d* N4 P$ Z# K
1.1 FlexSPI的XIP Enhanced Mode我们知道NOR Flash因为支持主设备随机读取其任意地址处的数据,因此从原理上可以用作XIP设备。但因为是串行接口,所以不能直接XIP(没有独立并行地址线,CPU无法直接寻址),需要FlexSPI外设在底层完成AHB总线读访问的实时响应工作,这个实时响应工作就是FlexSPI的XIP特性。5 M& |5 ~/ r: d2 W; b6 N, G0 U
FlexSPI的XIP特性可以支持任意串行NOR Flash,对Flash厂商设计没要求。为了提升XIP代码执行效率,FlexSPI中也集成了XIP Enhanced Mode特性(其实就是Continuous read模式),见下图,CS1是包含CMD子序列的读时序(即第一次CS),CS2/3(包括后续所有CS)相比CS1少了CMD子序列,这就是Continuous read访问时序。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表