本原创教程由深圳市小眼睛科技有限公司创作,版权归本公司所有,如需转载,需授权并注明出处
 适用于板卡型号:
紫光同创PGL22G开发平台(盘古22K)
一:盘古22K开发板(紫光同创PGL22G开发平台)简介
盘古22K开发板是基于紫光同创Logos系列PGL22G芯片设计的一款FPGA开发板,全面实现国产化方案,板载资源丰富,高容量、高带宽,外围接口丰富,不仅适用于高校教学,还可以用于实验项目、项目开发,一板多用,满足多方位的开发需求。
二:实验目的
 
 利用 MES22GP 板卡上的按键,拨码开关以及数码管实现一种简单的密码锁。  
 
 
 
 利用拨码开关设置密码,使用按键输入开锁密码。当开锁密码与设定密码相同时开锁成功, 数码管显示 8888,密码错误时显示 7777。  
 
 
 
 SW1~SW8 设置 4 位数密码,每两位设置一位密码,SW[2:1]设置第一位,SW[4:3]设置第二位,SW[6:5]设置第三位,SW[8:7]设置第四位。四位密码最高可设置为“3333”; 
 
 
 
 KEY4~KEY1 作为密码输入,按键按一下数字加 1,数字由数码管显示,数字在 0,1,2, 3 中循环。  
 
 
 
 K7 作为确认按键,按下 K7,输入的密码与设置的密码比对,如相同则显示 8888,若不同则显示 7777。  
 
 
 
 按下 K8 清零,按下后数码管显示 0000,可以重新输密码。  
 
 
 
 
 
 
 
 三:实验原理 
 
 
 
  原理上与前一个章节的序列检测是类似的,在前一个实验的基础上有了一些延伸;  
 
 
  
  
  序列对比的位宽发生改变,单个数据占 2bit,一个按键控制输入密码数据设置为 2bit 即可;对比与重新开始在此实验用两个按键实现,一个确认对比,一个清空结果;  
 
 
  
  
  
  
  
  
  
  四:实验源码设计 
 
 
  
  
   根据需求我们需要如下三个子模块:  
  
 
   
   
   ①按键控制模块;  
  
 
   
   
   1、对 6 个按键输入信号均做消抖处理,2、KEY[4:1]以下降沿来变更各自的输入密码,  
  
 
   
   每次数字加 1(0~3 循环,2bit 即可)  
  
 
   
   
   ②数码管显示模块;  
  
 
   
   
   显示状态有两种:  
  
 
   
   
   密码输入状态:  
  
 
   
   
   1、上电默认状态; 2、KEY8 触发进入重置状态;3、实时显示 4 位输入密码;  
  
 
   
   
   密码验证状态:  
  
 
   
    1、KEY7 触发进入;  
   
 
    
    
    2、显示密码验证结果,正确则显示 8888,错误则显示 7777;  
   
 
    
    
    ③密码验证模块;  
   
 
    
    
    KEY7 下降沿触发使能工作; KEY7 下降沿触发所存输入密码,并与拨码开关设置的密码进行比较;  
   
 
    
    
    输出密码比较结果,提供个数码管显示模块 
   
 
    
    
     顶层模块设计  
    
 
     
     
     顶层模块与上述三个模块之间的关系如下图:  
    
 
    
 
      输入输出信号如下表:  
     
 
     
 
       Module 设计如下:  
      
 
      

 
        按键控制设计 
       
 
       
 
         输入输出信号如下表:  
        
 
         
         Module 设计如下:  
        
 
         
        

 
          对比模块设计  
         
 
          
          
          输入输出信号如下表:  
         
 
         

 
           Module 设计 
          
 
          
 
            显示模块设计  
           
 
            
            
            输入输出信号如下表:  
           
 
           
 
             此模块设计需要注意数码管显示的两种模式:密码输入模式与密码对比结果显示模式;两  
            
 
             
             种模式的切换由 enter_trig 与 init_trig 触发进入;  
            
 
             
             
             对于数码管的显示控制模块这里就不重复描述了;  
            
 
             
            


五:实验现象
 
             实验步骤:  
            
 
             
             
             1 
             、 调整输入序列,更改拨码开关的输入值( 
             SW[8 
             : 
             1] 
             );  
            
 
             
             
             2 
             、 调整固定序列,通过轻触按键调整输入密码,数码管实时显示输入密码;  
            
 
             
             
             3 
             、 按下轻触按键  
             KEY7 
             ,触发进行密码比对,并且数码管显示比对结果;  
            
 
             
             
             4 
             、 按下轻触按键  
             KEY8 
             ,进入重新输入密码状态,重新执行前面三个步骤。  
            
 
             
             
             实验现象:  
            
 
             
             
             当  
             SW[8:1]=8’b10101010; 
             当输入密码状态时显示  
             4  
             个  
             2 
             ,按下  
             Key7  
             后数码管显示数字8888;当输入密码状态时显示不是  
             4  
             个  
             2  
             时  
             2 
             ,按下  
             Key7  
             后数码管显示数字  
             7777 
             ;按下  
             Key8后重新调整密码,进入输入密码状态。  
            
 
            




















