名称:电子乒乓球设计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后球速提高一档。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在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;
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=638