名称:石头剪刀布猜拳游戏设计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
阅读全文
589