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

相关推荐
千寻xun6 小时前
三、实战篇-NVME SSD控制之FPGA实现(一)
fpga开发·nvme ssd·nvme协议
XMAIPC_Robot9 小时前
软硬协同实时控制|RK3588业务调度+FPGA硬件时序,ethercat实现半导体设备微秒级响应(125us)
linux·arm开发·人工智能·fpga开发
upper202010 小时前
从零开始设计riscv cpu记录之七
fpga开发·riscv·riscv设计·btb·分支预测
ARM|X86+FPGA工业主板厂家14 小时前
AI视觉跟随运动控制实战|RK3588 NPU检测+FPGA EtherCAT多轴联动精准跟随方案,适用于半导体视觉对位等
人工智能·fpga开发·硬件工程·ethercat·实时系统
XMAIPC_Robot18 小时前
RK3588+FPGA半导体设备量产踩坑大全|发热、时序漂移、推理抖动、成像干扰、EMC干扰方案
人工智能·嵌入式硬件·fpga开发·arm+fpga
凡亿卓达方案设计1 天前
FPGA硬件开发怎么选靠谱方案商?
fpga开发
Eloudy2 天前
QSFP28、RoCEv2、RFSoC-4x2 数据传输与器件链路
网络·fpga开发·rocev2
Echo_cy_2 天前
基于ZYNQ-7000的Ethernet驱动配置
linux·驱动开发·嵌入式硬件·fpga开发·ethernet·zynq
現実君2 天前
关于MCU下位替换FPGA的经验与方案
单片机·嵌入式硬件·fpga开发
Terasic友晶科技2 天前
【教程】Agilex 5 SoC 的两种启动模式的开发演示(一)(FPGA Configuration First)
fpga开发·agilex 5 soc