拔河游戏机设计含报告VHDL代码Quartus仿真

名称:拔河游戏机设计含报告VHDL代码Quartus仿真(文末获取)

软件:Quartus

语言:VHDL

代码功能:

拔河游戏机设计含报告 

要求:

1、电路使用9个发光二极管表示拔河的“电子绳”,开机后只有中间一个发亮,此即拔河的中心点。游戏甲乙双方各持一个按钮,迅速地不断地按动产生脉冲,谁按得快,亮点向谁方向移动,每按一次,亮点移动一次。亮点移到任一方终端二极管,这一方就获胜,此时双方按钮均无作用,输出保持,只有复位后才使亮点恢复到中心。。 

2、由裁判下达比赛开始命令后,甲乙双方才能输入信号,否则 输入信号无效。 

3、用数码管显示获胜者的盘数,每次比赛结束自动给获胜方加分。

1. 工程文件

2. 程序文件

顶层电路

代码

3. 程序编译

4. RTL图

状态图

5. 仿真图

整体仿真图

功能:电路使用 9 个发光二极管,开机后只有中间一个发亮,此即拔河的中心点。 游戏双方各持一个按钮,迅速地、不断地按动,产生脉冲,谁按得快, 亮点就向谁的方向移动,每按一次,亮点移动一次。 亮点移到任一方终端二极管时,这一方就获胜,此时双方按钮均无作用, 输出保持,只有复位后才使亮点恢复到中心。用数码管显示获胜者的盘数。

按键检测模块

模块功能:按键按下后,输出一个脉冲信号指示按键按键

拔河控制模块

模块功能:控制led灯根据按键移动,左移或者右移,发光二极管向一方的终点延伸,

当延伸到某方的最后一个发光二极管时,则该方获胜,此时双方按钮均 无作用, 输出保持,记录此时的分数

显示模块

模块功能:用数码管显示获胜者的盘数 ,分别显示游戏双方的或者盘数,采用扫描式的数码管,数码管为共阳极。

部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
   USE ieee.std_logic_unsigned.all;
--控制模块
ENTITY bahe_ctrl IS
   PORT (
      clk       : IN STD_LOGIC;--标准时钟
      reset_n        : IN STD_LOGIC;--复位信号,低有效 
reset_cnt        : IN STD_LOGIC;--计数复位信号,低有效 
      shift1       : IN STD_LOGIC;--选手1
      shift2       : IN STD_LOGIC;--选手2
      led            : OUT STD_LOGIC_VECTOR(8 DOWNTO 0);--9个led
   win1_times     :OUT STD_LOGIC_VECTOR(15 DOWNTO 0);--1号获胜次数
   win2_times     :OUT STD_LOGIC_VECTOR(15 DOWNTO 0)--2号获胜次数
   );
END bahe_ctrl;
ARCHITECTURE behave OF bahe_ctrl IS
   
   TYPE State_type IS (s_idle, s_start, s_left_shift, s_right_shift, s_win_1, s_win_2);  -- 定义状态
   SIGNAL state : State_Type;    -- 创建信号
   SIGNAL game_led      : STD_LOGIC_VECTOR(8 DOWNTO 0) := "000010000";
SIGNAL win1_num      : STD_LOGIC_VECTOR(15 DOWNTO 0) := "0000000000000000";
SIGNAL win2_num      : STD_LOGIC_VECTOR(15 DOWNTO 0) := "0000000000000000";
BEGIN
   PROCESS (clk)
   BEGIN
      IF (clk'EVENT AND clk = '1') THEN
         IF ((NOT(reset_n)) = '1') THEN
            state <= s_idle;
         ELSE
            CASE state IS
               WHEN s_idle =>--复位状态
                     state <= s_start;
               WHEN s_start =>--游戏中
源代码

点击下方的公众号卡片获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值