计算机组成原理 存储器设计实验(并加上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和寄存器)的主要内容,如果未能解决你的问题,请参考以下文章

计算机组成原理 存储器设计实验(并加上ALU和寄存器)

计算机组成原理 寄存器堆设计实验(加上与ALU连接)

计算机组成原理 寄存器堆设计实验(加上与ALU连接)

计算机组成原理运算器组成实验

计算机组成原理各个缩写的含义

计算机组成原理各个缩写的含义