基于AT25T1024 FLASH的高速SPI接口设计
SPI_CTRL控制模块可将发送缓冲区0的数据读出来,经过并串转换,发送到串行线SI上,并且控制从串行线SO上接收数据,存储在接收缓冲区,并行数据转换成串行输出由并串转换状态机来控制实现,见图3。
各状态含义如下:
TX_IDLE:等待主机设置控制寄存器的GO位,如果置“1”,表示准备开始传输,跳入下一状态TX_ADDR。
TX_ADDR:当传输长度小于等于32位时,跳入下一状态PARALELL_DATA。
PARALELL_DATA:如果GO为1,在此状态TIP将被置“1”,说明传输开始,传输的计数器开始计数。
SERIAL_DATA:并行数据转换为串行数据发送出去,当CNT_SHIFT计数器减到0时,传输结束,状态跳入TX_IDLE。
2.3 串行移位时钟设计
SPI串行线上的主从设备必须根据具体要求设置匹配的传输时序模式,时序只有匹配,数据传输才能正常进行。如果设置的不匹配,可能导致数据接收方和发送方在同一时钟沿作用,而使数据传输失败。本设计中的时钟仅支持SP0模式,即串行时钟处于空闲电平时,空闲状态时钟的极性电平为低,在时钟的前沿采样数据,时钟后沿串行线上数据变化。
在采样时刻,线上数据必须已经稳定可靠,因此数据发送端设备应提前将数据移出到数据线上,本SPI接口电路设计在同一串行移位时钟周期中的前一个时钟沿(即相反时钟变化方向)将数据移出,移位时钟设计为系统时钟的两分频,为40/2MHz。
2.4 SPI相关寄存器描述
在本设计中,共有四种32位寄存器,包括控制寄存器,从设备选择寄存器,加载配置数据起始寄存器以及加载配置数据完成寄存器。
控制寄存器用来控制配置信息加载方式,即:片外FLASH加载方式或主机直接加载方式。当选择片外FLASH加载方式时,控制寄存器还用来控制一次数据传输的长度。CTRL寄存器的具体描述见表1。
从设备选择寄存器的SS位置“1”时,表示选中从设备。置“0”表示不选择任何从设备,本设计仅支持一个从设备。
加载配置数据起始寄存器的SPICFGSTART位置“1”时,配置数据自动从FLASH中读取并写入到DPRAM中,置“0”不进行读FLASH操作。
加载配置数据完成寄存器为只读寄存器,用来判断数据是否已经加载完成。
2.5 SPI缓冲区设计
图4所示为主机可直接访问的SPI接口内部DPRAM发送和接收数据缓冲区。
SPI发送数据缓冲区深度65,数据位宽32位,其中地址22’h 3e0600存放访问AT25F1024存储器的指令,当进行写操作时,从数据发送缓冲区最低位地址22’h3e0604开始,将数据搬运出来,串行发送到AT25F1024存储器。
SPI接收数据缓冲区深度65,数据位宽32位,其中地址22’h3e0400缓存读取的AT25F1024配置和状态信息,偏移地址22’h3e0404~22’ h3e0500缓存指定FLASH读取的总线配置数据数据,最大缓存2048位。
评论