31.RAM-IP核的配置、调用、仿真全流程

(1)RAM IP核简介

        RAM是随机存取存储器(Random Access Memory)的简称,是一个易失性存储器,其工作时可以随时对任何一个指定地址写入或读出数据。(掉电数据丢失)

(2)RAM IP核的配置

  • 单端口RAM读写共用一根地址线,一个时钟,读写操作不能同时进行。
  • 简单双端口RAM,读写有自己专门的地址线,写端口只能进行数据写入,读端口只能进行数据读出。
  • 真正双端口RAM,读写端口不固定,可以自定义。
  • 写优先:在同一时刻对同一个地址进行读写,读出的数据为刚刚写入的数据。
  • 读优先:在同一时刻对同一个地址进行读写,读出的数据为前一刻写入的数据。
  • 不变模式:不能在同一时刻进行读写。

单端口RAM配置过程:

简单双端口RAM配置过程:

真正双端口RAM的配置:

(3)单端口RAM IP核的调用:

module ram
(
    input clk         ,
    input wea         ,     
    input [7:0]add    ,
    input [7:0]data_in,
    
    output[7:0]data_out
    );
    
//wea 读写控制端,高电平为写,低电平为读

s_ram_8x256 ram_inst (
  .clka(clk),    // input wire clka
  .wea(wea),      // input wire [0 : 0] wea
  .addra(add),  // input wire [7 : 0] addra
  .dina(data_in),    // input wire [7 : 0] dina
  .douta(data_out)  // output wire [7 : 0] douta
);
    
    
endmodule

(4)仿真文件代码:

`timescale 1ns / 1ps

module ram_tb;

    reg clk          ;
    reg reset_n      ;
    reg wea          ;
    reg [7:0]add     ;
    wire [7:0]data_in ;
    
    wire [7:0]data_out;
    
ram  ram_inst
(
    .clk     (clk     )      ,
    .wea     (wea     )      ,
    .add     (add     )      ,
    .data_in (data_in )      ,
              
    .data_out(data_out)
    );
    
    initial clk = 1'b1;
    always #10 clk = ~clk;
    
    initial begin
        reset_n <= 1'd0;
        #21;
        reset_n <= 1'd1;
        #100_000;
        $stop;
    end
    
//地址线设计    
    always@(posedge clk or negedge reset_n)
        if(!reset_n)
            add <= 8'd0;
        else if(add == 8'd255)
            add <= 8'd0;
        else 
            add <= add + 8'd1;
            
//wea信号设计
    always@(posedge clk or negedge reset_n)
        if(!reset_n)
            wea <= 1'd1;
        else if(add == 8'd255)
            wea <= ~wea;
        else 
            wea <= wea;
    
//data_in信号设计
    assign data_in = add;
            
endmodule

(5)仿真波形:

相关推荐

  1. <span style='color:red;'>RAM</span> <span style='color:red;'>IP</span><span style='color:red;'>核</span>

    RAM IP

    2024-07-13 16:06:01      42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-13 16:06:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 16:06:01       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 16:06:01       58 阅读
  4. Python语言-面向对象

    2024-07-13 16:06:01       69 阅读

热门阅读

  1. uni-app 蓝牙传输

    2024-07-13 16:06:01       18 阅读
  2. termux 安装 rockylinux

    2024-07-13 16:06:01       21 阅读
  3. 阿里云通义千

    2024-07-13 16:06:01       21 阅读
  4. 前端实现PDF文件打印和下载

    2024-07-13 16:06:01       19 阅读
  5. docker 安装orcale11数据库

    2024-07-13 16:06:01       21 阅读
  6. 缓冲区共享和同步dma_buf 之二

    2024-07-13 16:06:01       19 阅读
  7. Kylin的优缺点

    2024-07-13 16:06:01       19 阅读
  8. 【C语言】头文件命名详解 - 《铁头无敌 ! 》

    2024-07-13 16:06:01       21 阅读
  9. express

    express

    2024-07-13 16:06:01      20 阅读
  10. 【笔记】修改centos7过期的官方镜像资源

    2024-07-13 16:06:01       22 阅读