聊城大学本科毕业论文(设计)
极管使之点亮,这样就可以通过发光二极管模拟乒乓球的运动轨迹。可以看到,在甲不该击球的时候击球,也就是hit1在除state状态6(allow1hit,允许甲击球状态)的时候有高电平‘1’输入,则算乙得分,bcdouta2的值随之变化,二进制“11111001”,就是七段译码器显示?1?,之后state回到状态0(waitserve,等待发球状态)。当甲在allow1hit时击球,乒乓球就会从乙端运动到甲端。
总结
电子技术的飞速发展,智能设备的日益增多,有力地推动了社会生产力的发展和社会信息化程度的提高。在这同时,这些发展变化也要求电子产品性能进一步提高,产品更新换代的节奏加快。因此,对电子产品的设计开发就提出了更高的要求。为适应这样的要求,业界大量可编程逻辑器件(PLD),尤其是现场可编程逻辑门阵列(FPGA)应运而生,促进了电子设计自动化技术快速发展。这不仅为电子系统设计带来了一场革命性变化,而且为网络化、智能化测控系统的研制创造了条件。
本次设计论文主要包括:EDA概述;硬件描述语言VHDL;QuartusII系统平台,介绍了这些基本的知识以后,便开始进行乒乓球游戏的电路设计。论文比较全面的分析了乒乓球游戏机的基本原理,符合乒乓球运动的各项规则。使用模块化设计方法,最终实现了乒乓球运动的基本功能。
在这个设计中,初步体现了状态机的中心控制作用。通过状态机进程传出的信号,驱动了发光二极管以及七段译码器等外围设备。状态机进程传出的i信号,控制了发光二极管的状态,状态机进程传出的count1和count2信号,控制了七段译码器的显示。
在几个月的学习和实践过程中,遇到了很多问题。刚开始由于对VHDL语言不是很熟悉,所以编程的过程中出现了很多的问题,也走了很多弯路。而且当编译出现了很多错误,怎样调整都无法实现的时候,我对我自己都失去了信心,但经过老师的指导和自己的探索,终于克服了在实际操作中出现的种种问题。通过这样的学习,我有很大的收获,不仅在学识上进步不小,而且加强了我的独立操作能力和克服困难的决心和信心。我会把毕业设计中学习到的知识和精神用到以后的学习和工作中,去实现自己理想和灿烂的人生。
17
聊城大学本科毕业论文(设计)
参考文献
[1]《EDA技术实用教程》黄继业 潘松编著 科学出版社 [2]《微机原理与接口技术》钱晓捷主编 机械工业出版社
[3]《微处理器(CPU)的结构与性能》易建勋编著 清华大学出版社
[4]《FPGA数字电子系统设计与开发实例导航》刘韬 楼兴华编著 人民邮电出版社 [5]《EDA技术及其创新实践》潘松 黄继业编著 电子工业出版社
[6]《VHDL硬件描述语言与数字逻辑》侯伯亨编著 西安电子科技大学出版社
[7]《电子设计自动化(EDA)课程设计与项目实例》李莉 路而红编著 中国电力出版社 [8]《数字系统的VHDL设计》江国强编著 机械工业出版社 [9]《CPLD/FPGA设计及应用》罗朝霞 高书莉编著 人民邮电出版社 [10]《VHDL设计实例与仿真》姜雪松 吴钰淳编著 机械工业出版社 [11]《.EDA技术综合应用实例与分析》谭会生编著 西安电子科技大学出版社
附录
源程序代码 1 分频器
library IEEE;
use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; entity division is
port( clk:in std_logic; clk_1:out std_logic ); end division;
architecture division_body of division is signal count1:integer range 0 to 5999999; signal count2:integer range 0 to 2999999; signal clk1:std_logic; begin
process(clk) begin if(clk'event and clk='1')then if(count1=2)then count1<=0; clk1<=not clk1;
18
聊城大学本科毕业论文(设计)
else count1<=count1+1; end if; end if;
end process; clk_1<=clk1; end division_body; 2 主体模块
library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all; --引用必要的库函数和包集合 entity compete is
port(reset:in std_logic; clk_1:in std_logic;
startbutton:in std_logic; --开始游戏输入端口
serve:in std_logic_vector(1 downto 0); --发球输入端口 hit1,hit2:in std_logic; --甲和乙的击球输入端口
light:out std_logic_vector(1 to 8);--控制8个发光二极管的输出端口
counta,countb:out std_logic_vector(3 downto 0)); --2个用于控制4个7段译码
器的输出端口
end compete;
architecture one of compete is
type pingpong is (waitserve,light1on,ballmoveto2,allow2hit, light8on,ballmoveto1,allow1hit);
---设置7个状态,为枚举数据类型,记为pingpong signal state:pingpong;
signal i:integer range 0 to 8;
signal count1,count2,count3,count4:std_logic_vector(3 downto 0):=\---内部计数器,是4位二进制变量 begin
process(clk_1) --状态机进程 --clk_1作为敏感信号触发进程 begin --进程开始 if reset='1' then --异步置位
i<=0;count1<=\elsif clk_1'event and clk_1='1' then --当处于时钟inclock上升沿时 if count1=\
i<=0;count1<=\elsif count2=\
i<=0;count1<=\elsif startbutton='0' then
i<=0;count1<=\else --以下case语句是程序中最关键的状态机部分 case state is
19
聊城大学本科毕业论文(设计)
when waitserve=> --进程处于等待发球状态 case serve is
when \
when \when \when \when others => i<=0; end case;
when light1on => i<=2; if hit2='1' then i<=0;
count1<=count1+1;state<=waitserve; else
state<=ballmoveto2; end if;
when light8on => i<=7; if hit1='1' then i<=0;
count2<=count2+1;state<=waitserve; else
state<=ballmoveto1; end if;
when ballmoveto1 => if hit1='1' then i<=0;
count2<=count2+1;state<=waitserve; elsif i=2 then i<=1; state<=allow1hit; else i<=i-1; end if;
when ballmoveto2 => if hit2='1' then i<=0;
count1<=count1+1;state<=waitserve; elsif i=7 then i<=8; state<=allow2hit; else i<=i+1; end if;
when allow1hit =>
if hit1='1' then i<=2;state<=ballmoveto2; else count2<=count2+1;i<=0; state<=waitserve; end if;
20
聊城大学本科毕业论文(设计)
when allow2hit =>
if hit2='1' then i<=7;state<=ballmoveto1; else count1<=count1+1;i<=0; state<=waitserve; end if; end case; end if; end if;
end process;
counta<=count1;countb<=count2;
--进程处i信号控制发光二极管的亮暗 light<=
\\\\\\\\
\ --其他情况所有发光二极管都暗 end one; 3 显示译码模块
library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all; entity decoder is
port(binaryin:in std_logic_vector(3 downto 0); --4位二进制码的输入端口
bcdout1:out std_logic_vector(6 downto 0); --译码器高位输出端口 bcdout2:out std_logic_vector(6 downto 0) --译码器低位输出端口 );
end decoder;
architecture one of decoder is
signal tembinaryin:std_logic_vector(3 downto 0); begin
process(binaryin) begin
tembinaryin<=binaryin; case tembinaryin is
--把0到9的4位二进制码转换成高低位译码
when\
21
聊城大学本科毕业论文(设计)
when\when\when\when\when\when\when\when\when\when\when\when others=>bcdout1<=not\end case; end process; end one;
致谢
本文的主要工作是在XXX老师悉心指导下的以完成的,无论是在理论学习阶段,还是在论文的资料查询、研究和撰写的每一个环节无不得到导师的悉心指导和帮助。X老师治学严谨,学识渊博,品德高尚,平易近人,在我学习期间不仅传授了做学问的秘诀,还传授了做人的准则,这些都将使我终身受益。他对事业的执著追求、诲人不倦的教师风范和对问题的独到见解,都给我留下深刻印象。我愿借此机会向导师表示衷心的感谢!
感谢文中引用过文献的所有作者们,感谢所有关心、支持和帮助过我的老师和同学们!
22
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库乒乓电路—终稿(5)在线全文阅读。
相关推荐: