logo资料库

可满足8个组,同时参加竞赛的智力竞赛抢答器设计.doc

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
1.带屏蔽功能的锁存器(SLDFF14)
(1)VHDL程序:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY SLDFF14 IS
PORT(RES:IN STD_LOGIC;
D:IN STD_LOGIC_VECTOR(7 DOWNTO 0);
Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
ALARM:OUT STD_LOGIC);
END SLDFF14;
ARCHITECTURE BHV OF SLDFF14 IS
BEGIN
VARIABLE Q1:STD_LOGIC_VECTOR(7 DOWNTO 0);
VARIABLE EN:STD_LOGIC;
BEGIN
IF RES='0'
THEN EN:= '1';
Q<="11111111";
ALARM<='0';
END IF;
Q1:= D;
IF EN='1' THEN IF Q1<"11111111"
EN:='0';
Q<=Q1;END IF;
END IF;
END PROCESS;
END BHV;
(2)封装框图
(3)仿真波形
2.8-4编码器(SLCODER1)
(1)VHDL程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY SLCODER1 IS
PORT(DIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0);
FOUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END SLCODER1;
ARCHITECTURE BHV OF SLCODER1 IS
BEGIN
PROCESS(DIN)
BEGIN
CASE DIN IS
WHEN "11111101"=>FOUT<="0010";
WHEN "11111011"=>FOUT<="0011";
WHEN "11110111"=>FOUT<="0100";
WHEN "11101111"=>FOUT<="0101";
WHEN "11011111"=>FOUT<="0110";
WHEN "10111111"=>FOUT<="0111";
WHEN "01111111"=>FOUT<="1000";
WHEN "11111111"=>FOUT<="0000";
WHEN OTHERS=>NULL;
END CASE;
END PROCESS;
END;
(2)封装框图
(3)仿真波形
3.4-7译码器(SLDECODER)
(1)VHDL程序
(2)封装框图
(3)仿真波形
4.完整抢答器
(1)完整框图
(2)封装框图
(3)仿真波形
三、设计心得
E D A 课 程 设 计 报 告 — — 智 力 竞 赛 抢 答 器
一、电路功能 可满足 8 个组,同时参加竞赛。抢答器复位后,数码显示为 0,在竞赛主持人出完题并 示意抢答开始后,每个组都可以通过各自的按钮开关发出抢答信号,抢答器一旦接收到某组 最先发出的信号后,立即让数码管显出该组的组号,同时发出音响提示,且对后来组发出的 抢答信号一律不与理睬。主持人用复位钮复位抢答器,数码显示归 0,提示音停止,在抢答 组回答完问题后,重复前述过程,可进行下一题抢答。 二、具体设计 1.带屏蔽功能的锁存器(SLDFF14) (1)VHDL 程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY SLDFF14 IS PORT(RES:IN STD_LOGIC; D:IN STD_LOGIC_VECTOR(7 DOWNTO 0); Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); ALARM:OUT STD_LOGIC); END SLDFF14; ARCHITECTURE BHV OF SLDFF14 IS BEGIN PROCESS(RES,D) VARIABLE Q1:STD_LOGIC_VECTOR(7 DOWNTO 0); VARIABLE EN:STD_LOGIC; BEGIN IF RES='0' THEN EN:= '1'; Q<="11111111"; ALARM<='0'; END IF; Q1:= D; IF EN='1' THEN IF Q1<"11111111" THEN ALARM<='1'; EN:='0'; Q<=Q1;END IF; END IF; END PROCESS; END BHV;
(2)封装框图 (3)仿真波形 波形说明:RES 为复位信号,D 为输入信号,当 RES=1 后,每个组都可以通过各自的 按钮开关发出抢答信号,抢答器一旦接收到某组最先发出的信号后,立即从 Q 端输出,同 时发出音响提示,且对后来组发出的抢答信号一律不与理睬。当 RES=0 时,Q 端输出全为 高电平。 2.8-4 编码器(SLCODER1) (1)VHDL 程序 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY SLCODER1 IS PORT(DIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0); FOUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END SLCODER1; ARCHITECTURE BHV OF SLCODER1 IS BEGIN PROCESS(DIN) BEGIN CASE DIN IS WHEN "11111110"=>FOUT<="0001"; WHEN "11111101"=>FOUT<="0010"; WHEN "11111011"=>FOUT<="0011"; WHEN "11110111"=>FOUT<="0100"; WHEN "11101111"=>FOUT<="0101"; WHEN "11011111"=>FOUT<="0110"; WHEN "10111111"=>FOUT<="0111"; WHEN "01111111"=>FOUT<="1000";
WHEN "11111111"=>FOUT<="0000"; WHEN OTHERS=>NULL; END CASE; END PROCESS; END; (2)封装框图 (3)仿真波形 波形说明:输入 DIN 后,则从 FOUT 对应输出数据(0 到 8)。例如,DIN=7F 时,表 明是 8 号第一个按了抢答器,则 FOUT 输出为 8。 3.4-7 译码器(SLDECODER) (1)VHDL 程序 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY SLDECODER IS PORT(DIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0); FOUT:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END SLDECODER; ARCHITECTURE BHV OF SLDECODER IS BEGIN PROCESS(DIN) BEGIN CASE DIN IS WHEN "0001"=>FOUT<="0000110"; WHEN "0010"=>FOUT<="1011011"; WHEN "0011"=>FOUT<="1001111"; WHEN "0100"=>FOUT<="1100110";
WHEN "0101"=>FOUT<="1101101"; WHEN "0110"=>FOUT<="1111101"; WHEN "0111"=>FOUT<="0000111"; WHEN "1000"=>FOUT<="1111111"; WHEN "0000"=>FOUT<="0000000"; WHEN OTHERS =>NULL; END CASE; END PROCESS; END; (2)封装框图 (3)仿真波形 波形说明:当 DIN 输入四位二进制码后,FOUT 会输出对应的七段数码管的编码。例 如,当 DIN=0001,FOUT=06,这样当把 FOUT 的七位接到数码管上后,就会输出‘1’。 4.完整抢答器 (1)完整框图 (2)封装框图
(3)仿真波形 波形分析:当 RES=1,则 FOUT 输出第一个按下抢答器的选手编号,且发出音响提示, 直到 RES=0,复位,不显示任何编号且停止蜂鸣。 三、设计心得 这次 EDA 课程设计中,可以说是苦多于甜,但是可以学的到很多 很多的东西,同时不仅可以巩固以前所学过的知识,而且学到了很多 在书本上所没有学到过的知识。通过这次设计,进一步加深了对 EDA 的了解,让我对它有了更加浓厚的兴趣。特别是当每一个子模块编写 调试成功时,心里特别的开心。但是在编写顶层文件的程序时,遇到 了不少问题,特别是各元件之间的连接,以及信号的定义,总是有错 误,在细心的检查下,终于找出了错误和警告,排除困难后,程序编 译就通过了,心里终于舒了一口气。在波形仿真时,也遇到了一点困 难,想要的结果不能在波形上得到正确的显示。后来,在数十次的调 试之后,才发现是因为程序在功能编写时时序发生问题。经过屡次调 试后,才观察到完整的仿真结果。 其次,在连接各个模块的时候一定要注意各个输入、输出引脚的 线宽,因为每个线宽是不一样的,只要让各个线宽互相匹配,才能得 出正确的结果,否则,出现任何一点小的误差就会导致整个文件系统
的编译出现错误提示,在器件的选择上也有一定的技巧,只有选择了 合适当前电路所适合的器件,编译才能得到完满成功。 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只 有理论知识是远远不够的,只有把所学的理论知识与实践相结合起 来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际 动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是 困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时 在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得 不够深刻,掌握得不够牢固。 总的来说,这次设计的只能竞赛抢答器是比较成功的,在设计中 遇到了很多问题,最后在多番的尝试下,终于游逆而解,有点小小的 成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实 际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使 自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。
分享到:
收藏