eda拔河游戏机
【大学】电子拔河游戏机EDA实验

【关键字】大学安徽财经大学电子拔河比赛游戏机的设计姓名:陈辉、胡安宁、郭真真、朱晓庆学号:44、27、18、43学院:管理科学与工程学院专业:电子信息工程指导老师:于帅珍设计时间:2013年5月目录一、设计任务以及要求--------------------------------------- 4二、总体框图----------------------------------------------------4三、选择器件----------------------------------------------------5四、功能模块----------------------------------------------------10五、总体设计----------------------------------------------------16一、设计任务以及要求1. 设计一个模拟拔河游戏机比赛的逻辑电路。
2. 电路使用15个电平指示灯排成一排,开机后只有中间一个点亮,以此作为拔河的中心线。
3. 比赛双方各持一个按键,迅速不断的按动产生脉冲,谁按得快,亮点向谁方向移动。
每按一次,亮点移动一次。
4. 移动就任何一方终端指示灯点亮,这一方得胜,此时双方按键均无作用,输出保持,只有经裁判按动复位后,恢复到中心线。
5. 显示器显示胜者的盘数。
二、总体框图1. 设计方案:(1)本课题所设计的拔河游戏机由15电平指示灯排列成一行,开机之后只有中间一个电平指示灯亮,以此作为拔河的中心线。
可逆计数器原始状态为0000,经译码后输出中间的电平指示灯亮。
游戏双方各持一个按键,迅速地、不断地按动产生脉冲信号,谁按得快,亮点向谁方向移动,每按一次,亮点移动一次。
移就任一方终端指示灯点亮,这一方就获胜,此时双方按键均无作用,输出保持,只有经裁判复位后才使亮点恢复到中心线。
(2)当一局比赛结束后,由点亮该终点灯的信号使电路封锁加减脉冲信号的作用.即实现电路自锁,使加减脉冲无效。
EDA课程设计游戏机

EDA课程设计游戏机一、课程目标知识目标:1. 学生能理解EDA(电子设计自动化)的基本概念,掌握游戏机设计的基本原理。
2. 学生能掌握并运用数字逻辑设计的基础知识,运用EDA工具进行简单游戏机的设计与仿真。
3. 学生了解游戏机硬件组成及其工作原理,能描述常见游戏机功能模块的相互关系。
技能目标:1. 学生能运用EDA工具,如VHDL或Verilog等,进行基础数字电路设计和仿真。
2. 学生通过小组合作,设计并实现一个简易的游戏机控制系统,提高实际动手能力和团队协作能力。
3. 学生能够运用所学知识分析并解决游戏机设计过程中遇到的问题。
情感态度价值观目标:1. 学生培养对电子工程领域的兴趣,激发创新思维和探索精神。
2. 学生通过课程学习,认识到团队合作的重要性,提高沟通与协作能力。
3. 学生在游戏机设计过程中,培养耐心、细致、负责的学习态度,提高面对困难的勇气和自信心。
本课程旨在帮助学生将理论知识与实际应用相结合,提高学生的创新能力和实践能力。
针对初中年级学生的特点,课程内容以趣味性、实践性和互动性为主,注重培养学生的动手操作能力和团队协作精神。
在教学过程中,关注学生的个体差异,鼓励学生主动探究,激发学生的学习兴趣。
通过本课程的学习,使学生在掌握基本知识的同时,提高综合素养。
二、教学内容1. 电子设计自动化(EDA)基本概念:介绍EDA的定义、发展历程及其在电子设计中的应用。
相关教材章节:第一章 电子设计自动化概述2. 数字逻辑设计基础:讲解逻辑门、组合逻辑电路、时序逻辑电路等基础知识。
相关教材章节:第二章 数字逻辑设计基础3. EDA工具使用:学习VHDL/Verilog等硬件描述语言,掌握EDA工具的基本操作。
相关教材章节:第三章 EDA工具与硬件描述语言4. 游戏机硬件组成及工作原理:分析游戏机的各个功能模块及其相互关系。
相关教材章节:第四章 常见游戏机硬件组成及工作原理5. 游戏机控制系统设计:以小组合作形式,运用所学知识设计并实现简易游戏机控制系统。
eda课程设计30个题目

