名称:辩论赛控制器DE0-CV开发板verilog答辩计时(代码在文末下载)
软件:Quartus II
语言:Verilog
代码功能:
辩论赛,(双方起始分数为10分,这个数值可以改动)裁判按下开始按钮,双方开始答辩,甲方按下按钮开始答辩,甲方灯亮起,甲方答辩期间(10秒倒计时,这个数值能够更改),乙方不能按下按钮答辩,甲方结束后,乙方按下按钮开始回答,乙方灯亮起,乙方答辩期间(10秒倒计时,这个数值能够更改),甲方不能按下按钮答辩,结束后由裁判判断,给哪方减分。
本代码已在DE0-CV开发板验证,其他开发板可以修改管脚适配,开发板如下:
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
工程文件:
部分代码展示:
// 辩论赛,(双方起始分数为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
阅读全文
594