基于FPGA的SPI Flash控制器的设计方案

最新更新时间:2013-09-28来源: 互联网关键字:FPGA  SPI  Flash  控制器 手机看文章 扫描二维码
随时随地手机看文章

本文提出一个基于FPGA的SPI Flash读写硬件实现方案,该方案利用硬件对SPI Flash进行控制,能够非常方便地完成Flash的读写、擦除、刷新及预充电等操作,同时编写的SPI Flash控制器IP核能够进行移植和复用,作为SOC芯片的功能模块。SPI Flash控制器采用VHDL语言进行编写,在Modelsim 6.5g上通过功能仿真,并且在XUPV5-LX110TFPGA开发板上通过硬件测试,实现结果表明方案的可行性。

  1.引言

  Flash是一种具有电可擦除的可编程ROM,按接口可以分为两大类:并行Flash和串行 Flash.并行Flash存储量大,速度快;而串行Flash存储量相对较小,但体积小,连线简单,可减小电路面积,节约成本。SPI Flash是内嵌SPI总线接口的串行Flash,它比起传统的并行总线接口Flash,节省了很多的I/O口资源,从而为系统功能的扩展提供了更多的可能。

  随着SPI Flash越来越多地应用到各种领域,其传统读写方式中读写速度不够快、占用CPU资源以及操作不够简便灵活的缺点表现得更为突出,如何解决以上问题成为大家关注的焦点。利用硬件对SPI Flash进行控制,能够非常方便地完成Flash的读写、擦除、刷新及预充电等操作,且不占用CPU资源,同时编写的SPI Flash控制器IP核能够进行移植和复用,作为SOC芯片的功能模块。因此提出了一种基于FPGA的SPI Flash控制器的设计方案,并用VHDL实现。编写的SPI Flash控制器IP核在Modelsim 6.5g上进行了功能仿真,在FPGA开发板上进行了测试验证,可作为功能模块应用于SOC芯片设计。

  2.SPI Flash控制器设计

  2.1 SPI Flash芯片选择

  本方案SPI Flash芯片采用GigaDevice公司的GD25Q系列,GD25Q系列SPI Flash包括4Mbit的GD25Q40,2M bit的GD25Q20,1M bit的GD25Q10以及521K bit的GD25Q512,这里将采用512K bit的GD25Q512.图1为GD25Q系列SPIFlash(SOP8封装)引脚排列图。其中VCC和VSS分别为电源和地,其他6个引脚均可直接与F P G A的I / O引脚相连;写保护引脚W P #和HOLD#挂起引脚用于数据保护和空闲模式的低功耗运行,若不使用可将其置为高电平;CS#为片选信号,低电平时表示器件被选中,反之工作在待机状态;SO为串行数据输出,数据在时钟的下降沿输出到Flash器件;SI为串行数据输入,包括传输指令、地址和输入数据,输入信号在时钟的上升沿锁存到 Flash器件中。SCLK为串行时钟,由FPGA提供。

图1 GD25Q系列SPI Flash引脚排列

  2.2 SPI Flash指令操作

  GDQ25系列SPI Flash指令较多,所有指令都是8位,操作时先将片选信号CS#拉低选中器件,然后输入8位操作指令字节,串行数据在片选信号CS#拉低后的第一个时钟的上升沿被采样,SPI Flash启动内部控制逻辑,自动完成相应操作。有些操作在输入指令后需要输入地址字节和伪字节,最后操作完成后再将片选信号拉高。

  2.3 SPI Flash控制器设计原理

  SPI Flash控制器必须能够产生SPI Flash芯片执行各操作(如写使能、刷新、预充电、读芯片ID、读取状态寄存器、写状态寄存器、扇区擦除、块擦除、整体擦除、读取数据、快速读取数据、页面编程)时所需指令时序,用户只需要输入对应操作的8位指令值及对应的操作地址值,SPI接口与SPI Flash的数据传输将由SPI Flash控制器内部状态机控制执行。

  3.SPI Flash控制器实现

  3.1 SPI Flash测试系统

  本文设计的SPI Flash测试系统由用户端、FPGA和SPI Flash构成,系统框图如图2所示,其中FPGA选用Xilinx公司Virtex5系列芯片(Virtex-5 XC5VLX110T),SPI Flash芯片采用GigaDevice公司的GD25Q系列512K bit容量的GD25Q512.