1数字频率计1)设计一个能测量方波信号的频率的频率计。
2)测量的频率范围是0 999999Hz。
3)结果用十进制数显示。
2乒乓球游戏机1)用8个发光二极管表示球;用两个按钮分别表示甲乙两个球员的球拍2)一方发球后,球以固定速度向另一方运动(发光二极管依次电量),当球达到最后一个发光二极管时,对方击球(按下按钮)球将向相反方向运动,在其他时候击球视为犯规,给对方加1分;都犯规,各加1分;3)甲乙各有数码管计分4)裁判有一按钮,可系统初始化,每次得分后,按下一次3彩灯控制器1)设计一个彩灯控制器,使十个彩灯(LED管)能连续发出四种以上不同的显示形式(如奇数依次亮),;2)随着彩灯显示图案的变化,发出不同的音响声(可用不同频率的矩形波产生)。
4速度表1)显示汽车时速Km/h2)车轮每转一圈,有一个传感脉冲;每个脉冲代表1m的距离3)采样周期设为10S4)*要求显示到小数点后2位5)数码管显示6)*超速报警5拔河游戏机1)设计一个能进行拔河游戏的电路。
2)电路使用15个(或9个)发光二极管,开机后只有中间一个发亮,此即拔河的中心点。
3)游戏双方各持一个按钮,迅速地、不断地按动,产生脉冲,谁按得快,亮点就向谁的方向移动,每按一次,亮点移动一次。
4)亮点移到任一方终端二极管时,这一方就获胜,此时双方按钮均无作用,输出保持,只有复位后才使亮点恢复到中心。
5)*用数码管显示获胜者的盘数6 6 数字跑表1)具有暂停/启动功能2)具有重新开始功能3)用6个数码管分别显示百分秒、秒和分钟4)能计两个人跑步时间,并能选择显示77 电梯控制器1)5层电梯控制器,用5个led显示电梯行进过程,并用数码管显示电梯当前所在楼层位置,每层电梯入口处设有上楼和下楼请求按钮,按下按钮,则相应楼层的led亮2)电梯到达请求楼层,相应的请求led灯灭,电梯门打开,开门5S,电梯自动关门,继续上行(下行)3)每层设有电梯上行和下行指示灯4)能记忆电梯内部的请求信号88 篮球计分器1)具有30秒计时、显示2)可对计时器清零、置数、启动和暂停3)30秒倒计时4)两个数码管显示两队比分5)超时报警并可解除报警99电子琴1)设计一个简易电子琴;2)利用一基准脉冲产生1,2,3,。
02 拔河游戏机的设计与制作

拔河游戏机的设计与制作电子游戏是常见的娱乐活动,电子游戏的设计要趣味性强、操作简单。
通过对它的设计扩展设计思路,增强综合运用知识和实践操作能力。
一、设计任务游戏分甲、乙两方,设计一拔河机,用按键的速度来模拟双方的力量,以点亮的发光二极管的左右移动来显示双方比赛的状态。
1. 拔河游戏机用15个(或9个)发光二极管排成一排,比赛开始时,中间的发光二极管点亮,以此作为拔河的中心线。
2. 游戏双方各持一个按键,迅速地、不间断地按动各自的按键以产生脉冲,谁按得快,亮点就向谁方移动,每按一次,亮点移动一次。
3. 当亮点移到任一方终端二极管点亮时,这方就得胜。
此时发光二极管发光状态保持,双方按键均无效。
只有经复位后才能使亮点回到中心线,开始新一轮的比赛。
4. 设置一显示器显示甲乙双方各赢的局数。
二、电路设计拔河游戏机的原理框图如图1所示。
图1 拔河游戏机组成框图甲乙双方通过各自的按键,不断产生脉冲,产生的脉冲分别加到可逆计数器的加端和减端,计数器根据输入的加/减脉冲数不断改变计数值,该计数值作为地址码加到译码器上,以其相应输出端驱动发光二极管LED发光。
每当一方的终端发光二极管点亮时,该方获胜,本轮比赛结束。
此时控制器输出控制信号使计数器保持不变,双方按键均无效。
同时取胜计数器给获胜方计入1并显示获胜次数。
可逆计数器的种类虽然很多,但就计数方向的控制方式来说不外乎两类,一类是以计数控制端“U/D”的电平高低来决定计数器是加计数器还是减计数器,另一类是有两个计数输入端,一个输入端输入的脉冲做加计数,另一个输入端输入的脉冲做减计数。
在拔河游戏机中,需要对双方的脉冲进行快速的加/减计数,因此选用第二类可逆计数器比较方便。
1. 输入脉冲产生电路可逆计数器有两个计数输入端,分别接按键的输入脉冲,但当计数器要求进行加计数时,减计数输入端必须接高电平;同样,进行减计数时,加计数输入端也必须接高电平。
若把甲、乙双方按键产生的脉冲直接输入到可逆计数器的CP D(减计数时钟输入端)和CP U (加计数时钟输入端),则会有很多时候在进行计数输入时,另一计数输入端为低电平,使计数器不能正常计数,双方按键均失去作用,拔河比赛不能正常进行。
(完整word版)电子拔河游戏机实验报告

