FPGA与SRAM相结合完成大容量数据存储

2023-05-16

FPGA与SRAM相结合完成大容量数据存储
作者:安莎莎 赖伟林 张辉
阅读:248
引用:0
发布时间:2006-05-25 20:01
出处:电子产品世界

 (西安电子科技大学 通信工程学院 710071)

摘要  本文介绍了一种实现大容量数据存储的方法。采用先进的FPGA(Field Programmable Gate Array)技术结合SRAM专用控制器件来实现逻辑控制,以静态存储器SRAM(Static RAM)为存储器件实现了256K×16字节的高速异步存储。

关键字:FPGA,SRAM,VHDL

1 引言

随着数字信号处理技术的不断发展,大容量可编程逻辑器件的不断涌现,FPGA技术越来越多地应用在大规模集成电路设计中。在此硬件系统设计中,经常会遇到需要大容量的数据存储的情况,下面我们将针对FPGA中内部Block RAM有限的缺点,提出了将FPGA与外部SRAM相结合来改进设计的方法,并给出了部分VHDL程序。 

2 硬件设计

这里将主要讨论以Xilinx公司的 FPGA(XC2S600E-6fg456)和ISSI公司的SRAM(IS61LV25616AL)为主要器件来完成大容量数据存储的设计思路。

FPGA即现场可编程门阵列,其结构与传统的门阵列相似,大量的可编程逻辑块(CLB, Configurable Logic Block)在芯片中央按矩阵排列,芯片四周为可编程输入/输出块(IOB, Input/Output Block),CLB行列之间及CLB和IOB之间具有可编程的互连资源(ICR, Inter Connect Resource)。CLB、IOB和ICR都由分布在芯片中的SRAM静态存储单元控制,SRAM中的数据决定FPGA的功能,这些数据可以在系统加电时自动或由命令控制从外部存储器装入 。

在进行数据存储时,可直接将数据写入FPGA内部的Block RAM中,在一定程度上减少了FPGA的资源分配。但FPGA内部自带的RAM块毕竟是有限的,当需进行大容量数据存储时这有限的RAM块是远远不能满足系统设计要求的。此时,就需要将FPGA与外部RAM相结合完成大容量数据存储。具体硬件电路如图一所示:

 
                                 图一 硬件电路原理图 

3 IS61LV25616AL功能简介

IS61LV25616AL是Integrated Silicon Solution 公司(ISSI)的一款容量为256K×16的且引脚功能完全兼容的4Mb的异步SRAM,可为Xilinx公司的Spartan-2E系列FPGA提供高性能、高消费比的外围存储。除了256K×16异步SRAM外,ISSI还提供128K×16、512K×16、256K×8、512K×8和1M×8的异步SRAM。

IS61LV25616AL引脚结构框图如图二所示:


  
                      图二 IS61LV25616AL结构框图

3.1主要特征
(1)工作电压:3.3伏;
(2)访问时间:10ns、12ns;
(3)芯片容量:256K×16;
(4)封装形式: 44引脚TSOPII封装,也有48引脚mBGA和44引脚SOJ封装;
(5)采用0.18μm技术制造;

3.2引脚功能
(1)A0~A17:18位的地址输入线;
(2)IO0~IO15:16位的三态数据输入输出线;
(3)  :写控制线;
(4)  : 片选信号;
(5)  :输出使能信号;
(6)  、 :低字节、高字节使能信号; 
(3)~(6)的控制线均为低电平有效。

3.3控制逻辑电路设计                          
如图三所示,控制逻辑由FPGA来实现。主要包括读地址产生器、写地址产生器、读写时钟信号产生器及读写控制等几部分。下面分别加以讲述。 
 


图三 原理框图

(1)写地址产生器:由于设计时采用256K×16 的SRAM,故有18位地址,写地址产生器用18位计数器实现。靠外部时钟驱动,每进行一次写操作后,读写控制单元产生计数脉冲,使其增1,直到18位计数器计满再循环写入地址为0的空间。

(2)读地址产生器同上,也采用18位计数器实现,根据系统要求,每隔一定的采样周期将读地址指针偏移一定偏移量,并从该位置读取数据。

