图5.1.2
上图为4为串行输入并行输出寄存器,它由4个D触发组成,当reset为高电平时,每给一脉冲输入数据将向右移一位二值代码,它能同时复位
3)程序的输入
在文本区内输入程序,程序如下: 单脉冲信号控制 puls.vhd LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY puls IS
PORT (PUL,M:IN STD_LOGIC; Q:OUT STD_LOGIC); END puls;
ARCHITECTURE BEHAVE OF puls IS SIGNAL TEMP:STD_LOGIC; BEGIN
PROCESS(M) BEGIN
IF M'EVENT AND M='1' THEN IF PUL='1' THEN TEMP<='1'; ELSE TEMP<='0'; END IF; END IF; END PROCESS; Q<=TEMP; END BEHAVE;
4位串行输入并行输出寄存器 shifter.vhd LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY shifter IS
PORT
(din:IN STD_LOGIC; );
reset,CLK: IN
STD_LOGIC;
qout: buffer STD_LOGIC_VECTOR(0 TO 3)
END shifter;
ARCHITECTURE act OF shifter IS BEGIN
PROCESS(CLK)
VARIABLE q:STD_LOGIC_VECTOR(0 TO 3);
BEGIN IF reset='0' THEN q:=(others=>'0'); ELSE
if clk'event and clk='1' then q(3):=q(2); q(2):=q(1); q(1):=q(0); q(0):=din;
END IF;
END IF; qout<=q; END PROCESS; END architecture act;
5.2 控制模块
1)功能介绍
开锁时输入密码后,拨动 RT键使其为高电平,而CHANGE为低电平检测,密码正确时开锁,输出LOCKOPEN灯灭,LOCKCLOSE灯亮,表示开锁成功。当密码输入错误时,LOCKOPEN灯亮,LOCKCLOSE灯灭,表示开锁失败。当改变密码时,按下CHANGE键使其为高电平,而RT为低电平时,可改变密码。按下REST可清除前面的输入值,清除为“888”。
2)控制模块与仿真图形 输入译码器图5.2.1,如下图
图5.2.2
上图为译码器将4位二值代码转化成BCD码从“0000”~“1001”表示 0~9。
表5-2输入译码的真值表
输入 输出
D C B A Y1 Y2 Y3 Y4 字形 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 1 0 2 0 0 1 1 0 0 1 1 3 0 1 0 0 0 1 0 0 4 0 1 0 1 0 1 0 1 5 0 1 1 0 0 1 1 0 6 0 1 1 1 0 1 1 1 7 1 0 0 0 1 0 0 0 8 1 0 0 1 1 0 0 1 9
表5-2
总功能控制模块图5.2.3,如下图
图5.2.3
当CHANGE为高电平且rt为低电平时开始输入密码这时lockopen为高电平,而lockclose为低电平,当rt为高电平,change为低电平时开始检测密码,如上图开始密码为“108”当再次出现“108”时lockopen为高电平,而lockclose为低电平,当密码错误时lockopen为低电平,而lockclose为高电平。
4选1选择器与扫描器图5.2.4,如下图