生成指令存储器。要求:生成一个256*8位的物理存储器按字节编址,按字访问,即6432位,具有读写功能。并且字地址按照0,4,8等四的整数倍递增,给出八位储存器地址,只按照高六位访问低2位为00。用verilog语言实现
时间: 2024-03-02 20:49:57 浏览: 133
以下是一个Verilog实现的指令存储器,它是一个256*8位的物理存储器按字节编址、按字访问、具有读写功能,其中字地址按照0、4、8等四的整数倍递增,低2位固定为00,只按照高6位访问。
```verilog
module instruction_memory(
input wire [5:0] addr,
input wire read_enable,
input wire [7:0] data_in,
input wire write_enable,
output reg [7:0] data_out
);
reg [7:0] memory [0:63];
integer i;
always @ (addr)
begin
case (addr[5:4])
2'b00: i = addr[3:2];
2'b01: i = 16 + addr[3:2];
2'b10: i = 32 + addr[3:2];
2'b11: i = 48 + addr[3:2];
endcase
end
always @ (posedge clk)
begin
if (write_enable)
begin
memory[i] <= data_in;
end
if (read_enable)
begin
data_out <= memory[i];
end
end
endmodule
```
在这个Verilog代码中,我们使用了一个128字节的数组(即256个8位数据)来存储指令。在地址输入端口,我们根据高6位的数值来确定要访问的数组下标。在时钟上升沿时,如果写使能信号为1,则将输入的数据存储到对应的数组元素中;如果读使能信号为1,则从对应的数组元素中读出数据并输出。因为这个存储器是指令存储器,所以在这里我们没有加入清零功能。
阅读全文