电子技术综合实验设计报告设计题目:电子拔河游戏机专业班级:学生:学号:指导教师:一、设计任务电子拔河游戏机是一种能容纳甲乙双方参赛或甲乙双方加裁判的三人游戏电路。
由一排LED发光二极管表示拔河的电子绳。
由甲、乙二人通过按钮开关使发光的LED管向自己一方的终点移动,当亮点移到任何一方的终点时,则该方获胜,连续比赛多局以定胜负。
二、设计要求1)由裁判下达比赛开始命令后,甲乙双方才能输入信号,否则,由于电路具有自锁功能,使输入信号无效。
2)电子绳由17个LED管构成,裁判下达比赛开始命令后,位于电子绳中点的LED管发亮。
甲、乙二人通过按钮开关使发光的管向自己一方的终点移动,并阻止其向对方延伸。
当点亮的LED管到达某一方的终点时,该方获胜。
此时通过自锁功能锁定电路,使输入不再有效,必须由裁判再次发出比赛开始命令时方能开始下一次比赛。
3)某方赢一次,有计分电路自动给该方加1分,通过多次比赛以定胜负。
三、总体方案设计本方案中,有效输入信号代表的是拔河的力度的相对大小。
则当A=1,B=0时,表示甲的力度比乙的力度大;当B=1,A=0时,表示乙的力度比甲的力度大;当A=1,且B=1时,表示甲的力度与乙的力度一样大;当A=0且B=0时,表示甲、乙均还未开始拔河。
当裁判员下达比赛开始命令后,比赛开始,甲、乙中的任意一方输入有效信号后,计数器开始计数。
若甲输入有消信号时,进行加计数;若乙输入有效信号时,进行减计数。
电子绳的LED开始移动;当甲、乙同时输入有效信号时,电子绳上点亮的LED灯不再移动。
当一局比赛结束后,电子绳上某一头的LED保持亮,此时,甲、乙的输入信号不再有效,计分电路此时记录并显示甲、乙总共的比赛成绩。
当裁判下达下一局比赛开始的命令后,比赛才能开始,甲、乙输入信号才有效。
基本实验原理图如下:可采用可预置的加/减计数器作主要器件,用计数器的输出状态通过译码器控制LED发亮。
当向计数器输入“加脉冲”,使其作加运算时发亮的灯向甲方延伸,相反,当向计数器输入“减脉冲”时,发亮的灯向相反方向移动。
EDA课程设计题目

