基于FPGA的串行Flash扩展实现

发布者:睿智之光最新更新时间:2007-12-03 来源: 国外电子元器件关键字:扇区  引脚  布线  时钟 手机看文章 扫描二维码
随时随地手机看文章

1 引言

FPGA凭借其方便灵活、可重复编程等优点而日益被广泛应用;闪速存储器(Flash Memory)以其集成度高、成本低、使用方便等优点,在众多领域中也获得了广泛应用。在现代数字电路设计中。经常需要保存大量数据,而Flash存储速度快、体积小、功耗低且价格低廉,可在线电擦写,信息在掉电后不会丢失,因此成为设计人员的首选。

2 M25P80的介绍

Flash是一种具有电可擦除的可编程ROM,可以分为两大类:并行Flash和串行Flash。并行Flash存储量大,速度快;而串行Flash存储量相对较小,但体积小,连线简单,可减小电路面积,节约成本,二者各有其优缺点,可依据实际需要选取。本文开发的系统对速度的要求不是很高,而对电路板的面积要求则较为苛刻,因此系统设计选用了串行FlashM25P80。

M25P80是意法半导体推出的一款高速8 Mbit串行Flash,共由16部分组成,每一部分有256页,每页有256个字节。M25P80具有先进的写保护机制,读取数据的最大时钟速率为40 MHz。M25P80的工作电压范围为2.7 V~3.6 V,具有整体擦除和扇区擦除、灵活的页编程指令和写保护功能,数据保存至少20年,每个扇区可承受100 000次擦写循环。并行Flash封装通常需要28个以上的引脚,因此,额外支出大,而M25P80采用SO8封装,需要的引脚数较少,从而节省了电路板空间,功率、系统噪声和整体成本等都会大幅度降低,既经济又实用。

图1为M25P80的引脚排列,其中Vcc和Vss分别为电源和地,其他6个引脚均可直接与FPGA的I/O引脚相连;写保护引脚W和HOLD挂起引脚,用于数据保护和空闲模式的低功耗运行,若不用可将其置为高电平;S为片选信号,为低电平时表示器件被选中,否则工作在待机状态;Q为串行数据输出,数据在时钟的下降沿输出Flash器件;D为串行数据输入,包括传输指令、地址和输人数据,输入信号在时钟的上升沿锁存Flash器件中。C为串行时钟,由FPGA提供时钟。由于时钟信号速率较高,所以在PCB布线时要特别注意减少干扰,最好采用地线屏蔽。

3 M25P80的指令操作

M25P80共有12条操作指令,所有指令都是8位,操作时先将片选信号(S)拉低选中器件,然后输入8位操作指令字节,串行数据在片选信号S拉低后的第一个时钟的上升沿被采样,M25P80启动内部控制逻辑,自行完成相应操作。指令后有时需输入地址字节,必要时还要加入哑读字节,最后操作完毕后再将片选信号拉高。下面简单介绍几条最常用的指令操作。

3.1 写使能指令

页面编程时,在写寄存器或者擦除之前,必须先使用写使能指令设置寄存器的写使能位。在上电或写使能无效指令操作,以及页面编程、写寄存器及擦除指令完成时,该写使能位复位。写使能指令的时序比较简单,指令0000 0110(06h)在片选信号拉低后的第一个时钟的上升沿送入Flash,先输入高位,指令输入完成后立即拉高片选信号,否则Flash的保护机制则认为是干扰信号而不执行该指令。写无效指令与写使能指令类似,只是输入的指令代码为0000 0100(04h)。

3.2 读/写状态寄存器

状态寄存器在任何时候都可读,即使在页面编程、擦除或者写寄存器时也可读取寄存器,可被连续读取状态寄存器。片选信号拉低后立即送人8位的读寄存器指令,接下来Flash将内部寄存器的数值串行输出,8位寄存器内容反复输出。

写状态寄存器的操作步骤:写使能指令输入完成后,拉高片选信号,Flash执行读使能指令设置寄存器。然后拉低片选信号,输入写寄存器指令和数据,随后必须马上拉高片选信号。

3.3 读数据指令

片选信号拉低后,首先输入8位读数据指令,再输入所要读取内容的24位首地址,地址指向的数据在时钟的下降沿输出。数据输出后,地址自动递增,并指向下一个地址。传输下一个地址指向的数据,当地址达到最高位后自动转向首地址000000h,如此循环,读出Flash中的全部内容,直到片选信号拉高。读数据指令时序如图2所示。

3.4 页面编程指令

在页面编程之前,首先要输入写使能指令,Flash完成寄存器设置后片选信号拉低,输入页面编程指令,紧接着输入编程地址和输入数据。一次最多可输入256字节数据,如果超出则只保留最后输入的256字节。如果输入的地址低8位不全为零,则从输入的地址开始编程,编程至该页最后,再从该页的起始位置开始编写。数据输人完毕后片选信号必须置高。否则不执行页面编程指令。页面编程指令时序图如图3所示。

