乒乓球游戏电路设计。
一、 乒乓球设计方案。
1)我们设计的乒乓球游戏是以一排发光二极管交替发光指示乒乓球的行进路径,其行进的速度可由输入的时钟信号控制。乒乓球比赛是甲乙双方的比赛,所以用两个按键模拟左右两个球拍;我们还要设计一个乒乓球控制模块,即当发光二极管到最后一个的瞬间,若检测到对应的表示球拍的键的信号,立即使“球”反向运行,如果此瞬间没有接到按键信号,将给出失败鸣叫,同时为对方记1分,并将记分显示出来,然后由对方重新发球以此类推;还要设计失球计数器的高低位计数模块;乒乓球行进方向控制模块,主要由发球键控制;还要有一个失球提示发生模块。
2)要知道乒乓球的游戏规则,以多少分为一局,谁先得到一定的分数谁就赢一局,以此来判断输赢。
3)用数码管显示双方的得分,还要设计一个十进制计数器,来显示分数。
4)在乒乓球设计方案时还要考虑球速的问题。
二、乒乓球游戏电路的设计程序。
library ieee;--乒乓球游戏顶层文件。
use entity tennis is
port(bain,bbin,clr,clk,souclk:in std_logic;
ballout:out std_logic_vector(7 downto 0);
countah,countal,countbh,countbl:out std_logic_vector(3 downto 0);
lamp,speaker:out std_logic);
end entity tennis;
architecture ful of tennis is
component sound
port(clk,sig,en:in std_logic;
sout:out std_logic);
end component;
component ballctrl
port(clr,bain,bbin,serclka,serclkb,clk:in std_logic;
bdout,serve,serclk,ballclr,ballen:out std_logic);
end component;
component ball
port(clk,clr,way,en:in std_logic;
ballout:out std_logic_vector(7 downto 0));
end component;
component board
port(ball,net,bclk,serve:in std_logic;
couclk,serclk:out std_logic);
end component;
component cou10
port(clk,clr:in std_logic;
cout:out std_logic;
qout:out std_logic_vector(3 downto 0));
end component;
component cou4
port(clk,clr:in std_logic;
cout:out std_logic;
qout:out std_logic_vector(3 downto 0));
end component;
component mway
port(servea,serveb:in std_logic;
way:out std_logic);
end component;
signal net,couclkah,couclkal,couclkbh,couclkbl,cah,cbh:std_logic;
signal serve,serclka,serclkb,serclk,ballclr,bdout,way,ballen:std_logic;
signal bbll:std_logic_vector(7 downto 0);
beginnet<=bbll(4);ballout<=bbll;lamp<=clk;
uah:cou4 port map(couclkah,clr,cah,countah);
ual:cou10 port map(couclkal,clr,couclkah,countal);
ubh:cou4 port map(couclkbh,clr,cbh,countbh);
ubl:cou10 port map(couclkbl,clr,couclkbh,countbl);
ubda:board port map(bbll(0),net,bain,serve,couclkal,serclka);
ubdb:board port map(bbll(7),net,bbin,serve,couclkbl,serclkb);
ucpu:ballctrlport map(clr,bain,bbin,serclka,serclkb,clk,bdout,serve,serclk,ballclr,ballen);
uway:mway port map(serclka,serclkb,way);
uball:ball port map(clk,ballclr,way,ballen,bbll);
usound:sound port map(souclk,ballen,bdout,speaker);
end ful;
library ieee;
use entity sound is
port(clk:in std_logic; -发声时钟。
sig:in std_logic正确接球信号。
en:in std_logic球拍接球脉冲。
sout:out std_logic提示声输出,接小喇叭。
end entity sound;
architecture ful of sound is
beginsout<=clk and (not sig) and en;--球拍接球,没接到时,发提示声。
end ful;
library ieee总控制模块。
use entity ballctrlis
port(clr:in std_logic系统复位。
bain:in std_logic左球拍。
bbin:in std_logic右球拍。
seclka:in std_logic左拍准确接球或发球。
serclkb:in std_logic右拍准确接球或发球。
clk:in std_logic乒乓球灯移动时钟。
bdout:out std_logic球拍接球脉冲。
serve:out std_logic发球状态信号。
serclk:out std_logic球拍正确接球信号。
ballclr:out std_logic乒乓球灯清零信号。
ballen:out std_logic乒乓球灯使能。
end entity ballctrl;
architecture ful of ballctrl is
signal bd:std_logic;
signal ser:std_logic;
beginbd<=bain or bbin;
ser<=serclka or serclkb;serclk<=ser;--球拍正确接球信号。
bdout<=bd球拍接球脉冲。
process(clr,clk,bd)
beginif(clr='1')then系统复位。
serve<='1系统处在职发球状态。
ballclr<='1乒乓球灯清零。
elseif(bd='1')then系统正常。
-球拍发球或接球时。
ballclr<='1'; 乒乓球灯清零。
if(ser='1')then --球拍发球或准确接球。
ballen<='1'; 乒乓球灯使能允许。
serve<='0'; 系统处在接球状态。
else ballen<='0';
serve<='1'; 系统处在发球状态。
end if;
else ballclr<='0';-没发球或接球时乒乓球灯不清零。
end if;
end if;
end process;
end ful;
4、--乒乓球灯模块。
library ieee;
use use
entity ball is
port(clk:in std_logic乒乓球灯前进时钟。
clr:in std_logic乒乓球灯清零。
way:in std_logic乒乓球灯前进方向。
en:in std_logic乒乓球灯使能。
ballout:out std_logic_vector(7 downto 0));乒乓球灯。
end entity ball;
architecture ful of ball is
signal lamp:std_logic_vector(9 downto 0);
beginprocess(clk,clr,en)
begin
if(clr='1') then lamp<="1000000001";-清零。
elsif en='0' then
elsif (clk'event and clk='1')then--使能允许,乒乓球灯前进时钟上升沿。
if(way='1') then lamp(9 downto 1)<=lamp(8 downto 0);lamp(0)<=0';
-乒乓球灯右移。
else lamp(8 downto 0)<=lamp(9 downto 1); lamp(9)<=0';-乒乓球灯左移。
end if;
end if;
ballout<=lamp(8 downto 1);
end process;
end ful;
5、--乒乓拍模块。
library ieee;
use entity board is
port(ball:in std_logic; -接球点,也就是乒乓球灯的末端。
EDA课程设计
题目一 数字钟设计 学号1 15 一 实验目的。学习并掌握数字钟的原理 设计方法。二 实验内容。计数始终由模60秒计数器 模60分计数器 模24小时计数器 报时模块 分 时设定模块及输出显示模块构成。可以采用同步计数器或异步计数器设计方法。三 实验要求。计时范围为0小时0分0秒至23小时59分59秒...
eda课程设计
哈尔滨工业大学 威海 信电学院电子信息工程。一 软硬件介绍。1软件部分介绍。1.1 quartus ii 是altera公司的综合性pld fpga开发软件,支持原理图 vhdl veriloghdl以及ahdl altera hardware description language 等多种设计输...
eda课程设计
目录。1 引言 2 1.1 课程设计的目的与任务 2 1.2 课程设计的内容 2 1.3课程设计仪器设备 2 1.4 课程设计的题目 2 1.5 方案的选择 2 2设计方案 3 2.1 设计原理 3 2.2各功能模块的原理及其源程序 3 2.2.1控制模块 3 2.2.2分频模块 4 2.2.3计时...