一、SRAM概述


SRAM主要用于二级快速缓存(Level2 C ache)。

它利用晶体管来存储数据。与DRAM相比,SRAM的速度快,但在同样面积中SRAM的容量要比其它类型的内存小。

大部分FPGA器件採用了查找表(Look Up Table,LUT)结构。

查找表的原理类似于ROM,其物理结构是静态存储器(SRAM),

N个输入项的逻辑函数能够由一个2^N位容量的SRAM实现

函数值存放在SRAM中,SRAM的地址线起输入线的作用,地址即输入变量值,SRAM的输出为逻辑函数值。由连线开关实现与其它功能块的连接。


二、SRAM基本原理


2.1、SRAM结构图




SRAM结构图


  • corecells array:存储单元阵列
  • decode:行列地址译码器
  • Sense Amplifier:灵敏放大器
  • conntrol circuit:控制电路
  • FFIO:缓冲/驱动电路

  在图中,A0-Am-1为地址输入端,CSB. WEB和OEB为控制端,控制读写操作,为低电平有效,I/O(0)-I/O(N-1)为数据输入输出端。存储阵列中的每个存储单元都与其他单元在行和列上共享电学连接,当中水平方向的连线称为“字线”,而垂直方向的数据流入和流出存储单元的连线称为“位线”。通过输入的地址可选择特定的字线和位线。字线和位线的交叉处就是被选中的存储单元。每个存储单元都是按这个方案被唯一选中,然后再对其进行读写操作。有的存储器设计成多位数据如4位或8位等同一时候输入和输出,这种话,就会同一时候有4个或8个存储单元按上述方法被选中进行读写操作。

2.2、SRAM六管结构电路图



url=KFqDrtA00uXkqAFm6ihVqWF4uC2DrrCKFZHgd_vsvMugqQLzCxZVC7lz80ccJwDxxRvJ1u9gEtKBSgoNCkbIJ8bgc4uoe3knSD04iQwcLF_">点此查看电路原理具体解释

2.3、为什么要将存储单元阵列排成矩阵形式?


  在SRAM 中,排成矩阵形式的存储单元阵列的周围是译码器和与外部信号的接口电路。存储单元阵列通常採用正方形或矩阵的形式,以降低整个芯片面积并有利于数据的存取。以一个存储容量为4K位的SRAM为例,共需12条地址线来保证每个存储单元都能被选中(212 =-4096)。假设存储单元阵列被排列成仅仅包括一列的长条形,则须要一个12/4K位的译码器。但假设排列成包括64行和64列的正方形,这时则仅仅需一个6/64位的行译码器和一个6/64位的列译码器。行、列译码器可分别排列在存储单元阵列的两边,64行和64列共同拥有4096个交叉点。每个点就相应一个存储位。

因此,将存储单元排列成正方形比排列成一列的长条形要大大地降低整个芯片地面积。存储单元排列成长条形除了形状神秘和面积大以外,另一个缺点,那就是排在列的上部的存储单元与数据输入/输出端的连线就会变得非常长,特别是对于容量比較大得存储器来说。情况就更为严重,而连线的延迟至少是与它的长度成线性关系。连线越长,线上的延迟就越大。所以就会导致读写速度的降低和不同存储单元连线延迟的不一致性,这些都是在设计中须要避免的。



三、SRAM的存储原理


3.1、从RAM的存储原理讲起


RAM基本的作用就是存储代码和数据供CPU在须要的时候调用。可是这些数据并非像用袋子盛米那么简单。更像是 图书馆中用有格子的书架存放书籍一样。不但要放进去还要可以在须要的时候准确的调用出来。尽管都是书可是每本书是不同的。

对于RAM等存储器来说也是一样的,尽管存储的都是代表0和1的代码,可是不同的组合就是不同的数据。让我们又一次回到书和书架上来,假设有一个书架上有10行和10列格子(每行和每列都有0-9的编号),有100本书要存放在里面,那么我们使用一个行的编号+一个列的编号就能确定某一本书的位置。假设已知这本书的编号87,那么我们首先锁定第8行。然后找到第7列就能准确的找到这本书了。

