EDA课程设计Word下载.docx

上传人:b****6 文档编号:15904930 上传时间:2022-11-16 格式:DOCX 页数:12 大小:353.74KB
下载 相关 举报
EDA课程设计Word下载.docx_第1页
第1页 / 共12页
EDA课程设计Word下载.docx_第2页
第2页 / 共12页
EDA课程设计Word下载.docx_第3页
第3页 / 共12页
EDA课程设计Word下载.docx_第4页
第4页 / 共12页
EDA课程设计Word下载.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

EDA课程设计Word下载.docx

《EDA课程设计Word下载.docx》由会员分享,可在线阅读,更多相关《EDA课程设计Word下载.docx(12页珍藏版)》请在冰豆网上搜索。

EDA课程设计Word下载.docx

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)运动到某方的最后一位时,参赛者应能果断地按下位于自己一方的按钮开关,即表示启动球拍击球。

设置自动记分电路,甲、乙双方各用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:

start:

pat1,pat2:

instd_logic_vector(1to2);

hit1,hit2:

--定义各输入输入端口

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<

elsifclk'

eventandclk='

then

ifcount1="

10101"

orcount2="

then

elsifstart='

0'

then

else

casestateis

whenwaitpat=>

--进程处于等待发球状态

caseserveis

when"

10"

=>

i<

=1;

state<

=lighton1;

01"

=8;

=lighton8;

11"

whenothers=>

endcase;

whenlighton1=>

--进程处于第一盏灯亮状态

=2

ifhit2='

=count1+1;

=waitpat;

else

=ball2;

endif;

whenlighton8=>

--进程处于第八盏灯亮状态

=7;

ifhit='

=count2+1;

=ball1;

whenball1=>

--进程处于球向乙移动状态

ifhit1='

elsifi=2theni<

=allow1;

elsei<

=i-1;

whenball2=>

--进程处于球向乙移动状态

ount1<

elsifi=7theni<

=allow2;

=i+1;

whenallow1=>

--进程处于允许甲击球状态

theni<

=2;

elsecount2<

whenallow2=>

--进程处于允许乙击球状态

theni<

elsecount1<

endprocess;

(3)译码分数显示模块

该模块由七段译码器组成,它是由7段发光二极管组成的用于显示数字的器件,称作记分译码器(mudecoder)。

而状态进程中的记分是由5位二进制码来表示的,即count1和count2。

以下程序就是实现从5位二进制码转换成七段译码显示。

entitymudecoderis—译码器实体定义

port(binaryin:

instd_logic_vector(1to5);

--5位二进制码的输入端口

bcdout1:

--七段译码器输出端口

bcdout2:

outstd_logic_vector(1to7)

);

endmudecoder;

architecturemofmudecoderis

signaltembinaryin:

std_logic_vector(1to5);

begin

process(binaryin)

tembinaryin<

=binaryin;

casetembinaryinis--将二进制码转换成七段译码

when"

bcdout1<

1111110"

bcdout2<

00001"

0110000"

00010"

1101101"

00011"

1111001"

00100"

0110011"

00101"

1011011"

00110"

1011111"

00111"

1110000"

01000"

1111111"

01001"

1111011"

01010"

01011"

01100"

01101"

01111"

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 书信模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1