(3)读写地址选择器由于读写地址复用管脚,因此在读写操作时,必须选通相应的地址。这就需要由FPGA控制芯片上的  、  、 、 等控制信号来对SRAM进行读写的操作。

(4)此外,由于读写之间的切换,数据线上的数据在切换瞬间如不加处理会出现混乱现象。因此,为避免读、写操作发生冲突,数据线呈三种状态,读数据、写数据及高阻态。在从写到读的过程中需给数据线上送高阻态。  

(5) 当需要对SRAM进行写操作时,由FPGA控制产生写地址选通信号,该选通信号为一单脉冲形式,如图四中  、 、 ,该脉冲下降沿触发SRAM,告知开始对RAM进行写操作,使FPGA输出写地址,同时给数据线上送数据。在写操作期间,  、 片选信号始终保持低电平,而写地址选通信号上升沿到来时使写地址计数器增1。以此类推,通过写地址选通信号高低电平变化完成对数据依次写入。需要注意的是,地址线和数据线在  、 、 为高时可同时赋新值,但只有在 变低后赋予数据线上的新值才有效。

图四 RAM写操作时序

对SRAM进行读操作相对较简单,在进行读操作期间,   、  、 、 始终为低电平, 始终为高电平。每进行一次读操作,地址按系统要求变化一次。同时注意,地址的变化时刻总要先于数据的变化时刻。图五为RAM读操作时序。 
 

                  图五 RAM读操作时序

以下是一段用VHDL语言描述的控制RAM的读写操作时序的程序代码:
OE_SRAM<=LOWLEVEL;
CE_SRAM<=LOWLEVEL;
when 0    =>  addr_SRAM<=temp_addr_SRAM;                 --WRITE to SRAM  
        data_SRAM<=data_in;
        WE_SRAM<='1';
        LB_SRAM<='1';
        UB_SRAM<='1';    
when 1 =>   WE_SRAM<='0';
        LB_SRAM<='0';
        UB_SRAM<='0';
when 2 =>   WE_SRAM<='1';
        LB_SRAM<='1';
        UB_SRAM<='1';
when 3 =>   WE_SRAM<='1';                          --READ from SRAM
        LB_SRAM<='0';
        UB_SRAM<='0';
        data_SRAM<=b"ZZ_ZZZZ_ZZZZ_ZZZZ_ZZZZ";   --给数据线上送高阻
        addr_SRAM<=temp_addr_SRAM;
when 4 =>    data_out <=data_SRAM;

程序中,在进行读写操作时,片选使能信号CE_SRAM及输出使能信号OE_SRAM始终为低电平。
· 第0时刻到第2时刻在进行写操作:第0时刻地址线addr_SRAM和数据线data_SRAM同时赋新值,控制线WE_SRAM 、LB_SRAM、 UB_SRAM要经历一个窄脉冲的变化过程, RAM在获取到此控制线下降沿信息后,便知开始进行写操作。需要注意的是,虽然数据在第0时刻已赋到数据线上,但因为写操作是控制线低电平有效,所以数据线上真正发生数据更新是在控制线变为低电平之后,因此,数据线上的实际更新时刻是在第2个时刻。

·第3、4状态是进行读操作:在读写转换时刻,也就是在第3时刻如前所述需给数据线上送高阻态。这样,读取数据的时序关系由系统时钟进行控制,在第3时刻给地址线上送要读取的地址,第4时刻将数据端口上的数据送出。这里需注意的是,读取数据要比读取地址晚一个时刻。从而,完成了对外部RAM的读写操作控制。

4结论

该系统已应用在罗兰—C导航接收机的信号处理中。实验证明,此设计可靠稳定地完成了大容量高速异步数据存储,进一步提高了系统的性能。


参考文献
[1] 孙红胜,岳春生用.DRAM、FPGA实现大容量FIFO存储器.信息工程学院学报.1997(9):38~41
[2] Data Sheet IS61LV25616AL 2004.5.5
[3] Keven Skahill.可编程逻辑系统的VHDL设计技术[M].朱明程,孙普译.东南大学出版社,2003

