名称:赛车游戏设计VHDL代码Quartus? DE1-SOC开发板
软件:Quartus
语言:VHDL
代码功能:
1、设计一个简易的赛车游戏
2、提供6车道,通过按键控制小车移动
3、小车需要躲避其他车辆,避免碰撞
4、为简化设计,可以使用不同颜色方块表示小车
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在DE1-SOC开发板验证,DE1-SOC开发板如下,其他开发板可以修改管脚适配:
演示视频:
设计文档:
1、?工程文件
2、?程序文件
3、?程序编译
4、?RTL图
5、?管脚分配
部分代码展示:
library?IEEE; use?IEEE.STD_LOGIC_1164.ALL; use?IEEE.std_logic_unsigned.ALL; use?IEEE.NUMERIC_STD.ALL; entity?game_ctrl?is ????Port?(?reset?:?in??STD_LOGIC; ????????speed?:?in??STD_LOGIC;? ??left_key:?in?STD_LOGIC; ??right_key:?in?STD_LOGIC; ???????????clk_vga?:?in??STD_LOGIC; ??show_en?:?in?STD_LOGIC; ??h_count:?in?integer; ??v_count:?in?integer; ??score_display:?out?STD_LOGIC_VECTOR?(7?downto?0); ??red:?out?STD_LOGIC_VECTOR?(2?downto?0); ??green:?out?STD_LOGIC_VECTOR?(2?downto?0); ??blue:?out?STD_LOGIC_VECTOR?(1?downto?0) ??); end?game_ctrl; architecture?Behavioral?of?game_ctrl?is signal?my_car,car1_color,car2_color,car3_color,car4_color,lines_color:?STD_LOGIC_VECTOR?(0?to?7):="00000000"; signal?car1_pos,car2_pos,car3_pos,car4_pos:?integer?range?24800?to?408799; signal?my_car_left:?integer?range?0?to?800; signal?automove_time_cnt:?integer?range?0?to?499; signal?player_time_cnt:?integer?range?0?to?99999; signal?lines_pos:?integer?range?24800?to?47799; signal?restart:?STD_LOGIC; signal?score:?STD_LOGIC_VECTOR?(7?downto?0); signal?score_cnt:?integer?range?0?to?50000000; signal?move_val?:?integer?range?0?to?2; begin move_val<=?1?when?speed='0'?else?2; process(clk_vga,reset) begin if(reset='1'?or?restart='1')?then lines_pos<=24800; my_car_left<=429; car1_pos<=248800; car2_pos<=24800; car3_pos<=192800; car4_pos<=136800; my_car?<=?"00000000"; car1_color?<=?"00000000"; car2_color?<=?"00000000"; car3_color?<=?"00000000"; car4_color?<=?"00000000"; lines_color?<=?"00000000"; automove_time_cnt?<=?0; player_time_cnt?<=?0; restart<='0'; score<="00000000"; elsif?(clk_vga='1'?and?clk_vga'event)?then lines_pos<=24800; if(automove_time_cnt=499)?then automove_time_cnt<=0; if(car1_pos>328800)?then car1_pos<=24800; score<=score+"00000001"; else?car1_pos<=car1_pos+move_val; end?if; if(car2_pos>328800)?then car2_pos<=24800; score<=score+"00000001"; else?car2_pos<=car2_pos+move_val; end?if; if(car3_pos>328800)?then car3_pos<=24800; score<=score+"00000001"; else?car3_pos<=car3_pos+move_val; end?if; if(car4_pos>328800)?then car4_pos<=24800; score<=score+"00000001"; else?car4_pos<=car4_pos+move_val; end?if;
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1172
阅读全文
303