新手第一篇文档,是我自己对于FPGA的理解
我是大二的一名本科生,现在正在利用FPGA做数电实验,最近我们实验要求了对于键盘扫描的掌握,所以我在这里给出一下我的解决办法。
首先说明展示一下键盘扫描的基本元件实现方法。
这里的是一个8*4的键盘扫描,利用低位的三个数字进行译码,从而保证每次只有一位为0,如果有按键按下,四选一中就有一位是低,高位扫描找到这一行后迅速停止计数,并产生一个上升沿在寄存器里保存这个五位数,从而做到抬手之后继续计数,但依然在寄存器中保存了这个数。
下面是我自己的代码,因为我的FPGA是4*4键盘,所以和图片里的不一样。
module jishuqi(CLK,R,T,out); //计数器模块
input CLK,R,T;
output [3:0]out;
reg [4:0]outvec;
always@(posedge CLK or negedge R)
begin
if(R == 0)
outvec <= 4'b0000;
else if(T == 0)
outvec <= outvec;
else
begin
if(outvec == 31)
outvec <= 1'b0;
else
outvec <= outvec +1'b1;
end
end
assign out = outvec[4:1];
endmodule
module ersiyimaiqi(in,out); /