选自《2005年电子应用方案论文集》 

标签: 嵌入式系统 单片机 工业控制
本文章引用通告地址(TrackBack Ping URL)为:
http://www.eepw.com.cn/news/trackback.aspx?ArticleID=13112
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FPGA与SRAM相结合完成大容量数据存储 的相关文章

  • 【嵌入式模块】ESP8266完整教程

    前言 无线通信中除了最为常用的蓝牙之外 xff0c 剩下的就是WiFi了 xff0c 但是相比于蓝牙模块一般只用来进行透传 xff0c WiFi模块的可自定义程度要更强 xff0c 而这也导致了WiFi模块的入门相对难了一点 参考资料 WI
  • 【MATLAB】(二)基本使用拾遗

    本文目录 0 前期教程1 前言2 输入输出2 1 input2 2 load2 3 importdata2 4 disp2 5 fopen amp fclose2 6 fscanf amp fprintf2 7 textread amp t
  • 【Linux】Ubuntu使用入门

    前言 本文主要记录一些Ubuntu中常用的基本操作 xff0c 记录自己的实践经历 xff0c 不断更新 xff01 xff01 xff01 0 基本文件交互 在Ubuntu系统中 xff0c 右键是没有创建文件的选项的 xff0c 只能创
  • 【嵌入式模块】MPU6050

    文章目录 0 前言1 MPU6050概述1 1 基本概述1 2 引脚和常用原理图 2 代码3 姿态解算3 1 欧拉角 amp 旋转矩阵3 2 DMP 3 校正 0 前言 作为惯性传感器中入门级别的器件 xff0c MPU6050凭借它出色的
  • 【PyQt】PyQt5进阶——串口上位机及实时数据显示

    文章目录 0 前期教程1 前言2 串口部分 QtSerialPort3 绘图部分3 1 QCustomPlot3 2 QtChart3 3 QWT3 4 Qt Designer中如何使用 参考链接 0 前期教程 Python PyQt5入门
  • 【软件相关】Proteus仿真STM32记录

    文章目录 0 前期教程1 前言2 先说说建议的流程3 需要注意的事项3 1 供电网配置不要忘了3 2 ADC模块的使用3 3 元器件查询手册 4 一些小技巧4 1 快速添加标号4 2 出现诡异问题的一种解决思路 0 前期教程 软件相关 Pr
  • 【嵌入式】Modbus实践

    前言 最近接了一个项目 xff0c 需要使用Modbus协议 xff0c 虽然之前有所耳闻 xff0c 但一直没有实操过 xff0c 但实践之后发现其实还是很简单的 xff0c 我认为它本质上就是对串口传输进行 二次封装 建议的入门顺序 大
  • 正则 ^ , \G , \A 区别

    正则 G A 区别 如图
  • c的string库常用函数记录

    1 strcat x xff0c y 将字符串y拼接在字符串x后面 2 strlen xff08 x xff09 返回字符串x的长度 3 strcopy xff08 x xff0c y xff09 将y复制给x xff08 类似于x 61
  • ROS发行版列表完整版

    官方原文 xff1a http wiki ros org Distributions Distro Release date EOL date ROS Melodic Morenia Recommended May 23rd 2018 Ma
  • React styled-components(三)—— 高级特性

    styled components 高级特性 样式继承嵌套设置主题 样式继承 新建 Demo js 文件 xff1a span class token keyword import span React span class token p
  • (九)Java算法:快速排序(详细图解)

    目录 一 前言1 1 概念1 2 算法过程 二 maven依赖三 流程解析3 1 全部数据分区3 2 左边数据分区3 3 右边数据分区 四 编码实现结语 一 前言 1 1 概念 快速排序 xff1a 用数组的第一个数作为基准数据 xff0c
  • 【Linux】树莓派控制光强传感器(C、python手把手教学)

    本文分为三个部分 xff1a 1 光强传感器说明 2 程序解读 3 前期准备 xff08 放在最后一部分 xff0c 供小白查阅借鉴 xff0c 包括本文需要用到的wiringPi库函数 xff09 一 光强传感器说明 1 TSL256x
  • Ubuntu安装VNC,配置多用户vnc连接Ubuntu,开机自启vnc命令

    Ubuntu安装VNC span class token function sudo span span class token function apt span update span class token function sudo
  • 解决登陆github慢的问题

    解决方法 首先本文解决的问题是Github网站可以访问 xff0c 但是由于网络代理商的原因 xff0c 造成访问速度很慢 Ping www github com 时 xff0c 速度只有200多ms 解决思路 xff1a 1 可以花钱购买
  • 什么是反卷积(快速理解)

    什么是反卷积 参考博客 我们知道输入图像通过卷积神经网络 xff08 CNN xff09 提取特征后 xff0c 输出的尺寸往往会变小 xff0c 而又是我们需要将图像恢复到原来的尺寸以便进行进一步的计算 xff0c 整个扩大图像尺寸 xf
  • 李雅普诺夫稳定(内部稳定)与BIBO稳定(外部稳定)的关系

  • 情绪识别论文阅读

    情绪识别论文阅读 情感脑机接口研究综述一种基于情感脑电信号时 频 空特征的3D密集连接网络 1 吕宝粮 张亚倩 郑伟龙 情感脑机接口研究综述 J 智能科学与技术学报 2021 3 01 36 48 情感脑机接口研究综述 情感脑机接口研究面临
  • 一文详细介绍情绪识别常用的数据集

    一文详细介绍情绪识别常用的数据集 SEED采集情况文件介绍 SEED IV采集情况文件介绍 CIAIC多模态情感识别数据采集情况文件介绍 DEAP采集情况文件情况 SEED V采集情况文件情况 本文详细介绍了脑机接口情绪识别常用的数据集 x
  • 父子进程虚拟地址空间情况

    父子进程虚拟地址空间情况 笔记来源于牛客网 Linux多进程开发 The child process and the parent process run in separate memory spaces At the time of f

