flash读写模块说明
1. 主要内容
特性:
- 支持仿真
- 支持ILA+VIO调试
- 使用vivado版本2019.2
目录:
- 设计文件
- test_top.v:调试顶层
- flash_ctrl:设计flash读写模块,内容与flash_rw.v相同,增加了仿真支持
- flash_rw.v:设计flash读写模块
- test_top.xdc:全局物理约束
- flash_ctrl_para.vh:参数配置文件
- test_top.v:调试顶层
- 仿真文件
- env.v:仿真顶层,用于连接
- test_25Q128JVxIM.v:W25Q128 FLASH模型
- Text:W25Q128 FLASH模型初始化数据
2. 如何仿真/调试
仿真/测试过程
仿真
- 取消SIMULATION_MODE注释,并对DEBUG_MODE进行注释
- 把env.v仿真文件设为顶层
- 运行功能仿真,并使用tb_env.v波形配置文件
*注意:全部写入1152字节可能会仿真过慢,可以修改此处`JTM_NUM为其他数值
调试
- 取消DEBUG_MODE注释,并对SIMUDEBUG_MODE进行注释
- 把test_top.v设计文件设为顶层
- 生成bitstream
3. Flash Controller
注意:
- NEXT状态是在指令切换之间的过渡态,因为CS_N需要一个由高到低的过程来开启一个新指令
- WAIT状态为检查WIP的状态,只有WIP为0才能进行页编程、擦除等操作
重要寄存器:
- counter:执行指令周期计数器,提示当前是该状态的第几个周期
- SPI
- send:发送指令寄存器,只在counter=0时正确显示
- 读Flash
- read_buff:存放位移读数据
- read_byte:每byte捕获读数据,深度为1bytes 7,6,5,4,3,2,1,0
- read_8bytes:每byte捕获读数据,深度为8bytes 高位字节—>低位字节
- 写Flash
- write_byte_cnt:写flash字节计数器,提示当前写入flash的是第几个字节
- write_addr_buff:写flash地址累加器,提示当前写入flash的字节的地址
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!