EDA课程设计.docx
- 文档编号:2993937
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:12
- 大小:353.74KB
EDA课程设计.docx
《EDA课程设计.docx》由会员分享,可在线阅读,更多相关《EDA课程设计.docx(12页珍藏版)》请在冰豆网上搜索。
EDA课程设计
东北石油大学
课程设计
课程EDA技术课程设计
题目乒乓球比赛游戏机
院系电子科学学院
专业班级
学生姓名
学生学号
指导教师
2013年3月8日
东北石油大学课程设计任务书
课程EDA技术课程设计
题目乒乓球比赛游戏机
专业姓名学号
主要内容、基本要求、主要参考资料等
主要内容:
设计一个乒乓球游戏机,比赛由甲乙双方和裁判3人构成,能模拟比赛的基本过程和规则并能自动裁判和记分。
基本要求:
1、设计一个由甲、乙双方参赛,有裁判的3人乒乓球游戏机。
2、用8个(或更多个)LED排成一条直线,以中点为界,两边各代表参赛双方的位置,其中一只点亮的LED指示球的当前位置,点亮的LED依此从左到右,或从右到左,其移动的速度应能调节。
3、当“球”(点亮的那只LED)运动到某方的最后一位时,参赛者应能果断地按下位于自己一方的按钮开关,即表示启动球拍击球。
若击中,则球向相反方向移动;若未击中,则对方得1分。
一方得分时,电路自动响铃3秒,这期间发球无效,等铃声停止后方能继续比赛。
4、设置自动记分电路,甲、乙双方各用2位数码管进行记分显示,每计满21分为1局。
5、甲、乙双方各设一个发光二极管,表示拥有发球权,每隔5次自动交换发球权,拥有发球权的一方发球才有效。
主要参考资料:
[1]潘松著.EDA技术实用教程(第二版).北京:
科学出版社,2005.
[2]康华光主编.电子技术基础模拟部分.北京:
高教出版社,2006.
[3]阎石主编.数字电子技术基础.北京:
高教出版社,2003.
完成期限2013.3.4
指导教师
专业负责人
2013年3月8日
一、设计思想
1、基本原理
乒乓球比赛游戏机的设计的原理是应用可编程逻辑器件FPGA芯片为控制核心,附加少量的外围电路,采用VHDL语言编程实现设计而成。
此游戏机为由甲,乙双方参赛,裁判参与的3人乒乓球游戏机。
用8个LED排成一条直线,以中点为界,两边各自代表参赛双方的位置,其中一只点亮的LED指示球的当前位置,点亮的LED依此从左到右或从右到左。
当“球”(点亮的那只LED)运动到某方的最后一位时,参赛者应能果断地按下位于自己一方的按钮开关,即表示启动球拍击球。
若击中,则球向相反方向移动;若未击中,则对方得1分。
一方得分时,电路自动响铃3秒,这期间发球无效,等铃声停止后方能继续比赛。
设置自动记分电路,甲、乙双方各用2位数码管进行记分显示,每计满21分为1局。
游戏机的甲、乙双方各设一个发光二极管,表示拥有发球权,每隔5次自动交换发球权,拥有发球权的一方发球才有效。
以此,来实现乒乓球比赛游戏机的游戏功能。
2、设计框图
图1乒乓球比赛游戏系统设计框图
该乒乓球比赛游戏系统由裁判端、选手端、控制端、译码器、数码管显示端、时钟及分频器、LED发光二极管球台组成。
二、设计步骤和调试过程
1、模块设计和相应模块代码
该乒乓球比赛游戏机主要包括:
乒乓球游戏机外接端口模块设计,比赛状态进程模块设计,译码分数显示模块的设计以及构造体模块设计。
(1)乒乓球游戏机外接端口设计
端口设计主要是指定义乒乓球游戏机的控制芯片外接输出与输入相连接的端口。
其中包括:
复位端口reset,它的作用是当系统出现错误或者无法恢复初始状态时使其复位;
甲、乙发球输入端为pat1和pat2,逻辑‘1’分别表示甲方和乙方的发球,逻辑‘0’分别表示甲乙未发球;甲乙击球输入端hit1和hit2,逻辑‘1’分别表示甲击球和乙击球,逻辑‘0’分别表示甲乙未击球;
比赛开始按钮start,逻辑‘1’表示开始游戏;逻辑‘0’表示不可以开始游戏;
时钟输入端口clk。
发光二极管的输出端,逻辑‘1’表示亮,逻辑‘0’表示暗;
甲乙各两个译码器。
程序如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;--引用必要的库函数和包集合
entityppyouxiis--实体名为ppyouxi
port(reset:
instd_logic;
clk:
instd_logic;
start:
instd_logic;
pat1,pat2:
instd_logic_vector(1to2);
hit1,hit2:
instd_logic;--定义各输入输入端口
light:
outstd_logic_vector(1to8);--控制8个发光二极管的输出端口
write11,write12,write21,write22:
outstd_logic_vector(1to7);--4个用于控制4个7段译码器的输出端口
endppyouxi;
(2)比赛状态进程模块设计
比赛状态进程包括七个状态,分别是waitpat,lighton1,ball2,allow2,lighton8,ball1,和allow1它们代表的具体数值依次是0到6。
在波形模拟图中是用数值来表示状态的。
状态进程程序如下:
process(clk)--clk作为敏感信号触发进程
begin
ifreset='1'then--异步置位
i<=0;count1<="00000";count2<="00000";
elsifclk'eventandclk='1'then
ifcount1="10101"orcount2="10101"then
i<=0;count1<="00000";count2<="00000";
elsifstart='0'then
i<=0;count1<="00000";count2<="00000";
else
casestateis
whenwaitpat=>--进程处于等待发球状态
caseserveis
when"10"=>i<=1;state<=lighton1;
when"01"=>i<=8;state<=lighton8;
when"11"=>i<=0;
whenothers=>i<=0;
endcase;
whenlighton1=>--进程处于第一盏灯亮状态
i<=2
ifhit2='1'then
i<=0;
count1<=count1+1;state<=waitpat;
else
state<=ball2;
endif;
whenlighton8=>--进程处于第八盏灯亮状态
i<=7;
ifhit='1'then
i<=0;
count2<=count2+1;state<=waitpat;
else
state<=ball1;
endif;
whenball1=>--进程处于球向乙移动状态
ifhit1='1'then
i<=0;
count2<=count2+1;state<=waitpat;
elsifi=2theni<=1;
state<=allow1;
elsei<=i-1;
endif;
whenball2=>--进程处于球向乙移动状态
ifhit2='1'then
i<=0;
ount1<=count1+1;state<=waitpat;
elsifi=7theni<=8;
state<=allow2;
elsei<=i+1;
endif;
whenallow1=>--进程处于允许甲击球状态
ifhit1='1'theni<=2;
state<=ball2;
elsecount2<=count2+1;i<=0;
state<=waitpat;
endif;
whenallow2=>--进程处于允许乙击球状态
ifhit2='1'theni<=7;state<=ball1;
elsecount1<=count1+1;i<=0;
state<=waitpat;
endif;
endcase;
endif;
endif;
endprocess;
(3)译码分数显示模块
该模块由七段译码器组成,它是由7段发光二极管组成的用于显示数字的器件,称作记分译码器(mudecoder)。
而状态进程中的记分是由5位二进制码来表示的,即count1和count2。
以下程序就是实现从5位二进制码转换成七段译码显示。
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entitymudecoderis—译码器实体定义
port(binaryin:
instd_logic_vector(1to5);--5位二进制码的输入端口
bcdout1:
outstd_logic_vector(1to7);--七段译码器输出端口
bcdout2:
outstd_logic_vector(1to7)
);
endmudecoder;
architecturemofmudecoderis
signaltembinaryin:
std_logic_vector(1to5);
begin
process(binaryin)
begin
tembinaryin<=binaryin;
casetembinaryinis--将二进制码转换成七段译码
when"00000"=>bcdout1<="1111110";bcdout2<="1111110";
when"00001"=>bcdout1<="1111110";bcdout2<="0110000";
when"00010"=>bcdout1<="1111110";bcdout2<="1101101";
when"00011"=>bcdout1<="1111110";bcdout2<="1111001";
when"00100"=>bcdout1<="1111110";bcdout2<="0110011";
when"00101"=>bcdout1<="1111110";bcdout2<="1011011";
when"00110"=>bcdout1<="1111110";bcdout2<="1011111";
when"00111"=>bcdout1<="1111110";bcdout2<="1110000";
when"01000"=>bcdout1<="1111110";bcdout2<="1111111";
when"01001"=>bcdout1<="1111110";bcdout2<="1111011";
when"01010"=>bcdout1<="0110000";bcdout2<="1111110";
when"01011"=>bcdout1<="0110000";bcdout2<="0110000";
when"01100"=>bcdout1<="0110000";bcdout2<="1111001";
when"01101"=>bcdout1<="0110000";bcdout2<="0110011";
when"01111"=>bcdout1<="0110000";bcdout2<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)