随机推荐

  • Pytorch中nn.Module中的self.register_buffer解释

    self register buffer作用解释 今天遇到了这样一种用法 xff0c self register buffer name Tensor xff0c 该方法的作用在于定义一组参数 该组参数在模型训练时不会更新 xff08 即调
  • leetcode_回溯算法

    回溯算法刷题总结 回溯法理论基础回溯算法的模板组合问题77 组合优化版本 216 组合总和III17 电话号码的字母组合组合总和组合总和II 分割131 分割回文串93 复原IP地址 子集78 子集90 子集II491 递增子序列 xff0
  • React styled-components(二)—— props、attrs属性

    styled components props attrs属性 96 props 96 96 props 96 穿透添加 96 attrs 96 属性获取 96 state 96 中的样式 变量控制样式通过 96 props 96 控制样式
  • leetcode_贪心算法

    贪心算法相关题 简单题目455 分发饼干1005 K次取反后最大化的数组和860 柠檬水找零 序列问题376 摆动序列法一 xff1a 贪心法法二 xff1a 动态规划 单调递增的数字简化版本 有点难度53 最大子序和贪心算法动态规划 13
  • leetcode_动态规划

    leetcode 动态规划 基础题目509 斐波那契数70 爬楼梯62 不同路径63 不同路径II343 整数拆分96 不同的二叉搜索树 01背包分割等和子集1049 最后一块石头的重量II494 目标和474 一和零 完全背包518 零钱
  • 北东地/东北天两种导航坐标系与姿态转换

    一 坐标系 1 导航坐标系 常用的导航坐标系有北东地和东北天两种 两种坐标系的指向分别定义如下 xff1a 1 1 北东地坐标系 X轴 xff1a 指北 Y轴 xff1a 指东 Z轴 xff1a 指地 1 2 东北天坐标系 X轴 xff1a
  • 如何消除CACHE对DMA的影响?

    各位看官 xff0c 阅读之前 xff0c 请帮忙点击这里一下 xff0c 多谢 xff01 嵌入式系统中的CACHE 问题 郑州解放军信息工程大学 xff08 450002 xff09 陈曦 李汉宁 随着社会的发展 人们生活水平的提高 x
  • 12种性格导致贫穷

    每个人都有不同的性格和个性 有的性格对于挣钱是有帮助的 有的性格却容易导致贫困 大量的研究表明 至少有十二种性格容易导致贫困和失败 第一 知足 只要有吃有穿 腹饱体暖 就感到满足 对于财富没有追求 第二 自满 自己的总是最好的 这种人不愿与
  • 上海房地产市场救市14条政策出台

    值得纪念的一天 http www sina com cn 2008年10月23日05 53 东方网 东方网10月22日消息 xff1a 为促进本市房地产市场健康发展 xff0c 根据财政部 国家税务总局 中国人民银行等部门有关文件精神 xf
  • 天涯上各大公司裁员应对金融危机的强帖,不断更新中……

    http www tianya cn publicforum content no20 1 171416 shtml 俺的东家赫然在列 xff0c 俺作证 xff0c 裁员是真的 活过冬天就会在春天复苏 xff0c 如果死在冬天 xff0c
  • 学习笔记-Semihosting

    如何理解Semihosting xff08 老帖重发 xff0c 写得比较久了 xff09 Semihosting xff0c 顾名思义 xff0c 就是 34 半主控 34 xff0c 意思就是说 xff0c 运行在target boar
  • 开发笔记-NAND Flash Bad Block Management

    1 xff09 为什么会出现坏块 由于NAND Flash的工艺不能保证NAND的Memory Array在其生命周期中保持性能的可靠 xff0c 因此 xff0c 在NAND的生产中及使用过程中会产生坏块 坏块的特性是 xff1a 当编程
  • ThreadX 实时操作系统

    ThreadX 实时操作系统 xff08 RTOS xff09 Express Logic日前發佈了支援Altera Nios II軟式核心嵌入處理器的ThreadX即時作業系統 RTOS xff0c 全新的ThreadX具備快速軟體計時器
  • React 条件渲染组件

    组件通常需要根据不同的条件显示不同的内容 xff0c 以及根据应用的状态变化只渲染其中的一部分 在 React 中 xff0c 可以使用 JavaScript 语法有条件地呈现 JSX xff0c 比如 if 语句 amp amp 和 操作
  • BDM的禅义

    2006 4 13 13 16 00 BDM的禅义 这片文章译自 the zen of bdm xff0c 翻译的不好 xff0c 还请大家多提意见 介绍 你可能感到奇怪 xff0c 为什么说BDM的禅义 BDM xff08 背景调试模式
  • RTOS基本原理:多任务和调度-FreeRTOS是如何工作的

    FreeRTOS是如何工作的 RTOS基本原理 多任务和调度 作者 xff1a Gavin Lee 来源 xff1a upsdn net 更新日期 xff1a 2006 04 12 RTOS基本原理 多任务 调度 上下文切换 实时应用 实时
  • 上下文切换-FreeRTOS是如何工作的

    FreeRTOS是如何工作的 上下文切换 作者 xff1a Gavin Lee 来源 xff1a upsdn net 更新日期 xff1a 2006 04 13 上下文切换 跟任何其他程序一样 xff0c 一个任务执行时 xff0c 它使用
  • 国产手机操作系统艰难探索

    4大阵营纷争劲起 国产手机操作系统艰难探索 作者 xff1a 连晓东 出处 xff1a 中国电子报 2005 7 13 13 07 52 阅读 lt script src 61 34 http service donews com numb
  • 嵌入式系统和嵌入式操作系统

    嵌入式系统和嵌入式操作系统 西南交通大学电气学院 张湘 肖建 2004 10 2 文章从概念 特点 种类等不同方面就嵌入式系统和嵌入式操作系统做了介绍 一 什么是嵌入式系统 嵌入式系统一般指非PC系统 xff0c 有计算机功能但又不称之为计
  • FPGA与SRAM相结合完成大容量数据存储

    FPGA与SRAM相结合完成大容量数据存储 作者 xff1a 安莎莎 赖伟林 张辉 阅读 xff1a 248 引用 xff1a 0 发布时间 xff1a 2006 05 25 20 01 出处 xff1a 电子产品世界 西安电子科技大学 通