FPGA与并行FLASH交互的分析与实现

2023-10-12 07:22张小虎江承财冯超豪王雪莉王兵奇
火控雷达技术 2023年3期
关键词:低电平存储器时序

张小虎 云 龙 江承财 冯超豪 王雪莉 王兵奇

(西安电子工程研究所 西安 710100)

0 引言

目前的半导体存储器可以分为两大类:易失性存储器和非易失性存储器。易失性存储器包括静态随机存取存储器SRAM和动态随机存取存储器DRAM以及其它类型存储器。RAM型存储器的特点是易于使用,但它们共同的缺点就是都会在掉电的情况下丢失之前存储的数据。EEPROM和FLASH都属于非易失性存储器,在掉电情况下之前在它们内部存储的数据都不会丢失。其中,FLASH存储器可以被多次擦除并且多次重复编程,更因其容量大、数据写入后的非易失性在各种工业产品中得到了最广泛的应用[4]。相对于其它类型的半导体存储技术而言,FLASH存储器具有成本低、密度大、掉电不丢失的特点,在存储器市场所占的比例越来越大[5]。在高速数据处理领域,利用FPGA实现FLASH存储系统控制的工程应用相当广泛[2]。与传统的ROM和 EPROM相比,FLASH存储器可以通过与之相连的微处理器在线编程和擦除,这一优点使得FLASH存储器十分适合嵌入式系统的设计和开发[1]。

在相控阵雷达波束控制电路中,在对天线测试完成后需要对大量初始相位数据进行存储。在之前的工程应用中,我们通常将这部分数据存储在雷达波束控制电路的主控芯片中,也就是FPGA中。上述方式虽然解决了初始相位数据存储的问题,但还存在以下几个方面的缺点。首先,在FPGA中所能存储的数据量有限,较大数据量的存储会消耗FPGA的大量资源。其次,由于每套天线测试初始相位数据都不可能一致,如果将其存储在FPGA中会导致波束控制软件不统一,从而使波束控制电路的软硬件无法做到相互之间的互换。采用FLASH存储器之后,可以实现将天线测试后所产生的大量初始相位数据存储在外部独立芯片中。这样不仅提高了相控阵雷达波束控制电路中主控芯片FPGA资源的利用率,同时还提高了相控阵雷达波束控制电路的通用性和易用性。

1 并行FLASH存储器

JFM29GL256-E56是由上海复旦微公司研制的并行接口FLASH存储器芯片,它拥有256Mbit的大容量存储空间,重量只有1.85g。其工作电压可以在3.0V~3.6V之间,典型访问读速度可达120ns,25mA典型读电流,20mA典型擦除/编程电流,3μA典型静态电流。其封装采用CSOP56。JFM29GL256-E56的管脚分配如图1所示。

图1 JFM29GL256-E56的管脚分配

JFM29GL256-E56的存储结构如图2所示。

图2 JFM29GL256-E56的存储结构

灵活的区块结构,该并行FLASH存储器由256个64K字(128字节)的均匀区块组成。通过配置BYTE#管脚,该芯片可以提供16位或者8位双向数据读写功能。其中:A(23:0)是该器件的地址选择输入信号;DQ(15:0)是访问该器件时的16bit双向数据总线;CE#是片选使能信号;WE#是写使能信号;OE#是输出使能信号;WP#是硬件写保护信号;RESET#是硬件复位信号;BYTE#是字节/字模式选择信号;RY/BY#是该芯片准备/忙状态输出信号;VCC为电源输入;VIO为IO电源;VSS为电源地。

JFM29GL256-E56与FPGA连接的硬件原理图如图3所示。

图3 JFM29GL256-E56的硬件原理图

WP#输入为低电平时对内部状态机进行异步复位,对全芯片写保护,保证WP#为低电平时芯片强行处于待机模式,不接受任何指令,只允许读操作。硬件复位输入管脚RESET#可复位芯片。Ready/Busy#输出管脚RY/BY#监测芯片上电、硬件复位、编程或者擦除操作是否结束。硬件RESET#管脚可以终止正在进行的任何操作,并把内部状态机复位为读阵列数据的状态,输出禁止。RESET#管脚可以连接到FPGA的复位电路上,这样FPGA复位也可以同时复位该芯片。

2 分析与实现

2.1 并行FLASH擦除操作

FLASH存储器芯片擦除操作包含6个总线指令周期。这些指令调用内嵌擦除算法,不需要FPGA在擦除之前进行预编程。内嵌擦除算法在执行电擦除前,自动预编程和检验整个存储器是否为全零数据。FLASH存储器芯片擦除成功后,FLASH存储器芯片的所有位置均为0xFFFFh。FLASH存储器芯片擦除指令序列以写入两个解锁指令周期开始,接着是一个建立指令,然后是两个额外的写解锁指令周期,最后是FLASH存储器芯片擦除命令来启动内嵌擦除算法。当内嵌擦除算法结束以后,芯片返回读模式,地址不再被锁存。FLASH存储器芯片的擦除指令时序如图4所示。

图4 FLASH存储器芯片擦除指令时序图

FLASH存储器芯片的擦除指令分为6条,分别对应6组数据。第一条指令:地址为0x000555,对应总线数据为0x00AA;第二条指令:地址为0x0002AA,对应总线数据为0x0055;第三条指令:地址为0x000555,对应总线数据为0x0080;第四条指令:地址为0x000555,对应总线数据为0x00AA;第五条指令:地址为0x0002AA,对应总线数据为0x0055;第六条指令:地址为0x000555,对应总线数据为0x0010。

