`timescale 1ns/1ps
module Rom_tb;
        
    reg         clk;
    reg         rst_n;
    
    reg       [4:0]  num;
    reg       [3:0]  row;
    wire      [3:0]  col;
    wire      [7:0]  q;

    initial begin
        clk <= 1′b1;
        rst_n <= 1’b0;
        #20 rst_n <= 1’b1;
        
        #100 num <= 5′h1;
        #500 num <= 5′h1F;

        #10000 num <= 5′h2;
        #500 num <= 5’h1F;

        #10000 num <= 5’h3;
        #500 num <= 5’h1F;

        #10000 num <= 5’h4;
        #500 num <= 5’h1F;
    end

    always #5 clk = !clk;

    Rom RomInst(
        .clk        (clk),
        .rst_n      (rst_n),
        .row        (row),
        .col        (col),
        .q          (q)
    );
    
    always @ (*)
    begin
        case (num)
            5’h0: row <= {1’b1, 1’b1, 1’b1, col[0]};
            5’h1: row <= {1’b1, 1’b1, 1’b1, col[1]};
            5’h2: row <= {1’b1, 1’b1, 1’b1, col[2]};
            5’h3: row <= {1’b1, 1’b1, 1’b1, col[3]};

            5’h4: row <= {1’b1, 1’b1, col[0], 1’b1};
            5’h5: row <= {1’b1, 1’b1, col[1], 1’b1};
            5’h6: row <= {1’b1, 1’b1, col[2], 1’b1};
            5’h7: row <= {1’b1, 1’b1, col[3], 1’b1};

            5’h8: row <= {1’b1, col[0], 1’b1, 1’b1};
            5’h9: row <= {1’b1, col[1], 1’b1, 1’b1};
            5’hA: row <= {1’b1, col[2], 1’b1, 1’b1};
            5’hB: row <= {1’b1, col[3], 1’b1, 1’b1}; 

            5’hC: row <= {col[0], 1’b1, 1’b1, 1’b1};
            5’hD: row <= {col[1], 1’b1, 1’b1, 1’b1};
            5’hE: row <= {col[2], 1’b1, 1’b1, 1’b1};
            5’hF: row <= {col[2], 1’b1, 1’b1, 1’b1};
            
            default: row <= {1’b1, 1’b1, 1’b1, 1’b1};
        endcase
    end

    defparam RomInst.KeyScanInst.T10ms = 5;

    endmodule 

原文地址:https://blog.csdn.net/durongze/article/details/134583292

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_13339.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注