计算机组成原理-实验五-基于Vivado的存储器设计实验

实验要求:

  1. 根据实验指导书配置IP核
  2. 生成一个RAM_B存储器模块,在关联文件中输入64个32位数据,用十六进制表示。
  3. 编写一个实验验证的顶层模块,调用2生成的存储器模块;用仿真方法设计实验验证

生成.coe文件:

创建记事本,记事本内容为如下代码命名为Test_Mem.coe,保存的路径最好不要有中文,不然IP核关联的时候会出现迷之报错。

memory_initialization_radix=16;//16进制
//存储器内容初始化为下面10条操作码
memory_initialization_vector=00000820 00632020 00010fff 20006789 FFFF0000 0000FFFF 88888888 99999999 aaaaaaaa bbbbbbbb;

配置IP核:

在搜索栏输入block,能快速找到实验要求的IP核型号


本地单端口读写存储器


32位和64位,总是读优先,输出不需要放在寄存器里面(勾了的话,会多出一个机器周期,去寄存器里面取,才能输出)


装载初始化文件,关联上一步的Test_Mem.coe文件


编写测试模块:

程序模块结构图


测试模块代码:

`timescale 1ns / 1ps
//测试模块
module Test_Mem();
    reg [7:0]Mem_Addr;//读出和写入的地址
    reg [31:0]M_W_Data;//写入的数据
    reg clk_m, Mem_Write;//时钟和,写控制信号(高电平有效),在时钟上升沿时写入,读也是上升沿
    wire [31:0]M_R_Data;//读出的数据,输出
    initial clk_m=0;
    always #25 clk_m=~clk_m;  //每25ns,时钟翻转一次
    initial//数据初始化
        begin
        Mem_Addr=8'h00;Mem_Write=1'b0;
        Mem_Addr=8'h01;#50;
        Mem_Addr=8'h02;#50;
        Mem_Addr=8'h03;#50;
        Mem_Addr=8'h04;#50;
        Mem_Addr=8'h05;#50;
        Mem_Addr=8'h06;#50;
        Mem_Addr=8'h07;#50;
        Mem_Addr=8'h08;#50;
        Mem_Addr=8'h09;#50;
        Mem_Write=1'b1;M_W_Data=32'h66666666;#50;
        end
       
    RAM_B  Test_RAM_B(
        .clka(clk_m),//时钟信号端口
        .wea(Mem_Write),//写控制信号端口
        .addra(Mem_Addr),//读写地址端口
        .dina(M_W_Data),//写的数据端口
        .douta(M_R_Data)//读的数据端口
    );
endmodule

仿真波形图:


在①这个位置读出存储器地址为09的数据;②写控制信号打开,同时读和写,因为配置的时候设置的是读优先,所以读出的是旧数据;③的时候读出了刚刚我们输入的数据。


### 回答1: CPU设计部分实验是关于存储器实现存储器是计算机中用于存储和提取数据的地方,它是计算机的重要组成部分。 在实验中,我们需要设计实现一个存储器模块。存储器模块是由多个存储单元构成的,每个存储单元可以存储一个固定大小的数据。我们可以通过地址来访问存储单元中的数据。在实验中,我们需要选择合适的存储器类型、存储单元容量和地址位数。 在设计存储器模块时,我们需要考虑以下几个方面。首先,我们需要确定存储器的类型。常见的存储器类型有随机存取存储器(RAM)和只读存储器(ROM)。RAM可以通过读写操作来存储和提取数据,而ROM只能读取数据。我们需要根据实验的需求选择合适的存储器类型。 其次,我们需要确定每个存储单元的容量。容量决定了每个存储单元可以存储的数据量。通常,存储单元的容量是以比特(bit)为单位进行衡量的。在实验中,我们需要根据数据的大小来选择合适的存储单元容量。 最后,我们还需要确定存储器的地址位数。地址位数决定了我们可以使用的地址数目。地址的位数决定了存储器的寻址范围。在实验中,我们需要根据存储器的容量和存储单元的大小来选择合适的地址位数。 通过设计实现存储器模块,我们可以在CPU中完成数据的存储和提取操作。这对于计算机的正常运行是至关重要的。实验的完成将有助于我们更好地理解存储器的工作原理和在计算机系统中的重要作用。 ### 回答2: CPU设计部分实验是关于存储器实现实验存储器是计算机中用于存储指令和数据的硬件组件,它在CPU中起着重要的作用。 在这个实验中,我们需要实现一个简单的存储器模块。存储器由一组连续的存储单元组成,每个存储单元可以存储一个固定大小的数据。我们需要使用Verilog HDL语言编写代码来描述存储器的行为。 首先,我们需要定义存储器的输入和输出端口。存储器的输入端口包括读写控制信号和地址信号,输出端口包括读取的数据。 然后,我们需要根据输入的控制信号和地址来实现存储器的功能。当读写控制信号为读取时,我们需要根据给定的地址从存储单元中读取相应的数据,并将其输出。当读写控制信号为写入时,我们需要将输入的数据写入到指定的地址。 为了实现存储器的功能,我们可以使用Verilog HDL中的内存模块。内存模块可以方便地实现存储器的读写操作。 最后,我们需要对实现存储器模块进行验证。可以编写一些测试用例,并使用模拟器进行仿真,验证存储器的读写功能是否正确。 总结起来,CPU设计部分实验是一个关于存储器实现实验。通过实现一个简单的存储器模块,我们可以加深对存储器的理解,并掌握使用Verilog HDL语言进行硬件描述的技巧。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值