题解主体

单口RAM的实现原理:

建立一个reg的数组,将数据存储进来,进行的是读、写互不干扰的读写机制,即要么读要么写。这个时侯需要设置enb,进行读写的开关控制。需要注意的是,写是对寄存器进行写,因此必须有时序电路构成。


硬件代码如下:

    reg [3:0]mem[127:0];

    integer i;

    always @(posedge clk or negedge rst) begin

        if(!rst) begin

            for (i=0; i<1023 ; i=i+1) begin

                mem[i] <= 'b0;

            end

        end

        else if (enb) begin

            mem[addr] <= w_data;

        end

    end

      

    assign r_data = (!enb)?mem[addr]:'b0;

参考答案

`timescale 1ns/1ns



module RAM_1port(
    input clk,
    input rst,
    input enb,
    input [6:0]addr,
    input [3:0]w_data,
    output wire [3:0]r_data
);

    reg [6:0]mem[127:0];
    integer i;
    always @(posedge clk or negedge rst) begin
        if(!rst) begin
            for (i=0; i<127 ; i=i+1) begin
                mem[i] <= 'b0;
            end
        end
        else if (enb) begin
            mem[addr] <= w_data;
        end
    end
	
    assign r_data = (!enb)?mem[addr]:'b0;


endmodule