名称:石头剪刀布猜拳游戏设计VHDL代码Quartus仿真
软件:Quartus
语言:VHDL
代码功能:
石头剪刀布猜拳游戏
做一个猜拳器,与系统进行猜拳,玩家通过开发板上的开关输入石头剪刀布,然后和系统随机生成的石头剪刀布来比较,评出胜负后通过数码管进行积分,三局两胜后通过亮灯判定谁赢,用quartus实现,VHDL/verilog两种语言,需要仿真波形图,并且在FPGA板上实现。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. 管脚分配
6. Testbench
7. 仿真图
部分代码展示:
LIBRARY?ieee; ???USE?ieee.std_logic_1164.all; --石头剪刀布游戏 --3表示石头,2表示剪刀,1表示布 ENTITY?guess_game?IS ???PORT?( ??????clk??????????:?IN?STD_LOGIC;--时钟 ??????rst_n????????:?IN?STD_LOGIC;--复位 ??????key_start????:?IN?STD_LOGIC;--开始按键 ??????switch???????:?IN?STD_LOGIC_VECTOR(2?DOWNTO?0);--拨码开关 ??????key_comfirm??:?IN?STD_LOGIC;--确认按键 ??????win_led??????:?OUT?STD_LOGIC;--获胜led ??????lose_led?????:?OUT?STD_LOGIC;--失败led ??????SEG_EN???????:?OUT?STD_LOGIC_VECTOR(5?DOWNTO?0);--数码管位选 ??????SEG_DATA?????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)--数码管段选 ???); END?guess_game; ARCHITECTURE?behave?OF?guess_game?IS --数码管显示模块 ???COMPONENT?seg_display?IS ??????PORT?( ?????????clk??????????:?IN?STD_LOGIC; ?????????win_num??????:?IN?STD_LOGIC_VECTOR(3?DOWNTO?0); ?????????lose_num?????:?IN?STD_LOGIC_VECTOR(3?DOWNTO?0); ?????????player_num???:?IN?STD_LOGIC_VECTOR(3?DOWNTO?0); ?????????system_num???:?IN?STD_LOGIC_VECTOR(3?DOWNTO?0); ?????????SEG_EN???????:?OUT?STD_LOGIC_VECTOR(5?DOWNTO?0); ?????????SEG_DATA?????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0) ??????); ???END?COMPONENT; ? --状态机控制模块? ???COMPONENT?state_ctrl?IS ??????PORT?( ?????????clk??????????:?IN?STD_LOGIC; ?????????rst_n????????:?IN?STD_LOGIC; ?????????key_start????:?IN?STD_LOGIC; ?????????switch???????:?IN?STD_LOGIC_VECTOR(2?DOWNTO?0); ?????????key_comfirm??:?IN?STD_LOGIC; ?????????win_led??????:?OUT?STD_LOGIC; ?????????lose_led?????:?OUT?STD_LOGIC; ?????????win_num??????:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0); ?????????lose_num?????:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0); ?????????player_num???:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0); ?????????system_num???:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0) ??????); ???END?COMPONENT; ??? ???--信号 ???SIGNAL?win_num????????:?STD_LOGIC_VECTOR(3?DOWNTO?0);--获胜次数 ???SIGNAL?lose_num???????:?STD_LOGIC_VECTOR(3?DOWNTO?0);--失败次数 ???SIGNAL?player_num?????:?STD_LOGIC_VECTOR(3?DOWNTO?0);--玩家出的值 ???SIGNAL?system_num?????:?STD_LOGIC_VECTOR(3?DOWNTO?0);--系统出的值 ??? BEGIN ???--调用状态机控制模块 ???i_state_ctrl?:?state_ctrl ??????PORT?MAP?( ?????????clk??????????=>?clk, ?????????rst_n????????=>?rst_n, ?????????key_start????=>?key_start, ?????????switch???????=>?switch, ?????????key_comfirm??=>?key_comfirm, ?????????win_led??????=>?win_led, ?????????lose_led?????=>?lose_led, ?????????win_num??????=>?win_num, ?????????lose_num?????=>?lose_num, ?????????player_num???=>?player_num, ?????????system_num???=>?system_num ??????); ??? ??? ???--调用数码管显示模块 ???i_seg_display?:?seg_display ??????PORT?MAP?( ?????????clk?????????=>?clk, ?????????win_num?????=>?win_num, ?????????lose_num????=>?lose_num, ?????????player_num??=>?player_num, ?????????system_num??=>?system_num, ?????????SEG_EN??????=>?SEG_EN, ?????????SEG_DATA????=>?SEG_DATA ??????); ??? END?behave;
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=977
阅读全文
515