乒乓球游戏电路课程设计最终完成版

合集下载

乒乓球游戏机EDA课程设计完整版本

乒乓球游戏机EDA课程设计完整版本

乒乓球游戏机EDA课程设计完整版本
本文主要介绍了一款基于FPGA可编程硬件的乒乓球游戏机的设计。

本文将重点介绍
如何利用FPGA技术来搭建可编程硬件电路,如何使用Verilog HDL语言来设计数字电路,如何使用Quartus II环境来实现复杂任务,以及如何利用FPGA来完成乒乓球游戏机的EDA课程设计。

首先,在设计乒乓球游戏机的FPGA可编程硬件系统时,最重要的是硬件架构设计,
选择固定板来作为FPGA控制器,能够有效地根据游戏需求控制其各个功能,保证游戏机
运行稳定性和可靠性。

为了满足乒乓球游戏机的需求,FPGA控制器引入Verilog HDL语言,用数字电路的方式进行设计,从而构建出模拟端口,使用I/O 端口对乒乓球系统进行控制,其内部控制器模块实现了所有的乒乓球游戏逻辑功能。

在设计主板的时候,FPGA
中实现的硬件电路会结合安装在主板上的器件,比如七段LED显示器、微型键盘、LED灯等,从而使乒乓球游戏机更加复杂,实现更多的功能。

接下来,使用Quartus II环境,实现乒乓球游戏机的EDA课程设计。

首先,在Quartus II中编写Verilog HDL语言编程,利用FPGA可编程硬件系统设计乒乓球游戏逻辑,构建出特定的模块,实现系统的功能。

其次,编写控制逻辑,运用Verilog HDL语言
编程,在FPGA硬件中得到设计的图像图案,以及搭建复杂的乒乓球游戏的系统结构,实
现乒乓球游戏的控制逻辑功能。

最后,完成了乒乓球游戏机的EDA课程设计。

乒乓球比赛游戏机数电课程设计

乒乓球比赛游戏机数电课程设计

河北理工大学轻工学院信息科学技术部课程设计说明书设计题目乒乓球比赛游戏机班级08测控1班姓名杨洋学号200815020115指导教师许金刚2011年1月6日第二部分设计过程如上图1所示,该电路主要由球台驱动电路,控制电路,计数器,显示译码器和LED数码管等组成。

图中标出的各种信号的含义:CP表示球台驱动电路和计数器的时钟信号;S表示灯(乒乓球)移动的信号;L表示发光二极管驱动信号,由L1~L8组成;CNT表示计数器的计数脉冲信号,由CNT1,CNT2组成;KA,KB表示开关控制的外输入发球、击球信号。

一、单元电路的设计1.球台电路由两片4位74LS194双向移位寄存器接成8位双向移位寄存器。

74LS194功能表如下R D S1 S0工作状态0 1 1 1 1 ××0 00 11 01 1置零保持右移左移并行输入功能说明:(1)当S1 = S0 =1 时,不管各输入端原来是什么状态,在下一个时脉冲到来时,其输出分别是预先输入到并行输入端的 abcd ,这种方式叫送数。

(2)当 S 1 =0 ,S 0 =1 时,其工作方式叫右移,这时,每来一个时钟脉冲,输出端的数各向右移一位,而 Q A 端的输出则由加到 R 端的数来补充。

(3)当 S 1 =1 ,S 0 =0 时,其工作方式叫左移,情况正好与右移相反; Q D 端的输出由加到 L 端的数来补充。

(4)当 S 1 = S 0 =0 时,不管是否有 CP 脉冲作用,输出保持不变,这叫保持方式。

CP=0 时也是保持同步十进制计数器74LS160的功能表如下:CP R D LD EP ET 工作状态×××01111×111××××0 1×01 1置零预置数保持保持(但C=0)计数由74LS160的功能表可知,当~RD=~LD=EP=ET=1时工作状态为计数,即图4中的~CLR=~LOAD=ENT=ENP=1时。

乒乓球游戏机电路设计(江苏师范大学)

乒乓球游戏机电路设计(江苏师范大学)

实习(设计)报告姓名班级学号实习(设计)科目电子技术综合课程设计实习实习(设计)地点实习(设计)时间实习(设计)科目电子技术综合课程实习实习设计指导教师姓名职务所在部门电气工程学院电气工程学院实习设计小组成员成员:实习设计要求1.组装一块数字电路电动机转速表。

2.设计选题要求至少用三个芯片以上。

3.用软件对设计的电路进行仿真验证。

4.设计实习结束后有完整的报告。

实习设计任务1. 组装一台数字转速表;2. 设计一个综合电子系统(自选);3. 编写实习设计说明书。

第二篇电子技术课程综合设计--------乒乓球游戏机电路摘要乒乓球游戏机通过十分巧妙地设计采用数字芯片实现乒乓球左右移动,选手击球得分,累计得分超10报警灯功能。

该设计三个双向开关S,A,B分别作为裁判和游戏者,且选手可以译码显示器上直接读出自己的得分,裁判有一个按钮,是系统初始化,比赛开始。

一方发球后,球以固定速度向另一方运动(二极管依次点亮);当球达到对方最后一个发光二极管时,对方击球(按下按钮),球将向相反方向运动;在其他时候击球视为犯规,给对方加1分;都犯规,都加1分;A、B各有一个2位数码管计分;一方先到达11分,该局比赛结束。

该乒乓球游戏机主要运用到了译码器、移位寄存器和锁存器:通过两个4位上相移位寄存器74LS194接成一个8位的移位寄存器;驱动控制电路由两片74LS74、两个与门7409、两个与非门7400构成;计分电路主要由一片74LS160十进制计数器、一个7404非门、7409与门构成。

目录1 绪论------------------------------------------------11.1本课题设计的意义--------------------------------11.2本课题主要研究任务及内容------------------------12 课程设计过程描述------------------------------------22.1描述主要的设计思路------------------------------22.2 总体设计方案方框图-------------------------------32.3 各部分电路设计----------------------------------43 整机电路图设计-------------------------------------93.1整机电路图-------------------------------------93.2器件清----------------------------------104 仿真结果-------------------------------------------115 总结与体会---------------------------------------12 参考文献----------------------------------------------131、绪论1.1本课题设计的意义乒乓球游戏机通过十分巧妙的设计采用数字芯片实现乒乓球左右移动、选手击球得分、累计得分超时报警等功能。

乒乓球比赛游戏机电路

乒乓球比赛游戏机电路

数字电子技术课程设计一:课程设计名称:乒乓球比赛游戏机电路二:设计目的1.掌握设计乒乓球游戏机控制系统的方法。

2.熟悉掌握移位寄存器,计数器,译码器的用法。