3.5 擦除指令

擦除指令将Flash中的0置为1,分为部分擦除和整体擦除两种指令。整体擦除指令和写使能指令类似。只是输入的指令代码不同,而部分擦除指令只需要在指令代码后输入需要擦除的地址即可,一次可擦除一块。执行这两条指令之前,需要先执行写使能指令。

4 硬件实现

Flash正常工作时必须严格按照Flash的时序控制信号。首次使用Flash时一定要先进行擦除操作,编程指令可以将1变为0。往Flash中写入数据时,先将数据写入FPGA的ROM中,然后在FPGA内部根据Flash的页面编程时序将数据写入Flash中。选用Altera公司的FPGA,所需的ROM模块可以直接调用QuartusII中的宏功能模块,编写一个控制模块控制读取ROM的时间及地址,并将数据按照Flash的时序送入Flash中.页面编程的模块图如图4所示。选用的Flash容量较大,一般FPGA没有这么大的存储空间,所以数据可分多次写入。FPGA的ROM中的数据保存在.mif文件中,.mif由Matlab直接生成.mif文件,也可在QuartusII软件中生成。

Flash中的数据只要按照读时序要求就可以顺利读入FPGA中进行运算。在调试中,为了验证程序的正确性,可将从Flash中读出的数据通过串口送到计算机,模块图如图5所示。图中的txmit为串口的发送端模块图,它负责将接收到的数据按照RS232C的时序格式输出至计算机。flash_read模块按照Flash的读数据格式发出控制信号,并将从Flash读出的数据按照字节打包送到txmit模块。读时序验证无误后,去除txmit模块,将由Flash读出的数据送到其他模块参与运算。

需要注意的是,一些指令在操作完成后,需要留出一段时间Flash进行数据处理,如写寄存器周期(tw)为5 ms~15 ms,页面编程周期(tpp)为1.4 ms~5 ms,部分擦除周期(tse)为1 s~3 s,而整体擦除周期(tBE)为10 s~20 s。这些指令输入结束后拉高片选信号足够长的时间,也可以在执行这些指令操作的同时读取内部寄存器值,以监控上述周期是否结束。一旦检测到指令执行完毕则执行后续操作,这样可节省时间。如果忽略了Flash的处理时间则会发生错误,导致Flash无法正确执行指令。

5 结束语

数字电路设计中经常需要使用大容量存储器,串行Flash体积小、占用系统资源少、连线简单。随着微电子技术的迅猛发展,FPGA在数字电路设计中所发挥的作用越来越大,广泛应用于系统实现及功能验证。利用FPGA直接控制flash接口时序,不仅节约了专用编程器的开支,而且方便灵活、便于移植。使用硬件描述语言编写的接口时序,可重复利用,可移植性强。FPGA的灵活性和串行Flash的体积小的特点相结合,具有设计灵活、成本低廉、实用性强等优势,并具有重要的参考价值。

关键字:扇区  引脚  布线  时钟 引用地址:基于FPGA的串行Flash扩展实现

上一篇:基于FPGA的高速FIR数字滤波器的设计
下一篇:基于FPGA和ARM的图像采集传输系统

推荐阅读最新更新时间:2024-05-02 20:38

