名称:基于FPGA的拔河游戏机的设计VHDL代码Quartus仿真(文末获取)
软件:Quartus
语言:VHDL
代码功能:
拔河游戏机的设计
设计要求如下:
1、设计一个能进行拔河游戏的电路
2、电路使用7个发光二极管,开机后只有中间一个发亮,此即拔河的中心点
3、游戏双方各持一个技钮,迅速地、不断地按动,产生脉冲,谁技得快,亮点就向谁的方向移动,每按十次,亮点移动一次
4、亮点移到任一方终端二极管时,这一方就获胜,此时双方按钮均无作用,输出保持,只有复位后才使亮点恢复到中心。
5、用数码管显示双方按键的次数,
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. 仿真图
按键计数模块仿真
拔河控制模块仿真
部分代码展示:
library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; entity bahe is port ( -- CLOCK CLK: in std_logic; reset_n : IN STD_LOGIC;--复位信号,低有效 key1_in: in std_logic;--选手1 key2_in: in std_logic;--选手2 -- LED led : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);--7个led SEL : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);--数码管位选 seg_select : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--数码管段选 ); end bahe; architecture behav of bahe is signal key1_num : STD_LOGIC_VECTOR(15 DOWNTO 0);--选手1按键次数 signal key2_num : STD_LOGIC_VECTOR(15 DOWNTO 0);--选手2按键次数 signal shift1 : STD_LOGIC;--移位1 signal shift2 : STD_LOGIC;--移位2 signal Button1 : STD_LOGIC;--选手1 signal Button2 : STD_LOGIC;--选手2 --按键消抖模块 component key_jitter IS PORT ( clkin : IN STD_LOGIC;--50M key_in : IN STD_LOGIC;--按键输入 key_negedge : OUT STD_LOGIC--按键下降沿输出 ); END component; --控制模块 component bahe_ctrl IS PORT ( clk : IN STD_LOGIC;--标准时钟 reset_n : IN STD_LOGIC;--复位信号,低有效 shift1 : IN STD_LOGIC;--选手1 shift2 : IN STD_LOGIC;--选手2 led : OUT STD_LOGIC_VECTOR(6 DOWNTO 0)--7个led ); END component; --显示模块 component display IS PORT ( clk : IN STD_LOGIC; key1_num : IN STD_LOGIC_VECTOR(15 DOWNTO 0);--选手1按键次数 key2_num : IN STD_LOGIC_VECTOR(15 DOWNTO 0);--选手2按键次数 SEL : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);--数码管位选 seg_select : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--数码管段选 ); END component; --按键计数模块 component key_cnt IS PORT ( clk : IN STD_LOGIC;--标准时钟 reset_n : IN STD_LOGIC;--复位信号,低有效 Button1 : IN STD_LOGIC;--选手1 Button2 : IN STD_LOGIC;--选手2 shift1 : OUT STD_LOGIC;--移位1 shift2 : OUT STD_LOGIC;--移位2 key1_num : OUT STD_LOGIC_VECTOR(15 DOWNTO 0);--选手1按键次数 key2_num : OUT STD_LOGIC_VECTOR(15 DOWNTO 0)--选手2按键次数 ); END component; begin --按键消抖模块 U1_key_jitter: key_jitter PORT MAP( clkin =>CLK, --50M key_in =>key1_in, --按键输入 key_negedge =>Button1--按键下降沿输出 ); --按键消抖模块 U2_key_jitter: key_jitter PORT MAP( clkin =>CLK, --50M key_in =>key2_in, --按键输入 key_negedge =>Button2--按键下降沿输出 ); --按键计数模块 U_key_cnt: key_cnt
源代码
扫描文章末尾的公众号二维码