3.在已学知识的基础上,根据实际情况融会贯通。

三:设计任务和设计要求1.设计任务(1)设计一个由甲、乙双方参赛,裁判参与的乒乓球比赛游戏模拟机。

(2)用八只(或更多)排成长串的指示灯(发光二极管)用来代表球的轨迹,其中一个亮的指示灯用来显示球的当前位置,用一个时钟脉冲源使点亮的指示灯依次从左向右,或从右向左移动,其速度应能调节,一般为1s转换一次。

(3)用两个按钮开关作为球拍,甲乙两人参加比赛。

当球到达甲方时,应立即按动开关(电路应只能响应按钮信号的前沿,若重复按动或持续按下去,将不起作用),表示回球,球到达乙时,同样也应立即按动乙方的开关,将球回击到对方去。

若击中,则乒乓球向相反方向移动,若未击中,则对方得一分。

(4)一方得分时,电路自动响铃3s,此时发球无效,等铃声停止后方能继续比赛。

(5)设置自动计分电路,双方各用二位数码管进行计分显示,每计满11分为一局。

(6)甲、乙双方各设一个发光二极管,表示拥有发球权,每隔5次自动交换发球权,拥有发球权的一方发球有效。

2.设计要求(1) 确定总体设计方案画出总方框图。

(2) 确定各单元电路的功能,进行单元电路的设计,画出逻辑图。

(3) 选择芯片确定型号。

(4) 画出总逻辑图和装配图,并在实验板上组装电路。

(5) 进行电路调试,达到设计要求。

(6) 写出总结报告。

三、基本工作原理和设计方案乒乓球游戏模拟机电路框图如图所示。

频率可调的时钟发生器为双向移位寄存器提供时钟脉冲,用双向移位寄存器的输出端控制指示灯来模拟乒乓球的运动轨迹。

先点亮位于某一方的第1个指示灯,由击球者通过按钮输入“击球”开关信号,实现移位方向的控制。

本电路设计的核心为控制电路,它决定整个系统的动作,必须掌握各信号之间的关系。

框图中的双向移位寄存器也可用计数译码方式实现乒乓球运动轨迹的模拟,如利用加减计数器的两个时钟信号来实现甲乙双方的击球,由表示球拍“击打”按钮产生计数时钟,计数器的输出状态经译码器驱动指示灯发光。

数电乒乓球游戏课程设计

数电乒乓球游戏课程设计

数电乒乓球游戏课程设计一、教学目标本课程的教学目标是使学生掌握数字电路的基本知识和技能,通过设计一个乒乓球游戏电路,培养学生运用所学知识解决实际问题的能力。

具体目标如下:1.知识目标:–掌握数字电路的基本概念和原理;–熟悉逻辑门、逻辑函数、逻辑电路的设计方法;–了解乒乓球游戏的规则和电路设计要求。

2.技能目标:–能够运用逻辑门电路设计简单的数字电路;–能够根据乒乓球游戏的规则,设计出相应的电路;–能够运用数字电路的知识,解决实际问题。

3.情感态度价值观目标:–培养学生的创新意识和团队合作精神;–培养学生对数字电路的兴趣和好奇心;–培养学生的自主学习和解决问题的能力。

二、教学内容本课程的教学内容主要包括数字电路的基本概念、逻辑门电路的设计、逻辑函数的化简、逻辑电路的设计方法以及乒乓球游戏的电路设计。

具体安排如下:1.数字电路的基本概念:介绍数字电路的定义、特点和分类,理解数字信号与模拟信号的区别。

2.逻辑门电路的设计:学习逻辑门的原理和功能,掌握逻辑门电路的设计方法,包括与门、或门、非门等。

3.逻辑函数的化简:学习逻辑函数的定义和性质,掌握逻辑函数的化简方法,包括卡诺图化简法、逻辑代数化简法等。

4.逻辑电路的设计方法:学习逻辑电路的定义和功能,掌握逻辑电路的设计方法,包括组合逻辑电路、时序逻辑电路等。

5.乒乓球游戏的电路设计:根据乒乓球游戏的规则,设计相应的电路,包括得分电路、计分电路等。

三、教学方法为了实现本课程的教学目标,我们将采用多种教学方法,包括讲授法、案例分析法、实验法等。

具体方法如下:1.讲授法:通过讲解数字电路的基本概念、原理和设计方法,使学生掌握相关知识。

2.案例分析法:通过分析乒乓球游戏的电路设计案例,使学生理解和运用所学知识解决实际问题。

3.实验法:通过实验室的实践操作,使学生亲手设计、搭建和测试数字电路,提高学生的实践能力。

四、教学资源为了支持本课程的教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:选用权威、实用的数字电路教材,为学生提供系统、科学的学习材料。

数电设计乒乓球游戏机

数电设计乒乓球游戏机

数字电路课程设计报告设计二乒乓球游戏机姓名:陈元专业:信息工程年级:2015班级:信工二班学号:201532010161. 设计题目及要求1.1题目:乒乓球游戏机1.2要求:1)用8个发光二极管表示球;用两个按钮分别表示甲乙两个球员的球拍;2)一方发球后,球以固定速度向另一方运动(发光二极管依次点亮),当球达到最后一个发光二极管时,对方击球(按下按钮)球将向相反方向运动,在其他时候击球视为犯规,给对方加1分;都犯规,各自加1分;3)甲、乙各有一数码管计分;4)裁判有一个按钮,是系统初始化,每次得分后,按下一次。

2. 设计过程及软件仿真2.1设计方案:1)球台电路:用8个发光二极管表示球,采用双向移位寄存器控制灯的流向;2)控制电路:用双D触发器及逻辑门电路组成,通过此电路控制球台电路的左右移位;3)计分电路:用十进制计数器,逻辑门,译码器,数码管组成;4)时钟电路:用555定时器构建多谐振荡器产生时钟脉冲;5)电源电路:用usb串口与5v移动电源向电路板供电,并在电路板设置电源指示灯指示供电情况。

2.2.总电路设计:2.3单元电路设计1)球台电路设计球台电路是整个乒乓球游戏机的终端,是最终打乒乓球的球台。

上图中,两片4位74LS194双向移位寄存器接成8位双向移位寄存器。

74LS194功能表如表1所示:2)开关电路开关电路是整个乒乓球游戏机的灵魂,是使乒乓球游戏能进行的核心。

开关电路由两片74ls74(D触发器)、两个与非门,两个与门和一个或门组成。

图中74LS74为上升沿触发的D触发器,~PR为置1端(低有效),~CLR为置0端(低有效)。

当J1=0时,两片D触发器输出端均为1即S1=S0=1,通过接入74LS194,此时实现的是并行输入功能。

