1、第 1 页 共 46 页基于 FPGA 的 FLASH 存储器读写电路设计摘 要 :本文针对 SAMSUNG 公司的 NAND 型 Flash 提出了一种通用的 Flash 检测系统的设计方案,详细介绍基于 FPGA 的微型数字存储系统的设计该系统利用FPGA 对 Flash 存储器进行读、写、擦除等操作,并将写入的数据通过计算机 SPP 接口读入上机以此实现数据读出、显示等功能。该系统选用 FPGA 作为 Flash 的主控制器,数据传输时一次传送 8 位(一个字节)或更多,SPP 接口通信是基于 K9F1G08U0M 实现的,其控制逻辑主要也是由 FPGA 实现。该系统设计利用 FPGA
2、硬件逻辑编程可方便灵活地实现高速、大容量 Flash 程序编写。关键词:FPGA ,SPP , Flash第 2 页 共 46 页Design of FLASH Memory Circuit Based on FPGAAbstract:This paper introduces a general Hash Check and Measure System design according to SamsungS NAND Flash.The design of micro data memory system based oil FPGA is detailed in the paper.F
3、PGA controls the reading,writing and erasing operation of Flash, the data in which is transported to upper computer by SPP interface to realize datareading and displayThe system adopts FPGA as the main controller of Flash.The data size of the transmission is 8 bit(1byte)or more.The communication of
4、SPP interface is based on K9F1G08U0M,the control logic of which is realized by FPGA.The system design realizes convenient program compiling with high speed and hish capability Flash.Key words:FPGA,SPP,Flash第 3 页 共 46 页1 引言1.1 背景意义本课题主要研究通过计算机并行口的控制实现对 FLASH 存储器的操作。目前,在实验室和工业应用的各种控制系统中,串口是常用的计算机与外部控制
5、系统之间的数据传输通道。由于串行通信方便易行,所以应用广泛。但是使用串行通信,在实时性、速度、数据量等方面受到限制。而计算机的并行端口传输数据时是一次性传送 8 个位(一个字节)或更多,由于传输量较大,因此数据的传输速度要比串口快,在许多必须讲究传输速度的控制系统里,用 PC 并行端口与之连接就是一个很好的解决方案 1。目前,对 FLASH 存储器的操作多是采用 USB 接口,USB 接口也的确是一种较为理想的接口,但通讯协议较为复杂,要求硬件开发人员对操作系统(软件)知识的了解较全面,硬件开发人员既要编写固件的 USB 接口程序,同时还要编写操作系统的 USB 驱动程序 2。与 USB 接口
6、相比,SPP 并口的通讯协议非常简便,只要熟悉标准并口操作的人稍微了解 SPP 并口资料即可。无须专门开发驱动程序,直接对硬件层编程即可,当然也可以利用操作系统(软件)提供的标准函数来实现 3。SPP 并口本身就是计算机的标准接口之一,不需要另外添加别的接口卡,也不需要打开计算机机箱,直接插拔标准的并口通讯电缆线即可,跟以前使用标准并口的打印机一样,方便省事。1.2 计算机并口的发展及现状并行接口简称并口,也就是 LPT 接口,是采用并行通信协议的扩展接口。并口的数据传输率比串口快 8 倍,标准并口的数据传输率为 1Mbps,一般用来连接打印机、扫描仪等 4。所以并口又被称为打印口。最初的并口
7、设计是单向传输数据的,也就是说数据在某一时刻只能实现输入或者输出。后来 IBM 又开发出了一种被称为 SPP(Standard Parallel Port)的双向并口技术,它可以实现数据的同时输入和输出,这样就将原来的半互动并口变成了真正的双方互动并口; Intel、 Xircom 及 Zenith 于 1991 年共同推出了 EPP(Enhanced Parallel Port,增强型并口),允许更大容量数据的传输(5001000byte/s),其主要是针对要求较高数据传输速度的非打印机设备,例如存储设备等;紧接着 EPP 的推出,1992 年微软和惠普第 4 页 共 46 页联合推出了被称
8、为 ECP(Extended Capabilities Port)的新并口标准,和 EPP 不同,ECP是专门针对打印机而制订的标准;发布于 1994 年的 IEEE 1284 涵盖了 EPP 和 ECP 两个标准,但需要操作系统和硬件都支持该标准,这对现在的硬件而言已不是什么问题了。目前我们所使用的并口都支持 EPP 和 ECP 这两个标准,而且我们可以在 CMOS当中自己设置并口的工作模式 5。1.3 可编程逻辑器件的发展及现状计算机与微电子技术的飞速发展更加加速了电子设计自动化 EDA(Electronic Design Automation)和可编程逻辑器件 PLD(Programma
9、ble Logic Device)的发展。先进的 EDA 工具已经从传统的自下而上的设计方法改变为自顶向下的设计方法,以硬件描述语言 HDL(Hardware Description Language)来描述系统级设计,并支持系统仿真和高层次综合。ASIC(Application Specific Integrated Circuit)的设计与制造仅在实验室就可以完成,这都是由于 PLD 器件的出现及功能强大的 EDA 软件的支持。现在应用最广泛的高密度 PLD 器件主要是现场可编程门阵列 FPGA(Field Programmable Gate Array)和复杂可编程逻辑器件 CPLD 。
10、目前,FPGA/CPLD 己经应用于很多领域。在通信方面 FPGA 器件已经成功的应用在高速信号处理系统、超高速数据采集系统、通信接口芯片、各种滤波器(如:有限冲击响应滤波器(FIR )、无限冲击响应滤波器 (IIR)、数字滤波器和时空码编码器等电路设计中。在国防、航天领域,也有许多方面应用了 FPGA。在飞机动力综合测试系统中,测量飞机启动发电性能参数方面,应用 FPGA 实现键盘接口;雷达测距机中采用FPGA 器件实现了数据处理和测距机主回路两大部分;在工业自动化领域 FPGA 的应用更为广泛。应用 FPGA 实现激光选取烧结成型(SLS )控制系统提高了控制系统的集成度、可靠性及系统的可
11、重构性;在时隙交换控制器中,利用 FPGA 器件来完成话音时隙的交换从而达到用户通话的目的;目前,在计算机硬件结构方面的 EDA 实验也取得了许多成功。如异步先进先出堆栈(FIFO)、直接存储器存取(DMA )控制器。在 DMA 控制器中利用格雷码对地址进行编码,采用 VHDL 语言进行电路设计,并通过了软件仿真和硬件实现。在我国,FPGA 器件已经大量应用到产品的研制和最终产品中,在降低产品成本的基础上极大地缩短了产品上市时间,产生了巨大的经济效益 6。 第 5 页 共 46 页1.4 FLASH MEMORY 在数据存储方面的应用现状Flash Memory 中文名称为快闪记忆体,Flas
12、h Memory 或是 Flash ROM,是目前最新的一种 ROM 形式(不过其內部材料已和最早的 ROM 大相径庭) ,是 1980 年代由英特尔公司推出,主要用以替代 EEPROM,做系统程式储存及记录(Code Storage) 。着重在指令的快速读取及对系统的开机管理。快闪记忆体并不需要不断充电來维持其中的数据,但是每当数据更新时必须以 blocks 为单位加以覆写,而非一个 byte、一个byte 写入,Block 的大小从 256kB 到 20MB 不等。Flash Memory 的物理特性与常见的内存有根本性的差异:目前各类 DDR、SDRAM 或者 RDRAM 都属于挥发性内
13、存,只要停止电流供应内存中的数据便无法保持,因此每次电脑开机都需要把数据重新载入内存;闪存则是一种不挥发性(Non-Volatile) 内存,在没有电流供应的条件下也能够长久地保持数据,其存储特性相当于硬盘,这项特性正是闪存得以成为各类便携型数字设备的存储介质的基础。快闪记忆体由 EEPROM 演化而來,但是价格较便宜且位元密度较高,所以会成为EEPROM 的替代品。目前快闪记忆体多用于 PC Card 记忆卡,主机板和 Smart Card。近年來,随着写入速度、高容量及单位位元价格下降等因素考量,对声音、影像等资料(例如 MP3)的储存也成为快闪记忆体技术发展的另一主流 8。1.5 本说明
14、书的主要内容本文主要说明的内容:1、阐述了本课题的电路设计思想;2、阐述了系统的硬件电路结构、逻辑控制模块的设计及其功能实现;3、阐述了 VHDL 语言编写 K9F1G08 的读、页编程、块擦除等操作时序的详细过程; 4、阐述了 MAXPLUX 和 PROTEL 等软件设计平台的发展及应用。第 6 页 共 46 页2 总体电路设计本系统的硬件结构框图如图 2.1 所示: 控制数据/命令 数据数据计算机并行接口(SPP)接口电路控制状态数据/命令控制状态FPGA器件FLASH存储器状态图 2.1 系统硬件结构框图本系统是计算机通过并行接口控制可编程逻辑器件 FPGA 来实现对 FLASH 存储器
15、的块擦除、页编程、读数据等操作。在进行块擦除操作时,计算机通过并行接口(SPP 模式)向可编程逻辑器件FPGA 发送指令,FPGA 接收到指令后对 FLASH 存储器进行块擦除操作,并将状态返回计算机并行接口。在进行页编程操作时,可编程逻辑器件 FPGA 接收到计算机并行接口发出的指令后,立即对 FLASH 存储器进行页编程操作,先写入命令,再写入要编程的地址,然后将数据发送到 FLASH 存储器中。在进行读取数据操作时,可编程器件 FPGA 首先接收到计算机并行口发出的指令,然后对 FLASH 存储器进行读取数据操作,先写入命令,再写入要读取的地址,然后开始输出数据,并将状态返回计算机并行接
16、口。2.1 计算机并行接口电路模块设计在系统中,计算机并行接口电路模块(见图 2.2)的主要作用是连接 FLEX10K10 芯片和计算机并口。电路中的电阻和电容组成了一阶无源 RC 低通滤波电路,其基本功能就是:只允许一定频率范围内的信号通过电子电路,而对不需要的频率分量则尽可能加以抑制或消弱。另外,当计算机并行接口进行带电拔插时,连接在计算机并行接口和 FPGA 芯片间的电阻可以防止芯片被烧坏,起到了保护电路的作用。第 7 页 共 46 页图 2.2 计算机并行接口电路2.2 电压转换模块设计2.2.1 直流稳压电源模块设计在系统中,FPGA 的工作电压为 5 伏,通过一个变压器将 220V
17、 交流电变压到15V。并将变压器输出的 15V 交流电压整流、滤波,产生的不稳定直流电压从稳压器的输入端输入,在固定式三端集成稳压集成芯片 7805 的输出端就可得到稳定的 5V 直流电压输出。正常工作时,稳压器输入、输出电压差为 23V,电容用来实现频率补偿。该固定式三端集成稳压集成电路 7805 最大输入电压为 35V,输入输出差值要保持 2V 以上,该电路中稳压器的直流输入电压为+12V,输出值为+5V。因此,此电源满足系统设计要求。具体稳压电路设计见图 2.3。第 8 页 共 46 页图 2.3 直流稳压电源模块三端稳压器 7805 在使用时芯片极易发热发烫,因此,使用时要注意散热问题
18、。2.2.2 基于 TPS70351 的电压调节器设计在电路中,FLASH 存储芯片工作电压为 3.3 伏,所以需要通过 TPS70351 把 5 伏电压转化为 3.3 伏,以提供给 FLASH 存储器使用。具体的电压转换模块如下所示:图 2.4 基于 TPS70351 的电压调节器TPS70351 是新一代的集成电路稳压器,是一个自耗很低的微型片上系统,具有极低的自有噪音和较高的电源纹波抑制,因此,很适合作为每一块电路板或每一片重要芯片(如 FPGA、DSP)供电的电压调节器。正因为此原因,在本系统的设计中采用TPS70351 作为 FLASH 存储器供电的电压调节器。第 9 页 共 46
19、页2.3 FLASH 存储器电路模块 设计图 2.5 FLASH 存储芯片 K9F1G08 电路模块随着闪速存储器应用的逐渐广泛,对其芯片容量的要求也越来越高,原来32M、 64M、 128M 的单片容量已经不能再满足人们的要求了。而非易失性闪速存储器K9K4G08UOM 的出现则恰好弥补了这一不足,它是三星公司开发的目前单片容量较大的闪存芯片,单片容量高达 512M,同时还提供了 128M 的额外容量,是可以进行电擦写,并在掉电后信息不丢失的存储器,同时该存储器还具有不挥发、功耗低、擦写速度快等优点,因而可广泛应用于外部存储领域,如 MP3 等。K9K4G08UOM 闪速存储器采用 CMOS
20、 浮置门技术和与非存储器结构生产的大容量、高可靠存储器件在闪速存储器市场上提供了优惠的价格。编程 2112 字节的页只需要 300us,擦除 128k 的块需要 2ms。以每个字节 50ns 的周期从页数据中读出数据。该器件所提供的片内控制器、状态寄存器和专用命令集使其可以灵活应用于各种存储器系统电路,其 8 位 I/O 端口可以方便地实现地址、数据和命令的多路复用,这样不但大规模降低了引脚树,而且便于系统扩充存储容量而不需改变系统板结构设计 9。 、第 10 页 共 46 页在设计中我使用的是 48 引脚 TSOP 封装的 K9K4G08UOM。如图 4.1图 2.6 K9K4G08UOM
21、芯片1)地址线:I00-I07 作为命令、数据和地址的输入,在读操作时用作数据的输出,当芯片未被选用中或者不能输出时,I/O 口处于高阻态。2)CLE:指令锁存端,用于激活指令到指令寄存器的路径,并在 WE 上升沿且 CLE 为高电平时将指令所存。3)ALE:地址锁存端,用于激活地址到内部地址寄存器的路径,并在 WE 上升沿且ALE 为高电平时,地址锁存。4)CE:片选端,用于控制设备的选择。当设备忙时 CE 为高电平而被忽略,此时设备不能回到备用状态。5)RE:读使能端,用于控制数据的连续输出,并将数据送到 I/O 总线。只有在 RE 下降沿时,输出数据才有效,同时,它还可以对内部数据地址进行累加。6)WE:写使能控制端,用于控制 I/O 的指令写入,同时,通过该端口可以在 WE 脉冲的上升沿将指令、地址和数据进行锁存。7)WP:写保护端,通过 WP 端可在电源交换中进行写保护。当 WP 为低电平时,其内部高电平发生器将复位。8)R/B:就绪 /忙输出,R/B 的输出能够显示设备的操作状态。R/B 处于低电平时,表示有编程、擦除或随机读操作正在进行。操作完成后,R/B 会自动返回高电平。由于该端是漏极开路输出,所以即使当芯片没有被选中或输出被禁止时,它也不会处于高阻态。9)PRE:通电读操作,用于控制通电时的自动读操作,PRE 端接到 VCC 可实现通电