图2 SPI Flash测试系统框图

  SPI Flash控制器由VHDL编写,主要为SPIFlash芯片提供串行时钟,将从用户端输入的数据(包括指令字节、地址字节和数据字节)寄存起来并在串行时钟的控制下通过spi_dout信号线逐位输出到SPI Flash芯片中,同样将从SPI Flash芯片中读出的串行数据转换成并行数据送给用户端。此外,SPI Flash控制器还必须在用户通过sel、addr以及wr组合发出的操作命令下产生一系列的控制信号,并在这些控制信号的作用下根据状态机的转换方向进行动作并且输出相应的结果。

  3.2 SPI Flash控制器控制状态机

  由于SPI Flash操作命令较多,并且很多操作命令之间存在相同的操作步骤,所以利用状态机进行控制能够准确有条理地完成对SPI Flash的操作。分析GDQ25系列SPI Flashdatasheet,可将SPI Flash控制器的工作状态划分为空闲状态(IDLE)、传输指令状态(TxCMD)、传输高字节地址状态(TxADD_H)、传输中间字节地址状态(TxADD_M)、传输低字节地址状态(TxADD_L)、传输伪字节状态(TxDummy)、传输数据状态(TxDATA)和接收数据状态(RxDATA)。除此以外,由于所有接收到的指令值都寄存在指令寄存器内,当一条指令执行完毕时需要将指令寄存器清空,以便接收下一条用户指令,所以设定一个清除指令状态(CLR_CMD)作为每一操作完成后的收尾状态。当状态机进入CLR_CMD状态后,表示当前操作已经完成,正将指令寄存器指令值清空;当状态机进入IDLE状态时,用户可输入下一操作指令,对SPI Flash进行下一操作。考虑到SPI Flash的响应时间,在以上工作状态中间插入了一些等待状态(WAIT)。

  4.SPI Flash控制器验证

  SPI Flash控制器IP核在Modelsim 6.5g上能够通过功能仿真,下面分析一下SPI Flash页面编程操作及数据读取操作的功能仿真。

  4.1 页面编程操作

  页面编程操作仿真波形如图3所示,图中截取输入00H和01H数据的波形,最多可连续输入一页 256字节数据。当用户输入页面编程指令02H,状态机进入txcmd状态,页编程指令02H通过spi_dout传输给SPI Flash.当tx_bit_cnt计数到8时,指令传输完毕,状态机在等待后进入txadd_h状态,同时tx_bit_cnt被清零,需写入数据的对应存储空间的起始地址高字节值89H被传输。当tx_bit_cnt计数到8时,高字节地址值89H被传输完毕,状态机在等待后进入txadd_m状态,同时tx_bit_cnt被清零,同上,地址中间字节67H和45H被传输。当add_h、add_m和add_l寄存器的值依次传输完毕,状态机进入 wait6状态,等待用户输入需写入SPI Flash的数据。当用户设定{sel,addr,wr}为10001b,状态机进入txdata状态,同时tx_new_data被置高,表示要传输新写入的数据。在txdata状态下,控制器将传输写入的第1字节数据00H,当tx_bit_cnt计数到8时,第1字节数据00H被传输完毕,tx_new_data被拉低,tx_empty被拉高,表示当前没有可传输的数据,状态机进入wait6状态,等待新数据写入。直到用户再次设定 {sel,addr,wr}为10001b,状态机再次进入txdata状态,同时tx_new_data被置高,表示写入的第2字节数据01H将要传输。当tx_bit_cnt计数到8,第2字节数据传输完毕,tx_new_data被拉低,tx_empty被拉高,状态机进入wait6状态。由于 GDQ25系列SPI Flash页面编程一次最多可写入256字节数据,所以用户在写入数据时,应注意最多写入256次数据,否则超过的数据将覆盖开始的数据。当状态机处于 wait6状态而用户想结束页面编程时,可向控制器输入NOP指令强制结束当前页面编程操作。状态机在接收到NOP指令后将进入clr_cmd状态和 idle空闲态,等待下一条指令的到来。当页面编程操作还没结束时,busy将一直被置高。

图3 页面编程操作仿真波形

  4.2 数据读取操作

  读数据指令仿真波形如图4所示。当用户输入读数据指令03H,状态机进入txcmd状态,读数据指令通过spi_dout传输给SPI Flash。