当J1=1时,Qa=J3=1,J2=Qd=0,通过各门电路和D触发器输出端分别为0,1即S1=0,S0=1。

相反情况时,当J1=1时,Qa=J3=0,J2=Qd=1,D触发器输出端分别为1,0即S1=1,S0=0。

EDA课程设计_7

EDA课程设计_7

乒乓球游戏电路设计一、乒乓球设计方案(1)我们设计的乒乓球游戏是以一排发光二极管交替发光指示乒乓球的行进路径, 其行进的速度可由输入的时钟信号控制。

乒乓球比赛是甲乙双方的比赛, 所以用两个按键模拟左右两个球拍;我们还要设计一个乒乓球控制模块, 即当发光二极管到最后一个的瞬间, 若检测到对应的表示球拍的键的信号, 立即使“球”反向运行, 如果此瞬间没有接到按键信号, 将给出失败鸣叫, 同时为对方记1分, 并将记分显示出来, 然后由对方重新发球以此类推;还要设计失球计数器的高低位计数模块;乒乓球行进方向控制模块, 主要由发球键控制;还要有一个失球提示发生模块。

(2)要知道乒乓球的游戏规则, 以多少分为一局, 谁先得到一定的分数谁就赢一局, 以此来判断输赢。

(3)用数码管显示双方的得分, 还要设计一个十进制计数器, 来显示分数。

(4)在乒乓球设计方案时还要考虑球速的问题。

