FPGA设计实践 简易乒乓游戏机由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“fpga乒乓球游戏机”。
课程设计报告
课程设计名称:
FPGA设计实践
设计课题名称:
简易乒乓游戏机
成绩
简易乒乓游戏机设计报告
一、设计目的:
本课程的授课对象是电子科学与技术专业本科生,是电子类专业的一门重要的实践课程,是理论与实践相结合的重要环节。
本课程有助于培养学生的数字电路设计方法、掌握模块划分、工程设计思想与电路调试能力,为以后从事各种电路设计、制作与调试
工作打下坚实的基础。
简易乒乓游戏机的实验目的:
1.熟练掌握VHDL 语言和QuartusII 软件的使用; 2.理解状态机的工作原理和设计方法;
3.掌握利用EDA 工具进行自顶向下的电子系统设计方法;
二、实验器材和工具软件:
QUARTUS II。
三、设计内容:
本课程要求学生以FPGA技术基础,以VHDL为语言,以QUARTUS II为工具,设计一个乒乓球游戏机。
四、设计具体步骤:
乒乓球游戏机是一个经典的数字逻辑综合设计的题目,本题目中输入输出的信号较多,控制比较复杂,可以采用自上而下的设计方法。
首先,整体上设计本题目。在理解题目的基础上,用图示的方法直观描述乒乓游戏机的外观和构成,明确所需要的硬件以及特点。例
乒乓游戏机的组成两人乒乓游戏机是用8个发光二极管代表乒乓球台,中间2发光二极管兼作球网,用点亮的发光二极管按一定的方向移动来表示球的运动。在游戏机的两侧各设置两个开关,一个是发球开关发A发fB;另一个是击球开关jA,jB。甲、乙二人按乒乓球比赛规则来操作开关。当甲方按动发球开关fA时,靠近甲方的第1个发光二极管亮,然后发光二极管的甲向乙依次点亮,代表乒乓球的移动。当球过网后按设计者规定的球位,乙方就可击球。若乙方提前击球或没击着球,则判乙方失分,甲方的记分牌自动加分。然后重新发球,比赛继续进行。比赛一直要进行到一方记分牌达到11分,该局结束。(3)完成各模块的代码编写:
[1]分频模块,用与生成2HZ的技术频率 library ieee;use ieee.std_logic_1164.all;
entity clk_2 is port(clkin :in std_logic;clkout:out std_logic);end clk_2;
architecture behave_clk_2 of clk_2 is constant N: Integer:=12499999;
signal Counter:Integer RANGE 0 TO N;signal Clk: Std_Logic;begin proce(clkin)begin if rising_edge(clkin)then if Counter=N then Counter
entity translate3to7 is port(datain:in std_logic_vector(2 downto 0);dataout:out std_logic_vector(6 downto 0));end translate3to7;
architecture behave OF translate3to7 is begin with datain(2 downto 0)select dataout
“1111001” when “001” ,“0100100” when “010” ,“0110000” when “011” ,“0011001” when “100” ,“0010010” when “101” ,“0000010” when “110” ,“1111000” when “111”;
end behave;translate3to7datain[2..0]dataout[6..0]inst4 library ieee;use ieee.std_logic_1164.all;entity translate7to14 is port(data:in std_logic_vector(3 downto 0);outputH:out std_logic_vector(6 downto 0);outputL:out std_logic_vector(6 downto 0));end translate7to14;architecture behave_translate OF translate7to14 is begin with data(3 downto 0)select outputL
“1111001” when “0001” , “0100100” when “0010” , “0110000” when “0011” , “0011001” when “0100” , “0010010” when “0101” , “0000010” when “0110” , “1111000” when “0111” , “0000000” when “1000” , “0010000” when “1001” , “1000000” when “1010”, “1111001” when “1011”, “0100100” when “1100”, “0110000” when “1101”, “0011001” when “1110”, “0010010” when “1111”;with data(3 downto 0)select outputh
“1000000” when “0001”, “1000000” when “0010”, “1000000” when “0011”, “1000000” when “0100”, “1000000” when “0101”, “1000000” when “0110”, “1000000” when “0111”, “1000000” when “1000”, “1000000” when “1001”, “1111001” when “1010”, “1111001” when “1011”, “1111001” when “1100”, “1111001” when “1101”, “1111001” when “1110”, “1111001” when “1111”;end behave_translate;translate7to14data[3..0]outputH[6..0]outputL[6..0]inst23 library ieee;use ieee.std_logic_1164.all;
entity translate3to8 is port(datain:in std_logic_vector(2 downto 0);dataout:out std_logic_vector(7 downto 0));end translate3to8;
architecture behave OF translate3to8 is begin when “000”=> dataout dataout dataout dataout dataout dataout dataout dataout dataout
(4)各模块调试和波形
(5)状态图:
五、设计收获以及存在的问题:
1在此次实验中要用到计数器编程中往往要学会引用变量,因为信号容易产生延迟。而且虽然许多变量默认从0开始计数,但是在确定范围时要写range 0 to N,如果写成N downto 0,可能就会发生问题。在分频clk_2中,控制球速的时间N是在50MHZ的前提下提供的,要运用公式计算出N,才行。
3一直在想用发球接球输入用按键BTN 还是开关SW 来实现功能,最后决定用 按键BTN,但在状态机这块还是不太懂,事实上,开关SW也可以实现接发球功能。
六、心得体会
这次实验是关于乒乓球的接发球的实验,在此实验过程中,一开始不知道怎么做,在网上查了资料之后终于有了思路,和了李云鹏同学一起研究才完成了此次实验。这次实验提高了我的思维和动手能力。使我又有了更大的进步。让我对FPGA有了更多的认识和了解。通过实践让我了解到上课所学的知识的实际操作,让我对FPGA有了新的认识,让我能过在以后的学习中有个良好的基础。
辽宁科技学院本科生毕业设计(论文) 第I页基于FPGA的乒乓球游戏机设计摘 要Verilog是甚高速集成电路硬件描述语言。目前,verilog已成为许多设计自动化工具普遍采用的标准化硬......
EDA 简易数字频计 设计性实验 2008112020327 ** 电子信息科学与技术物电电工电子中心2009年5月绘制2008.6.10 湖北师范学院电工电子实验教学省级示范中心电子版实验报告简易数......
摩天轮游戏机简易故障处理本款电玩城游戏机设备摩天轮游戏机,通常会出现以下个几个小故障,也不是很大的故障,所以基本上也比较好解决,只要掌握了这款游戏机的大概特性,只要排除了......
★FPGA逻辑设计工程师岗位职责负责FPGA逻辑设计、验证及板上调试。★FPGA设计工程师岗位职责负责LCD背光系统的逻辑电路设计、测试。......
Vb开办上海电力学院课程设计报告信息工程系抢答器设计报告一、设计目的:本课程的授课对象是电子科学与技术专业本科生,是电子类专业的一门重要的实践课程,是理论与实践相结合的......