异步SRAM的FPGA读写操作

异步SRAM:正如其名,不是与特定的时钟信号同步运行,而是根据输入信号的状态运行的。因为没有信号表明读取时已确定了有效数据,也没有信号表明写入时已接收到数据,所以,需要获取制造商的数据手册,根据时序图,按“应该已读出有效数据”及“应该能接收数据”这样的条件,进行存储器的设计。

1.  读操作:OE读控制

异步SRAM的基本读操作如图1所示。

首先指定地址,然后使CE2=WE=高电平,CE1=OE=低电平,此时将在I/O引脚出现数据。

如果保持该状态而改变地址,则将出现新地址的数据。另外,如果CE1,CE2,WE和OE没有满足读状态的条件,则SRAM中止驱动I/O引脚,成高阻抗。

 

图1 异步SRAM的读操作

读操作时,使CE1,CE2,WE,OE等保持读状态,也允许改变地址(也就是保持存取的状态,只改变地址,读取不同地址的数据)。但是一部分高速SRAM也存在这样的情况,即当器件处于选择状态(CE有效)时,如果改变其地址,则设备判断发生了误操作,所以事先需要确认是否允许这样的应用。

2.  写操作1:WE写控制

异步SRAM的基本写操作如图2所示。

首先指定地址,如果CE2=高电平,CE1=低电平,则器件处于选择状态。只要OE一直有效(低电平),则在此时SRAM临时输出数据。但因为WE具有优先权,所以一旦WE有效,则I/O引脚变为高阻抗状态,SRAM不再输出数据。进行写入操作的地址必须在OE下降之前就要确定,数据的写入操作是在WE的上升沿进行的。

图2 异步SRAM的写操作1(WE写控制)

3.  写操作2:CE写控制

CE写控制的操作如图3所示。CE写控制在丽已经有效的状态下,利用CE1和CE2写入数据。因为WE已经是有效的,因此器件变为选择状态的同时也变为写状态。

图3 异步SRAM的写操作2(CE写控制)

还可以参考如下链接

http://www.cnblogs.com/sunev/archive/2011/10/31/2229973.html

时间: 2024-07-30 14:14:21

异步SRAM的FPGA读写操作的相关文章

FPGA配置芯片EPCS读写操作--STM32读写

注意事项: (1)首先STM32需要设置nCE和nConfig信号,即nCE置高,nConfig拉低,获得EPCS的控制权,而后对EPCS操作,操作完成后需要释放这两个管脚,即nCE拉低,nConfig置高. (2)EPCS的极性为:sck为空闲状态为高电平,采样边沿为SCK的第二个跳变沿,(即上升沿,注意前提是SCK空闲为高) SPI_InitStruct.SPI_Direction= SPI_Direction_2Lines_FullDuplex; SPI_InitStruct.SPI_Da

SRAM的FPGA实现

此次SRAM的读写仿真并没有进行SRAM的乒乓操作,只是进行了单个SRAM的读写操作,SRAM的读写操作不需要刷新操作,写端口包括:写时钟,写地址,写数据,写使能:读端口包括:读时钟,读地址,读数据,读使能. 其中,写使能和读使能的信号控制较为重要,只有在读使能或者写使能有效的时候,读操作或者写操作才是有效的,所以在进行SRAM的读写逻辑时,要注意写使能与写地址.写数据之间的协调,读使能与读地址.读数据之间的协调. 在写使能信号无效的情况下,就应该停止写地址的自增与数据的写入操作,因为写入无效,

unix环境编程学习-chapter 3 IO读写操作

原子操作pread,pwirte #include <unistd.h> ssize_t pread(int fd, void *buf, size_t nbytes, off_t offset);//返回值:读到的字节数,若已到文件结尾则返回0,若出错返回-1 ssize_t pwrite(int fd,const void *buf ,size_t nbytes, off_t offset);//返回值:若成功返回已写的字节数,若出错返因-1 pread,pwirte,相当于顺序调用lse

文件的新建、定位、截短和读写操作

1.创建一个新文件,创建新文件除了可以使用open函数之外还可以用creat()函数. 创建文件函数 creat(const char * pathname, mode_t mode) 头文件 :#include <fcntl.h> 参数说明:第一个参数pathname同open函数的第一个参数具有同样的意义,区别在于这是需要创建的文件的地址而不是需要打开文件的地址,第二个参数mode是新建文件的访问权限. 返回值:成功返回1,失败返回-1. 函数说明:creat()函数能够创建一个新的文件,

对SD卡的读写操作-保存用户登录密码

import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; import android.content.Context; import android.os.Environment; public class Fileservice { /** * 存储用

oracle读写文件--利用utl_file包对磁盘文件的读写操作

摘要: 用户提出一个需求,即ORACLE中的一个表存储了照片信息,字段类型为BLOB,要求能导出成文件形式. 本想写个C#程序来做,后来想起ORACLE有很多包,功能很好很强大,于是网上参考了些文章完成了. 主要是用了ORACLE的两个包:UTL_FILE和DBMS_LOB. 实现过程: 第一步:以管理员用户登陆设置可操作目录 --CREATE DIRECTORY privilege is granted only to SYS and SYSTEM by default. create or

java文件读写操作类

借鉴了项目以前的文件写入功能,实现了对文件读写操作的封装 仅仅需要在读写方法传入路径即可(可以是绝对或相对路径) 以后使用时,可以在此基础上改进,比如: 写操作: 1,对java GUI中文本框中的内容进行捕获,放在txt文本文档中 2,对各种类型数据都以字符串的形式逐行写入 3,对全局数组的内容进行写入 读操作: 获取文件行数 对逐行字符串型数据进行类型转换,放入二维数组中 为后面算法处理提供入口,但是要小心的是:不可以将行数用全局变量做计数器,否则每次读入是全局变量累加出错,应重新开始读取

python excel读写操作

1.读操作 xlrd 下载地址:https://pypi.python.org/pypi/xlrd 使用代码 # encoding : utf-8 #设置编码方式 import xlrd #导入xlrd模块 #打开指定文件路径的excel文件 xlsfile = r'D:\AutoPlan\apisnew.xls' book = xlrd.open_workbook(xlsfile) #获得excel的book对象 #获取sheet对象,方法有2种: sheet_name=book.sheet_

配置文件读写操作类

1 package com.epichust.mestar.client.utils; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.util.Properties; 8 9 /** 10 * 读取配置文件工具类 11 * 12 * 13 */ 14 public cl