名称:基于FPGA的拔河游戏机VHDL代码Quartus仿真
软件:Quartus
语言:VHDL
代码功能:
拔河游戏机
功能:设计一个拔河游戏机,利用实验箱上的16个LED指示灯,开始时中间的LED灯亮,设置两个按键,代表拔河双方,有效按键会使LED向自己的方向偏移,直到越过某个LED灯后即为胜利,游戏自动结束。设置开始按键,由裁判按下开始按键后,游戏开始。
发挥:添加数码管显示当前LED灯显示位置及结束后显示胜利方。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. 管脚分配
6. Testbench
7. 仿真图
整体仿真图
按键消抖模块
控制模块
显示模块
部分代码展示:
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(15?DOWNTO?0);--16个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??Button1???????:?STD_LOGIC;--选手1 signal??Button2???????:?STD_LOGIC;--选手2? signalposition_H?????:?STD_LOGIC_VECTOR(3?DOWNTO?0);--16个led位置十位 signalposition_L?????:?STD_LOGIC_VECTOR(3?DOWNTO?0);--16个led位置个位 signalwiner?????:?STD_LOGIC_VECTOR(1?DOWNTO?0);--胜利方? --按键消抖模块 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 position_H?????:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0);--16个led位置十位 position_L?????:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0);--16个led位置个位 winer?????:?OUT?STD_LOGIC_VECTOR(1?DOWNTO?0);--胜利方 ??????led????????????:?OUT?STD_LOGIC_VECTOR(15?DOWNTO?0)--16个led ???); END?component; --显示模块 component?display?IS ???PORT?( ??????clk????????????:?IN?STD_LOGIC; position_H?????:?IN?STD_LOGIC_VECTOR(3?DOWNTO?0);--16个led位置十位 position_L?????:?IN?STD_LOGIC_VECTOR(3?DOWNTO?0);--16个led位置个位 winer?????:?IN?STD_LOGIC_VECTOR(1?DOWNTO?0);--胜利方 ??????SEL?????:?OUT?STD_LOGIC_VECTOR(2?DOWNTO?0);--数码管位选 ??????seg_select?????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)--数码管段选 ???); 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_bahe_ctrl:?bahe_ctrl ???PORT?MAP( ??????clk???????=>CLK,--标准时钟 ??????reset_n???=>reset_n,--复位信号,低有效? ??????shift1????=>Button1,--选手1 ??????shift2????=>Button2,--选手2 position_H=>position_H, position_L=>position_L, winer=>winer, ??????led???????=>led--16个led ???); --显示模块 U_display:?display ???PORT?MAP( ??????clk??????=>clk, position_H=>position_H, position_L=>position_L, winer=>winer, ??????SEL?????=>SEL,--数码管位选 ??????seg_select=>seg_select--数码管段选 ???); end?behav;
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=730
							阅读全文
							
						
					
								
								
								
212