VHDL课程设计数字频率计乒乓游戏机二合一.docx
- 文档编号:12207735
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:33
- 大小:478.23KB
VHDL课程设计数字频率计乒乓游戏机二合一.docx
《VHDL课程设计数字频率计乒乓游戏机二合一.docx》由会员分享,可在线阅读,更多相关《VHDL课程设计数字频率计乒乓游戏机二合一.docx(33页珍藏版)》请在冰豆网上搜索。
VHDL课程设计数字频率计乒乓游戏机二合一
湖南科技大学
信息与电气工程学院
《VHDL硬件描述语言课程设计报告》
题目:
数字频率计、乒乓游戏机
专业:
通信工程
班级:
一班
姓名:
YC
学号:
指导教师:
胡仕刚
2015年01月04日
信息与电气工程学院
课程设计任务书
2014—2015学年第一学期
专业:
学号:
姓名:
课设名称:
设计题目:
完成期限:
自年月日至年月日共周
设计依据、要求及主要内容(可另加附页):
指导教师(签字):
批准日期:
年月日
摘要1
引言2
第一章概述2
1.1设计概述2
1.1.1数字频率计概述2
1.1.2乒乓球游戏机概述2
1.2课程设计的总体目标2
1.3设计原理3
1.3.1数字频率计设计原理3
1.3.2乒乓游戏机设计原理3
第二章设计分析4
2.1数字频率计的设计分析4
2.1.1设计任务及要求4
2.1.2模块的划分5
2.2乒乓球游戏机的设计分析5
2.2.1设计任务及要求5
2.2.2模块的划分6
第三章各功能模块基于VHDL的设计6
3.1数字频率计的各模块设计6
3.1.1时基产生与测频时序控制电路模块的VHDL源程序6
3.1.2待测信号脉冲计数电路模块的VHDL源程序7
3.1.3锁存与译码显示控制电路模块的VHDL源程序8
3.1.4顶层电路的VHDL源程序10
3.2乒乓球游戏机各模块的设计10
3.2.1主程序状态机模块10
3.2.2数码管译码模块12
3.2.3按键消抖模块13
第四章波形仿真14
4.1数字频率计的波形仿真14
4.1.1时基产生与测频时序控制电路模块的仿真14
4.1.2待测信号脉冲计数电路模块的仿真15
4.1.3锁存与译码显示控制电路模块的仿真16
4.1.4数字频率计系统的仿真17
4.2乒乓球游戏机波形仿真18
4.2.1发球仿真18
4.2.2正确时刻击球仿真18
4.2.3提早击球仿真19
第五章体会和建议21
参考文献:
22
摘要
设计多功能数字频率计的设计方法采用一种自顶向下分层。
该频率计采用VHDL硬件描述语言编程以MAX+PLUSⅡ为开发环境,极大地减少了硬件资源的占用。
数字频率计模块划分的设计具有相对独立性,可以对模块单独进行设计、调试和修改,缩短了设计周期。
用VHDL编程模拟乒乓球比赛,电路模块由状态机、记分器、译码显示器等部分组成,对各部分编写VHDL算法,进行编译、仿真、逻辑综合、逻辑适配及程序下栽.通过GW48型EDA实验箱的验证,乒乓游戏机能模拟乒乓球比赛的基本过程和规则,并能自动裁判和记分。
关键词:
VHDL;数字频率计;MAX+PLUSⅡ;乒乓游戏机
Abstract
Thispaperpresentsatop-downdesignofmulti-layereddesignmethodofdigitalfrequencymeter.ThefrequencycounterusingVHDLhardwaredescriptionlanguageprogramminginMAX+PLUSⅡforthedevelopmentenvironment,greatlyreducingthehardwareresourcesoftheoccupation.Digitalfrequencymetermoduledesigndivisionoftherelativeindependenceoftheseparatemodulescandesign,debugandmodify,shortenthedesigncycle.
TabletennissimulationgameusingVHDLprogramming,circuitmoduleiscomposedofstatemachine,marker,decodingdisplayparts,eachpartofthepreparationoftheVHDLalgorithm,compile,simulation,logicsynthesis,logicadapterandprogramplanted.ThroughexperimentalverificationboxtypeGW48EDA,tabletennistourbasicprocessandrulesofplayoffunctionsimulationtabletenniscompetition,andcanautomaticallyjudgeandscore.
Keywords:
VHDL;Digitalfrequencymeter;MAX+PLUSⅡ;tabletennisgamemachine
引言
利用VHDL硬件描述语言,采用自顶向下和基于库的设计,设计者不但可以不必了解硬件结构设计,而且将使系统大大简化,提高整体的性能和可靠性。
本课程设计以MAX+plusII为设计平台,设计了基于VHDL的数字频率计和乒乓游戏机两个设计项目。
本设计具有层次性好,结构清晰,仿真效果真实准确等特点。
第一章概述
1.1设计概述
1.1.1数字频率计概述
所谓频率,就是周期信号在单位时间(1s)里变化的次数。
本数字频率计的设计思路是:
(1)根据频率计的测频原理,可以选择合适的时基信号对输入被测信号脉冲进行计数,实现测频的目的。
(2)根据数字频率计的基本原理,本文设计方案的基本思想是分为三个模块来实现其功能,即时基产生与测频时序控制电路模块、待测信号脉冲计数电路模块和锁存与译码显示控制电路模块,并且分别用VHDL对其进行编程,实现计数电路、锁存电路、显示电路等。
1.1.2乒乓球游戏机概述
两人乒乓球游戏机是用9个发光二级管代表乒乓球台,中间一个发光二极管兼做乒乓球网,用点亮的发光二极管按一定方向移动来表示球的运动。
本乒乓球游戏机的设计思路是:
(1)在游戏机的两侧各设置发球和击球开关,甲乙双方按乒乓球比赛规则来操作开关。
当甲方按动发球开关时,靠近甲方的第一个发光二极管亮,然后发光二极管由甲方向乙方依次点亮,代表乒乓球的移动。
(2)当球过网后按照设计者规定的球位乙方就可以击球。
若乙方提前击球或者未击到球,则甲方得分,甲方的记分牌自动加分。
然后重新发球进行比赛,知道一方记分达到21分为止,记分清零,重新开始新一局比赛。
1.2课程设计的总体目标
(1)本设计的任务是熟悉支持VHDL语言的软件,例如:
MAX—PLUS2,ISP,FOUNDATION等,利用这一类软件使用VHDL语言进行设计。
(2)熟悉数字电路及相关专业课程的基本知识并能联系具体程序
(3)正确操作使用VHDL语言相关软件,能编译,调试,仿真VHDL语言程序
(4)设计数字电路,编写程序,实现电路功能。
1.3设计原理
1.3.1数字频率计设计原理
众所周知,频率信号易于传输,抗干扰性强,可以获得较好的测量精度。
因此,频率检测是电子测量领域最基本的测量之一。
频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。
通常情况下计算每秒内待测信号的脉冲个数,即闸门时间为1s。
闸门时间可以根据需要取值,大于或小于1S都可以。
闸门时间越长,得到的频率值就越准确,但闸门时间越长,则每测一次频率的间隔就越长。
闸门时间越短,测得的频率值刷新就越快,但测得的频率精度就受影响。
一般取1s作为闸门时间。
数字频率计的关键组成部分包括测频控制信号发生器、计数器、锁存器、译码驱动电路和显示电路,其原理框图如图1.1所示。
1.3.2乒乓游戏机设计原理
设计该乒乓球游戏机的输入/输出端口。
首先考虑输入端口,一般都应该设置一个异步置位端口Reset,用于在系统不正常时回到初始状态。
两个发球输入端StartA,StartB,逻辑‘1’分别表示甲方和乙方的发球;两个击球输入端Hit1和Hit2,逻辑‘1’分别表示甲击球和乙击球。
一个开始游戏按钮startbutton,处于逻辑‘1’表示可以游戏。
还得有一个时钟输入端口clk。
其次考虑输出端口,芯片应该有9个输出端口来控制9个发光二极管,输出逻辑‘1’即输出一个高电平,可以使发光二极管点亮。
另外,要直观地表示双方的得分,就得用到七段译码器,每方用到2个,可以表示0~21的数字,每个七段译码器需要芯片的7个输出端口来控制,总共需要28个输出端口。
其原理框图如图1.2所示。
按键
系统的逻辑划分图
图1.2乒乓球游戏机原理框图
第二章设计分析
2.1数字频率计的设计分析
2.1.1设计任务及要求
设计一个四位十进制的数字频率计,要求具有以下功能:
(1)测量范围:
1Hz~10kHz。
(2)测量误差
1%。
(3)响应时间
15s。
(4)显示时间不少于1s。
(5)具有记忆显示的功能,即在测量的过程中不刷新数据,等数据过程结束后才显示测量结果,给出待测信号的频率值,并保存到下一次测量结束。
2.1.2模块的划分
根据系统设计要求,系统设计采用自顶向下的设计方法,系统的组成框图如图3.1所示,包括时基产生与测频时序控制电路模块,以及待测信号脉冲计数电路模块和锁存与译码显示控制电路模块。
(1)时基产生与测频时序控制电路模块
时基产生与测频时序控制电路的主要产生计数允许信号EN、清零信号CCLR和锁存信号LOCK。
(2)待测信号脉冲计数电路模块
待测信号脉冲计数电路是对待测脉冲信号的频率进行测量,它可由4个十进制加法计数器组成,其中EN为计数选通控制信号,CLR为计数器清零信号。
在计数器清零信号CLR清零后,当计数选通控制信号EN有效时,开始对待测信号进行计数。
如果计数选通控制信号EN的宽度为1s,那么计数结果就为待测信号的频率;如果计数选通信号EN的宽度为100ms,那么待测信号的频率等于计数结果
10。
(3)锁存与译码显示控制电路模块
锁存与译码显示控制电路用于实现记忆显示,在测量过程中不刷新新的数据,直到测量过程结束后,锁存显示测量结果,并且保存到下一次测量结束。
锁存与译码显示电路的功能是对四位BCD码进行锁存,并转换为对应的4组七段码,用于驱动数码管。
2.2乒乓球游戏机的设计分析
2.2.1设计任务及要求
设计一个乒乓球游戏机,该机模拟乒乓球比赛的基本过程和规则,并能自动裁判和计分。
要求如下:
(1)使用乒乓游戏机的甲、乙双方各在不同的位置发球或击球。
(2)乒乓球的位置和移动方向由灯亮及依次点亮的方向决定。
球移动的速度为0.1~0.5s移动一位(读者可以根据自己的情况进行设定)。
球过网,接球方就可以接球,提前接球或者没击着球均判失分。
(3)比赛按21分为一局,甲、乙双方都应设置各自的记分牌,任何一方先记满21分,该方就算胜出。
按Reset键将记分牌清0后,即可开始新的一局比赛。
2.2.2模块的划分
(1)主程序状态机模块
这个模块式主程序模块,也是最重要的模块。
采用状态机单进程的方法,一共设置了7个状态,分别是“等待发球状态”,“第一盏灯亮状态”,“第六盏灯亮状态”,“球向乙移动状态”,“球向甲移动状态”,“允许甲击球状态”,“允许乙击球状态”。
(2)数码管译码模块
这次采用的是共阳数码管,就是把主程序模块里的计数count1和count2译成7段译码。
(3)按键消抖模块
这个模块主要是当我们按下hit1、hit2、reset、serve四个键时要进行消抖,否则我们的开发板将感应不到。
主要采用的是计数法消抖,我们让按键持续时间大于N个clk时钟周期时,计数器输出一个单脉冲,否则没有脉冲输出。
如果按键开关抖动产生的毛刺宽度小于N个时钟周期,因而毛刺作用不可能使计数器有输出,防抖动目的得以实现。
第三章各功能模块基于VHDL的设计
3.1数字频率计的各模块设计
3.1.1时基产生与测频时序控制电路模块的VHDL源程序
程序ctrl.vhd
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCTRLIS
PORT(CLK:
INSTD_LOGIC;-系统时钟
LOCK:
OUTSTD_LOGIC;-锁存信号
EN:
OUTSTD_LOGIC;-计数允许信号
CLR:
OUTSTD_LOGIC);-清零信号
END;
ARCHITECTUREARTOFCTRLIS
SIGNALQ:
STD_LOGIC_VECTOR(3DOWNTO0);-定义变量
BEGIN
PROCESS(CLK)
BEGIN
IF(CLK'EVENTANDCLK='1')THEN-检测时钟上升沿
IFQ="1111"THEN
Q<="0000";-计数大于15,清零
ELSE
Q<=Q+'1';-允许计数
ENDIF;
ENDIF;
EN<=NOTQ(3);
LOCK<=Q(3)ANDNOT(Q
(2))ANDQ
(1);
CLR<=Q(3)ANDQ
(2)ANDNOT(Q
(1));
ENDPROCESS;
ENDART;
程序主要讲述了由时钟信号产生计数允许信号、清零信号和锁存信号,而且限定了响应时间为不超过15s。
3.1.2待测信号脉冲计数电路模块的VHDL源程序
十进制加法计数器的VHDL源程序
程序cb10.vhd
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCB10IS
PORT(CLK,EN,CLR:
INSTD_LOGIC;
COUNT10:
BUFFERSTD_LOGIC_VECTOR(3DOWNTO0));-计数信号
ENDCB10;
ARCHITECTUREARTOFCB10IS-结构体
BEGIN
PROCESS(CLK,CLR,EN)
BEGIN
IFCLR='1'THEN
COUNT10<="0000";-计数器清零
ELSIFRISING_EDGE(CLK)THEN-检测时钟上升沿
IF(EN='1')THEN-检测是否允许计数
IFCOUNT10="1001"THEN
COUNT10<="0000";-计数值满9清零
ELSE
COUNT10<=COUNT10+'1';-允许计数
ENDIF;
ENDIF;
ENDIF;
ENDPROCESS;
ENDART;
程序主要讲述了十进制加法计数器的使用,在符合了一定的标准以后十进制的使用,在计数器满9后清零。
待测信号脉冲计数器的VHDL源程序
程序count.vhd
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCOUNTIS
PORT(CLK:
INSTD_LOGIC;-待测时钟信号
EN:
INSTD_LOGIC;-计数选通控制信号
CLR:
INSTD_LOGIC;-计数器清零信号
QA,QB,QC,QD:
BUFFERSTD_LOGIC_VECTOR(3DOWNTO0));-结果输出信号
END;
ARCHITECTUREARTOFCOUNTIS
COMPONENTCB10-元件CB10引用说明语句
PORT(CLK,EN,CLR:
INSTD_LOGIC;
COUNT10:
BUFFERSTD_LOGIC_VECTOR(3DOWNTO0));-计数输出信号
ENDCOMPONENT;
SIGNALCLK2:
STD_LOGIC;
SIGNALCLK3:
STD_LOGIC;
SIGNALCLK4:
STD_LOGIC;
BEGIN
CLK2<=NOTQA(3);
CLK3<=NOTQB(3);
CLK4<=NOTQC(3);
U1:
CB10PORTMAP(CLK,EN,CLR,QA);-元件引用例示
U2:
CB10PORTMAP(CLK2,EN,CLR,QB);-元件引用例示
U3:
CB10PORTMAP(CLK3,EN,CLR,QC);-元件引用例示
U4:
CB10PORTMAP(CLK4,EN,CLR,QD);-元件引用例示
ENDART;
3.1.3锁存与译码显示控制电路模块的VHDL源程序
译码显示电路的VHDL源程序
程序bcd7.vhd
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYBCD7IS
PORT(BCD:
INSTD_LOGIC_VECTOR(3DOWNTO0);-BCD输入信号
LED:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));-七段译码输出信号
END;
ARCHITECTUREARTOFBCD7IS
BEGIN
LED<="0111111"WHENBCD="0000"ELSE-对照七段字形显示译码器真值表
"0000110"WHENBCD="0001"ELSE
"1011011"WHENBCD="0010"ELSE
"1001111"WHENBCD="0011"ELSE
"1100110"WHENBCD="0100"ELSE
"1101101"WHENBCD="0101"ELSE
"1111101"WHENBCD="0110"ELSE
"0000111"WHENBCD="0111"ELSE
"1111111"WHENBCD="1000"ELSE
"1101111"WHENBCD="1001"ELSE
"0000000";
ENDART;
程序主要讲述了七段译码器的显示问题,对应的给出了信号输入过程中七段译码器的各种显示。
锁存与译码显示控制模块的VHDL源程序
程序lock.vhd
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYLOCKIS
PORT(LOCK:
INSTD_LOGIC;
QA,QB,QC,QD:
INSTD_LOGIC_VECTOR(3DOWNTO0);
LEDA,LEDB,LEDC,LEDD:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));-频率
计数输出
END;
ARCHITECTUREARTOFLOCKIS
SIGNALQAL,QBL,QCL,QDL:
STD_LOGIC_VECTOR(3DOWNTO0);
COMPONENTBCD7-元件BCD7引用说明语句
PORT(BCD:
INSTD_LOGIC_VECTOR(3DOWNTO0);
LED:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
ENDCOMPONENT;
BEGIN
PROCESS(LOCK)
BEGIN
IF(LOCK'EVENTANDLOCK='1')THEN-检测时钟上升沿
QAL<=QA;
QBL<=QB;
QCL<=QC;
QDL<=QD;
ENDIF;
ENDPROCESS;
U0:
BCD7PORTMAP(QAL,LEDA);-元件引用例示
U1:
BCD7PORTMAP(QBL,LEDB);-元件引用例示
U2:
BCD7PORTMAP(QCL,LEDC);-元件引用例示
U3:
BCD7PORTMAP(QDL,LEDD);-元件引用例示
ENDART;
程序主要讲述了调用七段译码器的显示,将输入的信号经过译码之后在七段译码器上进行显示。
3.1.4顶层电路的VHDL源程序
程序pinlvji.vhd
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYPINLVJIIS
PORT(F_IN,CLK:
INSTD_LOGIC;
ENT,LOCKT,CLRT:
BUFFERSTD_LOGIC;
Z1,Z2,Z3,Z4:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
ENDPINLVJI;
ARCHITECTUREARTOFPINLVJIIS
SIGNALENS,LOCKS,CLRS:
STD_LOGIC;
SIGNALQAS,QBS,QCS,QDS:
STD_LOGIC_VECTOR(3DOWNTO0);
COMPONENTCTRL-元件CTRL引用说明语句
PORT(CLK:
INSTD_LOGIC;
EN,LOCK,CLR:
OUTSTD_LOGIC);
ENDCOMPONENT;
COMPONENTCOUNT-元件COUNT引用说明语句
PORT(CLK,EN,CLR:
INSTD_LOGIC;
QA,QB,QC,QD:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDCOMPONENT;
COMPONENTLOCK-元件LOCK引用说明语句
PORT(LOCK:
INSTD_LOGIC;
QA,QB,QC,QD:
INSTD_LOGIC_VECTOR(3DOWNTO0);
LEDA,LEDB,LEDC,LEDD:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
ENDCOMPONENT;
BEGIN
ENT<=ENS;
LOCKT<=LOCKS;
CLRT<=CLRS;
U1:
CTRLPORTMAP(CLK,ENS,LOCKS,CLRS);-元件引用例示
U2:
COUNTPORTMAP(F_IN,ENS,CLRS,QAS,QBS,QCS,QDS);-元件引用例示
U3:
LOCKPORTMAP(LOCKS,QAS,QBS,QCS,QDS,Z1,Z2,Z3,Z4);-元件引用例示
ENDART;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VHDL 课程设计 数字频率计 乒乓 游戏机 二合一
![提示](https://static.bdocx.com/images/bang_tan.gif)