二、乒乓球游戏电路的设计程序1.LIBRARY IEEE;--乒乓球游戏顶层文件use ieee.std_logic_1164.all;entity TENNIS isport(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 iscomponent soundport(clk,sig,en:in std_logic;sout:out std_logic);end component;component ballctrlport(clr,bain,bbin,serclka,serclkb,clk:in std_logic; bdout,serve,serclk,ballclr,ballen:out std_logic);end component;component ballport(clk,clr,way,en:in std_logic;ballout:out std_logic_vector(7 downto 0));end component;component boardport(ball,net,bclk,serve:in std_logic;couclk,serclk:out std_logic);end component;component cou10port(clk,clr:in std_logic;cout:out std_logic;qout:out std_logic_vector(3 downto 0));end component;component cou4port(clk,clr:in std_logic;cout:out std_logic;qout:out std_logic_vector(3 downto 0));end component;component mwayport(servea,serveb:in std_logic;way:out std_logic);end component;signalnet,couclkah,couclkal,couclkbh,couclkbl,cah,cbh:std_logic; signalserve,serclka,serclkb,serclk,ballclr,bdout,way,ballen:std_lo gic;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:ballctrlportmap(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;2.library ieee;use ieee.std_logic_1164.all;entity sound isport(clk:in std_logic; --发声时钟sig:in std_logic; --正确接球信号en:in std_logic; --球拍接球脉冲sout:out std_logic); --提示声输出, 接小喇叭end entity sound;architecture ful of sound isbeginsout<=clk and (not sig) and en;--球拍接球, 没接到时, 发提示声end ful;3.library ieee; --总控制模块use ieee.std_logic_1164.all;entity ballctrlisport(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 issignal 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 ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ball isport(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 issignal lamp:std_logic_vector(9 downto 0);beginprocess(clk,clr,en)beginif(clr='1') then lamp<="1000000001";--清零elsif en='0' thenelsif (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 ieee.std_logic_1164.all;entity board isport(ball:in std_logic; --接球点, 也就是乒乓球灯的末端net:in std_logic; --乒乓球灯的中点, 乒乓球过中点时, counclk、serclk复位bclk:in std_logic; --球拍接球信号serve:in std_logic; --发球信号couclk:out std_logic;serclk:out std_logic);end entity board;architecture ful of board isbeginprocess(bclk,net)beginif(net='1')then serclk<='0';couclk<='0';--乒乓球过中点时, counclk、serclk复位elsif(bclk'event and bclk='1')then—球拍接球时if(serve='1')then serclk<='1';--系统处于发球状态时—发球成功else—系统处于接球状态if(ball='1')then serclk<='1';--乒乓球刚落在接球点上, 接球成功else serclk<='0';couclk<='1';end if;end if;end if;end process;end ful;6.--十进制计数器用来做失球低位计数library ieee;use ieee.std_logic_1164.all;entity mway isport(servea:in std_logic;serveb:in std_logic;way:out std_logic);end entity mway;architecture ful of mway isbeginprocess(servea,serveb)beginif(servea='1')then way<='1';elsif(serveb='1')then way<='0';end if;end process;end ful;7、--四进制计数器用来做失球高位计数library ieee;use ieee.std_logic_1164.all;entity mway isport(servea:in std_logic;serveb:in std_logic;way:out std_logic);end entity mway;architecture ful of mway isbeginprocess(servea,serveb)beginif(servea='1')then way<='1';elsif(serveb='1')then way<='0';end if;end process;end ful;8、--乒乓球前进方向产生模块library ieee;use ieee.std_logic_1164.all;entity mway isport(servea:in std_logic;--左选手发球信号serveb:in std_logic;--右选手发球信号way:out std_logic);--乒乓球灯前进方向信号end entity mway;architecture ful of mway isbeginprocess(servea,serveb)beginif(servea='1')then way<='1';--左选手发球方向向右elsif(serveb='1')then way<='0';--右选手发球方向向左end if;end process;end ful;三、乒乓球游戏程序的仿真波形仿真波形图四、硬件测试方法然后我们就要测试硬件, 下载文件。

电子技术乒乓球比赛游戏机课程设计

电子技术乒乓球比赛游戏机课程设计

电子技术乒乓球比赛游戏机课程设计《电子技术乒乓球比赛游戏机课程设计》一、课程目标:通过本课程的学习,使学生掌握基本的电子技术知识和乒乓球比赛规则,能够独立设计和制作一款乒乓球比赛游戏机。

二、适用对象:中学高中阶段的电子技术爱好者。

三、教学内容:1.电子技术基础知识:(1)电路基础知识:电阻、电容、电感等基本元件的特性和应用;(2)逻辑门电路:与门、或门、非门等基本逻辑门电路的原理和使用。

2.乒乓球比赛规则:(1)乒乓球比赛的基本规则:发球、回球、得分等;(2)乒乓球比赛的技术要求和战术技巧。

3.乒乓球比赛游戏机的设计和制作:(1)游戏机硬件设计:电路组成和连接方式、面板和按键设计;(2)游戏机软件设计:游戏逻辑和控制流程、分数计算和显示。

四、教学方法:1.理论授课:通过教师讲解、多媒体展示等方式,将电子技术和乒乓球比赛规则的基本知识传达给学生。

2.实践操作:学生在教师的指导下,进行乒乓球比赛游戏机的硬件组装和软件编程。

学生可以通过实际操作,巩固和应用所学的电子技术知识。

3.小组合作:学生可以分成小组,进行合作设计和制作乒乓球比赛游戏机。

通过合作,学生可以相互交流、共同解决问题,提高团队合作能力和创新能力。

五、教学评估:1.学生的理论考试成绩:对学生的理论知识进行考核,通过闭卷考试的形式测试学生对电子技术和乒乓球比赛规则的掌握程度。

2.实践项目成果评估:对学生的乒乓球比赛游戏机进行评估,包括硬件组装质量、软件功能完整性和游戏体验等方面。

3.学生表现综合评估:综合考虑学生的课堂参与度、合作能力、创新能力等方面,给予学生相应的综合评价。

六、教学资源:1.教材:电子技术基础教材、乒乓球比赛规则教材。

2.实验设备:电子实验箱、电路元件、乒乓球比赛游戏机组装材料等。

3.实践项目辅助工具:计算机、编程软件。

七、教学进度安排:本课程的教学进度安排为一学期,大致分为以下几个阶段:1.第一阶段(两周):电子技术基础知识授课和学习。

电路课程设计乒乓球游戏机

电路课程设计乒乓球游戏机

电路课程设计乒乓球游戏机
摘要
本文描述了一种用于实现实时电路课程设计乒乓球游戏机的硬件电路设计,以及该系统的控制程序。

该系统由处理器、存储器、按键等组成。

处理器使用可编程的芯片和控制程序,根据按钮的不同状态控制输出设备的动作,实现乒乓球游戏机的功能。

存储器主要由EEPROM和RAM构成,存储系统的控制程序,以及游戏信息;输出的驱动电路及电机马达,实现游戏机投球的动作,以及乒乓球游戏的发挥。

关键词:乒乓球游戏机,可编程,控制程序,EEPROM,RAM,电机马达
1绪论
乒乓球游戏机是一种受欢迎的实时电路课程设计。

它的功能可以通过电路设计来模拟,以实现趣味的实时游戏。

该系统可以实现电子乒乓球的真实效果,受到了广大玩家的喜爱。

本文对乒乓球游戏机的硬件电路设计和控制程序进行了详细介绍,主要包括:处理器系统、存储器系统、按键系统、输出系统以及控制程序。

本文着重介绍了系统的各个子系统的功能、组成以及工作原理,以实现乒乓球游戏机的功能。

2处理器系统。

数电课设——乒乓球游戏电路设计

数电课设——乒乓球游戏电路设计

电子技术课程设计数电部分设计题目:乒乓球游戏电路设计第一章设计指标 (3)设计指标 (3)第二章系统概述 (4)2.1设计思想 (4)2.2可行性论证 (8)2.3各功能的组成 (8)2.4总体工作过程 (9)第三章单元电路设计与分析 (10)3.1各单元电路的选择 (10)3.2设计及工作原理分析 (15)第四章电路的组构与调试 (15)4.1 遇到的主要问题 (15)4.2 现象记录及原因分析 (16)4.3 解决措施及效果 (16)4.4 功能的测试方法、步骤、设备、记录的数据 (16)第五章结束语 (20)5.1对设计题目的结论性意见及进一步改进的意向说明 (20)5.2 总结设计的收获与体会 (20)参考文献 (21)附图(电路总图) (22)“乒乓球游戏”电路以发光二级管模拟乒乓球的运动轨迹,以按键模拟球拍,具有乒乓球的娱乐功能。

电路可以采用数字电子技术基础课程中介绍的基础器件实现。

通过电路的设计和实现过程,我们可以了解和掌握以为寄存器的功能和应用以及数字逻辑控制的设计方法。

本次课程要求用软件QuartusII的应用基础,结合数字电子技术基础课程的知识完成“乒乓球游戏”。

QuartusII应用的基本流程如图:本设计还要用到七段数码显示器:LP-2900共有六位七段数码显示器,连接成动态扫描显示电路,每个显示器的共阴极由该装置上一个74138译码器的前六位输出Y0~Y5产生的扫描信号控制;段码控制信号高电平有效。

如图:第一章.设计指标1.设计要求以12个发光二极管出个点亮模拟乒乓球的运动,双方击球动作各以一个按键模拟,并以4位LED数码管闲事游戏双方得分。

具体规则如下:(1)当发球方按过击球键后,“乒乓球”向对方移动,当“球”到达终端位置时,对方必须按键接“球”。

若对方在“球”到达接球位置时准确按下击球键,“球”即向反方向移动。

若“球”到达接球位置时未被“接”住,“球”将飞出界外,发球方得一分。

数字电子技术课程设计乒乓球游戏器

数字电子技术课程设计乒乓球游戏器

一、设计目的:本电子设计主要为实现以下目的:1、增强对数字电子技术的了解与掌握;2、学习相关软件的使用方法;3、具备简单电路的设计能力。

二、设计任务1、乒乓球游戏电路主要功能:(1)设计游戏电路由甲、乙双方参赛,裁判参与的乒乓球比赛游戏模拟机。

(2)用六只排成长串的指示灯(发光二极管)用来代表球的轨迹,其中一个亮的指示灯用来显示球的当前位置,指示灯依次从左向右,或从右向左移动来表示乒乓球被击打的轨迹。

(3)用两个按钮开关作为球拍,甲乙两人参加比赛。

当球到达甲方时,应立即按动开关(电路应只能响应按钮信号的前沿,若重复按动或持续按下去,将不起作用),表示回球,球到达乙时,同样也应立即按动乙方的开关,将球回击到对方去(游戏规定只有在1号灯、6号灯亮时击球才有效)。

若击中,则乒乓球向相反方向移动,若未击中,则对方得一分。

(4)一方得分时,计时器计时3s,电路自动响铃3s,此时发球无效,3s后,由裁判清零,方能继续比赛。

(5)自动计分电路,双方各用一个七段数码显示管进行计分显示,每计满9分为一局。

(6)甲、乙双方各设一个发光二极管,表示拥有发球权,每隔5次自动交换发球权,二极管亮代表拥有发球权,拥有发球权的一方发球有效。

(7)游戏时间为20分钟,当第一次发球的同时,倒计时器开始计时,当时间走完之后,自动切断电路,不能再进行游戏,若此时还没有人达到9分,那么分高的人赢得比赛,若比分相同,那么视为平局。

三、设计电路的实现(1)乒乓球游戏机控制电路组成框图如图1所示。

它由秒信号发生器、时序控制电路、计分显示电路、响铃提醒电路和20分钟倒计时电路、双向移位寄存器(74LS194)、LED发光管和甲、乙双方、裁判开关等组成。

图1 乒乓球游戏机控制电路结构组成框图(2)用双向移位寄存器的输出端控制LED显示已达到模拟乒乓球运动的轨迹,先点亮位于某一方第一个LED,由击球者通过按钮输入开关信号,实现以为方向的控制。

(3)用时序控制电路来控制实现只有当最后一个LED灯亮的时候,甲或乙选手去按动“球拍”按钮,“球”的运动方向才会发生改变,而没有达到最后一个LED灯亮的任何时候按动按钮都是无效的。

乒乓球游戏电路课程设计最终完成版

乒乓球游戏电路课程设计最终完成版

乒乓球游戏电路课程设计最终完成版第一篇:乒乓球游戏电路课程设计最终完成版电子课程设计——基于Verilog的乒乓游戏设计电路学院:专业、班级:姓名:学号:指导教师:2014年12月引言可编程器件的广泛应用,为数字系统的设计带来了极大的灵活性。

可编程器件可以通过软件编程对硬件的结构和工作方式进行重构,使得硬件的设计可以如同软件设计那样快捷方便。

高速发展的FPGA、CPLD兼有串、并行工作方式和高速、高可靠性的特点,在电子系统设计中得到了广泛应用。

通常使用硬件描述语言(Hardware Description Language,HDL)进行数字电子系统设计。

目前应用广泛的硬件描述语言有:VHDL语言,Verilog HDL语言,AHDL语言。

Verilog语言由于具有强大的行为描述能力和丰富的仿真语句从而成为系统设计领域最佳的硬件描述语言。

鉴于如上所述,本系统使用Verilog语言进行设计,采用自上向下的设计方法。

利用Quartus II 9.1 进行Verilog程序的编译与综合,然后用Modelism SE 6.0进行功能仿真和时序仿真,并使用EDA实验箱进行下载验证。

基于Verilog的乒乓游戏设计电路一、设计任务与要求任务:设计一个乒乓球游戏机,模拟乒乓球比赛的基本过程和规则,并能裁判和自动计分。

要求如下:1.使用乒乓球游戏机的甲乙双方在不同的位置罚球或击球。

2.乒乓球的位置和移动方向可由发光二极管和依次点亮的方向决定,为球的移动速度为一定值(我们设计中设为0.5秒移动一位)。

使用者可按乒乓球的位置发出相应的动作,在其他时候击球视为犯规,给对方加一分;都犯规双方各加一分。

二、总体框图设计思路根据乒乓球比赛的过程和规则,首先游戏开始,如果一方非正确击球则另一方加分,当分数大于11时获胜,游戏结束,系统设计流程图如图1所示。

图2给出了乒乓球游戏机的原理图。

用5个发光二极管代表乒乓球,在游戏机两侧各设置二个开关,一个是发球开关,一个是击球开关。

EDA课程设计——乒乓球比赛游戏机

EDA课程设计——乒乓球比赛游戏机

《电子设计自动化(EDA)技术》课程设计报告题目: 乒乓球比赛游戏机姓名:院系:专业:学号:指导教师:完成时间: 年月日目录1 课程设计题目、内容与要求………………………………1.1 设计内容………………………………………………1.2 具体要求………………………………………………2 系统设计……………………………………………………2.1 设计思路………………………………………………2.2 系统原理(包含:框图等阐述)与设计说明等内容3 系统实现……………………………………………………注:此部分阐述具体实现,包含主要逻辑单元、模块、源代码等内容4 系统仿真……………………………………………………5 硬件验证(操作)说明……………………………………6 总结………………………………………………………7 参考书目…………………………………………………1课程设计题目、内容与要求1.1课程设计的题目乒乓球比赛游戏机1.2课程设计目的随着科学技术日益迅速的发展,数字系统已经深入到生活的各个方面。

它具有技术效果好,经济效益高,技术先进,造价较低,可靠性高,维修方便等许多优点。

使我们更加熟练掌握数字系统的设计。

对所学的专业知识有能力更好的应用在实践方面。

1.3课程设计要求(1)使用乒乓球游戏机的双方在不同位置发球或击球。

(2)乒乓球的位置和移动方向由灯亮和依次亮的方向决定。

使用者根据球的位置发出相应的动作(3)比赛用21分为一局来进行,双方设置各自的记分牌,任意一方先记满21分就获胜此局。

当记分牌清零后,开始新的一局比赛。

1.4课程设计内容设计一个由甲乙双方参赛,有裁判的三人乒乓球游戏机。

用8个(或更多个)LED排成一条直线,以中点为界,两边各代表参赛双方的位置,其中一只点亮的LED指示球的当前位置,点亮的LED依次从左到右,或从右到左,其移动的速度应能调节。

当“球”(点亮的那只LED)运动到某方的最后一位时,参赛者应能果断地按下位于自己一方的按纽开关,即表示启动球拍击球,若击中,则球向相反方向运动;若未中,球掉出桌外,则对方得一分。

乒乓球游戏电路设计

乒乓球游戏电路设计

模 式 3 的 电 路 结 构
选手B比 赛按键8
选手B比 赛按键8
实验10-2 乒乓球游戏电路设计
程序设计与硬件实验
KX
RTL电路
康芯科技
数码管7/6显示选手B的得分
数码管3/2显示选手A的得分
KX
康芯科技
击球失误鸣叫
8个发光管亮的次序 表示球行进得路径
CLK:球行进速度控 制时钟CLOCK2接pin17
模 式 3 的 电 路 结 构
SOUCLK:失球警告声音 时钟CLOCK5接pin16
选手B比 赛按键8 选手B下载
注意此示例存放的路径
其余设置默认!
选择模式3
KX
康芯科技
击球失误鸣叫时钟CLK5接1024Hz
球运行速度控制时 钟CLK2,选择4Hz
KX
康芯科技
数码管3/2显示选手A的得分 数码管7/6显示选手B的得分
8个发光管亮的次序 表示球行进得路径

数字兵兵球_课程设计终极版

数字兵兵球_课程设计终极版

华南农业大学电子线路综合设计乒乓球游戏模拟设计班级:组别:3指导教师:霞2012年12月摘要兵兵球比赛现场激烈紧,为了让兵兵球裁判员更加专注于观察比赛情况,和做到和做到兵兵球比赛评分规化,公平化,而避免由于过于投入观察而发生忘记计分的情况,需要设计一个智能机器来完成专门针对于兵兵球比赛的模拟系统和计分器来协助裁判对双方队员计分,那样裁判就可以将注意力全部集中在现场的比赛中,而无需要因为计分而耽搁赛事,做到赛事组织科学化,减少由于误差而造成的赛后纷争,或者提供比赛判决证据。

兵兵球游戏模拟机器,同时可作为启蒙儿童的教育工具。

可以使用该兵兵球模拟机器来为儿童演示和讲解兵兵球比赛的计分规则和犯规条件,同时也可以激发学前班儿童对简单电子小制作的兴趣,为他们讲解和介绍一些电子元器件能够增长他们的见识和开发智商。

本设计采用双向移位寄存器方法实现球迹移动电路,由发光二极管作光点模拟乒乓球移动的轨迹。

采用双D触发器及逻辑门电路构成按键组成驱动控制电路,通过此电路来控制并且实现球台灯的左右移位即实现乒乓球的运动。

使用十进制的计数器、逻辑门和集成的4管脚的数码管来组成计分电路。

关键词:74LS90 双向移位寄存器多谐振荡器D触发器目录1 设计目的 (1)2 设计任务 (1)2.1 设计指标 (1)2.2 设计要求 (1)3 方案选择 (2)3.1 方案选择一 (2)3.2 方案选择二 (2)3.3 方案的选择 (3)4 兵兵球模拟计分器的设计 (4)4.1 电路的总方案图 (4)4.2电路实现的原理 (4)4.3 单元电路解说 (4)5 电路的装配与调试过程 (8)5.1 电路的仿真 (8)5.2 电路焊接 (11)5.3 元件的布局 (11)5.4 电路的调试 (12)6 课程设计的结论、收获、体会 (12)致 (14)参考文献 (15)附录 (16)附录1元器件清单 (16)附录2 电路总图 (17)图2 电路总图 (17)附录3 芯片引脚图 (18)1 设计目的(1) 加深对模拟电子技术数字电子技术对模拟电子技术知识的理解,拓宽知识面,巩固电子工艺实习的成果。

数电课程设计报告--乒乓球游戏设计

数电课程设计报告--乒乓球游戏设计

电子线路综合设计乒乓球比赛模拟及计分器设计2023年6月在信息社会高速发展旳今天,数字电路芯片已经实现高度集成化,并逐渐渗透到医学、计算机等各个领域,对人类旳生活有着深远旳影响。

本设计采用基本门电路以及74LS系列芯片旳搭建,以multisim 12.0软件为平台进行仿真,实现了对乒乓球游戏旳模拟。

重要处理旳问题有:(1)模拟乒乓球旳轨迹:用双向移位4位寄存器74194以及基本门电路实现;(2)球速旳调整:运用555电路实现;(3)球被击中、犯规旳判断;(4)计数器旳使用:采用74LS90和74LS161旳组合,给玩家计分;(5)有关比分旳显示:通过CD4511译码芯片将计数器旳输出状态显示到2位共阴极数码管上。

关键词:双向移位4位寄存器、555电路、译码电路、计数器系统1 设计任务 (1)2 电路整体设计 (2)2.1 译码显示电路设计 (4)2.2 555定期器构成脉冲发生器 (5)2.3模拟乒乓球电路旳设计 (6)3 电路整体性能旳检测 (7)3.1 译码显示电路旳检测 (7)3.2 脉冲发生器电路旳检测·····························································3.3模拟乒乓球电路旳检测······························································4试验结论 ·······················································································5课程设计心得体会以及提议 ·······························································6 Abstract ·························································································7附录(包括元器件清单以及各元器件功能表) ·········································8参照文献 ·······················································································1.设计任务本次我们小组选择旳设计是乒乓球比赛模拟及计分器设计,重要任务是用数字电路模拟乒乓球比赛并能给比赛计分。

基于VHDL课程设计乒乓球游戏

基于VHDL课程设计乒乓球游戏

Shanghai Normal University 课程设计乒乓球游戏程序名称姓名专业班级通信工程(1)班学院信息与机电工程学院月5年2017 完成日期目录摘要................................................................................................................................................................ .1第一部分绪论 (2)1.1 课题设计背景 (2)1.1.1 FPGA简介 (2)1.1.2 硬件描述语言VHDL (2)1.1.3 QuartusⅡ简介 (2)1.2 课题主要内容 (3)第二部分系统设计 (4)2.1整体设计图 (4)2.2设计思路 (4)2.3具体功能对应等 (5)第三部分模块设计....................................................................................................... 错误!未定义书签。

3.1控制模块.............................................................................................................. 错误!未定义书签。

3.1.1 引脚功能................................................................................................ 错误!未定义书签。

3.1.2 核心代码及解释.................................................................................... 错误!未定义书签。

模拟乒乓球游戏机控制电路课程设计

模拟乒乓球游戏机控制电路课程设计

目录一、基本设计要求二、STC89C52芯片介绍三、程序流程图四、“乒乓球”比赛系统数码管部分五、“乒乓球”比赛系统模拟“兵乓球”部分六、“乒乓球”比赛系统控制开关部分七、程序设计八、参考文献一、基本设计要求:1、设计一个由甲、乙双方参赛。

2、用8个LED排成一条直线,以中点为界,两边各代表参赛双方的位置,其中一只点亮的LED指示球的当前位置,点亮的LED依此从左到右,或从右到左,其启动的方向可以由任意一方开始。

3、当“球”(点亮的那只LED)运动到某方的最后一位时,参赛者应能果断地按下位于自己一方的按钮开关,即表示启动球拍击球。

若击中,则球向相反方向移动;若未击中,则对方得1分。

由失分的一方开球。

4.设置自动记分电路,甲、乙双方各用2位数码管进行记分显示,每计满21分为1局,一局到的时候蜂鸣器响起,并显示局数之比。

5、随时可以复位比赛,比赛的比分和状态可以复位。

摘要:为了实现模拟乒乓球比赛的过程和规则,我们采用了STC89C52单片机来控制模拟,采用用8个LED排成一条直线,以中点为界,两边各代表参赛双方的位置,其中一只点亮的LED指示球的当前位置,用蜂鸣器来实现响铃,比赛双方用按钮开关来模拟启动球拍击球,用数码管来显示比赛分数,和局数之比。

关键词:AT89C51 LED 蜂鸣器。

二、芯片介绍2.1、89C52芯片介绍STC89C52是51系列单片机的一个型号,它是ATMEL公司生产的。

STC89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes 的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元。

STC89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,STC89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。

乒乓球游戏机EDA课程设计完整版本

乒乓球游戏机EDA课程设计完整版本

1设计目的 (1)2设计要求和任务 (1)2.1设计任务 (1)2.2设计要求 (1)3总体设计思路及原理描述 (1)4分层次方案设计及代码描述 (2)4.1 控制模块的设计 (2)4.1.1 cornal 模块分析 (2)4.1.2 cornal 模块VHDL程序描述 (3)4.2送数据模块的设计 (7)4.2.1 ch41a 模块分析 (7)4.2.2 ch41a 模块VHDL程序描述 (7)4.3产生数码管片选信号模块的设计 (8)4.3.1 sel 模块分析 (8)4.3.2 sel 模块VHDL程序描述 (9)4.4七段译码器模块的设计 (10)4.4.1 disp 模块分析 (10)4.4.2 disp 模块VHDL程序描述 (10)4.5顶层原理图设计 (11)5各模块的时序仿真图 (12)6 总结 (14)7 参考文献 (14)乒乓游戏机1设计目的掌握熟悉的使用Quartus II 9.1 软件的原理图绘制,程序的编写,编译以及仿真。

体会使用EDA综合过程中电路设计方法和设计思路的不同。

掌握使用EDA工具设计乒乓游戏机的的设计思路和设计方法。

2设计要求和任务2.1设计任务设计一个乒乓球游戏机,该机模拟乒乓球比赛的基本过程和规则,并能自动裁判和几分。

2.2设计要求(1)甲乙双方各在不同的位置发球或击球。

(2)乒乓球的位置和移动方向由灯亮及依次点亮的方向决定,球移动的速度为0.1-0.5 秒移动一位。

(3)11分为一局,甲乙双方都应设置各自的几分牌,任何一方先记满11分,该方胜出。

当记分牌清零后,重新开始。

3总体设计思路及原理描述由乒乓游戏机功能,用原理图作为顶层模块,再将底层划分成四个小模块来实现: (1)c ornal模块:整个程序的核心,它实现了整个系统的全部逻辑功能;(2)c h41a模块:在数码的片选信号时,送出相应的数据;(3)s ei模块:产生数码管的片选信号;(4)d isp模块:7段译码器。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

电子课程设计——基于Verilog的乒乓游戏设计电路学院:专业、班级:姓名:学号:指导教师:2014年12月引言可编程器件的广泛应用,为数字系统的设计带来了极大的灵活性。

可编程器件可以通过软件编程对硬件的结构和工作方式进行重构,使得硬件的设计可以如同软件设计那样快捷方便。

高速发展的FPGA、CPLD兼有串、并行工作方式和高速、高可靠性的特点,在电子系统设计中得到了广泛应用。

通常使用硬件描述语言(Hardware Description Language,HDL)进行数字电子系统设计。

目前应用广泛的硬件描述语言有:VHDL语言,Verilog HDL语言,AHDL语言。

Verilog语言由于具有强大的行为描述能力和丰富的仿真语句从而成为系统设计领域最佳的硬件描述语言。

鉴于如上所述,本系统使用Verilog语言进行设计,采用自上向下的设计方法。

利用Quartus II 9.1 进行Verilog程序的编译与综合,然后用Modelism SE 6.0进行功能仿真和时序仿真,并使用EDA实验箱进行下载验证。

基于Verilog的乒乓游戏设计电路一、设计任务与要求任务:设计一个乒乓球游戏机,模拟乒乓球比赛的基本过程和规则,并能裁判和自动计分。

要求如下:1.使用乒乓球游戏机的甲乙双方在不同的位置罚球或击球。

2.乒乓球的位置和移动方向可由发光二极管和依次点亮的方向决定,为球的移动速度为一定值(我们设计中设为0.5秒移动一位)。

使用者可按乒乓球的位置发出相应的动作,在其他时候击球视为犯规,给对方加一分;都犯规双方各加一分。

二、总体框图设计思路根据乒乓球比赛的过程和规则,首先游戏开始,如果一方非正确击球则另一方加分,当分数大于11时获胜,游戏结束,系统设计流程图如图1所示。

图2给出了乒乓球游戏机的原理图。

用5个发光二极管代表乒乓球,在游戏机两侧各设置二个开关,一个是发球开关,一个是击球开关。

即若A方按动发球开关时,靠近A方的第一灯亮,然后二极管由A向B逐次点亮,代表乒乓球在移动。

当过网后,B就可以击球,否则判B方失分,A方自动加分,重新发球比赛继续进行到一方计分到11分,该局结束,计分牌清零,可以开始新的一局比赛。

反之B发球时也一样。

将核心模块分俩个进程:第一个实现逻辑功能,第二个将整数记分转换为十进制数,便于译码显示;得分显示模块用七段译码器。

各个状态间的转移控制要根据要求来改变转移的状态由于设计要求实现LED灯依此从左到右,或从右到左的移动,同时球拍击球。

若击中,则球向相反方向移动,若未击中,则对方得1分。

就其功能,若要实现记分,就得用到7段数码管,考虑到硬件要求,考虑用动态扫描技术来解决。

动态扫描前要进行译码,即把记数得分的结果译码成七段码。

设计方案完全用Verilog HDL语言编写程序。

三、器件选择1、装有QuartusII软件的计算机一台。

2、EDA实验箱一个(1)7段数码显示管。

(2)5个LED灯。

(3)芯片:使用Altera公司生产的CycloneIV芯片,选用EP4CE6E22C8片。

四、功能模块1、实现整个设计的逻辑功能,当游戏开始时,先通过clr对整个系统进行清零,在输入clk上升沿有效的条件下,甲方开始发球,LED灯从距离甲方最近的一个开始闪亮,并依次向乙方移动,过了网后乙方就可以击球,若乙方击球成功,则球按原路返回,再次过网后甲方就可击球,若甲击球成功,则按以上游戏一直进行下去,若有一方击球失败或提前击球,对方在记分牌上自动记一分;当其中的一方记满11分时比赛结束,清零后可开始下一局。

2、将整数计分转换为十进制数,便于译码显示。

当甲乙双方的记分低位到达9时使低位清零,同时使高位加1,以便正确地在数码管上显示得分。

clr为乒乓球游戏清零键,af为A方发球控制键,aj接球键;bf为乙方发球控制键,bj接球键;clk为控制乒乓球行进速度的时钟信号,接50MHZ时钟信号源;shift为LED灯显示输出端,接5个LED显示灯;计分要经过译码器译码后接8位共阴极数码显示管。

Verilog HDL程序module lqq (shift,scan,seg7,clk50Mhz,clr,af,aj,bf,bj); output[4:0] shift;output[3:0] scan;output[6:0] seg7;input clk50Mhz; //50Mhz时钟信号input af; //A方发球input aj; //A方击球input bf; //B方发球input bj; //B方击球input clr;//系统复位段reg[4:0] shift; //5个LED代表乒乓球甲左乙右)reg[3:0] scan; //数码管地址选择信号reg[6:0] seg7; //7段显示控制信号(abcdefg)reg clk1,clk2;reg[3:0] a_score,b_score;reg[1:0] cnt;reg[3:0] data;reg[3:0] a_one,a_ten,b_one,b_ten;reg[23:0] count,count1;reg a,b; //A和B的控制位reg[4:0] shift_1;//-------------2hz分频--------------always@(posedge clk50Mhz)beginif(count==24'd25000)begin clk1<=~clk1;count=0;endelse begin count<=count+1;endendalways@(posedge clk1)beginif(count1==24'd250)begin clk2<=~clk2;count1=0;endelse begin count1<=count1+1;endif(cnt==2'b11)begin cnt<=2'b00;endelsebegin cnt<=cnt+1;endend//乒乓球游戏规则always@(posedge clk2)beginif(clr)begin a_score<=0;b_score<=0;a<=0;b<=0;shift_1<=0;endelsebeginif(!a&&!b&&af) //如果A发球begin a<=1;shift_1<=5'b10000;end //A的控制位置1else if(!a&&!b&&bf)begin b<=1;shift_1<=5'b00001;end //B的控制位置1 else if(a&&!b) //球从A向B移动beginif(shift_1>5'b00100) //如果没到球网B击球,则A加分beginif(bj)begina_score<=a_score+1;a<=0;b<=0;shift_1<=5'b00000;endelse //如果B一直没有接球,则A加分begin shift_1[4:0]<=shift_1[4:0]>>1;endendelse if(shift_1==5'b0)begin a_score<=a_score+1;a<=0;b<=0;endelsebeginif(bj) //如果B击球成功,则B的控制位置1,A的控制位清零begin a<=0;b<=1;endelsebegin shift_1[4:0]<=shift_1[4:0]>>1;endendendelse if(b&&!a) // 球从B向A移动beginif(shift_1<5'b00100&&shift_1!=5'b0)beginif(aj) //如果没到球网A击球,则B加分beginb_score<=b_score+1;a<=0;b<=0;shift_1<=5'b00000;endelsebegin shift_1[4:0]<=shift_1[4:0]<<1;endendelse if(shift_1==5'b0) //如果A一直没接球,则B加分begin b_score<=b_score+1;a<=0;b<=0;endelsebeginif(aj) //如果A击球成功,则A的控制位置1,B的控制位置清零begin a<=1;b<=0;endelsebegin shift_1[4:0]<=shift_1[4:0]<<1;endendendendshift<=shift_1;if(a_score==4'b1011&&!clr)begin a_score<=a_score;b_score<=b_score;endif(b_score==4'b1011&&!clr)begin a_score<=a_score;b_score<=b_score;endend//---------将A和B的计分换成BCD码---------- always@(posedge clk2)begincase(a_score[3:0])4'b0000:begin a_one<=4'b0000;a_ten<=4'b0000;end 4'b0001:begin a_one<=4'b0001;a_ten<=4'b0000;end 4'b0010:begin a_one<=4'b0010;a_ten<=4'b0000;end 4'b0011:begin a_one<=4'b0011;a_ten<=4'b0000;end 4'b0100:begin a_one<=4'b0100;a_ten<=4'b0000;end 4'b0101:begin a_one<=4'b0101;a_ten<=4'b0000;end 4'b0110:begin a_one<=4'b0110;a_ten<=4'b0000;end 4'b0111:begin a_one<=4'b0111;a_ten<=4'b0000;end 4'b1000:begin a_one<=4'b1000;a_ten<=4'b0000;end 4'b1001:begin a_one<=4'b1001;a_ten<=4'b0000;end 4'b1010:begin a_one<=4'b0000;a_ten<=4'b0001;end 4'b0011:begin a_one<=4'b0001;a_ten<=4'b0001;end default:begin a_one<=4'bx;a_ten<=4'bx;end endcaseendalways@(b_score[3:0])case(b_score[3:0])4'b0000:begin b_one<=4'b0000;b_ten<=4'b0000;end4'b0001:begin b_one<=4'b0001;b_ten<=4'b0000;end 4'b0010:begin b_one<=4'b0010;b_ten<=4'b0000;end 4'b0011:begin b_one<=4'b0011;b_ten<=4'b0000;end 4'b0100:begin b_one<=4'b0100;b_ten<=4'b0000;end 4'b0101:begin b_one<=4'b0101;b_ten<=4'b0000;end 4'b0110:begin b_one<=4'b0110;b_ten<=4'b0000;end 4'b0111:begin b_one<=4'b0111;b_ten<=4'b0000;end 4'b1000:begin b_one<=4'b1000;b_ten<=4'b0000;end 4'b1001:begin b_one<=4'b1001;b_ten<=4'b0000;end 4'b1010:begin b_one<=4'b0000;b_ten<=4'b0001;end 4'b0011:begin b_one<=4'b0001;b_ten<=4'b0001;end default:begin b_one<=8'bx;b_ten<=8'bx;end endcase//----------数码管动态扫描--------------always@(posedge clk1)begincase(cnt[1:0])2'b00:begin data<=b_one;scan<=4'b1110;end2'b01:begin data<=b_ten;scan<=4'b1101;end2'b10:begin data<=a_one;scan<=4'b1011;end2'b11:begin data<=a_ten;scan<=4'b0111;end default:begin data<=4'bx;scan<=4'bx;endendcase//----------------七段译码---------------- case(data[3:0])4'b0000: seg7[6:0]=7'h3f;4'b0001: seg7[6:0]=7'h06;4'b0010: seg7[6:0]=7'h5b;4'b0011: seg7[6:0]=7'h4f;4'b0100: seg7[6:0]=7'h66;4'b0101: seg7[6:0]=7'h6d;4'b0110: seg7[6:0]=7'h7d;4'b0111: seg7[6:0]=7'h07;4'b1000: seg7[6:0]=7'h7f;4'b1001: seg7[6:0]=7'h6f;default: seg7[6:0]=7'hx;endcaseendendmodule五、总体设计电路图硬件连接情况:af、aj、bf、bj连接实验箱上的K1、K2、K4、K5 clr连接K12作为系统复位端shift[0]……shift[4]连接实验箱上的L1、L2、L3、L4、L5scan[0]……scan[3]连接实验箱上的LED_C1 、LED_C2、 LED_C3、LED_C4seg[0]……seg[6]连接实验箱上的LED_A、LED_B、LED_C、LED_D、LED_E、LED_F、LED_G管脚分配图波形仿真图A方发球B方不接球A方发球B提前接球犯规B方发球A不接球B方发球A提前接球犯规AB僵持球实验箱连接图:六、心得体会Verilog HDL硬件描述语言打破了硬件和软件设计人员之间互不干涉的界限,可使用语言的形式来进行数字系统的硬件结构、行为的描述,直接设计数字电路硬件系统,通过编程、下载后,该芯片已经具备了原来需要使用复杂的数字电路实现的功能;这样,使用语言描述大大缩短了开发周期,减少了开发难度,并使得系统更加灵活、稳健。

相关文档
最新文档