已开源在GitHub上,欢迎各位大佬给Star
实验内容
1. 掌握灵活运用 Verilog HDL 进行各种描述与建模的技巧和方法
2. 学习在 ISE 中设计生成 Memory IP 核的方法
3. 学习存储器的结构及读写原理,掌握存储器的设计方法
解决方法
1. 分析一个 256x8 位的物理存储器,具有读 写功能,按字节编址,按字访问,
即 64x32 位。
2. 首先,给出的 8 位存储器地址,只按照高 6 位访问存储器,而低 2 位必须为
00
3. 我采用了两种方法进行设计存储器,首先是 MemoryIP 核
4. MemoryIP核只需按照书上步骤下来,贴几张步骤图,大家按照步骤下来
这里我选择的是同步存储器,由时钟控制;另一种是分布式存储器,不带时钟同步,也就是异步控制
5. MemoryIP代码展示:
module RAM(
input [7:2]Mem_Addr,
input [1:0]MUX,
input Mem_Write,
input Clk,
output reg [7:0]LED);
wire [31:0]M_R_Data;
reg [31:0]M_W_Data;
RAM_B your_instance_name (
.clka(Clk), // input clka
.wea(Mem_Write), // input [0 : 0] wea
.addra(Mem_Addr), // input [5 : 0] addra
.dina(M_W_Data), // input [31 : 0] dina
.douta(M_R_Data) // output [31 : 0] douta
);
always @(*)
begin
LED = 0;
M_W_Data = 0;
if(Mem_Write)
begin
case(MUX)
2'b00: M_W_Data = 32'h0000_000F;
2'b01: M_W_Data = 32'h0000_0DB0;
2'b10: M_W_Data = 32'h003C_C381;
2'b11: M_W_Data = 32'hFFFF_FFFF;
endcase
end
else
begin
case(MUX)
2'b00: LED = M_R_Data[7:0];
2'b01: LED = M_R_Data[15:8];
2'b10: LED = M_R_Data