HyperBus Nor Flash小记

Interface

这里写图片描述

Mandatory I/O Summary
SymbolTypeDescription
CS#主设备输出,从设备输入Chip Select:
当改信号从High变为Low时,HyperBus开始传输。
当该信号从低变为高时, HyperBus结束传输。
CK,CK#主设备输出,从设备输入Differential Clock:
command,address和data输出与CK和CK#相关。Differential Clock只用于1.8V I/O设备
Single Ended Clock:
在3.0V 的HyperBus的设备上,只有CK使用, CK#不使用
DQ[7:0]输入输出Data Input/Ouput:
command,address和data均在改信号线上进行输入输出
RWDS输入输出Read Write Data Strobe:
在Command/Address传输时段,RWDS用于指示是否需要额外的initial latency。 在Slave Output时段,该信号用于采样DQ[7:0]的数据。
(High = addtional latency, Low = no additional latency)
Optional I/O Summary
SymbolTypeDescription
RESET#主设备输出,从设备输入,内部上拉Hardware RESET:
当该信号为Low时,从设备会初始化并回到Standby状态。与此同时,RWDS和DQ[7:0]处于高阻状态。从设备的的RESET#引脚有一个内部上拉电阻,默认为High。
RSTO#主设备输入,从设备输出, Open DrainReset Output:
RSTO#是从设备输出,当它为Low时,表示从设备复位,改信号可以用来作为系统的复位信号。从设备一旦完成POR,RSTO#可以保持LOW一段时间,改时间可以由用户来配置。
INT#主设备输入,从设备输出, Open DrainInterrupt Output:
当INT#为Low时, 意味着hyperflash发生了一个中断。

Protocal

当HyperBus处于Idle状态(CK=Low & CK#=High)时,CS#从High变成Low,hyperbus的传输开始进行。最前面的三个时钟周期传输3个word的Command/Address(CA0, CA1, CA2),这三个word的CA用来决定这个传输一些特性。
PS:这里面的word是2个byte,就是16bit。一个时钟周期是指两个clock,至于为什么这样定,我也不知道,Hyperbus的specification就是这么定的
所以3个word的CA信息一共是48个bit。

CA Bit#Bit NameBit Function
47R/W#表示该次传输是读还是写
1=读,0=写
46Address Space(AS)表示该次读写的space是memory还是register。
0=memory 空间, 1=register空间。
register空间用来读取Device ID和一些配置的register。
45Burst Type表示传输的burst是liner还是warpped。
0=warpped burst,1=linear burst。
我也不知道该位怎么用,一般设置为1。
44-16Row & Upper Column AddressRow的大小是跟设备相关的。
以Cypress的S26KS512S hyperflash为例。128Mbit的flash使用CA[35:16]作为Row & Upper Column Address。改Address用来寻找Memory Array中的一个Half-Page
15-3Reserved保留位
2-0Lower Column Address和upper column address一起用来选择一个Half-Page的位置的偏移量


这里写图片描述

这里写图片描述

当传输完CA信息后,bus上需要传输一些dummy clock初始化RWDS信号。RWDS就是CK加了一些延迟的信号,用作高速读操作时的DQS。

当数据传输开始,读数据是在RWDS的边沿进行采样,写数据是在Single-ended clock(即3.0V的CK)的边沿采样,或者在Differential clock(即1.8V CK和CK#)模式下,在CK和CK#交叉点进行数据采样。

一旦完成数据传输,host就可以把CS#拉高并且把clock置为IDLE状态。当clock已经是IDLE状态了,拉嘎CS#就能结束一次传输。

读时序

下面贴出一个实际的读数据的时序, 读数据的地址是0x400。CA[48:0] = 0xA000004000。其中CA[47] = 1代表读,CA[46] = 0, CA[45] =1代表linear burst,ROW & Upper Column Address = 0x0000040 = 0x400 / 0x10, Lower Column Address=0x0 = 0x400 % 0x10。在插入了一些dummy的时钟周期后,进行了数据的采集。
这里写图片描述

这里写图片描述
其中, 插入在CA和数据之间的dummy clock的个数是随设备不同而不同的,同时也跟Hyperbus的采样频率有关,这个需要参考不同的Hyberbus设备的手册才能知道。

写时序

写时序分为Write Transactions with Initial Latency和Write Transactions without Initial Latency。由于我并没有涉及太多的写设备的工作,所以这里就不多讲了。有Initial Latency的时序跟读时序差不多,只不过需要注意的是采样的时钟并不是RWDS即DQS,而是CK和CK#。而没有Initial Latency的就更简单了,直接数据就跟在CA后面,下面贴出官方Specification的是时序图。这里写图片描述

这里写图片描述

这里写图片描述

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值