keyscan_tb

`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, col0};

5'h1: row <= {1'b1, 1'b1, 1'b1, col1};

5'h2: row <= {1'b1, 1'b1, 1'b1, col2};

5'h3: row <= {1'b1, 1'b1, 1'b1, col3};

5'h4: row <= {1'b1, 1'b1, col0, 1'b1};

5'h5: row <= {1'b1, 1'b1, col1, 1'b1};

5'h6: row <= {1'b1, 1'b1, col2, 1'b1};

5'h7: row <= {1'b1, 1'b1, col3, 1'b1};

5'h8: row <= {1'b1, col0, 1'b1, 1'b1};

5'h9: row <= {1'b1, col1, 1'b1, 1'b1};

5'hA: row <= {1'b1, col2, 1'b1, 1'b1};

5'hB: row <= {1'b1, col3, 1'b1, 1'b1};

5'hC: row <= {col0, 1'b1, 1'b1, 1'b1};

5'hD: row <= {col1, 1'b1, 1'b1, 1'b1};

5'hE: row <= {col2, 1'b1, 1'b1, 1'b1};

5'hF: row <= {col2, 1'b1, 1'b1, 1'b1};

default: row <= {1'b1, 1'b1, 1'b1, 1'b1};

endcase

end

defparam RomInst.KeyScanInst.T10ms = 5;

endmodule

相关推荐
Kong_19947 小时前
芯片开发学习笔记·二十九——大模型基础知识与 KV Cache 详解
fpga开发·芯片开发
m0_46644103詹湛9 小时前
FPGA 定点数、小数与负数的加减乘除原理
fpga开发
zlinear数据采集卡10 小时前
D223上位机C#开发实战:从帧解析到波形显示的完整实现
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
zlinear数据采集卡14 小时前
D223 ADC数据处理流水线:从原始采样值到工程单位的完整转换链
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
FPGA小迷弟14 小时前
Vivado中高速收发器GTX/GTH的配置与调试实战
fpga开发·fpga·硬件开发
minglie114 小时前
简易寄存器接口SMMR---iic控制器
fpga开发
FPGA小迷弟14 小时前
Vivado ILA与VIO调试工具实战指南:从入门到精通
fpga开发·fpga·硬件开发
FPGA小迷弟20 小时前
FPGA状态机设计详解:从Moore到Mealy的完整指南
fpga开发·fpga
zlinear数据采集卡1 天前
D223的PWM电机控制:6路独立脉冲+加减速算法深度解析
arm开发·stm32·嵌入式硬件·算法·fpga开发·架构
zlinear数据采集卡2 天前
ZLinear产品线全景对比:D223 vs DABL7606 vs DABL-G511选型指南
arm开发·嵌入式硬件·算法·fpga开发·开源