当前位置:文档之家› 五人多数表决器VHDL

五人多数表决器VHDL

五人多数表决器的VHDL设计
1 设计要求
(1)五人多数表决逻辑:多数通过;
(2 )在主持人控制下,10秒内表决有效;
(3)设主持人控制键,复位键:
控制键:启动表决;
复位键:系统复位。

2 设计说明
在脉冲作用下,使用减法计数器,在初值为10秒的时候,主持人按控制键启动表决后,开始计时。

每来一个脉冲计数器就减少1。

一直这样下去,直到计数器变为0。

计数器为0时投票无效。

最后统计投票人数通过同意人数决定表决结果,当投票人不小于3人时,投票通过。

在主持人按下复位键时,计数回到10,重新进行减法计数器。

直到为0。

3 设计结果
3.1 电路原理图
图1 原理图
3.2 信号表
voter:一维数组voter用来表示五位表决者;
pass:表决最终是否通过(‘1’为“通过”,‘0’为“未通过”);
total:表决通过的人数;
count:用来显示倒计时;
reset:主持人复位键,用来系统复位;
start:主持人控制键,用来启动表决;
clk:系统时钟;
图2 信号图
3.3 仿真结果
当处于复位状态时,外界的输入对结果没有影响。

故时间仍为10秒,输出统计人数为0。

仿真波形如图3所示。

图3 复位时的模拟结果
在非复位状态下,主持人按下开始键。

表决开始。

在没有人投票的情况下。

时间变为0。

表决结束。

仿真波形如图4所示。

图4 无人赞成时的模拟结果
在非复位状态下,主持人按下开始键。

表决开始。

当超出表决时间时才进行表决,此表决无效。

仿真波形如图5所示。

图5 规定时间外的模拟结果
在非复位状态下,主持人按下开始键。

表决开始。

在规定时间内只有两人赞同,仿真波形如图6所示。

图6 两人赞成时的结果
在非复位状态下,主持人按下开始键。

表决开始。

在规定时间内只有三人赞同,仿真波形如图7所示。

图7 三人赞成时的结果
在非复位状态下,主持人按下开始键。

表决开始。

在规定时间内只有四人赞同,仿真波形如图8所示。

图7 四人赞成时的结果
该实验是一个具有计时功能的五人表决器,时间限制为10秒,主持人控制复位,开始。

输出结果为表决通过的人数和最后表决是否通过。

3.4 电路图
图8 电路图
3.5 程序清单
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY vote5 IS
PORT(voter:IN STD_LOGIC_VECTOR(1 TO 5);
pass:OUT BIT;
total:OUT STD_LOGIC_VECTOR(3 DOWNTO 1);
count:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);
reset,start,clk:IN STD_LOGIC);
END vote5;
ARCHITECTURE one OF vote5 IS
BEGIN
PROCESS(voter,clk,start,reset)
VARIABLE suo:BOOLEAN;
VARIABLE sum:STD_LOGIC_VECTOR(1 TO 3);
BEGIN
IF (reset = '0') THEN
pass <= '0';
count <= "1010";
suo := FALSE;
sum := "000";
total <= "000";
ELSIF (clk'EVENT AND clk = '1') THEN IF (start ='1') THEN
IF (NOT suo) THEN
IF count = "0000" THEN
suo := TRUE;
FOR i IN 1 TO 5 LOOP
sum := voter(i) + sum;
END LOOP;
ELSE
count <= count-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 one;
4 实验总结
该实验的关键是统计表决通过的人数和时间的限制,即怎样将通过的人数加起来,并且应该在什么时候统计!通过实验知道:应该在倒计时完成之后统计。

因为不管你是在第几秒赞成,但只要你赞成,就意味在倒计时结束时也是赞成的,所以应该在此时统计。

并且在倒计时之外,表决无效。

通过本次设计,我深深的体会到设计课的重要性和目的性。

本次设计课不仅仅培养了我们实际操作能力,也培养了我们灵活运用课本知识,理论联系实际,独立自主的进行设计的能力。

它不仅仅是一个学习新知识新方法的好机会,同时也是对我所学知识的一次综合的检验和复习,使我明白了自己的缺陷所在,从而查漏补缺。

希望学校以后多安排一些类似的实践环节,让同学们学以致用。

在设计中要求我要有耐心和毅力,还要细心,稍有不慎,一个小小的错误就会导致结果的不正确,而对错误的检查要求我要有足够的耐心,通过这次设计和设计中遇到的问题,也积累了一定的经验,对以后从事集成电路设计工作会有一定的帮助。

在应用VHDL的过程中让我真正领会到了其并行运行与其他软件顺序执行的差别及其在电路设计上的优越性。

用VHDL硬件描述语言的形式来进行数字系统的设计方便灵活,利用EDA软件进行编译优化仿真极大地减少了电路设计时间和可能发生的错误,降低了开发成本,这种设计方法必将在未来的数字系统设计中发挥越来越重要的作用。

相关主题