FPGA第一篇:SRAM工作原理
一、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结构图
- 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的存储原理
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工作原理的更多相关文章
- JSP第一篇【JSP介绍、工作原理、生命周期、语法、指令、行为】
什么是JSP JSP全名为Java Server Pages,java服务器页面.JSP是一种基于文本的程序,其特点就是HTML和Java代码共同存在! 为什么需要JSP JSP是为了简化Servle ...
- 第一篇——Struts2的工作原理及HelloWorld简单实现
Struts2工作原理: 一个请求在Struts框架中的处理步骤: 1.客户端初始化一个指向Servlet容器(例如Tomcat)的请求: 2.这个请求经过一系列的过滤器(Filter): 3.接着F ...
- JAVA知识积累 JSP第一篇【JSP介绍、工作原理、生命周期、语法、指令、行为】
什么是JSP JSP全名为Java Server Pages,java服务器页面.JSP是一种基于文本的程序,其特点就是HTML和Java代码共同存在! 为什么需要JSP JSP是为了简化Servle ...
- tomcat 系统架构与设计模式 第一部分 系统架构工作原理 转
Tomcat 系统架构与设计模式,第 1 部分: 工作原理 许 令波, Java 开发工程师, 淘宝网 许令波,现就职于淘宝网,是一名 Java 开发工程师.对大型互联网架构设计颇感兴趣,并对一些开源 ...
- CoreCLR源码探索(七) JIT的工作原理(入门篇)
很多C#的初学者都会有这么一个疑问, .Net程序代码是如何被机器加载执行的? 最简单的解答是, C#会通过编译器(CodeDom, Roslyn)编译成IL代码, 然后CLR(.Net Framew ...
- Hadoop基础-MapReduce的工作原理第一弹
Hadoop基础-MapReduce的工作原理第一弹 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在本篇博客中,我们将深入学习Hadoop中的MapReduce工作机制,这些知识 ...
- FPGA组成、工作原理和开发流程
FPGA组成.工作原理和开发流程 原创 2012年01月07日 09:11:52 9402 0 4 ********************************LoongEmbedded***** ...
- 【FPGA篇章一】FPGA工作原理:详细介绍FPGA实现编程逻辑的机理
欢迎大家关注我的微信公众账号,支持程序媛写出更多优秀的文章 FPGA(Field Programmable Gate Array),即现场可编程逻辑门阵列,它是作为专用集成电路(ASIC)领域中一种半 ...
- 小BUG大原理 | 第一篇:重写WebMvcConfigurationSupport后SpringBoot自动配置失效
一.背景 公司的项目前段时间发版上线后,测试反馈用户的批量删除功能报错.正常情况下看起来应该是个小BUG,可怪就怪在上个版本正常,且此次发版未涉及用户功能的改动.因为这个看似小BUG我了解到不少未知的 ...
随机推荐
- source 1.7 中不支持 lambda 表达式(请使用 -source 8 或更高版本以启用 lambda 表达式)
from:http://blog.csdn.net/qwdafedv/article/details/54691740 https://www.youtube.com/watch?v=oXxijdf8 ...
- Linux下使用vi命令后退出方式
退出Vi 当编辑完文件,准备退出Vi返回到shell时,可以使用以下几种方法之一. 在命令模式中,连按两次大写字母Z,若当前编辑的文件曾被修改过,则Vi保存该文件后退出 ...
- python 一些函数和类用法记录
这一篇主要用来记录在学习过程中遇到的一些觉得有意思的函数或者类的用法,有一些用法感觉很炫酷. 1.collections.defaultdict from collections import def ...
- 函数内部属性之arguments和this
在函数内部,有两个特殊的对象:arguments和this. 1.arguments arguments是一个类数组对象.包含着传入函数中的所有参数.但这个对象还有一个名叫callee的属性,该属性是 ...
- 8. Truncate undo表空间
8. Truncate undo表空间 要Truncate Undo 表空间,必须为MySQL实例配置至少两个undo表空间(两个undo表空间可确保一个undo表空间保持活动状态,另一个处于脱机状态 ...
- RAID磁盘阵列及CentOS7启动流程
1. 磁盘阵列 1.1 RAID,磁盘阵列磁盘通过硬件和软件的形式组合成一个容量巨大的磁盘组,提升整个磁盘的系统效能:RAID常见类型: RAID类型 最低磁盘个数 空间利用率 各自的优缺点 级别 说 ...
- linux破解root登录密码,并重置
重启系统后按'e'键,进入编辑模式,在'UTF -8'后空格输入'rd.break'后,按快捷键'Ctrl+X'进入新界面进行编辑,代码如下: switch_root:/# mount -o remo ...
- 如何用纯 CSS 创作一个荧光脉冲 loader 特效
效果预览 在线演示 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/pen/erRzzR 可交互视频教程 此视 ...
- 刁肥宅详解中缀表达式求值问题:C++实现顺序/链栈解决
1. 表达式的种类 如何将表达式翻译成能够正确求值的指令序列,是语言处理程序要解决的基本问题,作为栈的应用事例,下面介绍表达式的求值过程. 任何一个表达式都是由操作数(亦称运算对象).操作符(亦称运算 ...
- 慕课网 微信小程序商城构建全栈应用 tp5【总结】
1.异常处理: [代码越抽象,复用性越高] [封装性越好,适应代码变化的能力越强] [] <?php/** * Created by PhpStorm. * User: 14155 * Date ...