1.数控分频器的设计2.8位16进制频率计设计3.数据采集电路和简易存储示波器设计利用FPGA直接控制0809对模拟信号进行采样,然后将转换好的8位二进制数据迅速存储到存储器中,在完成对模拟信号一个或数个周期的采样后,由外部电路系统(如单片机)将存储器中的采样数据读出处理。
4.8位移位相加硬件乘法器设计5.16阶数字滤波器的设计6.基于DSP Builder的FIR数字滤波器设计7.基于DSP Builder的IIR数字滤波器设计实验8. 基于FPGA的十字路口交通灯控制器9. 通用十进制加法器(动态扫描显示)设计一个双4 位的BCD码全加器,其框图如图1所示。
图中的“进位出”C即是本位的进位输出。
全加器的16个输入所对应的管脚同16位拨码开关相连,16个输入管脚是(被加数)A1(3..0)、(被加数)B1(3..0)和(被加数)A2(3..0)、(被加数)B2(3..0)。
相加的十进制结果经译码电路译为7段显示输出,和与进位的值。
要求显示器动态显示两位十进制相加的结果。
10、通用十进制减法器(动态扫描显示)设计一个双4 位的BCD码全减器,其框图如图2所示。
图中的“借位出”C即是本位的借位输出。
全减器的16个输入所对应的管脚同16位拨码开关相连,16个输入管脚是(被减数)A1(3..0)、(被减数)B1(3..0)和(减数)A2(3..0)、(减数)B2(3..0)。
相减的十进制差经译码电路译为7段显示输出,差与借位的值。
要求显示器动态显示两位十进制相减的结果。
11、六人抢答器抢答台数为6;具有抢答开始后20秒倒计时,20秒倒计时后六人抢答显示超时,并报警;能显示超前抢答台号并显示犯规报警;系统复位后进入抢答状态,当有一路抢答按键按下,该路抢答信号将其余各路抢答信号封锁,同时铃声响起,直至该路按键松开,显示牌显示该路抢答台号。
12、出租车计费器实现计费功能,计费标准为武汉起步3元,车行3公里后为1.4元/公里,当计费达到20元后,每公里加收50%的车费,车停止每3分钟增加0.7元。
eda拔河游戏机课程设计
eda拔河游戏机课程设计一、课程目标知识目标:1. 让学生理解并掌握EDA(电子设计自动化)拔河游戏机的基本原理和设计流程。
2. 让学生掌握相关电子元件的功能、连接方式及在电路中的应用。
3. 让学生了解并掌握基础的编程知识,能对拔河游戏机的程序进行简单修改。
技能目标:1. 培养学生动手操作能力,能独立完成拔河游戏机的搭建和调试。
2. 培养学生团队协作能力,通过小组合作完成拔河游戏机的整体设计。
3. 培养学生问题解决能力,能针对游戏中出现的问题进行排查和修复。
情感态度价值观目标:1. 激发学生对电子制作的兴趣,培养创新意识和实践精神。
2. 培养学生良好的团队合作精神,学会倾听、沟通和协调。
3. 增强学生对科技与生活的联系的认识,提高环保意识和责任感。
本课程针对的学生特点为:好奇心强、动手能力强,具有一定的电子和编程基础。
课程性质为实践性较强的项目式学习,旨在让学生在实际操作中掌握知识,提高能力。
教学要求注重理论与实践相结合,以学生为主体,教师为主导,关注学生的个体差异,鼓励学生发挥潜能。
通过本课程的学习,期望学生能够实现上述具体的学习成果,为后续的电子设计奠定基础。
二、教学内容根据课程目标,本章节教学内容主要包括以下几部分:1. 电子元件基础知识:讲解常用电子元件(如电阻、电容、二极管、三极管等)的原理、功能及在电路中的应用。
2. EDA设计工具使用:介绍EDA软件(如Proteus、Multisim等)的基本操作,包括原理图绘制、电路仿真、PCB布线等。
3. 拔河游戏机设计原理:分析拔河游戏机的工作原理,讲解电路设计、程序编写及硬件搭建。
4. 编程知识:结合拔河游戏机程序,教授基础编程语言(如C语言、汇编语言等)的使用。
5. 实践操作:指导学生进行拔河游戏机的搭建、调试及优化。
教学内容安排如下:第一课时:电子元件基础知识学习,分析拔河游戏机电路原理。
第二课时:学习EDA设计工具使用,绘制拔河游戏机原理图。
EDA_拔河游戏机设计报告
目录拔河游戏机设计 ....................................................... - 1 -1.摘要........................................................................................................................... - 1 -2.课程设计的任务和基本要求.......................................... - 1 -2.1设计目的........................................................ - 1 -2.2设计要求........................................................ - 1 -2.3设计方案........................................................ - 2 -3.拔河游戏机流程图 ................................................... - 2 -4设计过程............................................................. - 2 -4.1 总体设计........................................................ - 2 -4.2模块设计....................................................... - 3 -4.2.1 模块1 分频器设计........................................... - 3 -4.2.2 模块2 二位16进制计数器设计................................ - 4 -4.2.3 模块3 比较模块............................................. - 5 -4.2.4 模块4 显示模块............................................. - 6 -4.3整体电路图块.................................................... - 7 -5. 系统仿真 ........................................................... - 9 -6. 心得体会 .......................................................... - 10 -参考文献 ............................................................. - 10 -附录.................................................................. - 11 -拔河游戏机设计1.摘要EDA是电子设计自动化(Electronic Dedign Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。
《EDA技术》课程设计题目
《EDA技术》课程设计题目1 数字钟设计 (1)2 数字式竞赛抢答器设计 (1)3 数字频率计设计 (1)4 拔河游戏机设计 (2)5 洗衣机控制器设计 (3)6 电子密码锁设计 (3)7 脉冲按键电话按键显示器设计 (4)8 乘法器设计 (4)9 简易音乐播放器设计 (5)10 交通灯控制器设计 (5)11 出租车自动计费器设计 (6)12 自动售邮票机设计 (6)13 信号发生器系统设计 (7)14 点阵设计 (7)15 汽车尾灯控制器设计 (7)16 乒乓球比赛游戏机设计 (8)17 电梯控制器设计 (8)18 简单微处理器设计 (9)19 电子脉搏计设计 (9)20 数字电压表设计 (9)21 彩灯控制器设计 (9)22 病房呼叫系统设计 (10)23 二进制频移键控(FSK)调制器与解调器设计 (10)24 二进制相位键控(PSK)调制器与解调器设计 (10)12电信1班《EDA技术》课程设计选题名单1 数字钟设计设计要求在Quartus Ⅱ开发系统中用可编程逻辑器件实现数字钟的EDA设计,要求:(1)数字钟功能:数字钟的时间以24小时一个周期;数字钟能够显示时、分、秒;(2)校时功能:可以分别对时、分、秒进行单独校时,使其调整到标准时间;(3)扩展功能:具有整点报时功能,当时间到达整点前5秒进行蜂鸣报时。
2 数字式竞赛抢答器设计设计要求设计一个可容纳四组参赛的数字式抢答器,每组设一个按钮供抢答使用。
抢答器具有第一信号鉴别和锁存功能,使除第一抢答者外的按钮不起作用;设置一个主持人“复位”按钮,主持人复位后,开始抢答,第一信号鉴别锁存电路得到信号后,用指示灯显示抢答组别,扬声器发出音响。
设置犯规电路,对提前抢答和超时答题(例如3分钟)的组别鸣笛示警,并由组别显示电路显示出犯规组别。
设置一个计分电路,每组开始预置10分,由主持人计分,答对一次加1分,答错一次减1分。
系统框图如图2-1所示。
拔河15灯参考
EDA技术课程设计实训内容:1.题目简述按给定的题目或自己拟定题目,题目尽量保证每人一题。
题目要综合运用所学的数字电路设计的基本知识,包括组合逻辑电路和时序逻辑电路的设计。
你所选择题目名称:拔河游戏机题目工作原理的简述:(完成什么功能或动作)1.设计一个模拟拔河游戏比赛的逻辑电路。
2.电路使用15个发光二极管,开机后只有在拔河绳子中间的发光二极亮。
3.比赛双方各持一个按钮,快速不断地按动按钮,产生脉冲,谁按得快,发光的二极管就向谁的方向移动,每按一次,发光二极管移动一位。
4.亮的发光二极管移到任一方的终点时,该方就获胜,此后双方的按钮都应无作用,状态保持,只有当裁判按动复位后,在拔河绳子中间的发光二极管重新亮。
5.用七段数码管显示双方的获胜盘数简述题目所需要的器件以及器件的功能:元器件的选用:各原器件的引角图1.74LS00 四2输入与非门2.74LS08 四2输入与门3.74LS193 同步二进制可逆计数器4.74LS86 四2输入异或门4518 双同步十进制计数器4514 4线—16线译码器电路设计:(电路原理逻辑框图)拔河游戏机的电路框图(图一)整机逻辑图(图二)。
2.仿真(Multisim2001)仿真过程简述:(输入、连线、检测)以一个单元电路为对象说明即可1.编码电路的设计:由双时钟二进制同步可逆计数器74LS193构成,它有2个输入端,4个输出端,能进行加/减计数。
通过编码器来控制电平指示灯的显示,加计数时向右移动,进行减计数时,向相反方向移动。
电路图如下:2.整形电路设计:由与门74LS08和与非门74LS00构成。
因74LS193是可逆计数器,控制加减的CP脉冲分别加至5脚和4脚,此时当电路要求进行加法计数时,减法输入端CPD必须接高电平;进行减法计数时,加法输入端CPU也必须接高电平,若直接由A、B键产生的脉冲加到5脚或4脚,就有很多时机在进行计数输入时另一计数输入端为低电平,使计数器不能计数,双方按键均失去作用,拔河比赛不能正常进行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程EDA技术课程设计题目拔河游戏机专业电子信息工程主要内容、基本要求、主要参考资料等主要内容:电子拔河游戏机是一种能容纳甲乙双方参赛游戏电路。
由一排发光二极管表示拔河的“电子绳”。
由甲乙双方通过按纽开关使发光二极管向一方的终点延伸,当延伸到某方的最后一个发光二极管时,则该方获胜,连续比赛多局以定胜负。
基本要求:1、设计一个能进行拔河游戏的电路。
2、电路使用9个发光二极管,开机后只有中间一个发亮,此即拔河的中心点。
3、游戏双方各持一个按钮,迅速地、不断地按动,产生脉冲,谁按得快,亮点就向谁的方向移动,每按一次,亮点移动一次。
4、亮点移到任一方终端二极管时,这一方就获胜,此时双方按钮均无作用,输出保持,只有复位后才使亮点恢复到中心。
5、用数码管显示获胜者的盘数。
主要参考资料:[1] 潘松著.EDA技术实用教程(第二版). 北京:科学出版社,2005.[2] 康华光主编.电子技术基础模拟部分. 北京:高教出版社,2006.[3] 阎石主编.数字电子技术基础. 北京:高教出版社,2003.完成期限2011.3.11指导教师专业负责人2011年3月7日一、总体设计思想1.基本原理由设计内容可知,需要一个十进制的计数器,用于对双方按钮的次数计数,并通过译码器显示在数码管上。
设计要求用50MHz的频率,而设计用到的是1KHz 的频率,所以要设计一个程序进行分频。
显视控制部分设计要求在发光二极管上显示游戏状态,双方每按十次,亮点向先按十次移动一次,对脉冲进行计数,每十次移一位。
需接入一个清零端,用于复位。
将以上程序组装起来。
2.设计框图图1. 拔河机游戏机框图二、设计步骤和调试过程1、总体设计电路总体电路图和仿真图如图(25)所示,由仿真图可知,此电路设计无误,可以实现按动A、B两个按键时,分别产生两个脉冲信号,经整形后分别加到可逆计数器上,可逆计数器输出的代码经译码器译码后驱动电平指示灯点亮并产生位移,当亮点移到任何一方终端后,由于控制电路的作用,使这一状态被锁定,双方按键产生的输入脉冲不起作用。
如按动复位键C,亮点又回到中点位置,再次按C键则比赛又可重新开始。
图2. 电路图2、模块设计和相应模块程序1.顶层文件library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;entity bahe isport(player1,player2:in std_logic; --玩家1,2输入clk_in:in std_logic; --clk_in(1MHZ)reset:in std_logic; --重置键row : out std_logic_vector(7 downto 0);col : out std_logic_vector(7 downto 0);led:out std_logic_vector(7 downto 0); --绳子cats:out std_logic_vector(6 downto 0); --比分q:out std_logic_vector(5 downto 0); --数码管控制mus:out std_logic); --蜂鸣输出end bahe;architecture body_bahe of bahe iscomponent divisionport(clk_in:in std_logic; --1MHZ输入clk_100,clk_5,clk_1:out std_logic);--100HZ,5Hz,1HZend component;--计数模块component countport(clk_1:in std_logic; --1HZ输入sw:in std_logic; --状态开关player1,player2:in std_logic; --选手输入sum1,sum2:out std_logic_vector(4 downto 0)); --计数结果输出end component;--比较模块component cmpport(clk_100:in std_logic; --100hzclk_1:in std_logic; --1hzsw:out std_logic; --状态开关输出reset:in std_logic; --重置start:in std_logic; --开始sum1,sum2:in std_logic_vector(4 downto 0);--计数结果输入music_begin:out std_logic; --音乐record1,record2:out std_logic_vector(1 downto 0);--比分输出lights:out std_logic_vector(2 downto 0)); --拔河绳子显示end component;--音乐模块component musicport(reset:in std_logic; --重置clk:in std_logic; --1MHzclk_5:in std_logic; --5hzmusic_begin:in std_logic; --音乐开始mus:out std_logic);end component;--译码模块component decodeport(clk_in:in std_logic; --1mHZrecord1,record2:in std_logic_vector(1 downto 0); --比分输入lights:in std_logic_vector(2 downto 0); --拔河绳子输入q:buffer std_logic_vector(5 downto 0); --数码管控制cats:out std_logic_vector(6 downto 0) --数码管显示比分);end component;--倒计时模块component daojishiport(clk_in,clk_1,reset:in std_logic;row : out std_logic_vector(7 downto 0);col : out std_logic_vector(7 downto 0);start: out std_logic);end component;--分频器输出signal clk_100,clk_5,clk_1:std_logic; --时钟信号--计数器输出signal sum1,sum2:std_logic_vector(4 downto 0); --计数结果--比较器输出signal sw:std_logic; --状态开关signal record1,record2:std_logic_vector(1 downto 0); --比分signal lights:std_logic_vector(2 downto 0); --绳子signal music_begin:std_logic;--解码器输出signal tmp_led:std_logic_vector(7 downto 0); --LED显示signal tmp_q:std_logic_vector(5 downto 0); --数码管控制signal tmp_cat:std_logic_vector(6 downto 0); --数码管显示比分--倒计时器输出signal tmp_start:std_logic;begincats<=tmp_cat;q<=tmp_q;led<=tmp_led;div: division port map(clk_in=>clk_in,clk_100=>clk_100,clk_5=>clk_5,clk_1=>clk_1);cnt: count port map(clk_1=>clk_1,sw=>sw,player1=>player1,player2=>player2,sum1=>sum1,sum2=>sum2);com: cmp port map(clk_100=>clk_100,clk_1=>clk_1,sw=>sw,reset=>reset,record1=>record1,record2=>record2,lights=>lights);dec: decode port map(clk_in=>clk_in,record1=>record1,record2=>record2,lights=>lights,led=>tmp_led,q=>tmp_q,cats=>tmp_cat);mu: music port map(reset=>reset,clk=>clk_in,clk_5=>clk_5,music_begin=>music_begin,mus=>mus);dao: daojishi port map(clk_in=>clk_in,clk_1=>clk_1,reset=>reset,start=>tmp_start,col=>col,row=>row);end body_bahe;2.CMP模块library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;entity cmp isport(clk_100:in std_logic; --100HZ输入 clk_1:in std_logic; --1HZ输入reset:in std_logic; --重置start:in std_logic; --开始sum1,sum2:in std_logic_vector(4 downto 0); --计数输入record1,record2:out std_logic_vector(1 downto 0); --比分输出music_begin:out std_logic; --音乐开始sw:out std_logic; --状态输出lights:out std_logic_vector(2 downto 0)); --绳子状态end cmp;architecture body_cmp of cmp issignal tmp_record1:std_logic_vector(1 downto 0); --比分signal tmp_record2:std_logic_vector(1 downto 0);signal tmp:std_logic_vector(2 downto 0); --绳子状态signal tmp_sta:std_logic; --状态signal s1,s2:std_logic_vector(4 downto 0); --计数record1<=tmp_record1;record2<=tmp_record2;lights<=tmp;sw<=tmp_sta;process(clk_100) --判断比赛状态beginif(start='1') thenif(clk_100'event and clk_100='1') thentmp_sta<='1';end if;end if;if(clk_100'event and clk_100='1') then --任意比分到3,比赛结束,开始播放音乐if(tmp_record1="11" or tmp_record2="11") thentmp_sta<='0';music_begin<='1';end if;if(tmp="001" or tmp="111") then --绳子到头,进入等待状态tmp_sta<='0';end if;if(reset='1') then --复位,状态归零tmp_sta<='0';music_begin<='0';end if;end if;end process;s1<=sum1;s2<=sum2;process(clk_1,reset) --控制绳子移位beginif(reset='1') thentmp<="100"; --绳子初始状态为100tmp_record1<="00";tmp_record2<="00";elseif(clk_1'event and clk_1='1') thenif(tmp_sta='1') thenif(s1>s2) then tmp<=tmp-'1'; --绳子左移elsif(s1=s2) then tmp<=tmp; --绳子保持原状else tmp<=tmp+'1'; --绳子右移elseif(tmp="001") then --绳子到左尽头,左计分器加1tmp_record1<=tmp_record1+'1';tmp<="100";elsif(tmp="111") then --绳子到右尽头,右记分器加1,tmp_record2<=tmp_record2+'1';tmp<="100";end if;end if;end if;end if;end process;end body_cmp;3.COUT模块use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;entity count islibrary IEEE;port(clk_1:in std_logic; --1HZ输入sw:in std_logic; --状态判断输入player1,player2:in std_logic; --选手输入sum1,sum2:out std_logic_vector(4 downto 0)); --计数输出end count;architecture body_count of count issignal p1,p2:std_logic_vector(4 downto 0); --计数输出beginsum1<=p1;sum2<=p2;process(player1,player2,sw,clk_1)beginif(sw='1') then --处于比赛状态if(clk_1='0') thenif(player1'event and player1='1') thenp1<=p1+'1';if(player2'event and player2='1') thenp2<=p2+'1';end if;elsep1<="00000";p2<="00000";end if; --比赛状态结束else p1<="00000";p2<="00000";end if;end process;end body_count;4.daojishi模块library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;entity daojishi isport(clk_1,clk_in,reset: in std_logic;row : out std_logic_vector(7 downto 0);col : out std_logic_vector(7 downto 0);start : out std_logic);end daojishi;architecture body_daojishi of daojishi istype state is (s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10);signal present_state:state:=s10;signal num:std_logic_vector(2 downto 0):="000";beginp3:process(clk_in)beginif clk_in'event and clk_in='1' thenif num="101" then num<="000";else num<=num+1;case present_state iscase num iswhen "000"=> col<="11111111"; row<="11111111"; when "001"=> col<="11011111"; row<="01110100"; when "010"=> col<="11101111"; row<="01010100"; when "011"=> col<="11110111"; row<="01010100"; when "100"=> col<="11111011"; row<="01111100"; when others=> col<="00000000"; row<="00000000"; end case;when s8=>case num iswhen "000"=> col<="11111111"; row<="11111111"; when "001"=> col<="11011111"; row<="01111100"; when "010"=> col<="11101111"; row<="01010100"; when "011"=> col<="11110111"; row<="01010100"; when "100"=> col<="11111011"; row<="01111100"; when others=> col<="00000000"; row<="00000000"; end case;when s7=>case num iswhen "000"=> col<="11111111"; row<="11111111"; when "001"=> col<="11011111"; row<="01000000"; when "010"=> col<="11101111"; row<="01000000"; when "011"=> col<="11110111"; row<="01000000"; when "100"=> col<="11111011"; row<="01111100"; when others=> col<="00000000"; row<="00000000"; end case;when s6=>case num iswhen "000"=> col<="11111111"; row<="11111111"; when "001"=> col<="11011111"; row<="01111100"; when "010"=> col<="11101111"; row<="01010100"; when "011"=> col<="11110111"; row<="01010100"; when "100"=> col<="11111011"; row<="01011100"; when others=> col<="00000000"; row<="00000000"; end case;when "001"=> col<="11011111"; row<="01110100"; when "010"=> col<="11101111"; row<="01010100"; when "011"=> col<="11110111"; row<="01010100"; when "100"=> col<="11111011"; row<="01011100"; when others=> col<="00000000"; row<="00000000"; end case;when s4=>case num iswhen "000"=> col<="11111111"; row<="11111111"; when "001"=> col<="11011111"; row<="01110000"; when "010"=> col<="11101111"; row<="00010000"; when "011"=> col<="11110111"; row<="00010000"; when "100"=> col<="11111011"; row<="01111100"; when others=> col<="00000000"; row<="00000000"; end case;when s3=>case num iswhen "000"=> col<="11111111"; row<="11111111"; when "001"=> col<="11011111"; row<="01010100"; when "010"=> col<="11101111"; row<="01010100"; when "011"=> col<="11110111"; row<="01010100"; when "100"=> col<="11111011"; row<="01111100"; when others=> col<="00000000"; row<="00000000"; end case;when s2=>case num iswhen "000"=> col<="11111111"; row<="11111111"; when "001"=> col<="11011111"; row<="01011100"; when "010"=> col<="11101111"; row<="01010100"; when "011"=> col<="11110111"; row<="01010100"; when "100"=> col<="11111011"; row<="01110100"; when others=> col<="00000000"; row<="00000000"; end case;when s1=>when "001"=> col<="11011111"; row<="00000000"; when "010"=> col<="11101111"; row<="00000000"; when "011"=> col<="11110111"; row<="00000000"; when "100"=> col<="11111011"; row<="01111100"; when others=> col<="00000000"; row<="00000000"; end case;when s0=>case num iswhen "000"=> col<="11111111"; row<="11111111"; when "001"=> col<="11011111"; row<="01111100"; when "010"=> col<="11101111"; row<="01000100"; when "011"=> col<="11110111"; row<="01000100"; when "100"=> col<="11111011"; row<="01111100"; when others=> col<="00000000"; row<="00000000"; end case;when others=>case num iswhen "000"=> col<="00000000"; row<="00000000"; when "001"=> col<="00000000"; row<="00000000"; when "010"=> col<="00000000"; row<="00000000"; when "011"=> col<="00000000"; row<="00000000"; when "100"=> col<="00000000"; row<="00000000"; when others=> col<="00000000"; row<="00000000"; end case;end case;end if;end if;end process p3;p4:process(clk_1)beginif reset='1' then present_state<=s10;start<='0';elseif clk_1'event and clk_1='1' thencase present_state iswhen s10=> present_state<=s9;start<='0';when s9=> present_state<=s8;start<='0';when s8=> present_state<=s7;start<='0';when s7=> present_state<=s6;start<='0';when s6=> present_state<=s5;start<='0';when s5=> present_state<=s4;start<='0';when s4=> present_state<=s3;start<='0';when s3=> present_state<=s2;start<='0';when s2=> present_state<=s1;start<='0';when s1=> present_state<=s0;start<='1';when s0=> present_state<=present_state;when others=>null;start<='1';end case;end if;end if;end process p4;end body_daojishi;library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;entity decode isport(clk_in:in std_logic; --1MHz record1,record2:in std_logic_vector(1 downto 0); --比分状态输入 lights:in std_logic_vector(2 downto 0); --绳子状态输入led:out std_logic_vector(7 downto 0); --绳子解码后输出q:buffer std_logic_vector(5 downto 0); --数码管控制cats:out std_logic_vector(6 downto 0)); --数码管显示end decode;architecture body_decode of decode issignal tmp_led:std_logic_vector(7 downto 0); --绳子输出signal tmp_da1:std_logic_vector(6 downto 0); --比分1signal tmp_da2:std_logic_vector(6 downto 0); --比分2signal tmp:std_logic_vector(6 downto 0); --比分显示beginled<=tmp_led;cats<=tmp;process(clk_in,lights,record1,record2,q,tmp_da2,tmp_da1,tmp)begincase lights is --绳子状态when "100"=> tmp_led<="00010000";when "011"=> tmp_led<="00001000";when "010"=> tmp_led<="00000100";when "001"=> tmp_led<="00000010";when "101"=> tmp_led<="00100000";when "110"=> tmp_led<="01000000";when "111"=> tmp_led<="10000000";when others =>tmp_led<="00010000";end case;case record1 is --比分状态when "00"=> tmp_da1<="1111110";when "01"=> tmp_da1<="0110000";when "10"=> tmp_da1<="1101101";when "11"=> tmp_da1<="1111001";end case;case record2 is --比分状态when "00"=> tmp_da2<="1111110";when "01"=> tmp_da2<="0110000";when "10"=> tmp_da2<="1101101";when "11"=> tmp_da2<="1111001";end case;if(clk_in='1') thenq<="111110";end if;if(clk_in='0') thenq<="011111";end if;case q is --数码管显示控制when "011111"=> tmp<=tmp_da2;when "111110"=> tmp<=tmp_da1;when others=> tmp<="0000000";end case;end process;end body_decode;3、仿真及仿真结果分析创建一个仿真波形文件,输入引脚,并对所有input引脚付出值,保存仿真波形文件。