EDA课程设计--乒乓球游戏机
EDA课程设计之乒乓球游戏机

分,该方就算胜了此局。
记分牌清零后,又可开始新的一局比赛2.2.2乒乓游戏机设计思路根据乒乓游戏机功能要求,可以分成四个模块来实现,其中corna模块为整个程序的核心,它实现了整个系统的全部逻辑功能;模块CH41A在数码的片选信号时,送出相应的数据;模块sel产生数码管的片选信号;模块disp是7段译码器。
2.3乒乓球各模块的设计2.3.1 控制模块的设计模块CORNA 分两个进程,第一个进程实现逻辑功能,第二个进程将整数的记分转换为十进制数,便于译码显示。
AF,AJ,BF,BJ分别为a方发球键和接球键,b方发球键和接球键,shift表示球所在的位置。
其vhdl程序描述如下:图1 模块CORNA1LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CORNAL ISawIN<=t1;bwIN<=t2;END PROCESS;END behav;2.3.2 送数据模块的设计送数据模块CH41A的vhdl程序描述如下:图2 模块CH41ALIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY CH41A ISPORT(sel:IN STD_LOGIC_VECTOR(2 DOWNTO 0);D0,d1,d2,d3:IN STD_LOGIC_VECTOR(3 DOWNTO 0);Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END CH41A;ARCHITECTURE behave OF CH41A ISBEGINPROCESS(sel)BEGINCASE sel ISWHEN”100”=>q<=d0;WHEN”101”=>q<=d1;WHEN”000”=>q<=d2;WHEN others=>q<=d3;END CASE;END PROCESS;END behav;2.3.3 产生数码管片选信号模块的设计产生数码管片选信号模块sel的vhdl程序描述如下:图3数码管片选信号模块sel LIBRARY IEEE;USE IEEE.S TD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY sel ISPORT(clk:IN STD_LOGIC;sell:OUT STD_LOGIC_VECTOR(2 DOWNTO 0)); END sel;ARCHITECTURE behav OF sel ISBEGINPROCESS(clk)VARIABLE tmp:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINIF clk’event and clk=’1’ THENIF tmp=”000” THENt mp:=”001”;ELSIF tmp=”001” THENt mp:=”100”;ELSIF t mp=”100” THENt mp:=”101”;ELSIF tmp=”101” THENt mp:=”000”;END IF;END IF;sell<=tmp;END PROCESS;END behav;2.3.4 7段译码器模块的设计7段译码器模块disp的vhdl的程序描述如下:图4 7段译码器模块disp LIBRARY IEEE;USE IEEE.S TD_LOGIC_1164.ALL;ENTITY disp ISPORT(d:IN STD_LOGIC_VECTOR(3 DOWNTO 0);Q:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END disp;ARCHITECTURE behav OF disp ISBEGINPROCESS(d)BEGINCASE d ISWHEN”0000”=>q<=”0111111”;WHEN”0001”=>q<=”0000110”;WHEN”0010”=>q<=”1011011”;WHEN”0011”=>q<=”1001111”;WHEN”0100”=>q<=”1100110”;WHEN”0101”=>q<=”1101101”;WHEN”0110”=>q<=”1111101”;WHEN”0111”=>q<=”0100111”;WHEN”1000”=>q<=”1111111”;WHEN others=>q<=”1101111”;END CASE;END PROCESS;END behav;3.设计结果与分析3.1系统的波形仿真图5所示为A方发球,在恰当的时候B方接到球,当球回到A方时,A方又接到球,但B方再也没有接到球的仿真波形。
乒乓球游戏机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课程设计。
乒乓球游戏机课程设计

乒乓球游戏机课程设计一、课程目标知识目标:1. 学生理解乒乓球游戏机的基本结构和工作原理,掌握相关电子元件的功能和连接方式。
2. 学生掌握编程控制乒乓球游戏机的技能,能够运用所学知识编写程序,实现乒乓球游戏机的运行和交互。
3. 学生了解乒乓球游戏机在现实生活中的应用,认识到科技与日常生活的紧密联系。
技能目标:1. 学生能够运用所学的电子知识和编程技能,独立完成乒乓球游戏机的搭建和编程。
2. 学生能够在团队协作中发挥自己的专长,共同解决制作过程中遇到的问题,提高团队协作能力。
3. 学生通过动手实践,培养创新思维和问题解决能力。
情感态度价值观目标:1. 学生培养对科学技术的兴趣和好奇心,激发学习电子和编程的热情。
2. 学生在学习过程中,培养坚持不懈、勇于挑战的精神,增强自信心。
3. 学生通过团队协作,学会尊重他人、沟通合作,培养良好的团队精神和人际交往能力。
4. 学生认识到科技发展对生活的影响,激发为我国科技创新贡献力量的责任感。
课程性质:本课程为实践性较强的综合课程,结合电子、编程和团队合作等元素,旨在培养学生的动手能力、创新思维和团队协作能力。
学生特点:六年级学生对电子和编程有一定的基础,好奇心强,喜欢动手操作,具备一定的团队合作能力。
教学要求:注重理论与实践相结合,关注学生的个体差异,提高学生的动手实践能力和创新精神,培养团队协作能力。
在教学过程中,将目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. 电子元件知识:介绍乒乓球游戏机中涉及的电子元件,如电源、微控制器、传感器等,结合课本相关知识,让学生了解各元件的作用和连接方式。
2. 编程技能:教授学生使用编程软件,如Arduino或Scratch,编写控制乒乓球游戏机的程序。
内容包括基本语法、逻辑控制、传感器数据读取等。
3. 乒乓球游戏机结构:讲解乒乓球游戏机的整体结构,分析各部分的功能和相互关系,指导学生进行实际搭建。
4. 团队合作:组织学生分组,进行团队协作,共同完成乒乓球游戏机的制作,培养学生团队协作能力。
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;三、乒乓球游戏程序的仿真波形仿真波形图四、硬件测试方法然后我们就要测试硬件, 下载文件。
EDA课程设计之乒乓球游戏机

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)运动到某方的最后一位时,参赛者应能果断地按下位于自己一方的按纽开关,即表示启动球拍击球,若击中,则球向相反方向运动;若未中,球掉出桌外,则对方得一分。
乒乓球游戏机的EDA设计

乒乓球游戏机的EDA设计1.硬件设计:处理器选择:乒乓球游戏机需要支持游戏运行和实时计算,因此需要选择性能较高的处理器。
一般来说,可以选择ARM架构的处理器,比如Cortex-A系列或者Cortex-M系列。
输入输出设备:乒乓球游戏机需要支持玩家的交互操作,因此需要选择适合的输入输出设备。
常见的输入设备包括按钮、摇杆和触摸屏等,输出设备可以是显示屏和音频喇叭。
显示屏:乒乓球游戏机的显示屏需要具备较高的刷新率和低的输入延迟,以提供流畅的游戏体验。
可以选择TFTLCD显示屏或者OLED显示屏,并根据实际需求确定分辨率、尺寸和驱动方式。
音频系统:乒乓球游戏机需要提供逼真的游戏音效和背景音乐,因此需要选择适合的音频解码芯片和音频输出设备。
2.软件设计:游戏逻辑:乒乓球游戏机的游戏逻辑包括乒乓球运动轨迹计算、碰撞检测和得分计算等。
可以使用编程语言如C++或者Python来实现游戏逻辑。
界面设计:乒乓球游戏机的界面设计需要美观且易用,可以使用图形界面库如Qt或者GTK来设计游戏界面。
输入处理:乒乓球游戏机的输入处理需要对玩家的操作进行检测和解析,可以使用按键扫描或者触摸屏事件处理技术来实现输入处理。
图像渲染:乒乓球游戏机的图像渲染需要实时更新,以提供流畅的游戏画面。
可以使用OpenGL或者直接操作图形硬件来实现图像渲染。
3.电路设计:电源管理:乒乓球游戏机需要提供稳定的电源供给,可以设计一个电源管理电路来管理电池供电和充电等功能。
信号处理:乒乓球游戏机的信号处理主要包括模拟信号采集、数字信号处理和通信接口设计等。
可以使用模数转换器(ADC)和数字信号处理器(DSP)等芯片来实现。
外设接口:乒乓球游戏机需要提供外设接口来连接输入输出设备和扩展模块,可以选择串行接口(如UART、SPI或者I2C)或者并行接口来实现。
总结:乒乓球游戏机的EDA设计涉及到硬件、软件和电路设计的多个方面。
在硬件设计方面,需要选择适合的处理器、输入输出设备、显示屏和音频系统。
EDA课程设计--乒乓球游戏机

EDA课程设计--乒乓球游戏机EDA技术课程设计课题:乒乓球比赛游戏机系别:电气与电子工程系专业:电子信息工程姓名:学号:指导教师:河南城建学院2012年6月日成绩评定·一、指导教师评语(根据学生设计报告质量、答辩情况及其平时表现综合评定)。
二、课程设计评分成绩:2012年 6月日目录一、设计目的 (2)二、设计要求 (6)三、总体设计方案要求 (4)1、设计的总体原理 (4)2、设计内容 (6)四、EDA设计与仿真 (6)1、系统程序设计 (6)2、系统程序各功能介绍 (12)3、仿真结果及数据分析 (13)五、硬件实现 (14)1、硬件实现步骤 (14)2、硬件实现结果 (66)六、设计总结 (20)七、参考文献 (21)八、设计生成的电路总图 (21)一、设计目的通过对FPGA(现场可编程门阵列)芯片的设计实践,使学生掌握一般的PLD (可编程逻辑器件)的设计过程、设计要求、设计内容、设计方法,能根据用户的要求及工艺需要进行电子芯片设计并制定有关技术文件。
培养学生综合运用已学知识解决实际工程技术问题的能力、查阅图书资料和各种工具书的能力、工程绘图能力、撰写技术报告和编制技术资料的能力,受到一次电子设计自动化方面的基本训练。
培养学生利用EDA技术知识,解决电子设计自动化中常见实际问题的能力,使学生积累实际EDA编程。
通过本课程设计的学习,学生将复习所学的专业知识,使课堂学习的理论知识应用于实践,通过本课程设计的实践使学生具有一定的实践操作能力。
二、设计要求1、设计一个由甲、乙双方参赛,有裁判的3人乒乓球游戏机。
2、用8个(或更多个)LED排成一条直线,以中点为界,两边各代表参赛双方的位置,其中一只点亮的LED 指示球的当前位置,点亮的LED依此从左到右,或从右到左,其移动的速度应能调节。
3、当“球”(点亮的那只LED)运动到某方的最后一位时,参赛者应能果断地按下位于自己一方的按钮开关,即表示启动球拍击球。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EDA课程设计一乒乓球游戏机EDA技术课程设计课题:乒乓球比赛游戏机系别:电气与电子工程系专业: _______姓名: __________________________学号: __________________________指导教师: _______________________河南城班学院2012年6月日成绩评定•一、指导教师评语(根据学生设计报告质量、答辩情况及其平时表现综合评定)。
录一、设计目的 (2)二、设计要求 (6)三、总体设计方案要求 (4)1、设计的总体原理 (4)2、设计内容 (6)四、EDA设计与仿真 (6)1、系统程序设计 (6)2、系统程序各功能介绍 (12)3、仿真结果及数据分析 (13)五、硬件实现 (14)1、硬件实现步骤 (14)2、硬件实现结果 (66)六、设计总结 (20)七、参考文献 (21)八、设计生成的电路总图 (21)一、设计目的通过对FPGA (现场可编程门阵列)芯片的设计实践,使学生掌握一般的PLD(可编程逻辑器件)的设计过程、设计要求、设计内容、设计方法,能根据用户的要求及工艺需要进行电子芯片设计并制定有关技术文件。
培养学生综合运用已学知识解决实际工程技术问题的能力、査阅图书资料和各种工具书的能力、工程绘图能力、撰写技术报告和编制技术资料的能力,受到一次电子设计自动化方面的基本训练。
培养学生利用EDA技术知识,解决电子设计自动化中常见实际问题的能力, 使学生积累实际EDA编程。
通过本课程设计的学习,学生将复习所学的专业知识,使课堂学习的理论知识应用于实践,通过本课程设计的实践使学生具有一定的实践操作能力。
二、设计要求1、设计一个由甲、乙双方参赛,有裁判的3人乒乓球游戏机。
2、用8个(或更多个)LED排成一条直线,以中点为界,两边各代表参赛双方的位置,其中一只点亮的LED指示球的当前位置,点亮的LED依此从左到右, 或从右到左,其移动的速度应能调节。
3、当“球”(点亮的那只LED)运动到某方的最后一位时,参赛者应能果断地按下位于自己一方的按钮开关,即表示启动球拍击球。
若击中,则球向相反方向移动;若未击中,则对方得1分。
4、一方得分时,电路自动响铃3秒,这期间发球无效,等铃声停止后方能继续比赛。
5、设置自动记分电路,甲、乙双方各用2位数码管进行记分显示,每计满21分为1局。
6、甲、乙双方各设一个发光二极管,表示拥有发球权,每隔5次自动交换发球权,拥有发球权的一方发球才有效。
三、总体设计方案要求1•设计的总体原理本实验主要部分设计采用状态机设计,设置了7个状态,分别是“等待发球状态”、“第一盏灯亮状态”、“第八盏灯亮状态”、“球向乙移动状态”、“球向甲移动状态”、“允许甲击球状态”,“允许乙击球状态”。
这是该程序中起决定作用的七个状态。
开始的时候处于“等待发球状态”,若甲发球则状态转移到“第一盏灯亮状态”,若乙发球则转移到“第八盏灯亮状态”,具体说明以甲球为例。
若发球后乙没有提前击球-——规定球移动到对方第一个发光二极管时允许击球,那么状态机从“第一盏灯亮状态”转移到“球向乙移动状态”;若在“球向乙移动状态”乙仍然没有提前击球,状态就转移到“允许乙击球状态”,在此状态下,如果乙击球了,那么状态就转移到“球向甲移动状态”;在“第一盏灯亮状态”,“球向乙移动状态”中,如果乙击球了,就算提前击球,这样甲得分,状态转移到“等待发球状态”等待发球,“球向甲移动状态”之后的过程和前面的过程只不过是甲乙角色的调换而已。
本设计流程图与乒乓球游戏机原理图如下:7七中七没击球图3-2乒乓球游戏机原理图2.设计内容用8个(或更多个)LED排成一条直线来模拟乒乓球的轨迹,以中点为界,两边各代表参赛双方的位置,其中一只点亮的LED指示球的当前位置,点亮的LED 依此从左到右,或从右到左,其移动的速度应能调节。
当“球”(点亮的那只LED) 运动到某方的最后一位时,参赛者应能果断地按下位于自己一方的按钮开关,即表示启动球拍击球。
若击中,则球向相反方向移动;若未击中,则对方得1 分。
一方得分时,电路自动响铃3秒,这期间发球无效,等铃声停止后方能继续比赛。
设置自动记分电路,甲、乙双方各用2位数码管进行记分显示,每计数满21分为1局。
甲、乙双方各设一个发光二极管,表示拥有发球权,每隔5 次自动交换发球权,拥有发球权的一方发球才有效。
四、EDA设计及仿真(设计程序、仿真波形图)1、系统程序设计library ieee;use ieee.std Jogic_1164.all;use ieee.stdjogic_arith.all;use ieee.stdjogic_unsigned.all;entity mydecoder isport(binaryin:in stdjogic_vector(l to 5); ・・5 位二进制码的输入端口bcdoutl:out std」ogic_vector(l to 4); ••七段译码器输出端口bcdout2:out stdjogic_vector(l to 4));end mydecoder;architecture m of mydecoder issignal tembinaryin:std_logic_vector(l to 5);beginprocess(binaryin)begintembinaryin<=binaryin;case tembinarvin is •■把0到9的5位二进制码转换成七段译码when M00000,,=>bcdoutl<=n0000,,;bcdout2<=tf0000,t;when tt0000r,=>bcdoutl<=n0000,t;bcdout2<=tt000r,;when tt00010,,=>bcdoutl<=t,0000,t;bc(loiit2<=tt0010M;when,t000ir t=>bcdoutl<=t,0000,t;bcdout2<=,,00ir,;when t,00100n=>bcdoutl<=n0000n;bc(lout2<=,t0100,t;when M0010r,=>bcdoutl<=n0000,,;bcdout2<=tf010r t;when M00110ft=>bcdoutl<=ft0000,t;bcdout2<=,l0110,f;when n00111ft=>bcdoutl<=H0000ft;bcdout2<=,,01ir f;when tt01000,t=>bcdoutl<=,t0000M;bcdout2<=t,1000,f;when M0100r t=>bcdoutl<=,,0000,t;bcdout2<=tt100r,; ••把10 到19 的5 位二进制码转换成七段译码when lt01010,t=>bcdoutl<=,t0001,t;bcdout2<=,,0000,t;when n01011M=>bcdoutl<=n0001t,;bcdout2<=H000r,;when tt01100,t=>bcdoutl<=H000r,;bcdout2<=,,0010,f;when M0110r t=>bcdoutl<=,,000r t;bcdout2<=,'00ir f;when tt01110,t=>bcdoutl<=n000r,;bcdout2<=,,0100,t;when,t011ir t=>bcdoutl<=,,000r t;bcdout2<=t,010r f;when ft10000H=>bcdoutl<=M0001M;bcdout2<=,,0110fl;when ft10001H=>bcdoutl<=tt0001M;bcdout2<==,,0111,f;when tt10010,,=>bcdoutl<=n000r t;bcdout2<=tt1000,t;when H100H H=>bcdoutl<=n000r t;bcdout2<=,t100r t; “把20 到21 的5 位二进制码转换成七段译码wheiTl(H0(r=>bcdoiiW0(H(r;bcdoiit2<=''000(r;when tt1010r,=>bcdoutl<=,,0010M;bcdout2<=tt000r,; ••如果5 位二进制码不在0到21范围内,那么两个七段译码器都显示0when others=>bcdoutl<=t,0000l,;bcdout2<=n0000n;end case;end process;end m;library ieee;use ieee.std Jo gic_1164.all;use ieee.std Jogic_arith>all;use ieee.std_logic_unsigned.all;••引用必要的库函数和包集合entity pingponggame is ••实体名为pingponggame port(reset: in stdjogic;elk: in stdjogic;clkl9clk2: in std」ogic;startbutton: in stdjogic; ••开始游戏输入端口hitl9hit2: in std」ogic; ••甲和乙的击球输入端口speaker : out stdjogic ;light: out stdjogic_vector(l t □ 8);••控制8个发光二极管的输出端口score 11 ^core 12^score21 ,score22: out std」ogic_vector(l to 4)); -4个用于控制4个7段译码器的输出端口end pingponggame;architecture game of pingponggame istypepingpongis(waitservejightlon,ballmoveto2,allow2hitjight8on,ballmovetol,allowlhit); ••设置7个状态,为枚举数据类型,记为pingpongsignal state:pingpong;signal c:std_logic;signal i:integer range 0 to 8;signal jinteger range 0 to 12;signal count: integer range 0 to 5 ;signal serve : std」ogic_vector (1 to 2 ):=H01n;signal coun11 ^count2:stdJogic_vector( 1 to 5):=H00000tf; ••内部计数器,是5位二进制变量component mydecoder isport(binanln: in std」ogic_vector(l to 5);bcdoutl: out std」ogic_vector(l to 4);bcdout2: out stdjogic_vector(l to 4));end component; •-调用记分译码器begin ••状态机进程Pl:process(dk) -elk作为敏感信号触发进程begin ••进程开始if reset=f r then i<=0;countl<=l,00000t,;count2<=,,00000t,; j<=0;"异步置位elsif clk'event and clk=T then ••当处于时钟inclock 上升沿时ifcountl=tt10110t,orcoiint2=,,10110,t theni<=0;countl<=n00000,t;count2<=,'00000tl;J<=0;elsif startbutton=t O t theni<=0;countl<=t,00000n;count2<=,t00000,t;j<=0;else ••以下case语句是程序中最关键的状态机部分case state iswhen waitserve=> case serve is “进程处于等待发球状态when ”10”=>i<=l;state<=lightlon;J<=J+l;if(J=9) thenJ<=0 ; end if;when M0r f=> i<=8;state<=llght8on;J<=j+l;when ,,H,,=> i<=0;when others=>i<=0;end case;when lightlon=> i<=2 ;•■进程处于第一盏灯亮状态if hit2=f r then i<=0; countl<=count 1+1 ;c<=* 11;state<=waitserve;else c<='0'; state<=ballmoveto2;end If;when light8on=> i<=7; •■进程处于第八盏灯亮状态Ifliit2=, 1 ,theni<=0;count2<=count2+1 ;c<=* 1'; state<=waitserve;else c<=,0,; state<=ballmoveto 1;end if;when ballmovetol=> if hitl=T then “进程处于球向乙移动状态i<=0;count2<=count2+1 ;c<=f 1' ;state<=waltserve; elsif i=2 theni<=l;c<=,0,;state<=allowlhit;else i<=i-l;end if;when ballmoveto2=> if hit2='l'then •■进程处于球向乙移动状态i<=0; countl<=countl+l;c<=,l,;state<=waitserve; elsif i=7 theni<=8;c<=,0t; state<=allow2hit;else i<=i+l;end if;when allowlhlt=> if hitl='l' then i<=2;c<=t0t;state<=ballmoveto2; ••进程处于允许甲击球状态elsecount2<=count2+1 ;i<=O;c<=' 1 * ;state<=waitserve;end if;when allow2hit=> f hlt2=f rthen i<=7;c<=t0, ;state<=ballmoveto 1; ••进程处于允许乙击球状态else coiintl<=countl+l;c<=f r;l<=0; state<=waitserve;end if;encl case;encl if;end if;encl process Pl;P2:process (J)beginif(J>=0 and J<=5 ) then serve<=,t01M ;end if;if(J>=5 and J<10 ) then serve<=n10ft ;end if;encl process P2 ;p3:process(c,clk2)variable d:integer range 0 to 4108;beginifc=,rthen d:=4108;iUc\k2=l V) thenif d<=0 then d:=0;else d:=d-l;end If;if d>0 then speaker<=clkl;end If;end If;end If;end process p3;light<= ,t10000000M when(i=l) else ••进程处I信号控制发光二极管的亮,,01000000tt when(i=2) elseH00100000M when(i=3) elseH00010000tf when(i=4) else''00001000” when(i=5) elsen00000100,f when(i=6) elseH00000010H when(i=7) elseH0000000r f when(i=8) else"00000000”;•■其他情况所有发光二极管都暗uO:my(Ieco(ler port map(count 1 ^score 11 ^core 12); ••用七段译码器显示甲的分数ill: my decoder port map(count2,score21,score22); ••用七段译码器显示乙的分数end game;2.系统程序各功能介绍2.1该乒乓球游戏机的输入与输出端口:首先考虑输入端口,一般应该设置一个异步置位端口reset,用于在系统不正常时回到初始状态;两个击球输入端hitl和hit2,逻辑分别表示甲击球和乙击球;一个开始游戏按钮startbutton,处于逻辑'1'表示可以开始游戏; 还有时钟输入端口elk、clkl> clk2o其次考虑输出端口,芯片应该有8个输出端口来控制8个发光二极管,输出逻辑'1,即输出一个高电平,可以使发光二极管点亮;蜂鸣器输出端口speaker,用时钟信号来驱动蜂鸣器发声;还要直观地表示双方的得分,就得用到4个七段显示数码管,每方用到2个,可以表示0 到21的数字,每个七段显示数码管需要芯片的4个输出端口来控制。