• 方案介绍
  • 相关推荐
申请入驻 产业图谱

辩论赛控制器DE0-CV开发板verilog答辩计时

05/12 08:07
498
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

名称:辩论赛控制器DE0-CV开发板verilog答辩计时(代码在文末下载)

软件:Quartus II

语言:Verilog

代码功能:

辩论赛,(双方起始分数为10分,这个数值可以改动)裁判按下开始按钮,双方开始答辩,甲方按下按钮开始答辩,甲方灯亮起,甲方答辩期间(10秒倒计时,这个数值能够更改),乙方不能按下按钮答辩,甲方结束后,乙方按下按钮开始回答,乙方灯亮起,乙方答辩期间(10秒倒计时,这个数值能够更改),甲方不能按下按钮答辩,结束后由裁判判断,给哪方减分。

本代码已在DE0-CV开发板验证,其他开发板可以修改管脚适配,开发板如下:

DE0_cv.png

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

工程文件:

辩论.png

部分代码展示:

//?辩论赛,(双方起始分数为10分,这个数值可以改动)裁判按下开始按钮,双方开始答辩,
//?甲方按下按钮开始答辩,甲方灯亮起,甲方答辩期间(10秒倒计时,这个数值能够更改),乙方不能按下按钮答辩,
//?甲方结束后,乙方按下按钮开始回答,乙方灯亮起,乙方答辩期间(10秒倒计时,这个数值能够更改),甲方不能按下按钮答辩,
//?结束后由裁判判断,给哪方减分。
//顶层模块
module?Debate(
input?clk_in,//输入时钟
input?rst_n,//复位
input?key_referee,//裁判开始
input?key_sub_A,//甲方减分
input?key_sub_B,//乙方减分
input?SW_A,//甲方开始答辩
input?SW_B,//乙方开始答辩
output?LED_A,//甲方灯
output?LED_B,//乙方灯
output??[7:0]?HEX0,//数码管-低亮
output??[7:0]?HEX1,//数码管-低亮
output??[7:0]?HEX2,//数码管-低亮
output??[7:0]?HEX3,//数码管-低亮
output??[7:0]?HEX4,//数码管-低亮
output??[7:0]?HEX5?//数码管-低亮
);
wire?clk_1Hz;
wire?[7:0]?score_A;//甲方分数
wire?[7:0]?score_B;//乙方分数
wire?[7:0]?time_A;//甲方倒计时
wire?[7:0]?time_B;//乙方倒计时
//分频到1Hz
div?i_div(
.?clk(clk_in),//时钟
.?clk_out(clk_1Hz)//分频到1Hz
);
//控制模块
Debate_ctrl?i_Debate_ctrl(
.?clk_in(clk_in),//输入时钟
.?clk_1Hz(clk_1Hz),//1Hz使能信号
.?rst_n(rst_n),//复位
.?key_referee(key_referee),//裁判开始
.?key_sub_A(key_sub_A),//甲方减分
.?key_sub_B(key_sub_B),//乙方减分
.?SW_A(SW_A),//甲方开始答辩
.?SW_B(SW_B),//乙方开始答辩
.?score_A(score_A),//甲方分数
.?score_B(score_B),//乙方分数
.?time_A(time_A),//甲方倒计时
.?time_B(time_B),//乙方倒计时
.?LED_A(LED_A),//甲方灯
.?LED_B(LED_B)//乙方灯
);
//数码管显示模块
display?i_display(
.?clk(clk_in),
.?score_A(score_A),//甲方分数
.?score_B(score_B),//乙方分数
.?time_A(time_A),//甲方倒计时
.?time_B(time_B),//乙方倒计时
.?HEX0(HEX0),//数码管-低亮
.?HEX1(HEX1),//数码管-低亮
.?HEX2(HEX2),//数码管-低亮
.?HEX3(HEX3),//数码管-低亮
.?HEX4(HEX4),//数码管-低亮
.?HEX5(HEX5)?//数码管-低亮
);
endmodule



//控制模块
module?Debate_ctrl(
input?clk_in,//输入时钟
input?clk_1Hz,//1Hz使能信号
input?rst_n,//复位

input?key_referee,//裁判开始
input?key_sub_A,//甲方减分
input?key_sub_B,//乙方减分

input?SW_A,//甲方开始答辩
input?SW_B,//乙方开始答辩

output?[7:0]?score_A,//甲方分数
output?[7:0]?score_B,//乙方分数

output?[7:0]?time_A,//甲方倒计时
output?[7:0]?time_B,//乙方倒计时

output?reg?LED_A,//甲方灯
output?reg?LED_B//乙方灯
);

reg?[2:0]?state=3'd0;
parameter?s_idle=3'd0;
parameter?s_start=3'd1;
parameter?s_speak_A=3'd2;
parameter?s_end_A=3'd3;
parameter?s_speak_B=3'd4;
parameter?s_end_B=3'd5;
parameter?s_score=3'd6;

reg?[7:0]?score_A_buf=8'd10;//甲方初始分数
reg?[7:0]?score_B_buf=8'd10;//乙方初始分数
reg?[7:0]?time_A_buf=8'd10;//甲方初始倒计时
reg?[7:0]?time_B_buf=8'd10;//乙方初始倒计时

always@(posedge?clk_in?or?negedge?rst_n)
	if(rst_n==0)
		state<=s_idle;//复位
	else
		case(state)
			s_idle://初始状态
				if(key_referee==0)//裁判开始
					state<=s_start;
				else
					state<=s_idle;
			s_start://开始
				if(SW_A==1)//甲方按下按钮开始答辩
					state<=s_speak_A;
				else
					state<=s_start;
			s_speak_A://甲方答辩倒计时
				if(time_A_buf==8'd0)//倒计时结束
					state<=s_end_A;
				else

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=233

相关推荐