SRAM的简单的读写操作_图文.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SRAM的简单的读写操作
目录
1 概要 (3
2 硬件系统设计 (3
2.1 硬件平台 (3
2.2设计方案 (4
2.2.1 写SRAM (4
2.2.2 读SRAM (5
2.2.3 实验步骤和现象 (6
1 概要
SRAM的读写时序比较简单,作为异步时序设备,SRAM对于时钟同步的要求不高,可以在低速下运行,下面就介绍SRAM的一次读写操作,在硬件上(红色飓风II代EP1C6实现,并做出实验现象,是为了最简单的说明SRAM的读写,并不能指导SRAM在实际中的应用。
思路如下:
1 把一个16位数写到SRAM的一个地址中。
(1
2 然后再把它读出来,虽然它是16位的,可以把它的后4位(或任意4位读出来显示在led灯上。
(2
3 以上写和读是分别用两个工程分别实现的,写完SRAM之后不断电,然后再运行读SRAM;这
样做的好处是有利于初学者最简单的理解SRAM的读写操作,不必对SRAM的数据总线进行方向处理。
(3
注释:
(1因为红色飓风II代EP1C6用的SRAM是ISSI公司的IS61LV25616AL,数据线是16位的。
(2红色飓风II代EP1C6上的led是4个,也就是4位的。
(3通常的SRAM读写,是要在FPGA里面实现一个连接SRAM数据线的数据总线,通过信号来控
制这个总线的状态,读SRAM的时候,让这个数据总线为高阻态;写SRAM的时候,控制SRAM 的几个使能信号,让SRAM的数据线为高阻态进行数据写入。
红色飓风配套光盘有这个SRAM 的例子,这里不再赘述。
2 硬件系统设计
2.1 硬件平台
开发板: 红色飓风II代EP1C6
板上资源: SRAM 256K*16bit
2.2设计方案
2.2.1 写SRAM
根据IS61LV25616AL的数据手册,写SRAM的时序部分和注释部分如下:
这部分是用WE信号(低电平有效控制写SR ̄AM,只要把CE、OE、UB、LB 信号拉低,然后给出地
址和数据,我们只要把WE拉低,即可把数据写到相应的地址了,这时定义数据线为输出,在工程里面是这样去做的:
output [15:0] Sram_dq ; //写SRAM,所以定义Sram_dq为输出
//CE、OE、UB、LB信号拉低
assign oSram_be_n = 2'b00;
assign oSram_ce_n = 1'b0;
assign oSram_oe_n = 1'b0;
assign Sram_dq=Sram_dq_reg ; //把要写入的值给数据线
always @(posedge clk or negedge iRst
if (!iRst
begin
oSram_we_n <=1'b1;
end
else
begin
oSram_we_n <=1'b0; //WE信号拉低,写SRAM
Sram_dq_reg<=16'hFFFA; //把要写入的值给数据寄存器,最低4位是4'h5(或
4'b0101,
// Sram_dq[1]=0;Sram_dq[0]=1;
oSram_a<=18'h3FFFF; // 给出要写入的地址
end
当然,也可以向不同的地址写入不同的数据,只不过在读的时候,读的地址必须是刚才写的地址。
2.2.2 读SRAM
读SRAM的时序部分和注释部分如下:
读SRAM就更简单了,是用地址线控制读SRAM的,把CE、OE、UB、LB信号拉低,WE拉高,给出地址即可读出地址线上的数据,当然是在不断电的情况下,因为SRAM数据是断电丢失的,我们把16位数据的最低4位给led,以检测我们写读SRAM的结果。
读SRAM的时候,定义数据线为输入,在工程里面是这样去做的:
input [15:0] Sram_dq ; //读SRAM,所以定义Sram_dq为输入
//CE、OE、UB、LB信号拉低
assign oSram_be_n = 2'b00;
assign oSram_ce_n = 1'b0 ;
assign oSram_oe_n = 1'b0 ;
always @(posedge clk or negedge iRst
if (!iRst
begin
oSram_we_n <=1'b1; //系统复位,we拉高
end
else
begin
oSram_a<=18'h3FFFF; // 给出要读SRAM的地址,即可读SRAM
oLed<=Sram_dq[3:0]; //把读出的数据线的最后4位输出到led上
//Sram_dq[1]=0;Sram_dq[0]=1; //所以对应的 led 就是:oLed[3]=0;
oLed[2]=1;oLed[1]=0;oLed[0]=1; //(对应 DD4 灭、 DD3 亮、 DD2 灭、 DD1 亮) end 2.2.3 实验步骤和现象写 SRAM 工程下载:读 SRAM 工程下载:先下载写 SRAM 工程的下载文件 sof ,在不断电的情况下,再下载读 SRAM 的下载文件 sof ,这时开发板上的 led 显示:DD4 灭、 DD3 亮、 DD2 灭、 DD1 亮详细见程序注释。