你的位置:EETOP 赛灵思(Xilinx) 社区 >> >> 全部 >> 详细内容

基于FPGA的微型数字存储系统设计

发布者:jackzhang 时间:2010-02-03 23:12:58

中北大学 鲁林 刘文怡 王浩
1 引言
针对航天测试系统的应用需求,提出一种基于FPGA的微型数字存储系统设计方案。该系统是在传统存储测试系统的基础上,利用可编程逻辑器件FPGA对传统存储测试系统进行单元电路的二次集成,使测试系统体积大幅减小,功耗急剧降低,从而提高系统的抗高过载性能,增加系统灵活性、通用性和可靠性。FPGA不仅完成控制存储及大部分的相关数字逻辑单元电路,而且使得整个存储系统更为简单,布线也更容易。另外,系统FPGA编程就是按照预定功能连接器件内的熔丝,从而使其完成特定逻辑功能的过程,一旦完成编程,FPGA就相当于一片能够完成特定功能的集成电路,因而无需担心程序运行路径出错,这与单片机有本质区别。

2 系统硬件设计

2.1 器件选型

2.1.1 电源转换器TPS70358

系统中,FPGA工作电压为3.3 V和2.5 V,USB接口器件CY7C68013 工作电压为3.3 V,Flash工作电压为3.3 V,系统需通过电源器件TPS70358将电压转换为3.3 V和2.5 V,为系统各器件提供电源。TPS70358是新一代的集成稳压器,是一个自耗很低的微型片上系统,具有极低的自有噪音和较高的电源纹波抑制性能,因此,该器件适用于一块电路板或一片重要器件(如FPGA、DSP)供电的电压转换。

2.1.2 现场可编程门阵列(FPGA)XC2S50

该系统采用XC2S50型FPGA控制各个接口,该器件是xilinx公司生产的Sparran II系列高性能现场可编程门阵列(FPGA),具有如下特点:内置标准JTAG接口,支持3.3 V在系统可编程(ISP);3.3 V电源,集成密度为50 000个可用门;引脚到引脚的延时7.5 ns,系统频率高达200 MHz。采用单片FPGA实现逻辑控制功能简化电路设计,提高系统可靠性。且XC2S50系统可编程,只需将一根下载电缆连接到目标板上,就可多次重复编程,方便电路调试。

2.1.3 USB 2.0控制器CY7C68013

CY7C68013是Cypress公司生产的一款USB 2.0控制器,该器件具有运算速度快、功耗小和性价比高等特点。时钟周期高达40 MHz,每执行1条指令需4个时钟周期;其内部集成有USB接口,I2C总线接口等,该系统设计实际数据传输速度高达10 MHz。

2.2 电路设计思路

图1为系统硬件结构框图,计算机通过USB接口控制可编程逻辑器件FPGA实现对Flash存储器的块擦除、页编程、读数据等操作。

系统硬件结构框图

块擦除操作时,计算机通过USB接口向FPGA发送指令,FPGA接收到指令后对Flash存储器进行块擦除操作,并将状态返回计算机;页编程操作时, FPGA接收计算机并行接口发送的指令,立即对Flash存储器进行页编程操作,先写命令,再写要编程的地址,然后将数据发送到Flash存储器中;读取数据操作时,FPGA首先接收计算机发出的指令,然后对Flash存储器进行读取数据操作,先写命令,再写要读取的地址,然后开始输出数据,并将状态返回计算机并行接口。

3 系统软件设计

3.1 FPGA对Flash的读、写、擦除操作

FPGA执行对Flash的读、写、擦除操作是利用VHDL语言的状态机实现的。状态机控制Flash的时序电路简单易行,逻辑关系一目了然。 XC2S50接收到CY7C68013传来的擦除控制命令,立即执行擦除操作。按照时序,首先写入自动块擦除设置命令60H,之后依次写入2个行地址和1 个列地址进行寻址,而后写入擦除命令D0H开始执行擦除操作。

