SPI:Serial Peripheral Interface
SPI,IIC,UART是串行通信接口。串行接口的好处是占用资源比较少,只需要一条数据线进行单bit的传输。但是速率相对会比并行通信接口慢。
SPI有4条信号线,SCK, MISO(master in slave out), MOSI(master out slave in), CS/SS.
SPI controller一般可通过PAD连接闪存,比如Cadence公司的Octal-SPI NAND Flash controller, 支持8-bit的数据和地址传输,这样的速度会比传统的单比特串行SPI快很多。因为Flash memory是非易失性存储的,可用于FPGA或者车载芯片上的存储数据的加载。
这里要提到Flash的最小存储数据的单元叫做cell。每一个cell就是一个场效应管。但是跟普通的MOS管有一点区别在于,Flash里面的MOS管有两个栅极-控制栅极和浮置栅极。控制栅极根普通的MOS管一样用来接电压产生一个垂直于电压的电场,从而推动电子移动产生电子沟道和电流。而Flash的MOS管在控制栅极下面还有一个浮置栅极涌来存储电子。浮置栅极的上下都有一层绝缘体。当我们要写入0的时候,将控制栅极接一个正向电压,基底接地,这时候沟道导通。同时再加大电压,电子就会穿过绝缘层跑到浮置栅极,我们在断电,这时候电子就被保留在浮置栅极里面。当我们要读取这个cell的数据,只需要测试这个cell的电压区间从而得到对应的0或者1。cell的位置可由字线(Word Line)和位线(Bit Line)唯一指定。NAND Flash中每一行的每个cell的控制栅极连接到同一条Word Line,每一列的每个cell的基底连接到同一条Bit Line。默认cell的数据都是1,当我们要写0的时候,只需要将字线接一个正向的电压。但是由于一行的cell都连接到同一条字线,如果旁边的cell要保持1的数据如何操作呢,这时候只需要将旁边cell的位线接到正电压,就不会产生电位差和电场,也不会有电子的移动。
NAND Flash广泛应用于各种存储卡,SSD,eMMC中。主要分为SLC (Single Level Cell),MLC (Multi-Level Cell), TLC (Triple-Level Cell), QLC (Quad-Level Cell) 和3D NAND Flash。他们的区别在于每个cell可存储的数据量。由于MOS管是通过电压来控制数据的0/1变换,SLC就只需要两个电压区间来吸引电子到浮置栅极。而MLC则需要4个电压区间来吸引电子到浮置栅极以保存数据。TLC和QLC则需要更多电压区间。随着产品和纳米技术的更新,单位cell能存储的数据更多体积更小,擦除的次数也会变多,而且由于需要更精确的电压检测,使得读取的速度也会更慢。一条字线上可存储的所有数据叫做page。一个colume由8bit或者16bit组成。所以在读取一个数的时候需要block address,page address和colume address,这样至少久消耗了3个时钟,这也是为什么读取速度NAND要比NOR慢。
Page又分为main area用来存储普通数据和spare area用来存储读写操作时的校验码等(例如ECC校验码)。
SLC:1 bit,2 voltage value (0/1),1 WL = 1 Page
MLC:2 bit,4 voltage value (00/01/10/11),1WL= 2 Pages
TLC: 3 bit,8 voltage value (000/001/010/011/100/101/110), 1WL = 3 Pages
QLC:4 bit,16 voltage value (0000/0001/0010/0011/0100/.../1110/1111), 1 WL= 4 Pages
目前 SPI NAND flash的使用在网通类,消费类的市场多了;因为nor flash 可以被SPI NAND flash替代,读取速度都是差不多,运行容量可以直接用SPI NAND flash的容量,多出的容量也可以存储其它文件,便于一些需要存储需求的项目。
更多回帖