五人多数表决器
一,设计目的:
1,学习使用EDA开发工具MAX+plusII。
2,学习使用VHDL语言设计五人多数表决器。
3,熟悉五人多数表决的原理。
二,设计任务:
设计一个五人多数表决器,使其有满足设计要求的功能。
三,设计要求:
1) 五人多数表决逻辑:多数通过;
2) 在主持人控制下,10秒内表决有效;
3) 采用数码管显示表决10秒倒计时;
4) 表决结束后用发光二极管及数码管显示表决结果,数码管显示结果形式:通过,不通过;
5) 设主持人控制键,复位键:
控制键:启动表决;
复位键:系统复位。
6) 自制实验方案,完成设计任务。
四,设计思路:
五人多数表决,只要在规定时间内,赞成人数大于或等于三,则表决通过。因此,只需将每位表决人的结果相加,判断结果值。设五个开关作为表决器的五个输入变量,输入变量为逻辑“1”时,表示表决者“赞成”;输入变量为“0”时,表示表决者“不赞成”。输出逻辑“1”时,表示表决“通过”;输出逻辑“0”时,表示表决“不通过”。当表决器的五个输入变量中有3个以上(含3个)为“1”时。则表决器输出为“1”;否则为“0”。
五,管脚说明:
AA:一维数组AA用来表示五位表决者;
PASS:表决最终是否通过(‘1’为“通过”,‘0’为“未通过”);
TOTAL:表决通过的人数;
SHIJIAN:用来显示倒计时;
FUWEI:主持人复位键,用来系统复位;
KAISHI:主持人控制键,用来启动表决;
CLK:系统时钟。
六,源程序:
library ieee;
use ieee.std_logic_11.all;
use ieee.std_logic_ARITH.all;
use ieee.std_logic_UNSIGNED.all;
ENTITY BIAOJUE IS
PORT( AA:IN STD_LOGIC_VECTOR(1 TO 5);
PASS:OUT BIT;
TOTAL:OUT STD_LOGIC_VECTOR(3 DOWNTO 1);
SHIJIAN:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);
FUWEI,KAISHI,CLK:IN STD_LOGIC);
END BIAOJUE;
ARCHITECTURE FUNG OF BIAOJUE IS
BEGIN
PROCESS(AA,CLK,KAISHI,FUWEI)
VARIABLE SUO:BOOLEAN;
VARIABLE SUM:STD_LOGIC_VECTOR(1 TO 3);
BEGIN
IF (FUWEI='0') THEN
PASS<='0';
SHIJIAN<=\"1010\";
SUO:=FALSE;
SUM:=\"000\";
TOTAL<=\"000\";
ELSIF (CLK'EVENT AND CLK='1') THEN
IF (KAISHI='1') THEN
IF (NOT SUO) THEN
IF SHIJIAN=\"0000\" THEN
SUO:=TRUE;
FOR N IN 1 TO 5 LOOP
SUM:=AA(N)+SUM;
END LOOP;
ELSE
SHIJIAN<=SHIJIAN-1;
END IF;
END IF;
TOTAL<=SUM;
IF (SUM >= 3) THEN
PASS<='1';
ELSE
PASS<='0';
END IF;
END IF;
END IF;
END PROCESS;
END FUNG;
七,实验验证:
建立文本文件,选择File/New/Text Editor File,输入源程序。保存(保存名
为:biaojue.vhd),编译。编译通过后建立biaojue.scf模拟文件,分别赋予不同的条件之后,得到相应的结果。
八,仿真现象:
复位时的模拟结果:
图1
无人赞成时的模拟结果:
图2
规定时间外的模拟结果:
图3
赞成人数不够的模拟结果:
两人赞成时的结果
图4
表决通过时的模拟结果:
三人.四人和五人通过时的结果如下图:
图5
九,管脚锁定结果:模式5
AA1 AA2 AA3 AA4 AA5 FUWEI KAISHI PASS SHIJIAN TOTAL PIO00 01 02 03 04 06 07 08 016~019 044~046 引脚5 6 7 8 9 11 16 17 27~30 72.73.78 键1 2 3 4 5 7 8 灯1 译码管1 译码管8
管脚锁定之后再次编译,再下载到实验箱进行再次验证。
KD2复位信号;KD3开始信号;KD4~KD8为五个人;LED1显示通过与不通过;静态数码管8显示倒计时和数码管7通过的人数。分别拨动相应的开关即显示相应的结果。
(1):当KD2=0时,LED1不亮,数码管8显示A,数码管7显示为0。
(2):当KD2=1,KD3=1时,AA1~AA5都为0时,LED1熄灭,数码管7显示为0,数码管8显示倒计时A.8.7.6.5.4.3.2.1.0
(3): 当KD2=1,KD3=1时,AA1~AA5在倒计时时间外赋值。数码管8倒计时,数码管7显示为0。
(3):当KD2=1,KD3=1时,AA5=1,AA4=1.其它为0时,LED1熄灭,数码管7显示为2,数码管8显示倒计时A.8.7.6.5.4.3.2.1.0
(4):当KD2=1,KD3=1时,AA5=1,AA4=1.AA3=1, 其它为0时,LED1亮,数码管7显示为3,数码管8显示倒计时A.8.7.6.5.4.3.2.1.0
„„„„.
十,实验结论:
该实验是一个具有计时功能的五人表决器,时间为10秒,主持人控制复位,开始。输出结果为表决通过的人数和最后表决是否通过。
十一,实验总结:
该实验的关键是统计表决通过的人数和时间的,即怎样将通过的人数加起来,并且应该在什么时候统计!通过实验知道:应该在倒计时完成之后统计。因为不管你是在第几秒赞成,但只要你赞成,就意味在倒计时结束时也是赞成的,所以应该在此时统计。并且在倒计时之外,表决无效。
十二,实验心得:
通过一星期的紧张工作,最后完成了我的设计任务——五人多数表决器的
设计。通过本次课程设计的学习,我深深的体会到设计课的重要性和目的性。本次设计课不仅仅培养了我们实际操作能力,也培养了我们灵活运用课本知识,理论联系实际,自主的进行设计的能力。它不仅仅是一个学习新知识新方法的好机会,同时也是对我所学知识的一次综合的检验和复习,使我明白了自己的缺陷所在,从而查漏补缺。希望学校以后多安排一些类似的实践环节,让同学们学以致用。
在设计中要求我要有耐心和毅力,还要细心,稍有不慎,一个小小的错误就会导致结果的不正确,而对错误的检查要求我要有足够的耐心,通过这次设计和设计中遇到的问题,也积累了一定的经验,对以后从事集成电路设计工作会有一定的帮助。在应用VHDL的过程中让我真正领会到了其并行运行与其他软件顺序执行的差别及其在电路设计上的优越性。用VHDL硬件描述语言的形式来进行数字系统的设计方便灵活,利用EDA软件进行编译优化仿真极大地减少了电路设计时间和可能发生的错误,降低了开发成本,这种设计方法必将在未来的数字系统设计中发挥越来越重要的作用。