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

幸运老虎机VHDL游戏DE2-115开发板

05/23 08:40
1377
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

1-2311051T54L25.doc

共1个文件

名称:幸运老虎机VHDL游戏DE2-115开发板(代码在文末下载)

软件:Quartus II

语言:VHDL

代码功能:

幸运老虎机是游戏厅里最简单的游戏之一,拉下幸运老虎机的拉杆,3个轮盘就会开始旋转,如果3个轮盘的指针都指 向同一个图案时,就会得到奖励。

本题目设计一个基于FPGA 的幸运老虎机。

设计要求

  1. 系统主要外设:自恢复式按键2个(keyl、key2)、LED灯2个、系统时钟(50MHz);
  2. 系统主要功能:设计一个游戏机,用3位数码管来代替老虎机的3个轮盘,用0-7的数字来代替老虎机轮盘上的不同图案。按下key1,3个数码管的数字开始循环显示,再次按下key1,3个数码管的数字停止循环,当显示的3个数字相同时,游戏胜利。
  3. *备注:要求三个数码管数字循环的速度不同,停止时的 延迟时间也要不同;游戏胜利时,LED1要闪烁提示;
  4. 有“作弊”功能, 来指示当前是否开启作弊模式。 按下该功能按键,每次都能赢,可用LED2的状态

要求.jpg

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

本代码已在DE2-115开发板验证,开发板如下,其他开发板可以修改管脚适配:

DE2-115.png

演示视频:

部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
--老虎机游戏
ENTITY tiger_game IS
   PORT (
      clk_in  : IN STD_LOGIC;--50MHz
      rst_n   : IN STD_LOGIC;--复位
      key     : IN STD_LOGIC;--输入按键
SW0     : IN STD_LOGIC;--作弊按键
LED2    : OUT STD_LOGIC;--作弊指示灯
      HEX0    : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--数码管段选
      HEX1    : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--数码管段选
      HEX2    : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--数码管段选
      BEEP    : OUT STD_LOGIC--赢了提示
   );
END tiger_game;
ARCHITECTURE behave OF tiger_game IS
--按键控制
   COMPONENT data_ctrl IS
      PORT (
         clk_in  : IN STD_LOGIC;
         rst_n   : IN STD_LOGIC;
         key     : IN STD_LOGIC;
   SW0     : IN STD_LOGIC;--作弊按键
   LED2    : OUT STD_LOGIC;--作弊指示灯
         current_state : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);
         data_1  : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
         data_2  : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
         data_3  : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)
      );
   END COMPONENT;
   
   ----赢了提示
   COMPONENT BEEP_ctrl IS
      PORT (
         clk_in  : IN STD_LOGIC;
         rst_n   : IN STD_LOGIC;
         current_state : IN STD_LOGIC_VECTOR(2 DOWNTO 0);
         data_1  : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
         data_2  : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
         data_3  : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
         BEEP    : OUT STD_LOGIC
      );
   END COMPONENT;
   
--数码管显示模块
COMPONENT display IS
   PORT (
  clk         : IN STD_LOGIC;
  
  data_1  : IN STD_LOGIC_VECTOR(3 DOWNTO 0);--数字1
  data_2    : IN STD_LOGIC_VECTOR(3 DOWNTO 0);--数字2
  data_3  : IN STD_LOGIC_VECTOR(3 DOWNTO 0);--数字3
  
  HEX0        : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
  HEX1        : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
  HEX2        : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
   );
END COMPONENT;
   
   
   SIGNAL data_1        : STD_LOGIC_VECTOR(3 DOWNTO 0);
   SIGNAL data_2        : STD_LOGIC_VECTOR(3 DOWNTO 0);
   SIGNAL data_3        : STD_LOGIC_VECTOR(3 DOWNTO 0);
   SIGNAL current_state : STD_LOGIC_VECTOR(2 DOWNTO 0);
BEGIN
--按键控制
   i_data_ctrl : data_ctrl
      PORT MAP (
         clk_in         => clk_in,--50MHz
         rst_n          => rst_n,--复位
         key            => key,--输入按键
   SW0            =>SW0 ,--作弊按键
   LED2           =>LED2 ,--作弊指示灯
         current_state  => current_state,--当前状态
         data_1         => data_1,--数字1
         data_2         => data_2,--数字2
         data_3         => data_3--数字3
      );
   
   
   
--数码管显示模块
   i_display : display
      PORT MAP (
         clk     => clk_in,
         data_1  => data_1,--数字1
         data_2  => data_2,--数字2
         data_3  => data_3,--数字3
         hex0    => HEX0,--数码管段选
         hex1    => HEX1,--数码管段选
         hex2    => HEX2--数码管段选
      );
   
   
   ----赢了提示
   i_BEEP_ctrl : BEEP_ctrl
      PORT MAP (
         clk_in         => clk_in,--50MH
         rst_n          => rst_n,--复位
         current_state  => current_state,--当前状态
         data_1         => data_1,--数字1
         data_2         => data_2,--数字2
         data_3         => data_3,--数字3
         BEEP           => BEEP ----赢了提示
      );
   
END behave;

设计文档:

1.工程文件

2.程序文件

3.程序编译

4.RTL图

5.管脚分配

6.Testbench

7.仿真图

整体仿真图

数据控制模块

显示模块

赢了提示模块

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=262

  • 1-2311051T54L25.doc
    下载

相关推荐