一、项目介绍

相信大家对电视中的选秀节目并不陌生,我们常常能够见到一种比赛规则:当三名评委中有两名及以上同意选手晋级时,该选手才能晋级,那么如何去实现该项目呢?


二、实现原理

其实这一切都离不开数字电路,首先我们可以绘制出三人表决器的真值表,然后用Verilog去实现它,真值表如下:


三、硬件部分

通过对此项目进行评估我们发现:
1.该项目需要三个输入,我们可以通过拨码开关进行实现;
2.需要显示模块来表示投票情况,这里我们选用数码管进行实现;


四、Verilog实现

// ********************************************************************
// >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
// ********************************************************************
// File name    : debounce.v
// Module name  : debounce
// Author       : STEP
// Description  : 
// Web          : www.stepfpga.com
// 
// --------------------------------------------------------------------
// Code Revision History : 
// --------------------------------------------------------------------
// Version: |Mod. Date:   |Changes Made:
// V1.0     |2017/03/14   |Initial ver
// --------------------------------------------------------------------
// Module Function:三人表决器
 
module voter(a,b,c,num_led,result_led);
 
	input a;				//评委A
	input b;				//评委B
	input c;				//评委C
	output [2:0] num_led;	//投票数显示;
	output result_led;		//投票结果显示;
 
	assign num_led=~{a,b,c};	//用三个LED表示投票情况,另根据硬件电路,LED为0时亮,故取反
	assign result_led=~((!a&b&c)||(a&!b&c)||(a&b&!c)||(a&b&c))?1:0;		//此处请参阅真值表,另根据硬件电路,LED为0时亮,故取反
 
endmodule

五、实现效果

拨码开关1、2、3分别代表评委A、B、C,LED1~3代表投票状态,例如,评委A投票,LED1亮,LED4代表是否通过。
下图为无人投票时, 下图为有一位评委投票时, 下图为两人进行投票时,可见投票通过指示灯已经亮起;

最后,三人同时投票