电子拔河游戏机的设计Verilog+QuartusII软件小脚丫开发板
项目简介
代码功能
本代码已使用小脚丫开发板进行功能验证
代码实现思路
代码结构
部分代码展示
module bahe_ctrl(
input clk_in,//标准时钟,12MHz
input reset_n,//复位信号,低有效
input restart,//裁判控制重新开始
input player_1,//选手1
input player_2,//选手2
output [7:0] led,//8个led
output reg [3:0] score_1,//选手1分数
output reg [3:0] score_2//选手2分数
);
parameter s_idle=3'd0;
parameter s_start=3'd1;
parameter s_left_shift=3'd2;
parameter s_right_shift=3'd3;
parameter s_win_1=3'd4;
parameter s_win_2=3'd5;
reg [2:0] state=3'd0;
reg [7:0] game_led=8'b00011000;
assign led=~game_led;//低电平亮
always@(posedge clk_in)
if(!reset_n)
state<=s_idle;
else
case(state)
s_idle://复位状态
if(restart)
state<=s_start;
else
state<=s_idle;
s_start:
if(game_led==8'b11000000)
state<=s_win_1;//1号赢
elseif(game_led==8'b00000011)
state<=s_win_2;//2号赢
else
if(player_1)
state<=s_left_shift;//led左移
elseif(player_2)
state<=s_right_shift;//led右移
else
state<=s_start;
s_left_shift:
state<=s_start;//led左移
s_right_shift:
state<=s_start;//led右移
s_win_1:
if(score_1==4'd9)//先赢9局者获胜
state<=s_win_1;//1号赢
else
if(restart)
state<=s_start;//重新开始
else
state<=s_win_1;//1号赢
s_win_2:
if(score_2==4'd9)//先赢9局者获胜
state<=s_win_2;//2号赢
else
if(restart)
state<=s_start;//重新开始
else
state<=s_win_2;//2号赢
default:;
endcase
always@(posedge clk_in)
if(!reset_n)
game_led<=8'b00011000;//复位
else
if(restart)
game_led<=8'b00011000;//重新开始
else
if(state==s_left_shift)//led左移
game_led<=game_led<<1;//led左移
elseif(state==s_right_shift)//led右移
game_led<=game_led>>1;//led右移
else
;
//积分累计1
always@(posedge clk_in)
if(!reset_n)
score_1<=4'd0;
else
if(state==s_start && game_led==8'b11000000)
score_1<=score_1+4'd1;
//积分累计2
always@(posedge clk_in)
if(!reset_n)
score_2<=4'd0;
else
if(state==s_start && game_led==8'b00000011)
score_2<=score_2+4'd1;
endmodule
![]()
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 电子拔河游戏机的设计Verilog+QuartusII软件小脚丫开发板
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 电子拔河游戏机的设计Verilog+QuartusII软件小脚丫开发板

发表评论
模板文件不存在: ./template/plugins/comment/pc/index.htm