差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版 两侧同时换到之后的修订记录
矩阵键盘键入系统设计 [2018/10/22 11:11]
anran [实验原理]
矩阵键盘键入系统设计 [2018/10/22 11:18]
anran [实验原理]
行 166: 行 166:
 ===系统总体实现=== ===系统总体实现===
  
 +在基础数字电路实验部分我们已经掌握了FPGA驱动独立显示数码管的原理及方法, 模块通过一个4位的输入传递要显示的数值,通过9位的输出控制数码管显示该数值,这里我们不再重复。
 +矩阵键盘驱动模块输出的是脉冲信号,后面数码管驱动模块输入的是用4位位宽表示的数据,所以中两个实例之间就需要一个编码的功能块,主要功能是根据矩阵键盘的脉冲输出(key_pulse)判定键盘的操作,通过编码对应提供按键的键值数据(seg_data),最后通过连线将键值数据连接到数码管模块的输入端口。
  
 +键值显示转码程序实现
 +<code verilog>
 +//key_pulse transfer to seg_data
 +always@(posedge clk or negedge rst_n) begin
 + if(!rst_n) begin
 + seg_data <= 8'h00;
 + end else begin
 + case(key_pulse) ​ //​key_pulse脉宽等于clk_in的周期
 + 16'​h0001:​ seg_data <= 8'​h01; ​ //编码
 + 16'​h0002:​ seg_data <= 8'h02;
 + 16'​h0004:​ seg_data <= 8'h03;
 + 16'​h0008:​ seg_data <= 8'h04;
 + 16'​h0010:​ seg_data <= 8'h05;
 + 16'​h0020:​ seg_data <= 8'h06;
 + 16'​h0040:​ seg_data <= 8'h07;
 + 16'​h0080:​ seg_data <= 8'h08;
 + 16'​h0100:​ seg_data <= 8'h09;
 + 16'​h0200:​ seg_data <= 8'h10;
 + 16'​h0400:​ seg_data <= 8'h11;
 + 16'​h0800:​ seg_data <= 8'h12;
 + 16'​h1000:​ seg_data <= 8'h13;
 + 16'​h2000:​ seg_data <= 8'h14;
 + 16'​h4000:​ seg_data <= 8'h15;
 + 16'​h8000:​ seg_data <= 8'h16;
 + default: ​ seg_data <= seg_data; ​  //​无按键按下时保持
 + endcase
 + end
 +end
 +</​code>​
 +
 +综合后的设计框图如下:
 +{{:​2-rtl设计框图.png?​600|rtl设计框图}}
 ====实验步骤==== ====实验步骤====
   - 双击打开Quartus Prime工具软件;   - 双击打开Quartus Prime工具软件;