在RAM存储器中也是利用了相似的原理。

  如今让我们回到RAM存储器上,对于RAM存储器而言数据总线是用来传入数据或者传出数据的。

由于存储器中的存储空间是假设前面提到的存放图书的书架一样通过一定的规则定义的,所以我们能够通过这个规则来把数据存放到存储器上相应的位置。而进行这样的定位的工作就要依靠地址总线来实现了。

对于CPU来说。RAM就象是一条长长的有非常多空格的细线。每一个空格都有一个唯一的地址与之相相应。

假设CPU想要从RAM中调用数据,它首先须要给地址总线发送地址数据定位要存取的数据,然后等待若干个时钟周期之后,数据总线就会把传输数据给CPU。

以下的示意图能够帮助我们非常好的理解这个过程。

  上图中的小圆点代表RAM中的存储空间,每个都有一个唯一的地址线同它相连。

当地址解码器接收到地址总线送来的地址数据之后。它会依据这个数据定位CPU想要调用的数据所在的位置,然后数据总线就会把当中的数据传送到CPU。

  上面所列举的样例中CPU在一行数据中每次仅仅是存取一个字节的数据。可是在现实世界中是不同的。通常CPU每次须要调用32bit或者是64bit的数据(这是依据不同计算机系统的数据总线的位宽所决定的)。假设数据总线是64bit的话,CPU就会在一个时间中存取8个字节的数据(想一想,假设每次还是存取1个字节的数据,64bit总线将不会显示出来不论什么的优势。





从“线”到“矩阵”

  假设RAM对于CPU来说不过一条“线”的话。还不能体现实际的执行情况。由于假设实际情况真的是这种话,在实际制造芯片的时候,会有非常多实际的困难。特别是在须要设计大容量的RAM的时候。

所以。一种更好的可以减少成本的方法是让存储信息的“空格”排列为非常多行--每一个“空格”相应一个bit存储的位置。这样。假设要存储1024bits(2^10)数据,那么你只要使用32x32(2^5*2^5=2^10)的矩阵就行达到这个目的了。非常明显。一个32x32的矩阵比一个1024bit的行设备更紧凑。实现起来也更加easy。请看下图:

  知道了RAM的基本结构是什么样子的。我们就以下谈谈当存储字节的过程是如何的:上面的示意图显示的也不过最简单状态下的情况,也就是当内存条上只唯独一个RAM芯片的情况。对于X86处理器。它通过地址总线发出一个具有22位二进制数字的地址编码--当中11位是行地址,另外11位是列地址,这是通过RAM地址接口进行分离的。行地址解码器(row decoder)将会首先确定行地址,然后列地址解码器(column decoder)将会确定列地址,这样就能确定唯一的存储数据的位置,然后该数据就会通过RAM数据接口将数据传到数据总线。另外,须要注意的是,RAM内部存储信息的矩阵并非一个正方形的,也就是行和列的数目不是同样的--行的数目比列的数目少(DRAM)。

3.2、SRAM的存储原理


以下的示意图粗略的概括了一个主要的SRAM芯片是怎样工作的。SRAM是“static RAM(静态随机存储器)”的简称,之所以这样命名是由于当数据被存入当中后不会消失(同DRAM动态随机存储器是不同,DRAM必须在一定的时间内不停的刷新才干保持当中存储的数据)。

一个SRAM单元通常由4-6仅仅晶体管组成,当这个SRAM单元被赋予0或者1的状态之后,它会保持这个状态直到下次被赋予新的状态或者断电之后才会更改或者消失。

SRAM的速度相对照较快。并且比較省电。可是存储1bit的信息须要4-6仅仅晶体管制造成本太高了(DRAM仅仅要1仅仅晶体管就能够实现)。

一个SRAM单元——4-6仅仅晶体管——存储1bit的信息

3.3、RAM芯片和SRAM芯片

  RAM芯片:



  前面的介绍都相对照较简单、抽象。以下我们会结合实际的RAM芯片进行介绍。在谈到这个问题的时候。我们会涉及到一个比較重要的技术:封装。你应该听说过诸如30线SIMMS、72线SIMMS和168线DIMMS或者RIMMs当中的一个或者几个术语吧。假设要解释这些术语之间的不同。就应该了解RAM的封装技术。

  SRAM芯片:



  早期的SRAM芯片採用了20线双列直插(DIP:Dual Inline Package)封装技术,它们之所以具有这么多的针脚,是由于它们必须:每一个地址信号都须要一根信号线;一根数据输入线和一根数据输出线,部分控制线(Write Enable, Chip Select)。

以下的是一个16K x 1-bit SRAM芯片的针脚功能示意图:

  Input:A0-A13是地址输入信号引脚,CS是芯片选择引脚。在一个实际的系统中,一定具有非常多片SRAM芯片,所以须要选择到底从那一片SRAM芯片中写入或者读取数据。WE是写入启用引脚(如上表,在CS、WE上面的线我没有写入,表示低电平有效或者是逻辑0时有效):当SRAM得到一个地址之后。它须要知道进行什么操作,到底是写入还是读取,WE就是告诉SRAM要写入数据。Vcc是供电引脚。Din是数据输入引脚。Dout是数据输出引脚。GND是接地引脚



  Output:Dout引脚

  Enable(OE):有的SRAM芯片中也有这个引脚,可是上面的图中并没有。

这个引脚同WE引脚的功能是相对的。它是让SRAM知道要进行读取操作而不是写入操作。

3.4、SRAM的读取与存储操作流程

从Dout引脚读取1bit数据须要下面的步骤:

1)通过地址总线把要读取的bit的地址传送到对应的读取地址引脚(这个时候/WE引脚应该没有激活,所以SRAM知道它不应该运行写入操作)。

