名称:电子乒乓球设计VHDL代码Quartus EP3C25-FPGA开发板(文末获取)
软件:Quartus
语言:VHDL
代码功能:
设计要求
两人的乒乓球游戏机是由8个LED表示球台,8个LED灯的编号为1~8,两名选手分别是A和B,当A选手准备开球时,led1亮,当A选手按下击球键,led灯从1开始往8号以流水灯形式流动表示乒乓球的移动,当灯超过5号灯(包含5号灯)B选手可以击球,当灯在5号~8号之间都表示B击球有效,击球后灯返回移
动,超过4号灯之后,A选手可以击球,当灯在4号~1号灯之间表示A击球有效。周而复始。
提高要求
1按照乒乓球规则,在数码管上显示比分,以如下形式A-00B00
显示。
2要求每次当选手获胜时,他的分数牌会闪烁显示3次
3.要求球的运动速度分五档,当来回击球次数超过3,8,14,21后球速提高一档。
本代码已在EP3C25-FPGA开发板验证,EP3C25-FPGA开发板如下,其他开发板可以修改管脚适配:
1. 工程文件
2. 程序文件
3. 程序编译
4. 管脚分配
5. RTL图
状态图
6. 仿真图
整体仿真图
控制模块仿真图
显示模块仿真图
部分代码展示:
LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY pingpang IS PORT ( clk : IN STD_LOGIC;--时钟48M rst_n : IN STD_LOGIC;--复位 A_key : IN STD_LOGIC;--A选手 B_key : IN STD_LOGIC;--B选手 led : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--LED灯 bit_select : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--数码管位选 seg_select : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--数码管段选 ); END pingpang; ARCHITECTURE behave OF pingpang IS --控制模块 COMPONENT game_ctrl IS PORT ( clk : IN STD_LOGIC; rst_n : IN STD_LOGIC; A_key : IN STD_LOGIC; B_key : IN STD_LOGIC; led : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); score_A : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); score_B : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END COMPONENT; --显示模块 COMPONENT display IS PORT ( clk : IN STD_LOGIC; score_A : IN STD_LOGIC_VECTOR(7 DOWNTO 0);--A选手分数 score_B : IN STD_LOGIC_VECTOR(7 DOWNTO 0);--B选手分数 bit_select : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--数码管位选 seg_select : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--数码管段选 ); END COMPONENT; SIGNAL score_A : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL score_B : STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN --调用控制模块 i_game_ctrl : game_ctrl PORT MAP ( clk => clk, rst_n => rst_n, A_key => A_key, B_key => B_key, led => led, score_A => score_A, score_B => score_B ); --调用显示模块 i_display : display PORT MAP ( clk => clk, score_a => score_A, score_b => score_B, bit_select => bit_select, seg_select => seg_select ); END behave;
源代码
扫描文章末尾的公众号二维码