在FLASH存储器芯片擦除过程中,下面这几个时序信号需要特别注意。CE#信号在这期间需要始终保持低电平,OE#、WP#、RESET#需要保持高电平。WE#信号需要配合擦除指令的地址总线和数据总线产生周期性的负脉冲。RY/BY#信号是FLASH存储器芯片的状态监测信号,当FLASH存储器芯片进入擦除过程后,该信号就会被下拉为低电平,当FLASH存储器芯片的整个擦除过程完成后,该信号会被释放为高电平。

2.2 并行FLASH写操作

在写操作期间,当提供地址、命令和数据时,FPGA必须驱动CE#和WE#为低电平,OE#为高电平。地址在WE#下降沿或CE#下降沿的后到者被锁存,数据在WE#上升沿或CE#上升沿的前到者被锁存。单字编程模式是一种FLASH存储器芯片编程方法。在此模式下,使用4个写命令周期对各个地址进行编程。写编程操作是一个4个总线指令周期的操作。编程命令序列的开头是写入两个写解锁指令周期(Unlock write cycles),跟着是一个编程建立命令(program set-up command),然后写入编程地址和数据来启动内嵌编程算法。当内嵌编程算法执行结束后,FLASH存储器芯片返回读模式,地址不再被锁存。FPGA可以根据DQ7和DQ6来判断写编程操作的状态,也可以用RY/BY#来判断写编程操作的状态。在没有擦除操作的情况下,禁止对同一地址多次进行写编程。原来为“0”的位不能通过写编程操作改为“1”。如果这样做,FLASH存储器芯片可能会将DQ5置为1,或者引起DQ7和DQ6状态位指示操作成功,但是实际该数据位还为“0”。只有FLASH存储器芯片擦除操作可以把数据位由“0”变为“1”[3]。FLASH存储器芯片的写编程指令时序如图5所示。

图5 FLASH存储器芯片写编程指令时序图

FLASH存储器芯片的写编程指令分为4条,分别对应4组数据。第一条指令:地址为0x000555,对应总线数据为0x00AA;第二条指令:地址为0x0002AA,对应总线数据为0x0055;第三条指令:地址为0x000555,对应总线数据为0x00A0;第四条指令:实际写入的字编程地址为PA,对应写入的数据为PD。FLASH存储器芯片连续24个字编程指令时序如图6所示。

图6 FLASH存储器芯片连续24个字编程指令时序图

在FLASH存储器芯片的字编程过程中,也需要注意下面这几个时序信号。CE#信号在这期间需要始终保持低电平,OE#、RESET#需要保持高电平。WP#信号需要在整个字编程周期的最开始阶段给定一个负脉冲然后上拉为高电平。WE#信号需要配合字编程指令的地址总线和数据总线产生周期性的负脉冲。RY/BY#信号是FLASH存储器芯片的状态监测信号,当FLASH存储器芯片每次进入字编程周期后,该信号就会被下拉为低电平,当FLASH存储器芯片在该周期的字编程操作过程完成后,该信号被释放为高电平。当新的字编程周期开始后,该信号被下拉为低电平,如此反复直至所有字编程周期操作结束后该信号被上拉为高电平。

2.3 并行FLASH读操作

FLASH存储器芯片的读操作没有专门对应的指令。在满足读时序的条件下,给定FLASH存储器芯片的读地址,在数据总线上就可以读出存储在FLASH芯片中该地址所对应的数据。FLASH存储器芯片单独读操作时序如图7所示。

图7 FLASH存储器芯片单独读操作时序图

读取FLASH存储器芯片中的数据,FPGA需要将FLASH存储器芯片的CE#信号和OE#信号置为低电平,CE#信号是FLASH存储器芯片的电源控制和片选信号,OE#信号是FLASH存储器芯片输出控制和数据到输出管脚的开关信号。WE#信号应保持为高电平。在FLASH存储器芯片上电或硬件复位后,内部状态机被设置为读数据状态。在这种模式下不需要专门的命令来读数据,只要在读周期发送有效的地址A23~A0,则可以在地址稳定后将数据驱动到DQ15~DQ0上。FLASH存储器芯片连续24个读操作时序如图8所示。

图8 FLASH存储器芯片连续24个读操作时序图

在这里,为了保证读取数据的可靠性,FPGA产生了一个比OE#信号更窄的脉冲信号T_OE#用来对数据总线上的读出数据进行实时锁存。

3 结束语

为了解决相控阵雷达波束控制电路中大量初始相位数据存储的问题,本文提出用外部独立的并行FLASH存储芯片与FPGA进行交互解决该问题。文中详细分析了JFM29GL256-E56这种并行FLASH存储器芯片与FPGA交互的三种方式,包括擦除操作、写编程操作、读操作以及具体的实现。采用这种方式不仅提高了相控阵雷达波束控制电路中主控芯片FPGA资源的利用率,同时还提高了相控阵雷达波束控制电路的通用性和易用性。

猜你喜欢
低电平存储器时序
基于时序Sentinel-2数据的马铃薯遥感识别研究
基于Sentinel-2时序NDVI的麦冬识别研究
铁道车辆高/低电平信号智能发生器设计
静态随机存储器在轨自检算法
2017款凯迪拉克2.8L/3.0L/3.2L/3.6L车型低电平参考电压总线电路图
一种毫米波放大器时序直流电源的设计
15-MeV电子直线加速器的低电平系统
存储器——安格尔(墨西哥)▲
DPBUS时序及其设定方法
基于Nand Flash的高速存储器结构设计