完整版的EDA课程设计
信息技术学院
综合设计报告书
姓 名: 景显冬 班 级: B1106 学 号: 04 时 间: 2013.12.31 指导教师: 李海成
《可编程逻辑器件原理及应用》课程
完整版的EDA课程设计
设计密码锁设计
题目数据输入:每按一个数字键,就输入一个数值,并在显示器上的最右方显示出该 数值,并将先前已经输入的数据依序左移一个数字位置。 数码清除:按下此键可清除前面所有的输入值,清除成为“0000” 。 密码更改:按下此键时将目前的数字设定成新的密码。 激活电锁:按下此键可将密码锁上锁。 解除电锁:按下此键会检查输入的密码是否正确,密码正确即开锁。
设 计 要 求 和 任 务
完整版的EDA课程设计
设计方案本系统采用模块化的设计, 整个系统分为数字按键输入、 时钟输入、 功能按键输入、数字译码块、功能译码模块、核心处理模块、输出处理 模块、显示译码电路八个模块。整体电路如图1.1所示。数 字 按 键 输 入 时 钟 模 块 功 能 按 键 输 入
设
数 字 译 码 模 块 功 能 译 码 模 块
核 心 处 理 模 块
输 出 处 理 模 块
显 示 译 码 电 路
计
过
图1.1 数字密码锁总方框图
程
硬件电路的设计4 位数字密码锁包括五个基本逻辑模块,分别为:数字按键输入模 块(numinput) 、功能按键输入模块(funcinput) 、核心处理模块(core) 、 输出处理模块(allout) 、七段译码器模块(dataout) 。
数字按键输入--numinput说明: 读取数字键 0~9。 按键为矩阵形式, 高电平表示按键未按下, 低电平表示按键按下。 经数字按键输入模块处理后输出 4 位二进制代码, “0000”~“1001”分别表示 0~9,用“1010”表示其他无效输入。如 表 2.1 所示。
完整版的EDA课程设计
表 2.1 数字按键输入模块(numinput)的数据输入输出 按键数字 0 1 2 3 4 5 按键扫描输出 11011110 01111101 01111110 10110111 10111011 10111101 10111110 11010111 11011011 11011101 其他 Numinput 二进制输出 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 对应十进制数字 0 1 2 3 4 5 6 7 8 9 10
设
6 7 8 9
计
其他按键
(1)numinput--数字按键输入模块程序: library ieee; use ieee.std_logic_1164.all;
过
entity numinput is port(numin numstate,clk numout :IN std_logic_vector(7 downto 0); :IN std_logic; :OUT std_logic_vector(3 downto 0));
程
end numinput; architecture one of numinput is signal state signal mem begin process(clk) begin if clk'event and clk='1' then :std_logic; :std_logic_vector(7 downto 0);
完整版的EDA课程设计
if state/=numstate then if mem/=numin then case numin is when "11011110" => numout<="0000";---"0" when "01111101" => numout<="0001";---"1" when "01111110" => numout<="0010";---"2" when "10110111" => numout<="0011";---"3" when "10111011" => numout<="0100";---"4"
设
when "10111101" => numout<="0101";---"5" when "10111110" => numout<="0110";---"
6" when "11010111" => numout<="0111";---"7" when "11011011" => numout<="1000";---"8"
计
when "11011101" => numout<="1001";---"9" when others => numout<="1010"; end case; state<=numstate;
过end if;
else numout<="1010";
mem<=numin; end if;
程
end if; end process; end one; (2)数字按键输入模块仿真图:
完整版的EDA课程设计
设图 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)数字按键输入--numinput 符号文件:
程
图 2.2 数字按键输入--numinput 符号文件
功能按键输入模块 -- funcinput读取矩阵按键区控制功能按键 -— 清除键、改密键、上锁键、解锁键。 高电平表示按键未按下,低电平表示按键按下。按照“清除,改
完整版的EDA课程设计
密,上锁,解锁”顺序读取按键时,只能输出一位控制信号。输出 的信号为 3 位二进制代码, “001”~“100” ,依次表示“清除按键、改 密按键、上锁,解锁” ,用“000”表示输入不为功能按键信号。表 2.2 控制功能按键输入模块(funcinput)的输出输入数据 功能按键 功能按键扫描输出 Funcinput 二进制输 出 清除键 改密键 对应十进制数字
11100111 11101101 11101110 11101011其他
001 010 011 100 000
1 2 3 4 0
设
上锁键 解锁键 其他按键
计
(1)Funcinput--功能按键输入模块程序: library ieee; use ieee.std_logic_1164.all; entity funcinput is
过
port( funcin: constate,clk:
IN std_logic_vector(7 downto 0); IN std_logic;
conout:OUT std_logic_vector(2 downto 0)); end funcinput;
程