您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于eda拔河游戏机设计
中南林业科技大学课程设计报告设计名称:基于EDA的拔河游戏系统设计姓名:学号:专业班级:电子信息工程一班院(系):计算机与电子信息工程学院设计时间:2013年1月设计地点:指导教师评语:成绩:签名:年月日目录1.课程设计的任务和基本要求...............................................设计目的.................................................................设计要求.................................................................设计方案.................................................................2.设计原理及总体框图......................................................3程序设计.................................................................整体电路图块............................................................模块设计................................................................模块a分频器设计......................................................模块b防抖设计........................................................模块c计数模块........................................................模块d译码模块........................................................4引脚锁定.................................................................5硬件调试与结果分析.............................................6.心得体会................................................................1.课程设计的任务和基本要求设计目的通过设计一个简易拔河比赛游戏机(1)熟练掌握EDA软件QUARTUSII的使用方法;(2)能利用EDA软件QUARTUSII进行一个电子技术综合问题的设计;(3)掌握FPGA系统各种外围接口的灵活运用,培养实验的仿真及下载技能。(4)掌握按键分配、CLOCK调用、LED数码管等外围接口的VerilogHDL语言编程;(5)通过软件编程和仿真理解并体会VHDL语言的常用编写语言和语法规;(6)培养分析、寻找和排除电子电路中常见故障的能力;设计要求1设计一个能进行拔河游戏的电路。2电路使用7个发光二极管开机后只有中间一个发亮,此即拔河的中心点。3游戏双方各持一个按钮,迅速地、不断地按动,产生脉冲,谁按得快,亮点就向谁的方向移动,每按一次,亮点移动一次。4亮点移到任一方终端二极管时,这一方就获胜,此时双方按钮均无作用,输出保持,只有复位后才使亮点恢复到中心。5用数码管显示获胜者的盘数,并设置复位按钮。设计方案用7个发光二极管排列成一行,模拟拔河过程。游戏开始时只有中间的发光二极管点亮,作为拔河的中心线。用按键来模拟拔河队员,按下键表示用力,根据甲乙双方按键的快慢与多少,决定亮点移动的方向。移到任一方终端二极管时,该方获胜,该方记分牌自动加分,然后开始下一局的比赛。比赛采用五局三胜制,甲乙双方各自记分。当记分牌清零后,重新开始下一场拔河比赛。设置“比赛开始”按键,实现一对一拔河:设置复位键,按下后比分清零,双方重新开始比赛;2.设计原理及总体框图基本原理由设计内容可知,需要一个十进制的计数器,用于对双方按键的次数计数。当led灯移动到一端时,那边的选手得一分,通过比较模块比较两位选手的胜利的得分,并通过译码器显示在数码管上。设计要求用1MHZ的频率,二设计用到的是100Hz,5Hz,和1Hz的频率,所以要设计一个程序进行分频。显示控制部分设计要求在发光二极管上显示游戏状态,双方每按十次,亮点向先按十次移动一次,对脉冲进行计数,每十次移一位。需接入一个清零端,用于复位。将以上程序组装起来。当两位选手其中一位选手先得到3分时,比赛结束。总体框图3程序设计1总体设计电路2模块设计及相应模块程序a分频器libraryIEEE;useIEEE.std_logic_1164.all;useIEEE.std_logic_unsigned.all;entitydivisionisport(clk:instd_logic;clk_100,clk_4,clk_1:outstd_logic);分频器division防抖fangdou计数count比赛compete译码enddivision;architecturedivision_bodyofdivisionissignalcount1:integerrange0to4999;--signalcount1:integerrange0to1;signalcount2:integerrange0to124999;signalcount3:integerrange0to49;--signalcount3:integerrange0to1;signalclk1,clk2,clk3:std_logic;begin--得到100HZ的频率process(clk)beginif(clk'eventandclk='1')thenif(count1=4999)thencount1=0;clk1=notclk1;elsecount1=count1+1;endif;endif;endprocess;--得到4HZ的频率process(clk)beginif(clk'eventandclk='1')thenif(count2=124999)thencount2=0;clk2=notclk2;elsecount2=count2+1;endif;endif;endprocess;--得到1HZ的频率process(clk1)beginif(clk1'eventandclk1='1')thenif(count3=49)thencount3=0;clk3=notclk3;elsecount3=count3+1;endif;图3分频器endif;endprocess;clk_100=clk1;clk_4=clk2;clk_1=clk3;enddivision_body;b防抖模块architecturefangdou_player2_bodyoffangdou_player2issignalmp1,mp2:std_logic;beginprocess(clk_100)beginif(clk_100'eventandclk_100='0')thenmp2=mp1;mp1=player2_b;endif;endprocess;player2=clk_100andmp1and(notmp2);endfangdou_player2_body;c计数模块libraryIEEE;useIEEE.std_logic_1164.all;useIEEE.std_logic_unsigned.all;entitycountisport(clk_1:instd_logic;switch:instd_logic;player1,player2:instd_logic;sum1,sum2:outintegerrange0to10);endcount;architecturecount_bodyofcountissignalp1,p2:integerrange0to10;beginsum1=p1;sum2=p2;process(player1,player2,switch,clk_1)beginif(switch='1')thenif(clk_1='0')then--p1=0;--p2=0;if(player1'eventandplayer1='1')thenp1=p1+1;endif;if(player2'eventandplayer2='1')thenp2=p2+1;endif;elsep1=0;p2=0;endif;elsep1=0;p2=0;endif;endprocess;endcount_body;译码libraryIEEE;useIEEE.std_logic_1164.all;useIEEE.std_logic_unsigned.all;entitydevodeisport(clk_1:instd_logic;clk:instd_logic;nixie_state1,nixie_state2:instd_logic_vector(1downto0);leds_state:instd_logic_vector(2downto0);nixie1:outstd_logic_vector(6downto0);nixie2:outstd_logic_vector(6downto0);leds:outstd_logic_vector(6downto0));enddevode;architecturedevode_bodyofdevodeissignaltmp_leds:std_logic_vector(6downto0);signaltmp_nixie1:std_logic_vector(6downto0);signaltmp_nixie2:std_logic_vector(6downto0);signaltmp_nixiea:std_logic_vector(6downto0);signaltmp_nixieb:std_logic_vector(6downto0);beginleds=tmp_leds;process(clk_1,leds_state,nixie_state1,nixie_state2)beginif(clk_1'eventandclk_1='0')thencaseleds_stateiswhen100=tmp_leds=0001000;when011=tmp_leds=0010000;when010=tmp_leds=0100000;when001=tmp_leds=1000000;when101=tmp_leds=0000100;when110=tmp_leds=0000010;when111=tmp_leds=0000001;whenothers=tmp_leds=0001000;endcase;endif;if(clk_1'eventandclk_1='0')thencasenixie_state1iswhen00=tmp_nixie1=1111110;when01=tmp_nixie1=0110000;when10=tmp_nixie1=1101101;when11=tmp_nixie1=1111001;endcase;endif;if(clk_1'eventandclk_1='0')thencasenixie_state2iswhen00=tmp_nixie2=1111110;when01=tmp_nixie2=0110000;when10=tmp_nixie2=1101101;when11=tmp_nixie2=1111001;end
本文标题:基于eda拔河游戏机设计
链接地址:https://www.777doc.com/doc-5804475 .html