题解 | #单端口RAM#

单端口RAM

http://www.nowcoder.com/practice/a1b0c13edba14a2984e7369d232d9793

`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
);
//*************code***********//

reg    [3:0]    ram_reg    [127:0];
reg    [3:0]    r_data_reg;

genvar    i;
generate
    for(i=0;i<128;i=i+1)
        always@(posedge clk or negedge rst)begin 
            if(!rst)begin 
                ram_reg[i] <= 0; 
            end
            else    if(enb)begin 
                ram_reg[addr] <= w_data; 
            end
            else    begin 
                ram_reg[addr] <= ram_reg[addr]; 
            end
        end
endgenerate

always@(*)begin 
    if(!rst)begin 
       r_data_reg <= 0; 
    end
    else    if(enb)begin 
        r_data_reg <=  r_data_reg;
    end
    else    begin 
        r_data_reg <= ram_reg[addr]; 
    end
end

assign r_data = r_data_reg;


//*************code***********//
endmodule
全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务