基于fpga的微型数字存储系统设计
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系统可编程,只需将一根下载电缆连接到目标板上,就可多次重复编程,方便电路调试。
.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,可方便、快捷地读取数据。通过多次验证,该系统工作稳定、可靠。
诺基亚8新旗舰曝光:骁龙835+骁龙821,有图有真相!
滴滴柳青:未来将推出无人机送菜上门服务
地产大佬开启直线电机建筑机器人和餐饮机器人双驱模式
光照对于植物生长的影响——光合作用和光敏色素
运放组成的脉冲压缩电路图
基于FPGA的微型数字存储系统设计
C++编程新手容易犯的10种编程错误
关于气压传感器的应用
全国首个《中小学幼儿园教室照明验收管理规范》在南京出炉
Semtech最新推出PerSe Connect SX9376芯片组
关于夜视系统市场的潜力分析
定华电子携G80雷达物位计亮相成都,为西南地区危化企业高质量升级助力!
你不知道的ios10大新功能!
一探究竟|CamsenseM Pro
霓虹灯电子变压器电路
全球电信行业在2020-2021年里的发展情况预测分析
韩国三星电子位于天津的手机制造工厂将正式停产
光伏电池电气性能的评测
直线电机现已被广泛运用于搭载芯片的整机生产中
长续航纯电动汽车想要不依赖于电池?聊聊350kW超高速充电技术