1)时序产生电路
本时序产生电路中使用了三种不同频率的工作脉冲波形:系统时钟脉冲(它是系统内部所有时钟脉冲的源头,且其频率最高)、弹跳消除取样信号、键盘扫描信号。
当一个系统中需使用多种操作频率的脉冲波形时,最方便的方法之一就是利用一个自由计数器来产生各种需要的频率。也就是先建立一个N位计数器,N的大小根据电路的需求决定,N的值越大,电路可以分频的次数就越多,这样就可以获得更大的频率变化,以便提供多种不同频率的时钟信号。若输入时钟为CLK,N位计数器的输出为Q[N-10],则Q(O)为CLK的2分频脉冲信号,Q(1)为CLK的4分频脉冲信号,Q(2)为CLK的8分频脉冲信号……Q(N-1)为CLK的2N分频脉冲信号; Q(5 DOWNTO 4)取得的是一个脉冲波形序列,其值依00-01-10-11-00-01周期性变化,其变化频率为CLK的25分频,也就是32分频。我们利用以上规律即可得到各种我们所需要频率的信号或信号序列。
2)键盘扫描电路
扫描电路的作用是用来提供键盘扫描信号(如表中的KY3~KY0)的,扫描信号变化的顺序依次为1110-1101-1011-0111-1110……依序地周而复始。扫描时依序分别扫描四列按键,当扫描信号为1110时扫描KY3这一排按键;当扫描信号为1101时,扫描KY2这一排按键;当扫描信号为1011时,扫描KY1这一排按键;当扫描信号为0111时,扫描KY0这一排按键。每扫描一排按键就检查一次是否有键被按下,如果这排没有按键被按下就忽略,反之,如果出现被按下的键则立刻进行按键编码的动作,且将编码的结果储存于寄存器中。
3)弹跳消除电路
由于本设计中采用的矩阵式键盘是机械开关结构,因此在开关切换的瞬间会在接触点出现信号来回弹跳的现象,对于电子密码锁这种灵敏度较高的电路这种弹跳将很可能会造成误动作输入,从而影响到密码锁操作的正确性。
从如图1中可以观察出弹跳现象产生的原因,虽然只是按下按键一次然后放掉,然而实际产生的按键信号却不止跳动一次,经过取样信号的检查后,将会造成误判断,以为键盘按了两次。
如图1 弹跳现象产生错误的抽样结果
如果调整抽样频率(如图2所示),可以发现弹跳现象获得了改善。
如图2 调整抽样频率后得到的抽样结果
因此必须加上弹跳消除电路,避免误操作信号的发生。特别要注意的是,弹跳消除电路所使用的脉冲信号的频率必须比其他电路使用的脉冲信号的频率更高;通常将扫描电路的工作频率定在24 Hz左右,而将弹跳消除电路的工作频率定在128 Hz左右,其工作频率通常是前者的4倍或者更高。
弹跳消除电路的实现原理如图3所示,先将键盘的输入信号D_IN做为电路的输入信号,CLK是电路的时钟脉冲信号,也就是取样信号,D_IN经过两级D触发器延时后再使用ItS触发器处理。
如图3 弹跳消除电路的内部实现原理图
此处RS触发器的前端连接和非门的处理原则是:
(1)因为一般人的按键速度至多是10次/秒,亦即一次按键时间是100 ms,所以按下的时间可估算为50 ms。以取样信号CLK的周期为8 ms计,则可以取样到6次。
(2)对于不稳定的噪声,在4 ms以下则至多抽样一次。
(3)在触发器之前,接上AND-NOT之后,SR的组态如表1所示。
如图1 RS触发器真值表
·DO为1,且D1也为1时,结果S=1,R=0,D_OUT才会输出1。这代表被取样的D_IN信号能被连续取样到两次1,此时认定它己经稳定地按下按钮。
·DO为0,且D1也为0时,结果S=0,R=1,D_OUT才会输出0。这代表被取样的D_IN信号能被连续取样到两次O,此时认定它已经稳定地放掉按钮。
·DO为1,且D1为0时,则结果S=O,R=0,D_OUT将维持先前的输出信号不变。DO=0,D1=1也是如此。
总之,必须取样到两次1才会输出1,两次O才会输出0。最后,由于D ̄OUT的信号输出时间宽度过长,所以输出必须再接一级微分电路后,才接到译码电路。
4)键盘译码电路
上述键盘中的按键可分为数字按键和文字按键,每一个按键可能负责不同的功能,例如清除数码、退位、激活电锁、开锁等,详细功能参见如表2。
数字按键主要是用来输入数字的,但是键盘所产生的输出,也就是扫描回复信号,是无法直接拿来用做密码锁控制电路的输入的;另外,不同的按键(数字按键和功能按键)具有不同的功能,所以必须由键盘译码电路来规划每个按键的输出形式,以便执行相应的动作。
如表2 键盘参数表
注:当没有任何数字按键被按下时,键盘译码输出“1111”;当某功能按键尚未定义其功能时,键
盘译码输出“1000”。
键盘译码电路主要负责的工作是:首先判别是否有键按下;若被按下的是数字按键,则解码成相对应的BCD码,若被按下的是功能按键,则解码成四位数的码字,由密码锁控制电路做相应的动作。
5)按键存储电路
因为每次扫描会产生新的按键数据,可能会覆盖前面的数据,所以需要一个按键存储电路,将整个键盘扫描完毕后的结果记录下来。按键存储电路可以使用移位寄存器构成。
根据以上设计思路,密码锁输入电路的VHDL程序见4.3,2节的KEYBOARD.VHD程序,其中调用的程序(元件)DEBOUNαNG。VHD为键盘输入去抖电路的VHDL源程序。