读操作较为复杂,需要XC2S50和CY7C68013协同工作。这里只给出读信号的操作过程。先写人读设置命令00H,因为读一次执行一页,所以地址的写入是2个行地址和3个列地址,之后写入读命令,在等待rb变高后就可发送re信号将数据从Flash读出。写操作过程与读操作类似,但写操作完全由 XC2S50控制,写完命令、地址后,开始写入数据,直到写满2 KB数据,最后输入页编程命令。需要注意每写完2 KB数据,Flash返回的状态信号rb所等待的时间较长,大约是140μs。图2为页编程的流程。

页编程的流程

3.2 CY7C68013控制逻辑及固件程序设计

CY7C68013主要完成两部分工作,一是实现对擦除的控制开关命令,即上位机通过USB接口发送擦除命令,CY7C68013接收到这个命令后,会发送一个约为200 ms低脉冲通知FPGA启动擦除操作;二是通过与FPGA配合,完成从Flash通过CY7C68013的GPIF接口读入上位机的任务。 CY7C68013所用到的I/O包括控制线USBCTR1,状态线US-BS0,读信号线USBRD及8条数据线。

读数时,首先由单片机发出读数开始命令USBCTR1,FPGA接收到该命令后开始初始化,包括写入读数设置命令、地址及读数命令,等待rb变高, USBS0置低,当单片机检测到USBS0变低后,开始给出一系列脉冲GPIF(USBRD),将2 KB数据依次读出。与此同时,FPGA在等待几百纳秒后将USBS0置高,单片机在判断USBS0变高后也将USBCTR1拉高,为下一页读数做准备。读数时序如图3所示。

读数时序

按照上述控制逻辑关系编写CY7C68013的同件程序。CY7C68013有3种可用接口模式:端口、GPIF主控和从FI-FO。“GPIF主控”接口模式使用PORTB和PORTD构成通向4个FX2端点FIFO(EP2、EP4、EP6和EP8)的16位数据接口。GPIF作为内部的主控制器与 FIFO直接相连.具有6个可编程控制输出信号(CTR0~CTR5)和6个通用准备就绪输入信号(RDY0~RDY5),用户可通过编程设置控制信号的输出状态,即器件在接收到何种就绪信号后执行相应操作,GPIF控制代码存放于器件内部RAM的波形描述器中。从该系统需求出发,将CY7C68013设为FIFO Read模式,使GPIF中的Slave FIFO与USB通信中端点缓冲直接建立连接,数据传送无需CPU参与。

固件程序代码设计主要是根据系统需求设计相应的程序框架图,再调用同件函数库 (Ezusb.lib)的函数进行编程,初始化并重新列举端点,然后在任务处理器中设定任务,在Keil C51环境中编译代码。编译通过后,将同件代码下载到USB单片机中,即可实现GPIF多字节读操作。

4 系统可靠性验证

为验证系统可靠性,在数据输入端循环输入00~0F递增数据,通过上位机读出、写入Flash中的数据,图4为试验数据。通过读出的数据验证了该系统数据存储及回读的正确性、可靠性。

试验数据

5 结束语

采用FPGA对Flash进行读、写、擦除操作,利用状态机分时控制3种操作,简化程序设计,简单修改地址将Flash的容量从32 MB增加到1 GB,提高了系统的可移植性、可扩展性和通用性,便于维护设备,有利于产品的优化和改进,缩短了开发周期。采用USB单片机与PC机建立通信连接,与现有设备很好兼容,数据读取速度可达1O MB/s,可方便、快捷地读取数据。通过多次验证,该系统工作稳定、可靠。

最新课程

  • 深入浅出玩儿转FPGA

    本视频基于Xilinx公司的Artix-7FPGA器件以及各种丰富的入门和进阶外设,提供了一些典型的工程实例,帮助读者从FPGA基础知识、逻辑设计概念

  • 从零开始大战FPGA基础篇

    本课程为“从零开始大战FPGA”系列课程的基础篇。课程通俗易懂、逻辑性强、示例丰富,课程中尤其强调在设计过程中对“时序”和“逻辑”的把控,以及硬件描述语言与硬件电路相对应的“

  • Verilog基础及典型数字

    课程中首先会给大家讲解在企业中一般数字电路从算法到流片这整个过程中会涉及到哪些流程,都分别使用什么工具,以及其中每个流程都分别做了