Craps投骰子游戏设计VHDL代码Quartus仿真

名称: Craps投骰子游戏设计VHDL代码Quartus仿真

软件:Quartus

语言:VHDL

代码功能:

 Craps投骰子游戏

您将要设计和实现的游戏通常被称为Craps。游戏涉及两个骰子,每个骰子的值可以在1到6之间。两个伪随机计数器用于模拟骰子的掷骰。掷骰后,两个计数器的值之和将在2到12的范围内。游戏规则如下:

1.在掷骰子的第一轮后,如果总和为7或11,则获胜。如果总和为2、3或12(即胡扯),则输家。否则,玩家在第一轮掷骰中获得的总和称为点,他/她必须再次掷骰子。

2.在掷骰子的第二轮或后续掷骰中,如果总和等于该点,则获胜;如果总和等于7,则他/她输。否则,玩家必须再次掷骰,直到他/她最终获胜或失败。

根据游戏规则,我们可以设计数据路径。下面给出的数据路径包括一个加法器,用于将两个计数器输出相加;一个用于存储点的寄存器;一个比较器,用于比较存储在点寄存器中的值和加法器的输出;以及一个测试逻辑,用于确定获胜条件或输。

每个组件都需要使用专用的测试平台分别进行测试。报告中应包含所有带注释的仿真波形。然后,您可以将所有这些组件放在一起以构成完整的数据路径。使用测试平台调试和测试完整的数据路径电路。确保在报告中包括相应的带注释的仿真波形。

接下来,可以将有限状态机设计为系统的控制器。调试和模拟FSM,直到其正常运行。确保在报告中包括FSM仿真波形。

设计和测试数据路径和控制器之后。系统的最终设计仅是控制器和数据路径的集成,如下所示。调试和模拟最终系统,直到您的设计实现所需的功能为止。然后,您准备使用测试平台演示您设计的系统。最终系统也需要带注释的仿真波形。


寄存器中,然后玩家再次掷骰。如果新的总和等于该点,则玩家获胜;如果是7,他/她输了。否则,播放器将再次滚动。如果“胜利”指示灯或“失败”指示灯不亮,则玩家必须再次按下“滚动按钮”才能继续播放。在输赢之后,他/她必须按“重置”才能开始新的游戏。 


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


演示视频:

设计文档:

设计文档.doc

1. 工程文件


2. 程序文件




3. 程序编译


4. RTL图

Datapath内部


5. 仿真图

Testbench

整体testbench

分模块testbench


仿真图

整体仿真图




分模块仿真图

Controller模块



Datapath模块


Datapath子模块

Counter



Adder,加法器

register_4bit


comparator


Test_logic



部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
ENTITY Craps IS
   PORT (
      clk     : IN STD_LOGIC;--时钟
      ENTER   : IN STD_LOGIC;--ENTER
      RESET   : IN STD_LOGIC;--RESET
      
      count1  : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--计数器输出1
      count2  : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--计数器输出2
      
      WIN     : OUT STD_LOGIC;--赢
      LOSE    : OUT STD_LOGIC--输
   );
END Craps;
ARCHITECTURE behave OF Craps IS
--分频模块
   COMPONENT clk_div IS
      PORT (
         clk     : IN STD_LOGIC;
         clk_out : OUT STD_LOGIC
      );
   END COMPONENT;
   
--Datapath
   COMPONENT Datapath IS
      PORT (
         clk     : IN STD_LOGIC;
         clk2    : IN STD_LOGIC;
         Roll    : IN STD_LOGIC;
         Sp      : IN STD_LOGIC;
         count1  : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
         count2  : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
         D7      : OUT STD_LOGIC;
         D711    : OUT STD_LOGIC;
         D2312   : OUT STD_LOGIC;
         Eq      : OUT STD_LOGIC
      );
   END COMPONENT;
   
--controller
   COMPONENT controller IS
      PORT (
         clk     : IN STD_LOGIC;
         ENTER   : IN STD_LOGIC;
         RESET   : IN STD_LOGIC;
         D7      : IN STD_LOGIC;
         D711    : IN STD_LOGIC;
         D2312   : IN STD_LOGIC;
         Eq      : IN STD_LOGIC;
         Roll    : OUT STD_LOGIC;
         Sp      : OUT STD_LOGIC;
         WIN     : OUT STD_LOGIC;
         LOSE    : OUT STD_LOGIC
      );
   END COMPONENT;
   
   
   SIGNAL D7           : STD_LOGIC;
   SIGNAL D711         : STD_LOGIC;
   SIGNAL D2312        : STD_LOGIC;
   SIGNAL Eq           : STD_LOGIC;
   SIGNAL Roll         : STD_LOGIC;
   SIGNAL Sp           : STD_LOGIC;
   SIGNAL clk_out      : STD_LOGIC;
BEGIN
--分频,产生一个5分频的信号
   i_clk_div : clk_div
      PORT MAP (
         clk      => clk,--时钟
         clk_out  => clk_out--5分频的信号
      );

代码文件(付费下载):



1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » Craps投骰子游戏设计VHDL代码Quartus仿真

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员