1、 可编程逻辑器件原理及应用课程可编程逻辑器件原理及应用课程 综合设计报告书综合设计报告书 设计设计 题目题目 密码锁设计 设设 计计 要要 求求 和和 任任 务务 数据输入:每按一个数字键,就输入一个数值,并在显示器上的最右方显示出该 数值,并将先前已经输入的数据依序左移一个数字位置。 数码清除:按下此键可清除前面所有的输入值,清除成为“0000” 。 密码更改:按下此键时将目前的数字设定成新的密码。 激活电锁:按下此键可将密码锁上锁。 解除电锁:按下此键会检查输入的密码是否正确,密码正确即开锁。 设设 计计 过过 程程 设计方案设计方案 本系统采用模块化的设计, 整个系统分为数字按键输入、
2、时钟输入、 功能按键输入、数字译码块、功能译码模块、核心处理模块、输出处理 模块、显示译码电路八个模块。整体电路如图1.1所示。 图1.1 数字密码锁总方框图 硬件电路的设计硬件电路的设计 4 位数字密码锁包括五个基本逻辑模块,分别为:数字按键输入模 块(numinput) 、功能按键输入模块(funcinput) 、核心处理模块(core) 、 输出处理模块(allout) 、七段译码器模块(dataout) 。 数字按键输入数字按键输入-numinput 说明: 读取数字键 09。 按键为矩阵形式, 高电平表示按键未按下, 低电平表示按键按下。 经数字按键输入模块处理后输出4位二进制代码,
3、 “0000”“1001”分别表示 09,用“1010”表示其他无效输入。如 表 2.1 所示。 数 字 按 键 输 时 钟 模 块 功 能 按 键 输 数 字 译 码 模 块 功 能 译 码 模 块 核 心 处 理 模 块 输 出 处 理 模 块 显 示 译 码 电 路 设设 计计 过过 程程 表 2.1 数字按键输入模块(numinput)的数据输入输出 按键数字 按键扫描输出 Numinput 二进制输出 对应十进制数字 0 11011110 0000 0 1 01111101 0001 1 2 01111110 0010 2 3 10110111 0011 3 4 10111011 0
4、100 4 5 10111101 0101 5 6 10111110 0110 6 7 11010111 0111 7 8 11011011 1000 8 9 11011101 1001 9 其他按键 其他 1010 10 (1)numinput-数字按键输入模块程序: library ieee; use ieee.std_logic_1164.all; entity numinput is port(numin :IN std_logic_vector(7 downto 0); numstate,clk :IN std_logic; numout :OUT std_logic_vector(
5、3 downto 0); end numinput; architecture one of numinput is signal state :std_logic; signal mem :std_logic_vector(7 downto 0); begin process(clk) begin if clkevent and clk=1 then 设设 计计 过过 程程 if state/=numstate then if mem/=numin then case numin is when “11011110“ = numout numout numout numout numout
6、numout numout numout numout numout numout=“1010“; end case; state=numstate; else numout=“1010“; end if; mem=numin; end if; end if; end process; end one; (2)数字按键输入模块仿真图: 设设 计计 过过 程程 图 2.1 数字按键输入模块仿真图 由图可知,当数字按键输入模块的输入依次为“11011110“、 “01111101“ 、 “01111110“ 、 “10110111“ 、 “10111011“ 、 “10111101“ 、 “10111110“、“11010111“、“11011011“、“11011101“时,numout 输出依次 输出 “0000” 、“0001” 、“0010” 、“0011” 、“0100” 、“0101” 、“0110” 、“0111” 、 “1000” 、 “1001” ;当为其他按键输入时,numout 输出均为“1010” 。 (3)数字按键输入-