图4 数据读取操作仿真波形

  当tx_bit_cnt计数到8时,指令传输完毕,状态机等待后进入txadd_h状态,传输要读出数据所在存储空间起始地址的高字节,同时tx_bit_cnt清零,以为下一个传输作准备。地址高字节寄存器add_h数值56H通过spi_dout 传输给SPI Flash,当tx_bit_cnt计数到8时,状态机进入txadd_m状态,传输地址中间字节,同理,控制器在状态txadd_m和状态 txadd_l状态下完成传输地址中间字节34H和地址低字节12H.当24位地址传输完毕,状态机在等待后进入rxdata状态,接收从spi_din 输入的第一字节数据01H.当rx_bit_cnt计数到8时,控制器完成第1字节数据的接收,rx_data显示为01H,状态机状态转换为wait8 状态,等待用户设定{sel,addr,wr}以接收第2字节。当用户设定{sel,addr,wr}为10000b时,状态机再次进入rxdata状态,接收从spi_din输入的第2字节数据02H,同时rx_ready被拉低,rx_empty被拉高,rd_data被拉高,表示将要读出新输入的数据。当rx_bit_cnt计数到8时,第2字节数据接收完毕,rx_ready被拉高,rx_empty为低,rd_data显示新接收的字节数据 02H,状态机经等待后重新进入wait8状态,等待用户再次设定{sel,addr,wr}值,接收第3字节数据值,同理,可读出SPI Flash内部所有数据。

  当状态机处于wait8状态而用户想退出读数据操作时,可向控制器输入NOP指令强制结束当前读数据操作。状态机在接收到NOP指令后将进入clr_cmd状态和idle空闲态,等待下一条指令的到来。当读数据操作还没结束时,busy将一直置高。

  5.结语

  目前SPI Flash控制器IP核已经在XUPV5-LX110T FPGA开发板上通过硬件测试,并且将作为功能模块应用于SOC芯片设计。实践证明,基于FPGA的SPI Flash控制器能够简化SPI Flash读写操作流程,从而提高SPI Flash的读写速度,而操作时不占用CPU资源的特点,将使SPIFlash的读写更有优势。

关键字:FPGA  SPI  Flash  控制器 编辑:神话 引用地址:基于FPGA的SPI Flash控制器的设计方案

上一篇:Si2155:新一代硅调谐器详细介绍
下一篇:高精度低成本:一款LED老化测试方案

推荐阅读最新更新时间:2023-10-12 20:49

引领创新潮流 石墨存储器架构掀FPGA设计新风
  有芯片新兴公司创始人表示,石墨存储器架构有望给FPGA设计带来一股新风。   新兴公司NuPGA创始人ZviOr-Bach为EETimes年度创新奖得主。在之前他经手成立了eASIC和ChipExpress。Or-Bach已和莱斯大学(RiceUniversity)一同为由JamesTour教授研发的基于碳的存储器工艺制程申请专利。该方案采用石墨打造可重复编程存储器,区别于传统FPGA。   “采用导孔中的石墨作为熔丝是一个非常有意思的想法”,GartnerInc资深分析师DeanFreeman表示,“在接下来的五年里,我们将看到许多非常具有创新性和创造性的想法出现在我们的产品中。”   莱斯大学研究人员开发
[嵌入式]
三星中国西安NAND Flash工厂二期项目动工
  在当前NandFlash存储器仍旧供不应求,市场价格依旧居高不下的情况下,日前全球NandFlash存储器龙头企业的韩国 三星 ,日前宣布将在本月底正式动工的中国西安NandFlash存储器厂的扩建计划,28日正式动工,预计将在2019年完工启用。下面就随手机便携小编一起来了解一下相关内容吧。   据了解,该项总金额高达70亿美元,工程期间达到3年的扩厂计划,是 三星 在2017年的8月间所宣布。目前 三星 西安厂的第一期产线是在2014年所建置,月产能为12万片。如今,新的产线动工建置,未来完成之后将可再为三星增加每月20万片的产能。   只是,该新的NandFlash存储器的产线虽然对三星极为重要,但三星也曾经一度面临放
[手机便携]
赛灵思28nm低功耗FPGA将一箭双雕
  尽管FPGA阵营一路高唱凯歌在众多市场赶走了ASIC/ASSP,但是一个最重要的领域——下一代网络的最核心处,仍是大型ASIC/ASSP占了上峰。此外大批量生产时许多用户仍选择由FPGA转向ASIC也是一道难题。此次赛灵思的新一代28nm FPGA推出将可一箭双雕……      尽管FPGA阵营一路高唱凯歌在众多市场赶走了ASIC/ASSP,但是有一个最重要的领域——下一代网络的最核心处,包括在下一代无线基站和下一代100G光纤汇聚网络的最核心的处理器领域,仍是大型ASIC/ASSP占了上峰,因为后者的低功耗,因为后者的强大处理能力。而在目前的工艺下,如果FPGA要做到如大型ASIC一样的处理能力,功耗是绝对不能达到客户要求的