时钟芯片DS1302和MCS51单片机的接口程序C51
#pragma small #include #include /******************************************** * DS1302 PIN Configuration * ******************************************** sbit DS_CLK = P1^6 sbit DS_IO = P1^5; sbit DS_RST = P1^4; /******************************************** * Shift Data from Mcu in DS1302 * **************************
[单片机]
ARM9的系统时钟和串口(非流控 + 非FIFO + 查询方式)
实验的目的: 设置系统时钟,并在串口上输入一个字符,单板接收后将它的ASCII值加1后,从串口输出。 实验的源程序: /************************************************************************* s3c24xx.h *************************************************************************/ /* WOTCH DOG register */ #define WTCON (*(volatile unsigned long *)0x53000000) /* SDRAM regi
[单片机]
ARMLinux驱动RTC(实时时钟)驱动分析
硬件平台:FL2440(S3C2440) 内核版本:Linux 2.6.28 主机平台:Ubuntu 11.04 内核版本:Linux 2.6.39 交叉编译器版本:arm-linux-gcc 3.4.1 原创作品,转载请标明出处http://blog.csdn.net/yming0221/article/details/6584285 1、实时时钟概述 实时时钟(RTC)单元可以在断电的情况下使用纽扣电池继续计时工作。RTC使用STRB/LDRB ARM操作传输二进制码十进制数的8位数据给CPU。其中的数据包括秒、分、时、日期、天、月、年的时间信息。可以执行报警功能。 2、实时时钟操作 下面是RTC模块的电路图
[单片机]
ARMLinux驱动RTC(实时<font color='red'>时钟</font>)驱动分析
利用低价位数字测试仪器对高速时钟进行有效测试
当你需要测量高速时钟频率时,可能选择价位昂贵的台面仪器。而实际上,使用低价位数字测试仪器的数字捕获能力,再加上一些DSP软件函数即可测试高速时钟。下文介绍了具体的实现办法。 奈奎斯特定律的混叠 我们都相信,取样原理称,取样频率必须比被测最高频率高两倍。例如,当捕获160MHz的时钟,就要用320MHz以上的频率。如果使用33.333MHz取样器捕捉160MHz时钟,例如NextestMarerick公司的数字捕捉仪,则时钟信号必然会出现混叠,或者可能得到另一个较低的频率。 一个160MHz时钟会混叠成为6.666MHz,因为160MHz正好比33.333MHz*5=166.666MHz低6.666MHz。用33.33333
[测试测量]
利用低价位数字测试仪器对高速<font color='red'>时钟</font>进行有效测试
同步源:功率测量中的时钟
很多人为了守时的需要都会佩戴手表,但是除了时常电波对时的电波表之外,其他的表在跑了或长或短的时间之后,都会出现一定的偏差,这是为什么呢?机械表的不难理解,本身内部就存在不小的误差,无论怎么精工细作都难以完全消除。电子石英表看起来似乎不应该出现误差,其实不然。在石英钟表中,使用32.768kHz的晶振产生振荡信号,经过15分频得到1Hz信号,每个周期驱动秒钟走一下。晶振频率的精度和稳定性决定了手表走时的精确度。晶振最为重要的一个参数就是PPM,一个PPM等于百万分之一。普通的石英表使用的晶振精度为20个PPM,最名贵的瑞士手表使用的晶振精度可以高达5个PPM。 在功率测量中,同样需要一个时钟,PA6000功率分析仪使用的恒温晶振频率为
[测试测量]
同步源:功率测量中的<font color='red'>时钟</font>
ATmega128 时钟
时钟源 ATmega128 芯片有如下几种通过熔丝位选择的时钟源。时钟输入到AVR 时钟发生器,并通往其他合适的模块。 Note: 1. 对于所有的熔丝位, “1” 表示未编程, “0” 代表已编程。 每个时钟源在后续部分单独介绍。当CPU 自掉电模式或省电模式唤醒之后,被选择的时 钟源用来为启动过程定时,保证振荡器在开始执行指令之前进入稳定状态。当CPU 从复 位开始工作时,还有额外的延迟时间以保证在开始正常工作之前电源达到稳定电平。看门 狗振荡器用来为自己的启动时间定时。看门狗溢出时间所对应的WDT 振荡器周期数列于 Table 7。看门狗振荡器的频率与工作电压有关,具体请参见 P 313“ATmega128 典型特性
[单片机]
ATmega128 <font color='red'>时钟</font>源
μC/OS-III中的高效时钟节拍管理机制
引言 在嵌入式实时操作系统(RTOS)中,任务可通过调用延时函数(比如μC/OS中的OSTimeDly()函数)将自己延时挂起一段时间。任务在延时的过程中会释放CPU使用权,也就是说,延时的任务不占用宝贵的CPU资源。延时的任务由时钟节拍服务跟踪管理。当任务延时结束并准备运行时,时钟节拍服务会使该任务恢复运行。时钟节拍服务定期运行,其运行由周期的时钟节拍中断触发,而时钟节拍中断可由硬件定时器产生。 在μC/OS—III中,时钟节拍服务是在时钟节拍中断服务程序中完成的,每次时钟节拍服务都会遍历整个任务链表,递减所有延时任务的延时计数器。当任务数目较多时,时钟节拍服务处理时间很长,会造成中断延迟时间和任务延迟时间都变得很长,影响系统的
[嵌入式]
EPON系统中ONU的设计
引言   千兆以太网无源光网络(EPON)是一种点到多点拓扑结构的光接入网技术,采用无源光器件连接局端和远端设备,实现以太网业务的透明传输,并能在同一架构中实现语音、视频等综合业务的接入。EPON作为新兴接入网技术的突出优势在于低成本、易维护和扩展性好。EPON系统由OLT与ONU构成。    ONU硬件系统设计   系统硬件由嵌入式控制模块和网络交换模块两部分构成。嵌入式控制模块是ONU的控制和管理核心,它为嵌入式Linux操作系统的运行提供硬件平台,通过它来实现对网络交换模块的控制与配置,实现网络交换模块的正常运行。网络交换模块提供以太帧的交换与转发功能,嵌入式控制模块通过PCI总线与网络交换模块进行通信,访问网络交换模
[应用]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved