计算机组成原理 存储器设计实验(并加上ALU和寄存器)
Posted Ice丨shine
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机组成原理 存储器设计实验(并加上ALU和寄存器)相关的知识,希望对你有一定的参考价值。
在ISE中使用Memory IP核生成存储器
调用基本ALU模块、寄存器堆模块和本实验所实现的存储器模块,编写一个顶层模块,完成Ri θ (addr) → Rj的操作。尝试编写代码,仿真调试通过。
源代码:
module Mem_Exp(
input clk_m,Mem_Write,
input [4:0]R_Addr_A,//A端口读寄存器地址
input [4:0]R_Addr_B,//B端口读寄存器地址
input [4:0]W_Addr,//写寄存器地址
input Write_Reg,
input [2:0]ALU_OP,
input rst,clk,
output [31:0]M_R_Data,
output [31:0]R_data_A,
output [31:0]R_data_B,
output [31:0] ALU_F,
input [7:0] Mem_Addr
);
wire ZF,OF;
RAM_B Data_RAM (
.clka(clk_m), // input clka
.wea(Mem_Write), // input [0 : 0] wea
.addra(R_data_B[5:0]), // input [5 : 0] addra
.dina(R_data_B), // input [31 : 0] dina
.douta(M_R_Data) // output [31 : 0] douta
);
//register REGS_1(R_data_A,R_data_B,M_R_Data,R_Addr_A,R_Addr_B,W_Addr,Write_Reg,rst,clk);
register r1(
.R_Addr_A(R_Addr_A),
.R_Addr_B(R_Addr_B),
.W_Addr(W_Addr),
.Write_Reg(Write_Reg),
.W_Data(ALU_F),
.clk(clk),
.rst(rst),
.R_Data_A(R_data_A),
.R_Data_B(R_data_B)
);
ALU a(
.A(R_data_A),
.B(M_R_Data),
.F(ALU_F),
.ZF(ZF),
.OF(OF),
.ALU_OP(ALU_OP)
);
endmodule
寄存器堆: 计算机组成原理 寄存器堆设计实验(加上与ALU连接).
ALU: 多功能ALU设计实验.
测试代码:
module Mem_test;
// Inputs
reg clk_m;
reg Mem_Write;
reg [4:0] R_Addr_A;
reg [4:0] R_Addr_B;
reg [4:0] W_Addr;
reg Write_Reg;
reg [2:0] ALU_OP;
reg rst;
reg clk;
reg [7:0] Mem_Addr;
// Outputs
wire [31:0] M_R_Data;
wire [31:0] R_data_A;
wire [31:0] R_data_B;
wire [31:0] ALU_F;
// Instantiate the Unit Under Test (UUT)
Mem_Exp uut (
.clk_m(clk_m),
.Mem_Write(Mem_Write),
.R_Addr_A(R_Addr_A),
.R_Addr_B(R_Addr_B),
.W_Addr(W_Addr),
.Write_Reg(Write_Reg),
.ALU_OP(ALU_OP),
.rst(rst),
.clk(clk),
.M_R_Data(M_R_Data),
.R_data_A(R_data_A),
.R_data_B(R_data_B),
.ALU_F(ALU_F),
.Mem_Addr(Mem_Addr)
);
always begin
#3 clk_m=~clk_m;
clk=~clk;
end
initial begin
// Initialize Inputs
clk_m = 0;
Mem_Write = 0;
R_Addr_A = 1;
R_Addr_B = 1;
W_Addr = 8;
Write_Reg = 1;//保持写入
ALU_OP = 4;
rst = 0;
clk = 0;
Mem_Addr = 0;
// Wait 100 ns for global reset to finish
repeat(256)
begin
#10 {Mem_Addr[7:2]}={Mem_Addr[7:2]}+1;
{R_Addr_B} ={R_Addr_B}+ 1;
{W_Addr}={W_Addr}+1;
end
// Add stimulus here
end
endmodule
仿真波形
连接电路
以上是关于计算机组成原理 存储器设计实验(并加上ALU和寄存器)的主要内容,如果未能解决你的问题,请参考以下文章