[嵌入式]
STM32-Flash做为存储器储存数据
说到STM32的FLSAH,我们的第一反应是用来装程序的,实际上,STM32的片内FLASH不仅用来装程序,还用来装 芯片 配置、芯片ID、自举程序等等。当然, FLASH还可以用来装数据。 自己收集了一些资料,现将这些资料总结了一下,不想看的可以直接调到后面看怎么操作就可以了。 FLASH分类 根据用途,STM32片内的FLASH分成两部分:主存储块、信息块。 主存储块用于存储程序,我们写的程序一般存储在这里。 信息块又分成两部分:系统存储器、选项字节。 系统存储器存储用于存放在系统存储器自举模式下的启动程序(BootLoader),当使用ISP方式加载程序时,就是由这个程序执行。这个区域由芯片厂写入BootLoader,
[单片机]
数字化LED光源控制器设计
  在现代自动化生产过程中,机器视觉系统广泛应用于工况监视、成品检验和质量控制等领域。机器视觉系统主要由照明系统、镜头、摄像机、图像采集卡和图像处理系统组成,通过光源、镜头及CCD等成像器件匹配图像采集及处理系统来进行产品的检查、识别等,此技术可大大减轻人工目检产品质量的负担,有效地提高检测效率,并有利于生产管理。照明系统是机器视觉系统的重要组成部分,是保证采集图像质量和应用效果的关键,而光源控制器是照明系统的核心,其主要作用就是针对具体应用场合提供不同的照明亮度和照明方式,从而提高照明光源的品质,获得高质量的图像。当前国内多数厂商生产的光源控制器是手动调节或通过RS232与Pc机通信进行调节,使用较为不方便,效率低,且成本较高。
[电源管理]
8051单片机基础2:内核和存储器(RAM,Flash)架构
参考资料: ① Keil Help ②《STC单片机原理及应用——从器件、汇编、C到操作系统的分析和设计》何宾著 ③《MCS-51系列单片机及其应用(第6版)》孙育才、孙华芳著 在8051单片机架构中,主要包含: CPU(运算器、控制器) 存储器(内部RAM、扩展RAM、Flash) 特殊功能寄存器 其他:外设、时钟系统等 经典8051单片机内部结构 8051存储器结构和地址空间 一、CPU(运算器、控制器) 运算器和控制器构成了8051中央处理单元(Central Processing Unit, CPU) 1. 运算器   单片机的运算器主要包括8位算术/逻辑运算部件、累加器A、寄存器B、程序状态寄
[单片机]
8051单片机基础2:内核和存储器(RAM,<font color='red'>Flash</font>)架构
BL2100控制器在生物发酵中的应用
  目前,中小型的生物发酵罐控制器采用的是单片机或者PLC,软件开发调试环境繁琐,开发周期长,采用嵌入式系统可以有效的解决这些问题,嵌入式系统具有友好的软件开发环境,联机调试方便,实时性好,可靠性高,并且,有些嵌入式系统还扩展了A/D、D/A、DI/DO和通讯端口。BL2100嵌入式系统正是集成了以上的所有优点,Ethernet 通讯方式可以方便地实现多台发酵罐与多台监控系统之间组成网络控制系统。因此,将嵌入式系统应用到生物发酵系统中,可以从本质上提高整个系统的性能。         嵌入式系统是以应用为中心、以计算技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性等严格要求的专用计算机系统。BL2100控制器的R
[单片机]
BL2100<font color='red'>控制器</font>在生物发酵中的应用
意法半导体无线微控制器加强Sindcon智能表计的能效和可持续化
2023年9月18日, 中国--服务多重电子应用领域、全球排名前列的半导体公司意法半导体(STMicroelectronics,简称ST;) 日前宣布与新加坡智能表计厂商 Sindcon(新加坡)物联网科技私人有限公司合作,用意法半导体的 STM32WLE5 LoRaWAN® 无线微控制器改造升级Sindcon的智能表计,部署到 Sindcon 在印度尼西亚雅加达的由五万多块水表、燃气表和电表组成的能源网络。 意法半导体亚太区(除中国外)市场总监 Paolo Oteri 表示:“STM32WLE5 微控制器 (MCU) 采用长距离低功耗无线通信技术,可以通过LoRaWAN 无线网络远程抄表,有效解决在地貌广阔、多样化的
[嵌入式]
意法半导体无线微<font color='red'>控制器</font>加强Sindcon智能表计的能效和可持续化
小广播
最新模拟电子文章
换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved