名称:篮球计分系统设计Verilog代码Quartus? 实验箱
软件:Quartus
语言:Verilog
代码功能:
(1)向上拨动拨动开关K1后开始计分,初始分数均为00,红灯和绿灯均同时点亮,按下按键S1,则红队加1分;按下按键S2,则红队加2分;按下按键S3,则红队加3分;按下按键S4,则绿队加1分;按下按键S5,则绿队加2分;按下按键S6,则绿队加3分。向下拨动回开关K1,计分结束,此时不论按任何按键两队分数都不在改变。同时分数高的队伍灯以2HZ频率闪烁。
(2)外部输入脉冲信号频率为1mhz;
(3)扩展要求:(a)按键消抖;
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在实验箱验证,实验箱如下,其他实验箱可以修改管脚适配:
演示视频:
设计文档:
1. 工程文件
2. 程序文件
程序编译
3. 顶层block图
4. 管脚图
5. 仿真图
分频模块
控制模块
消抖模块
显示模块
部分代码展示:
//显示模块 module?display( input?clk,//1MHz input?K1,//向下拨动分数高的队伍灯以2HZ频率闪烁 input?clk_2Hz,//2Hz信号 input?[7:0]?score_1,//红队分 input?[7:0]?score_2,//绿队分 output?reg?LED_1,//红队灯 output?reg?LED_2,//绿队灯 output?reg?[7:0]?segment,//数码管段 output?[2:0]?seg_en//数码管位 ); reg?[15:0]?cnt=16'd0; reg?[2:0]?en=3'd0; always@(posedge?clk) if(cnt>=16'd100)//计数100,分频到10K cnt<=0; else cnt<=cnt+1; always@(posedge?clk) if(cnt>=16'd100) en<=en+1;//en?=0~7表示8个数码管 assign?seg_en=en; wire?[3:0]?score_1_ten;//红队分十位 wire?[3:0]?score_1_one;//红队分个位 wire?[3:0]?score_2_ten;//绿队分十位 wire?[3:0]?score_2_one;//绿队分个位 assign?score_1_ten=score_1/10; assign?score_1_one=score_1%10; assign?score_2_ten=score_2/10; assign?score_2_one=score_2%10; reg?[3:0]?dis_data; always@(en) case(en)//依次显示红队分十位红队分个位绿队分十位绿队分个位 3'd0:dis_data<=score_1_ten; 3'd1:dis_data<=score_1_one; 3'd2:dis_data<=score_2_ten; 3'd3:dis_data<=score_2_one; default:dis_data<=4'd0; endcase
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=909
阅读全文
342