·上一文章:DirectFB在嵌入式远程桌面控制系统中的应用
·下一文章:基于FPGA和单片机的串行通信接口设计
各状态含义如下:
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。