• 设计一个异步双端口RAM,深度为16,数据位宽为8bit


    module DUAL_PORT_ARAM
    #(
    parameter ADDR_WIDTH = 4,
    parameter DATA_WIDTH = 8,
    parameter DATA_DEPTH  = 1<<ADDR_WIDTH
    )
    (
    input clk_r,                                   //异步ram写时钟
    input clk_w,                                   //异步ram读取时钟
    input rst_n,                                  //复位信号
    input cs_n,                                      //片选信号
    input [ADDR_WIDTH-1'b1:0]addr,            //读写操作请求地址
    input rd_en,                                 //读取使能信号
    input wr_en,                                //写入使能信号
    input [DATA_WIDTH-1'b1:0] data_w,     //写入数据
    output reg [DATA_WIDTH-1'b1:0]data_r  //读出的数据
    );
    /*
    数据的个数为16,也就是2的4次方, 所以地址的宽度为4,深度为16
    */
    /*
    要实现一个双端口的异步ram,数据的个数为16,所以要有16个寄存器变量
    */
    reg [DATA_WIDTH-1'b1:0] mem[DATA_DEPTH-1'b1:0];  //定义DATA_DEPTH个位宽为DATA_WIDTH的存储单元
    //写控制模块
    integer i;
    always@(posedge clk_w or negedge rst_n)
    if(~rst_n)  //复位情况
    begin
     for(i=0 ; i<DATA_DEPTH; i=i+1'b1 )
      mem[i]<={DATA_WIDTH{1'b0}};
    end 
    else begin   //检测到写请求
     if(wr_en&~cs_n)
     mem[addr]<=data_w;
    end 
    //读取控制模块
    always@(posedge clk_r or negedge rst_n)
    if(~rst_n)
     data_r<={DATA_WIDTH{1'b0}};
    else if(rd_en&(~cs_n))
     data_r<=mem[addr];
    endmodule  
  • 相关阅读:
    shell script数组使用函数输出
    Yii2文件上传
    ubuntu 安装遇到黑屏
    使用函数
    ionCube 安装
    记录LNMP环境彻底删除绑定域名及网站文件夹/文件的过程
    lnmp环境 开启pathinfo
    国外知名设计教程网址收集
    26个国外在线教育网站
    前端学习网站汇总
  • 原文地址:https://www.cnblogs.com/luxinshuo/p/13552479.html
Copyright © 2020-2023  润新知