您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > VHDL课程设计之打地鼠游戏报告-含代码
1题目:VHDL课程设计之打地鼠游戏专业:信息工程班级:电联学生姓名:提交日期:2015年03月05日2目录一、设计任务与要求·······························3二、总体框图··································32.1总体框图·······························32.2设计思路及各模块功能·······················32.2.1设计思路····························32.2.2各模块功能···························3三、选择器件·································4四、模块功能实现·······························74.1分频器模块······························74.2随机数产生模块1······························84.3随机数产生模块2·····························94.4键盘控制模块······························104.5计分器模块·····························144.6LCD1602地鼠显示模块·····························154.7数码管显示模块·······························17五、总体设计电路图·····························18六、游戏说明书·······························186.1前言·································186.2运行说明·······························186.3评分规则·······························18七、心得体会······················································193一、设计任务与要求设计一个挑战反应速度的“打地鼠”游戏机。要求:地鼠随机出现在任何位置,以按键代表锤子,击中地鼠,一旦击中,数码管计分器分数增加。按复位键重新开始游戏。二、总体框图2.1、打地鼠游戏机的总体框图如下图所示:电路设计总体框图2.2、设计思路及各模块功能:2.2.1设计思路:产生伪随机数使地鼠随机出现,外接LCD1602显示地鼠随机出现的位置,以一个特殊字符表示地鼠。游戏者按下按键,与地鼠出现的位置代表的伪随机数进行比较,若一致,计分器进行加分。按下ESC键进行复位,利用50MHz分频作为基本信号源。2.2.2各模块功能介绍:——分频器模块将50MHz的信号源分别分频为游戏所需频率的时钟信号1Hz。分频模块随机数发生模块键盘模块LCD显示模块计分模块数码管显示模块4——伪随机数产生模块产生伪随机数,使得地鼠出现位置随机。——计分模块接收来自键盘控制模块的信号,正确一次加一分。——LCD显示模块在1HZ时钟信号下,根据产生的伪随机数使得2*16的LCD屏上随机出现代表地鼠的字符。——键盘控制模块玩家按下地鼠出现的位置可能对应的按键,按键地址与地鼠出现的位置对应的伪随机进行比较,若一致,输出一个为‘1’的correct信号。——计分模块接收来自键盘控制模块的信号,正确一次加一分。——数码管显示模块通过数码管,将计分模块的计分结果显示出来。三、器件选择设计开发软件:Quartus28.1/9.0主芯片:1.FPGA芯片:EP2C8Q208C8EP2C8Q208C8:含8,256Les;165,888RAMbits;2个PLL;18Multipliers;139个I/O口2.配置芯片:EPCS1/EPCS4FPGA串行配置芯片含1MbitFlash/4MbitFlashEP2C5Q208C8:配置EPCS1EP2C8Q208C8:配置EPCS43.FLASH:AM29LV160DB16Mbit(2M×8Bit/1M×16Bit)4.SRAM:IS61LV25616256K×16Bit55.I2C存储器电路:24LC16B16Kbit(8Blocks×256×8Bit)6.SPI存储器电路:93LC46B1Kbit(64×16Bit)7.有源晶振:50MHz8.电源芯片:LM1117-3.3V、LM1117-1.5V9.调试接口:AS、JTAG调试接口10.核心板尺寸:100mm×79mm外接LCD1602显示屏工业字符型液晶,能够同时显示16x02即32个字符。(16列2行)注:为了表示的方便,后文皆以1表示高电平,0表示低电平。1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。市面上字符液晶大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。2管脚功能61602采用标准的16脚接口,其中:第1脚:GND为电源地第2脚:VCC接5V电源正极第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。第5脚:RW为读写信号线,高电平(1)时进行读操作,以51为例的简单原理图低电平(0)时进行写操作。第6脚:E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。第7~14脚:D0~D7为8位双向数据端。第15~16脚:空脚或背灯电7源。15脚背光正极,16脚背光负极。特性3.3V或5V工作电压,对比度可调内含复位电路提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能有80字节显示数据存储器DDRAM内建有192个5X7点阵的字型的字符发生器CGROM8个可由用户自定义的5X7的字符发生器CGRAM特征应用微功耗、体积小、显示内容丰富、超薄轻巧,常用在袖珍式仪表和低功耗应用系统中。操作控制注:关于E=H脉冲——开始时初始化E为0,然后置E为1。外接PS/2键盘进行控制四、功能模块4.1分频器模块分频器模块接收晶振提供的50MHz时钟信号,通过计数将其分频为1s的时钟脉冲信号并输出。输出秒脉冲的VHDL程序如下:LIBRARYIEEE;USEIEEE.std_logic_1164.ALL;useieee.std_logic_unsigned.all;ENTITYdividerISPORT(clk:INSTD_LOGIC;8rst_n:INSTD_LOGIC;clk_1HZ:BUFFERSTD_LOGIC);ENDdivider;ARCHITECTUREbehavOFdividerISBEGINPROCESS(clk,rst_n)VARIABLEcount:INTEGERrange0TO50000000;BEGINIFrst_n='0'THENcount:=0;ELSIFclk'eventANDclk='1'THENIFcount=25000000THENcount:=0;clk_1HZ=NOTclk_1HZ;ELSEcount:=count+1;ENDIF;ENDIF;ENDPROCESS;ENDbehav;4.2随机数产生模块1以下程序为产生4位伪随机数的代码,取ram为一个4位数,将第1位和第4位进行同或得结果feedback,将ram的前3位和feedback合并取代原来4位的ram,新的ram即是得到的一个伪随机数,不停的反复就可得到一组序列为16的伪随机数。这个伪随机数产生器的伪随机数传递给LCD显示屏。LibraryIEEE;useIEEE.std_logic_1164.all;useIEEE.std_logic_arith.all;entitybeeisport(clk:instd_logic;reset:instd_logic;data_out:outUNSIGNED(3downto0));endbee;architecturertlofbeeissignalfeedback:std_logic;signalram:UNSIGNED(3downto0);9beginfeedback=ram(3)xnorram(0);latch_it:process(clk,reset)beginif(reset='1')thenram=(others='0');elsif(clk='1'andclk'event)thenram=ram(2downto0)&feedback;endif;endprocess;data_out=ram(3downto0);endRTL;4.3随机数产生模块2原理同随机数产生模块1,产生的伪随机数传递给键盘控制模块。LibraryIEEE;useIEEE.std_logic_1164.all;useIEEE.std_logic_arith.all;entitylai2isport(clk:instd_logic;reset:instd_logic;data_out:outUNSIGNED(3downto0));endlai2;architecturertloflai2issignalfeedback:std_logic;signalram:UNSIGNED(3downto0);beginfeedback=ram(3)xnorram(0);latch_it:process(clk,reset)beginif(reset='1')thenram=(others='0');elsif(clk='1'andclk'event)thenram=ram(2downto0)&feedback;endif;endprocess;data_out=ram(3downto0);endRTL;104.4键盘控制模块根据得到伪随机产生模块传递的信号num1,将此时按下的按键地址与伪随机数所代表的0地址进行比较,若一致,则输出为‘1’的correct信号给下面的计分器模块。libraryIEEE;useIEEE.std_logic_1164.all;useIEEE.std_logic_arith.all;useIEEE.std_logic_unsigned.all;entityps2scanisport(clk:inSTD_LOGIC;rst_n:inSTD_LOGIC;num1:instd_logic_vector(3downto0);ps2k_clk:inSTD_LOGIC;ps2k_data:inSTD_LOGIC;LCD_Data:instd_logic_vector(8downto0);correct:outstd_logic;signalresss:outstd_logic;led:outSTD_LOGIC_VECTOR(5downto0));endentityps2scan;architectureps2receiveofps2scanissignalps2k_clk_r:STD_LOGIC_VECTOR(2downto0);signalneg_ps2k_clk:STD_LOGIC;signaltemp_data:STD_LOGIC_VECTOR(7downto0);signalnum:STD_LOG
本文标题:VHDL课程设计之打地鼠游戏报告-含代码
链接地址:https://www.777doc.com/doc-4770148 .html