2)激活/CS选择该SRAM芯片。

3)激活/OE引脚让SRAM知道是读取操作。

第三步之后,要读取的数据就会从DOut引脚传输到数据总线。

怎么过程很的简单吧?相同。写入1bit数据的过程也是很的简单的。

从Dout引脚存储1bit数据须要下面的步骤:

1)通过地址总线确定要写入信息的位置(确定/OE引脚没有被激活)。

2)通过数据总线将要写入的传输数据到Dout引脚。

3)激活/CS引脚选择SRAM芯片。

4)激活/WE引脚通知SRAM知道要进行写入操作。

经过上面的四个步骤之后,须要写入的数据就已经放在了须要写入的地方。

----------------------------------------------我是骄傲的昏割线-----------------------------------------------------

经过刚才从栋哥那里的确认,我如今的岗位是纯研发岗,纯的哦。纯的。啊哈哈哈哈哈哈

要不要这么开森(捂脸跑)

FPGA第一篇:SRAM工作原理的更多相关文章

  1. JSP第一篇【JSP介绍、工作原理、生命周期、语法、指令、行为】

    什么是JSP JSP全名为Java Server Pages,java服务器页面.JSP是一种基于文本的程序,其特点就是HTML和Java代码共同存在! 为什么需要JSP JSP是为了简化Servle ...

  2. 第一篇——Struts2的工作原理及HelloWorld简单实现

    Struts2工作原理: 一个请求在Struts框架中的处理步骤: 1.客户端初始化一个指向Servlet容器(例如Tomcat)的请求: 2.这个请求经过一系列的过滤器(Filter): 3.接着F ...

  3. JAVA知识积累 JSP第一篇【JSP介绍、工作原理、生命周期、语法、指令、行为】

    什么是JSP JSP全名为Java Server Pages,java服务器页面.JSP是一种基于文本的程序,其特点就是HTML和Java代码共同存在! 为什么需要JSP JSP是为了简化Servle ...

  4. tomcat 系统架构与设计模式 第一部分 系统架构工作原理 转

    Tomcat 系统架构与设计模式,第 1 部分: 工作原理 许 令波, Java 开发工程师, 淘宝网 许令波,现就职于淘宝网,是一名 Java 开发工程师.对大型互联网架构设计颇感兴趣,并对一些开源 ...

  5. CoreCLR源码探索(七) JIT的工作原理(入门篇)

    很多C#的初学者都会有这么一个疑问, .Net程序代码是如何被机器加载执行的? 最简单的解答是, C#会通过编译器(CodeDom, Roslyn)编译成IL代码, 然后CLR(.Net Framew ...

  6. Hadoop基础-MapReduce的工作原理第一弹

    Hadoop基础-MapReduce的工作原理第一弹 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在本篇博客中,我们将深入学习Hadoop中的MapReduce工作机制,这些知识 ...

  7. FPGA组成、工作原理和开发流程

    FPGA组成.工作原理和开发流程 原创 2012年01月07日 09:11:52 9402 0 4 ********************************LoongEmbedded***** ...

  8. 【FPGA篇章一】FPGA工作原理:详细介绍FPGA实现编程逻辑的机理

    欢迎大家关注我的微信公众账号,支持程序媛写出更多优秀的文章 FPGA(Field Programmable Gate Array),即现场可编程逻辑门阵列,它是作为专用集成电路(ASIC)领域中一种半 ...

  9. 小BUG大原理 | 第一篇:重写WebMvcConfigurationSupport后SpringBoot自动配置失效

    一.背景 公司的项目前段时间发版上线后,测试反馈用户的批量删除功能报错.正常情况下看起来应该是个小BUG,可怪就怪在上个版本正常,且此次发版未涉及用户功能的改动.因为这个看似小BUG我了解到不少未知的 ...

