




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
读写外部Flash实验卓越工程师培养系列FPGA开发实用教程——基于Xilinx和VerilogHDL第十章01实验内容实验内容基于FPGA高级开发系统设计一个读写外部Flash实验,可实现:按独立按键KEY1,FPGA向外部Flash写76543210;按独立按键KEY2,FPGA向外部Flash写89ABCDEF;按独立按键KEY3,FPGA从外部Flash读最后一次写入的数据。读写的数据都可通过串口,在串口助手上显示。实验内容02实验原理FPGA高级开发系统上XC6SLX16芯片的F7、D6、C6和C5引脚分别连接W25Q128FVSIG芯片的片选引脚、时钟引脚、数据输出引脚和数据输入引脚。实验原理片选引脚CS#低电平有效,在高电平时则工作在待机状态,此时串行数据输出(DQ1)为高阻抗状态。写保护引脚WP#能够限制写指令和擦除指令的操作区域,低电平有效,空闲状态时为高电平。控制端引脚HOLD低电平有效,暂停串行通信。WP#和HOLD用于数据保护和空闲模式的低功耗运行,若不使用则可将其置为高电平。SPIFlash电路原理图SPI是串行外设接口(SerialPeripheralInterface)的英文缩写,是Motorola公司推出的一种同步串行接口技术,是一种高速、全双工、同步的通信总线。SPI接口主要应用在EEPROM、Flash、实时时钟、A/D转换器,以及数字信号处理器和数字信号解码器之间。SPI系统总线只需要3根公共的连接线:时钟线SCLK及数据线MOSI和MISO。SPI接口通常使用4根连接线进行通信,即有4种信号。实验原理SPI协议01020304从机到主机的数据信号,用于收集从机所传输的数据信号。MISO主机到从机的数据信号,用于将主机的执行代码和数据发送到从机上。MOSI时钟信号,由主机产生。SCLK从机片选信号,由主机控制。 CS实验原理实验原理SPI经典结构如图10-3所示。如图10-4所示,当有多个从机时,每个从机上都有一个片选引脚连接到主机,因此当主机和某个从机通信时需要将从机对应的片选引脚电平拉高或拉低。W25Q128芯片是一款带有先进写保护机制和高速SPI总线访问的128Mbit串行Flash存储器。实验原理W25Q128芯片的引脚说明如表所示,该芯片共有8个引脚。引脚编号引脚名称描述1CS#片选引脚,低电平有效2DO串行数据输岀引脚3WP#写保护引脚,低电平有效4GND接地5DI串行数据输入引脚6CLK串行时钟输入引脚7HOLD#暂停引脚,用于暂停主机与设备的任何串行通信,不需要取消选择设备8VCC接电源W25Q128芯片实验原理根据数据手册可得W25Q128芯片的部分操作指令代码W25Q128芯片的SPIFlash指令较多,所有指令都是8位。操作时先将片选信号拉低选中器件,然后输入1字节(8位)操作指令代码,串行数据在片选信号拉低后的第一个时钟上升沿被釆样,SPIFlash启动内部控制逻辑,自动完成相应操作。有些操作在输入指令后需要输入地址字节和伪字节,在操作完成后再将片选信号拉高。实验原理SPI通信有4种不同的模式,不同的从机在出厂时可能就已经被配置为某种模式,这是不能改变的,但主机和从机通信双方必须工作在同一模式下,所以可以对主机的SPI模式进行配置。通过CPOL(时钟极性)和CPHA(时钟相位)来控制主机的通信模式,具体如下。Mode0:CPOL=0,CPHA=0。Mode1:CPOL=0,CPHA=1。Mode2:CPOL=1,CPHA=0。Mode3:CPOL=1,CPHA=1。SPI通信协议实验原理时钟极性CPOL用于配置SCLK的电平处于空闲状态或有效状态CPOL=0,表示当SCLK=0时,串行同步时钟的空闲状态为低电平,有效状态就是SCLK处于高电平时。CPOL=1,表示当SCLK=1时,串行同步时钟的空闲状态为高电平,有效状态就是SCLK处于低电平时。时钟相位CPHA用于配置数据采样处于第几个边沿CPHA=0,表示数据釆样在串行同步时钟的第1个边沿(上升或下降),数据输出在第2个边沿(上升或下降)。CPHA=1,表示数据釆样在串行同步时钟的第2个边沿(上升或下降),数据输出在第1个边沿(上升或下降)对这4种模式进行时序分析实验原理(1)CPOL=0,CPHA=0:当SCLK为低电平时是空闲状态,数据釆样在第1个边沿,即SCLK由低电平到高电平跳变,所以数据采样在上升沿,数据输出在下降沿。(2)CPOL=0,CPHA=1:当SCLK为低电平时是空闲状态,数据输出在第1个边沿,即SCLK由低电平到高电平跳变,所以数据釆样在下降沿,数据输出在上升沿。(3)CPOL=1,CPHA=0:当SCLK为高电平时是空闲状态,数据采样在第1个边沿,即SCLK由高电平到低电平跳变,所以数据采样在下降沿,数据输出在上升沿。(4)CPOL=1,CPHA=1:当SCLK为高电平时是空闲状态,数据输出在第1个边沿,即SCLK由高电平到低电平跳变,所以数据釆样在上升沿,数据输出在下降沿。实验原理Flash的SPI通信状态分为初始空闲状态IDLE发送命令状态CMD_SEND发送地址状态ADDR_SEND读数据等待状态READ_WAIT写数据状态WRITE_DATA完成状态FINISH_DONE读写外部Flash实验状态机实验原理写数据等待状态写数据检测状SPIFlash控制器的工作状态停止状态读数据状态写数据状态空闲状态读芯片ID状态擦除写使能指令状擦除写使能指令块擦除状态擦除等待状态擦除检测状态擦除禁止写指令状态写数据使能状态读写外部Flash实验内部电路包括50Hz分频模块u_clk_gen_50hz实验原理按键去抖模块u_r_clr_jitter_with_regl、u_w_clr_jitter_with_regl和u_w_clr_jitter_with_reg2。SPI读写控制模块u_flash_spi,按键检测模块u_btn_wr_rd,编码模块u_ascii_encode。打包模块u_enpacket,串口发送模块u
uart
transo。此外,还有一个Flash读写控制状态机(fsm)。读写外部Flash实验内部电路图03实验步骤复制工程文件夹并添加Verilog文件步骤一实验步骤将“D:\Spartan6FPGATest\Material”目录中的exp09_flash文件夹复制到“D:\Spartan6FPGATest\Product”目录中。然后,双击运行“D:\Spartan6FPGATest\Product\exp09_flash\project”目录中的flash.xise文件打开工程,该工程的顶层文件为flash.v。完善btn_wr_rd.v文件步骤二实验步骤将程序清单10-1中的代码输入btn_wr_rd.v文件的参数定义、信号定义和电路实现部分,并参考2.3节步骤5检查语法,下面对关键语句进行解释。第35至54行代码:检测btnl_wr_i、btn2_wr_i和btn_rd_i的上升沿,并输出Flash读写状态机启动标志flash_btnl_wr_run_o和flash_btn2_wr_run_o和flash_btn_rd_run_o,当标志为1时表示读写操作未完成,这时启动读写状态机完成读3操作。实验步骤第60至100行代码:读写标志和数据发送标志的输出。具体过程如下:当复位时,相关参数回到初始值0;在clk_i上升沿,根据条件响应相应的命令。第114至154行代码:进行数据的读写操作。具体过程如下:当复位时,相关参数回到初始值0;在clk_i的上升沿,通过判断读写标志执行相应的读写操作。第102至112行代码:产生数据读计数器。当复位时,计数器s_rd_cnt清零。在clk_i的上升沿,如果s_btn_rd_regl为1且s_btn_rd_reg2为0,表示读操作的按键按下,则将计数器s_rd_cnt清零;如果s_btn_rd_flag为1且rd_data_val_i和rding_i也为1,即读取的数据为有效数据且正在读取时,则s_rd_cnt执行加1计数操作。实验步骤实验步骤实验步骤实验步骤完善flash.v文件步骤三实验步骤将程序清单中的相关代码分别输入flash.v文件的参数定义、信号定义和电路实现部分,并参考2.3节步骤5检查语法,下面对关键语句进行解释。第45至54行代码:实现一个状态寄存器的功能,用于之后判断擦除或写入Flash是否编程成功。实验步骤第56至241行代码:Flash读写擦除状态机的实现。第56至77行代码实现的是产生当前状态的时序逻辑电路:在复位时,curr_state为空闲状态FLASHJDLE,相关信号为初始值0;在clk_i的上升沿,curr_state更新为next_state,相关信号对应更新。第79至241行代码实现的是产生下一状态、产生相关信号输出的组合逻辑电路,过程简单描述如下:当处于FLASHIDLE状态时,如果s_flash_btnl_wr_run或s_flash_btn2_wr_run为1,那么下一状态跳转为FLASHIDRD读芯片ID状态,如果s_flash_btn_rd_run为1,则下一状态跳转为FLASH_DATA_RD读数据状态。实验步骤当处于FLASH_ID_RD状态时,如果完成信号s_done_sig为1,则下一状态跳转到FLASH_WR_EN_ERASE擦除写使能指令状态,反之,则把命令CMD_FLASH_ID_RD赋值给s_next_flash_cmd,由flash_spi模块处理后发送给Flash,同时命令类型s_next_cmd_type赋值为1000。处于其他状态时同理。仿真测试步骤四实验步骤检查完flash.v文件的语法之后,对Flash模块进行仿真。在仿真之前,参考9.3节步骤5,将clk_gen_50hz.v的CNT_HALF和CNT_MAX分别修改为4和9。本实验已经提供了完整的测试文件flash_tf.v,可以直接参考2.3节步骤7对Flash模块进行仿真。如图10-13所示,可以看到按下按键btnl之后,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 稻谷加工设备智能化改造案例分析考核试卷
- 电动工具在太阳能光伏组件生产中的作用考核试卷
- 甘肃省收费公路运营服务质量(月度、年度)评价表
- 纸张的柔软度与舒适度考核试卷
- 站内安全防护系统升级与改造考核试卷
- 三年级数学口算天天练(可下载直接打印)
- 电机在电力行业能源资源开发与利用的应用考核试卷
- 社交心理学在品牌传播中的应用考核试卷
- 管道配件在农业灌溉系统的应用考核试卷
- 南京高三语文辅导作文
- 铸造行业安全培训课件
- 应急物业合同范本
- 《信息加密技术》课件
- 人教部编版八年级道德与法治上册:8.2《坚持国家利益至上》听课评课记录3
- 《“长赐”轮搁浅苏伊士运河事故探析及预防对策探究》7700字
- 2025年天翼云高级运维工程师认证参考试题库(含答案)
- 加油站的员工培训与技能提升
- 小米财务管理
- 《变态反应性皮肤病》课件
- 2021年高考物理试卷(福建)(空白卷)
- 2025年4月日历表(含农历-周数-方便记事备忘)
评论
0/150
提交评论