静态存储器的设计
二、实验学时:4
三、实验内容和目的:
(1)实验目的:
1.掌握存贮器的读写控制方法;(读信号、写信号、片选信号)
2.掌握存储器的字扩展和位扩展方法;
3.掌握用硬件描述语言设计存贮器的方法;
4.了解存储器种类、工作原理和特点.
(2)实验内容:
用字扩展和位扩展的方式,设计一个 32X8的静态存储器,能
够对其随机的读写.
其中: 32表示地址的寻址空间大小,8表示数据单元的位数;
四、实验原理:
利用veilog hdl语言编写实现实验要求的逻辑功能实现代码。
1.设计一个16X4的可随机读写的存储器模块;
2.利用16X4存储器模块,通过实例化完成对所需要的存储器,因为
是16X4扩展为32X 8,所以将16X4两两分为一组刚好两组 。
3.数据、地址的输入/输出
a 、数据/地址的输入: 开关控制;
b 、数据的输出: 指示灯显示;
4.控制信号
a 、片选: 低有效;
b 、读: 低有效;
c 、写: 上升沿有效;
五、实验器材(设备、元器件)
硬件平台:pc
软件平台:windows xp
六、实验步骤:
先根据实验内容,实验目的,实验要求编写实现所需逻辑功能的实
验代码,然后在仿真软件上进行编译链接运行,无误后进行宋旭单
元与电路板相关接口的绑定,对电路板进行连线,练好后进行实际
操作,观察电路板上指示灯的亮灭情况,根据实际的逻辑结果判断
实验代码以及连线是否正确,若输出有误,则重新检查连线以及代
码是否有逻辑问题。
七、实验数据及结果分析: (1)实验代码:
module m(din,addr,wr,rd,cs,dout);
reg[D_WIDTH-1:0] ram[(2**A_WIDTH)-1:0]; wire [D_WIDTH-1:0] dout; input[D_WIDTH-1:0] din; input[A_WIDTH-1:0] addr; input wr,rd,cs; output [7:0]dout; parameter D_WIDTH = 8; parameter A_WIDTH = 5;
ram16_4
ram16_4_1(.din(din[3:0]),.addr(addr[3:0]),.wr(wr),.rd(rd),.cs(addr[4]|cs),.dout(dout[3:0]));
ram16_4
ram16_4_2(.din(din[7:4]),.addr(addr[3:0]),.wr(wr),.rd(rd),.cs(addr[4]|cs),.dout(dout[7:4]));
ram16_4
ram16_4_3(.din(din[3:0]),.addr(addr[3:0]),.wr(wr),.rd(rd),.cs((~addr[4])|cs),.dout(dout[3:0]));
ram16_4
ram16_4_4(.din(din[7:4]),.addr(addr[3:0]),.wr(wr),.rd(rd),.cs((~addr[4])|cs),.dout(dout[7:4]));
endmodule
module ram16_4(din,addr,wr,rd,cs,dout);
parameter D_WIDTH = 4; parameter A_WIDTH = 4;
input[D_WIDTH-1:0] din; input[A_WIDTH-1:0] addr; input wr,rd,cs;
output[D_WIDTH-1:0]dout;
reg [D_WIDTH-1:0] ram [(2**A_WIDTH)-1:0]; wire [D_WIDTH-1:0] dout;
always @(posedge wr) if (!cs)
ram[addr] <= din;