三人表决器Verilog

该博客介绍了三个模块的设计:LED显示模块、按键输入模块和数码管显示模块。LED模块用于固定显示特定的LED状态,按键模块将按键状态取反输出到LED,而数码管模块则展示了如何根据输入实现不同的数字显示。最终,通过综合模块Vote实现了基于按键输入的表决器功能,用数码管显示不同按键组合的结果。
摘要由CSDN通过智能技术生成

实战篇

三人表决器

外设

  1. LED
  • 功能概述
  • 设计说明
module LED
(
	LED0,LED1,LED2,LED3,LED4,LED5,LED6,LED7
);

output LED0,LED1,LED2,LED3,LED4,LED5,LED6,LED7;

assign LED0=1'b1;
assign LED1=1'b0;
assign LED2=1'b0;
assign LED3=1'b0;
assign LED4=1'b1;
assign LED5=1'b0;
assign LED6=1'b0;
assign LED7=1'b0;


endmodule
  1. 按键
  • 功能概述
  • 设计说明
  module Key
  ( 
	KEY0,KEY1,KEY2,KEY3,KEY4,KEY5,KEY6,KEY7,
	LED0,LED1,LED2,LED3,LED4,LED5,LED6,LED7
	
  );
  
input KEY0,KEY1,KEY2,KEY3,KEY4,KEY5,KEY6,KEY7;
output LED0,LED1,LED2,LED3,LED4,LED5,LED6,LED7;
  
assign LED0=~KEY0;
assign LED1=~KEY1;
assign LED2=~KEY2;
assign LED3=~KEY3;
assign LED4=~KEY4;
assign LED5=~KEY5;
assign LED6=~KEY6;
assign LED7=~KEY7;

//input [7:0]KEY
//output [7:0]LED;
// LED=KEY;
endmodule
  1. 数码管
  • 功能概述
    共阴 1亮
  • 设计说明
module seg
(
	SEG_DATAa,SEG_DATAb,SEG_DATAc,SEG_DATAd,SEG_DATAe,SEG_DATAf,SEG_DATAg,SEG_DATAp,
	SEG_EN1,SEG_EN2,SEG_EN3,SEG_EN4,SEG_EN5,SEG_EN6
);

output SEG_DATAa,SEG_DATAb,SEG_DATAc,SEG_DATAd,SEG_DATAe,SEG_DATAf,SEG_DATAg,SEG_DATAp;
output SEG_EN1,SEG_EN2,SEG_EN3,SEG_EN4,SEG_EN5,SEG_EN6;

parameter 	SEG_NUM0=8'hbf,
				SEG_NUM1=8'h86,
				SEG_NUM2=8'hdb,
				SEG_NUM3=8'hcf,
				SEG_NUM4=8'he6,
				SEG_NUM5=8'hed,
				SEG_NUM6=8'hfd,
				SEG_NUM7=8'h87,
				SEG_NUM8=8'hff,
				SEG_NUM9=8'hef,
				SEG_NUMA=8'hf7,
				SEG_NUMB=8'hfc,
				SEG_NUMC=8'hb9,
				SEG_NUMD=8'hde,
				SEG_NUME=8'hf9,
				SEG_NUMF=8'hf1;
				
assign {SEG_DATAp,SEG_DATAg,SEG_DATAf,SEG_DATAe,SEG_DATAd,SEG_DATAc,SEG_DATAb,SEG_DATAa}=SEG_NUM0;
assign {SEG_EN1,SEG_EN2,SEG_EN3,SEG_EN4,SEG_EN5,SEG_EN6}=6'b000000;

endmodule

综合

module Vote
(
	//输入
	KEY1,KEY2,KEY3,
	LED1,LED2,LED3,
	SEG_DATA,SEG_EN
);

input KEY1,KEY2,KEY3;
output LED1,LED2,LED3;
output  		[5:0] SEG_EN;
output reg 	[6:0] SEG_DATA;

parameter 	SEG_NUM0=7'h3f,
				SEG_NUM1=7'h06,
				SEG_NUM2=7'h5b,
				SEG_NUM3=7'h4f;

always@(*)
begin
	case ({KEY3,KEY2,KEY1})
		3'b000 :SEG_DATA=SEG_NUM0;
		3'b001 :SEG_DATA=SEG_NUM1;
		3'b010 :SEG_DATA=SEG_NUM1;
		3'b011 :SEG_DATA=SEG_NUM2;
		3'b100 :SEG_DATA=SEG_NUM1;
		3'b101 :SEG_DATA=SEG_NUM2;
		3'b110 :SEG_DATA=SEG_NUM2;
		3'b111 :SEG_DATA=SEG_NUM3;
		default:SEG_DATA=SEG_NUM0;
	endcase
end

assign LED1=!KEY1;
assign LED2=!KEY2;
assign LED3=!KEY3;
assign SEG_EN=6'b011111;
endmodule
  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值