FPGA学习进程——spi与flash存储的结合使用
实现功能
通过按键控制,使用UART串口传输与spi传输协议,将数据于计算机,FPGA以及flash芯片三者间进行任意传输。
具体功能
按下按键,实现flash中id读取指令,并将ID显示与pc端
按下按键,实现flash中写地址指令,并将ID显示与pc端
按下按键,实现flash中数据读取指令,并将读取的数据显示与pc端
按下按键,实现flash中写入指令,将串口数据写入flash固定地址
按下按键,实现flash中擦除指令。
关于spi协议
是一种简单的串行接口协议,所以所需接口较少,一般采用4线工作模式,分别是时钟线sck,主器件输入从器件输出线miso,主器件输出从器件输入mosi线,以及有使能作用的片选信号线cs。
区别于iic,它是全双工模式。时序也更简单,通常根据时钟相位和极性不同,选择一个时钟沿采样,其余时间保持数据不变。
注意,根据主从设备需求的时钟极性、相位不同,则需要调整整个spi模块来适配。
关于flash芯片
flash是一种断电非自动擦除型芯片,固需要人为擦除,其中数据储存也更稳定。
在使用flash芯片时,要根据其使用手册,确定其指令(如写id指令,擦除指令等为多少),确定其容量,确定其最高频率(以确认所选系统时钟)
flash读id
每个flash芯片都有自己的id,读出来确认其身份,一般为20个字节。
flash擦除操作
首先要发送“写地址”指令给flash,写想要擦除的地址进入flash,再写入擦除指令。写入后,flash自动擦除,需等待一定时间。
(需要将WR_ENABLE 指令输入,取消数据保护)
flash写数据操作
同上,先写地址,然后写入写数据指令,进行已擦除的地址的数据写入。(需要将WR_ENABLE 指令输入,取消数据保护)
flash读数据操作
同上,确认地址后,发送读数据请求,进行数据读取。
架构分析
采用了UART的输入输出模块对电脑和FPGA芯片进行数据交换,
采用了flash模块(含控制,数据传输两大模块)使用spi让flash和FPGA芯片进行数据交换。
采用了按键消抖模块(内含时钟脉冲模块)对按键消抖
采用了FIFO核对UART和spi两者的跨时钟域同步,其中,spi时钟采用的是25mHZ,其余时钟均为50mHZ
flash芯片型号
N25Q128A