名称:基于FPGA的拔河游戏机的设计VHDL代码Quartus仿真
软件:Quartus
语言:VHDL
代码功能:
拔河游戏机的设计
设计要求如下:
1、设计一个能进行拔河游戏的电路。
2、电路使用7个发光二极管,开机后只有中间一个发亮,此即拔河的中心点。
3、游戏双方各持一个技钮,迅速地、不断地按动,产生脉冲,谁技得快,亮点就向谁的方向移动,每按十次,亮点移动一次。
4、亮点移到任一方终端二极管时,这一方就获胜,此时双方按钮均无作用,输出保持,只有复位后才使亮点恢复到中心。
5、用数码管显示双方按键的次数。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
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
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=729
阅读全文