• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

石头剪刀布猜拳游戏设计VHDL代码Quartus仿真

08/14 14:19
589
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-240RQ6325V17.doc

共1个文件

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

  • 2-240RQ6325V17.doc
    下载

相关推荐