一、实验任务与要求: 简要说明:用7个发光二极管排成一行,模拟拔河过程。游戏开始时只有中间的发光二极管点亮,作为拔河的中心线。用按键来模拟拔河队员,按下键表示用力,根据甲乙双方按键的快慢与多少,决定亮点的移动方向。移到任一方终端二极管时,该方获胜,该方积分牌自动加分,然后开始下一局的比赛。比赛采用五局三胜制,甲乙双方各自记分。当记分牌清零后,重新开始下一场拔河比赛。 基本要求:设置“比赛开始”按键,甲乙双方各有一个队员 选作:甲乙双方可选一到多个队员进行比赛。 选做:自拟其他功能 二、设计思路以及实验框图: 1.设计思路: 实验采用分频器来控制有效按键的时间,再加入防抖动去除不必要的干扰,通过两方选手在一个分频周期内的按键次数之差来决定哪方用力较大,在一个分频周期内的按键次数比对方多3次以上的,发光二极管向对应一方移动一位, 移动三位则通过显示电路给对应方的数码显示管加一分。整个程序由一个顶层模块和分频、防陡、发光二极管移动和数码管比分显示,以及控制部分等五个底层模块构成的。 2.实验框图: 三、实验源程序: 1.顶层: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_signed.all; entity dingceng is port( clk:in std_logic; enable:in std_logic; keya1:in std_logic; keya2:in std_logic; keyb1:in std_logic; keyb2:in std_logic; reset:in std_logic; y:out std_logic_vector(6 downto 0); mark1:out std_logic_vector(6 downto 0); mark2:out std_logic_vector(6 downto 0) ); end dingceng; architecture content of dingceng is signal l1:integer range 0 to 3; signal clk_1: std_logic; signal clk_2: std_logic; signal clk_3: std_logic; signal cpa1:std_logic; signal cpa2:std_logic; signal cpb1:std_logic; signal cpb2:std_logic; signal z1:integer range 0 to 3; signal v1:integer range 0 to 3; component control is port( clk2:in std_logic; enable:in std_logic; playera1:in std_logic; playera2:in std_logic; playerb1:in std_logic; playerb2:in std_logic; lout:out integer range 0 to 3...... |
查看评论
已有0位网友发表了看法