随机推荐

  1. MFC不同分辨率和缩放下正常显示的方法

    方法1:为了满足Windows操作系统上不同分辨率下的显示,我们在OnPaint中重绘.

  2. Linux 编译升级 FFmpeg 步骤

    如果服务器已经安装了一个 Ffmpeg 的话,比如已安装在 /usr/local/ffmpeg 目录.Linux下版本升级步骤如下: 1.下载 ffmpeg-*.tar.gz到 Ffmpeg 官网 h ...

  3. python基础:函数传参、全局变量、局部变量、内置函数、匿名函数、递归、os模块、time模块

    ---恢复内容开始--- 一.函数相关: 1.1位置参数: ef hello(name,sex,county='china'): pass #hello('hh','nv') #位置参数.默认参数 1 ...

  4. JAVA基础——网络编程之网络链接

    一.网络编程基本概念 1.OSI与TCP/IP体系模型 2.IP和端口 解决了文章最开始提到的定位的问题. IP在互联网中能唯一标识一台计算机,是每一台计算机的唯一标识(身份证):网络编程是和远程计算 ...

  5. bzoj 1051 受欢迎的牛-tarjan

    https://www.lydsy.com/JudgeOnline/problem.php?id=1051 如果A喜欢B,那么A->B连边,那么整个图储存下来,如果有好多个牛是受欢迎的,那么他们 ...

  6. [LUOGU] [NOIP2017] P3960 列队

    题目描述 Sylvia 是一个热爱学习的女孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Sylvia 所在的方阵中有 n \times mn×m 名学生,方阵的行 ...

  7. 《算法导论》— Chapter 15 动态规划

    序 算法导论一书的第四部分-高级设计和分析技术从本章开始讨论,主要分析高效算法的三种重要技术:动态规划.贪心算法以及平摊分析三种. 首先,本章讨论动态规划,它是通过组合子问题的解而解决整个问题的,通常 ...

  8. STM32定时器的两个小难点

    TIM1 TIM8 挂在APB2上 一般为72M 也即APB2分频系数为1其余TIMER可以认为都挂在APB1上,一般为36M 也即APB1分频系数为2 或者更大 至少为2 APB1不能超过36M定时 ...

  9. AGC 033

    目录 A. Darker and Darker B. LRUD Game 题面 题解 代码 C. Removing Coins 题面 题解 代码 D. Complexity 题面 题解 代码 E. G ...

  10. JavaScript高级程序设计中第2、3章中细节知识点

    第2章 1.<script src='script.js' type='text/javascript'></script>中,只要不包含defer和async属性,浏览器都会 ...