显示页面 讨论 修订记录 反向链接 本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。 ======基于STEP FPGA的矩阵按键驱动====== 本节将和大家一起使用FPGA驱动底板上的4x4矩阵键盘。 ====硬件说明==== ------- 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,使用行线和列线分别连接到按键开关的两端,这样我们就可以通过4根行线和4根列线(共8个I/O口)连接16个按键,而且按键数量越多优势越明显。 FPGA驱动矩阵按键模块,首先我们来了解矩阵按键的硬件连接: \\ {{ :矩阵按键.jpg?800 |}} \\ 上图为4x4矩阵按键的硬件电路图,可以看到4根行线(ROW1、ROW2、ROW3、ROW4)和4根列线(COL1、COL2、COL3、COL4),同时列线通过上拉电阻连接到VCC电压(3.3V),对于矩阵按键来讲: - 4根行线是输入的,是由FPGA控制拉高或拉低, - 4根列线数输出的,是由4根行线的输入及按键的状态决定,输出给FPGA 当某一时刻,FPGA控制4根行线分别为ROW1=0、ROW2=1、ROW3=1、ROW4=1时, * 对于K1、K2、K3、K4按键:按下时对应4根列线输出COL1=0、COL2=0、COL3=0、COL4=0,不按时对应4根列线输出COL1=1、COL2=1、COL3=1、COL4=1, * 对于K5~~~K16之间的按键:无论按下与否,对应4根列线输出COL1=1、COL2=1、COL3=1、COL4=1, 通过上面的描述:在这一时刻只有K1、K2、K3、K4按键被按下,才会导致4根列线输出COL1=0、COL2=0、COL3=0、COL4=0,否则COL1=1、COL2=1、COL3=1、COL4=1,反之当FPGA检测到列线(COL1、COL2、COL3、COL4)中有低电平信号时,对应的K1、K2、K3、K4按键应该是被按下了。 按照扫描的方式,一共分为4个时刻,分别对应4根行线中的一根拉低,4个时刻一次循环,这样就完成了矩阵按键的全部扫描检测 \\ {{ :矩阵按键扫描法原理.jpg |}} \\ ====Verilog代码==== ------ <code verilog> // ******************************************************************** // >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<< // ******************************************************************** // File name : LED.v // Module name : LED // Author : STEP // Description : control LED // Web : www.stepfpga.com // // -------------------------------------------------------------------- // Code Revision History : // -------------------------------------------------------------------- // Version: |Mod. Date: |Changes Made: // V1.0 |2017/03/02 |Initial ver // -------------------------------------------------------------------- // Module Function:利用按键和开关的状态来控制LED灯的亮灭。 module LED (key,sw,led); input [3:0] key; //按键输入信号 input [3:0] sw; //开关输入信号 output [7:0] led; //输出信号到LED assign led = {key,sw}; //assign连续赋值。大括号是拼接符,表示把key和sw拼接组成一个新的8位数赋值给led endmodule </code> \\ \\ ====引脚分配==== ------- 综合(synthesize)完成之后一定要配置FPGA的引脚到相应的外设,这样下载FPGA程序后才能达到我们想要的效果。 \\ {{led1.png?300|}} {{button1.png?300|}} \\ ====小结==== ------ 下载完程序后就可以实现按键开关控制LED灯的亮灭。了解小脚丫STEP-MXO2 V2上的外设LED、按键和开关的使用。如果你对Diamond软件的使用不了解,请参考这里:[[lattice_diamond的使用|Diamond的使用]]。