EDA课程设计:拔河游戏机
- 格式:doc
- 大小:169.00 KB
- 文档页数:17
【关键字】大学安徽财经大学电子拔河比赛游戏机的设计姓名:陈辉、胡安宁、郭真真、朱晓庆学号:44、27、18、43学院:管理科学与工程学院专业:电子信息工程指导老师:于帅珍设计时间:2013年5月目录一、设计任务以及要求--------------------------------------- 4二、总体框图----------------------------------------------------4三、选择器件----------------------------------------------------5四、功能模块----------------------------------------------------10五、总体设计----------------------------------------------------16一、设计任务以及要求1. 设计一个模拟拔河游戏机比赛的逻辑电路。
2. 电路使用15个电平指示灯排成一排,开机后只有中间一个点亮,以此作为拔河的中心线。
3. 比赛双方各持一个按键,迅速不断的按动产生脉冲,谁按得快,亮点向谁方向移动。
每按一次,亮点移动一次。
4. 移动就任何一方终端指示灯点亮,这一方得胜,此时双方按键均无作用,输出保持,只有经裁判按动复位后,恢复到中心线。
5. 显示器显示胜者的盘数。
二、总体框图1. 设计方案:(1)本课题所设计的拔河游戏机由15电平指示灯排列成一行,开机之后只有中间一个电平指示灯亮,以此作为拔河的中心线。
可逆计数器原始状态为0000,经译码后输出中间的电平指示灯亮。
游戏双方各持一个按键,迅速地、不断地按动产生脉冲信号,谁按得快,亮点向谁方向移动,每按一次,亮点移动一次。
移就任一方终端指示灯点亮,这一方就获胜,此时双方按键均无作用,输出保持,只有经裁判复位后才使亮点恢复到中心线。
(2)当一局比赛结束后,由点亮该终点灯的信号使电路封锁加减脉冲信号的作用.即实现电路自锁,使加减脉冲无效。
课程设计任务书题目拔河游戏控制电路专业学号姓名主要内容、基本要求、主要参考资料等:主要内容*1.阅读相关科技文献。
2.学习protel软件的使用。
3.学会整理和总结设计文档报告。
4.学习如何查找器件手册及相关参数。
技术要求1.<2.要求电路使用9个发光二极管显示拔河过程,开机后只有中间一个发光二极管发光,即为拔河中心;3.游戏双方各持一个按钮,按钮每按下一次,亮点向本方移动一次,拔河过程中有且只有一个发光二极管发光;4.亮点移动到任意一段的终端二极管时,此方获胜,并且此时双方按钮均无作用,输出状态保持,复位后亮点回到中心点。
主要参考资料1.何小艇,电子系统设计,浙江大学出版社,2001年6月;(2.姚福安,电子电路设计与实践,山东科学技术出版社,2001年10月;3.王澄非,电路与数字逻辑设计实践,东南大学出版社,1999年10月;4.李银华,电子线路设计指导,北京航空航天大学出版社,2005年6月;5.康华光,电子技术基础,高教出版社,2003。
}完成期限: 2011年6月28日指导教师签章:专业负责人签章:2011年6月27日摘要》本课题的主要任务是让拔河游戏控制电路的电平指示灯由中点向己方延伸,而阻止其向对方延伸。
可以设想用可预置的加/减计数器作主要器件,用计数器的输出状态通过译码器控制电平指示灯的显示状态。
如当计数器进行加法计数时,发亮的电平指示灯向甲方延伸,相反,进行减法计数时,发亮的电平指示灯向相反方向延伸。
当延伸到一方的终点就就把电路锁定,此时双方按键均无作用,只有裁判员按了复位按键双方才能继续下一盘的比赛。
此电路可分为脉冲发生器电路和计数/译码器电路两大部分。
脉冲发生器电路部分采用两个与非门组成的基本RS触发器构成的去抖电路以及有与门、与非门构成的整形电路,可以将按钮A、B产生的脉冲整形成占空比较高的信号。
计数器电路部分以74LS/HC193为主体,译码器采用由集成芯片74HC138扩展的4线-16线译码器。
拔河游戏机一、设计任务与要求拔河游戏机用9个灯泡指示灯排列成一行,开机后只有中间一个点亮,以此作为拔河的中心线,游戏双方各持一个按键,迅速地、不断地按动产生脉冲,谁按得快,亮点向谁方向移动,不断地按,亮点不断地移动。
移到任一方终端指示灯点亮,这一方就得胜,此时双方按键均无作用,输出保持,只有经复位后才使亮点恢复到中心线。
二、总体框图可逆计数器74LS193原始状态输出4位二进制数0000,经译码器输出使中间的一只指示灯点亮。
当按动A、B两个按键时,分别产生两个脉冲信号,经整形后分别加到可逆计数器上,可逆计数器输出的代码经译码器译码和反相器74LS04后后驱动电平指示灯点亮并产生位移,当亮点移到任何一方终端后,由于控制电路的作用,使这一状态被锁定,而对输入脉冲不起作用。
如按动开关3,亮点又回到中点位置,再次按动开关3,比赛又可重新开始。
为指出谁胜谁负,需用一个控制电路,当亮点移动到任何一方的终端时,则判该方为胜,此时双方按键均无效,此电路可用或门实现,将双方终端接至或门的2个输入端,当获胜一方为“1”,而另一方则为“0”,或门输出为“1”,此时的输出再与编码电路的输出经一或门,分别送到74LS193计数器的CPD 和CPU。
三、选择器件74LS138 3线—线译码器 1片74LS193 同步二进制可逆计数器 1片74LS00 四2输入与非门 2片74LS04 六反向器 2片74LS08 四2输入与门 1片74LS32 四2输入或门 1片电阻 1 KΩ 4个100Ω1个开关单刀双掷开关 2个单刀单掷开关 1个下面详细介绍这些器件3.1 3线—8线译码器74LS138图(1)74LS138的逻辑符号图图(2) 74LS138的逻辑框图输入的3位二进制代码共有8种状态,译码器将每个输入代码译成对应的一根输出线上的高、低电平信号。
图(1)为3线-8线译码器74LS138的逻辑符号图,其有3个附加的控制端G1、G2A和G2B。
拔河游戏机课程设计一、课程目标知识目标:1. 学生能理解拔河游戏机的基本工作原理,掌握相关的物理知识,如力的作用、摩擦力的产生等。
2. 学生能运用所学的数学知识,计算出拔河游戏机在比赛中的力量分配和胜负概率。
3. 学生了解拔河游戏机的设计理念,掌握其结构组成,并能与实际生活中的应用相结合。
技能目标:1. 学生能运用所学的知识,设计并制作一个简单的拔河游戏机模型,提高动手操作能力和创新能力。
2. 学生通过小组合作,学会与他人沟通、协作,培养团队精神和解决问题的能力。
情感态度价值观目标:1. 学生在学习过程中,培养对物理、数学等学科的兴趣和好奇心,激发学习的积极性。
2. 学生通过拔河游戏机的设计与制作,体验科技与生活的紧密联系,提高对科技创新的认识和尊重。
3. 学生在团队活动中,学会尊重他人、公平竞争,培养良好的道德品质。
本课程针对五年级学生设计,结合学科特点,注重知识性与实践性相结合。
在教学过程中,充分考虑学生的认知水平、兴趣和需求,以拔河游戏机为载体,引导学生主动探索、合作学习,实现课程目标。
通过本课程的学习,旨在提高学生的学科素养,培养学生的创新能力、团队协作能力和实践操作能力。
二、教学内容1. 物理知识:- 力的概念、作用和效果- 摩擦力的产生和影响因素- 平衡力的判断与应用2. 数学知识:- 概率计算与统计分析- 力的合成与分解- 几何图形的认识与应用3. 设计与制作:- 拔河游戏机的结构组成与工作原理- 拔河游戏机模型的制作方法与步骤- 创新设计理念在拔河游戏机中的应用4. 小组合作与团队协作:- 小组分工与责任明确- 团队沟通与协作技巧- 公平竞争与团队精神教学内容依据课程目标,结合课本知识,进行科学、系统的组织。
教学大纲分为以下四个阶段:第一阶段:物理、数学知识学习(2课时)第二阶段:拔河游戏机结构与原理学习(2课时)第三阶段:拔河游戏机模型设计与制作(3课时)第四阶段:小组合作、展示与评价(2课时)教学内容具体安排如下:1. 物理知识:第一章力的概念、第二章摩擦力、第三章平衡力2. 数学知识:第一章概率计算、第二章力的合成与分解、第三章几何图形3. 设计与制作:第一章拔河游戏机结构、第二章制作方法、第三章创新设计4. 小组合作与团队协作:全课程贯穿三、教学方法本课程采用多样化的教学方法,以激发学生的学习兴趣和主动性,提高教学效果。
一、课程设计的目的与要求1.1.目的掌握电子拔河的基本原理,及VHDL的实现方法。
随着现代社会的发展,科技的进步,现在的游戏是越来越多样化,拔河现在不仅仅用一个绳子来比赛也科技用电子来模拟,使游戏变的更加有有趣味。
本次设计使用 Quartus II工具来设计拔河游戏机的实现。
其主要是实现拔河游戏的功能,其中分为三大模块,即分为玩家输入模块、计分模块和显示模块。
通过双方按键的快慢多少来进行比较,己方按一次加一,对方按一次减一,知道有一方累计加到七次方为赢。
1.2.要求设计一个电子拔河游戏系统。
甲乙两方各控制一个按键。
系统复位后,指示灯在中间。
游戏开始后,甲乙两方分别快速按键,指示灯会向按键频率快的一方移动,当指示灯移动到靠近某一方的最后一个灯时,本轮游戏结束,靠近指示灯的一方获胜,获胜后该方对应的计分器加1。
具体要求如下:1. 实现拔河功能。
2. 具有“复位”、“计分器清零”、“游戏开始”等控制功能。
3. 用数码管显示计分器的数值。
二、设计正文2.1.具体(实现功能)硬件参数EDA实验室用实验开发板:17个led灯(其中十五个作为比赛用显示比赛进程,另两个是“数码管显示比分”间的常亮装饰灯)、两个七段数码管、五个控制按键(分别是玩家2人“甲”和“乙”按键以及“开始”、“复位”和“清零”按键)。
2.2.设计思想(理想状态下)a、控制系统控制算法模型的建立(ASM图的建立):b、程序流程参照下图所示:本拔河游戏机主要由加/减计数器、译码器、得分计数及显示模块四大模块组成。
输入信号共有in1、in2、begin、reset、reset1五个,其中in1、in2分别为两位选手的按键脉冲输入,begin为裁判控制信号,reset是加/减计数器清零信号,reset1是得分计数器清零信号;两组输出信号分别控制LED灯代表拔河绳结位置及动态数码管显示分数。
注:在代码编写时五个输入按键分别用以下标示符表示:玩家“甲”、“乙”:a、b;“开始”:begin1;“复位”:reset;“清零”:show.2.3.实际操作说明:A、按键操作时的抖动:由于按键的开关为机械弹性触点开关,它是利用机械触点接触和分离实现电路的通、断。
eda拔河游戏课程设计一、课程目标知识目标:1. 学生理解拔河游戏的起源、发展及其在体育文化中的地位,掌握相关体育常识。
2. 学生掌握拔河比赛的基本技巧和团队协作策略,了解比赛规则。
3. 学生了解运动生理学中关于力量、耐力等方面的基本知识,并将其应用于拔河游戏中。
技能目标:1. 学生能够运用拔河技巧,展示团队协作和力量运用。
2. 学生通过参与拔河游戏,提高身体的协调性、力量和耐力。
3. 学生能够对拔河比赛进行简单的战术分析和策略制定。
情感态度价值观目标:1. 学生培养团队合作精神,增强集体荣誉感。
2. 学生树立公平竞争意识,尊重对手,遵守比赛规则。
3. 学生在游戏中体验运动的快乐,激发对体育活动的热爱,培养终身锻炼的习惯。
课程性质:本课程为体育学科的教学活动,以实践操作为主,结合理论知识的讲解,旨在提高学生的体育技能和综合素养。
学生特点:针对小学高年级学生,他们具有较强的求知欲、竞争意识和团队协作能力,适合开展此类富有挑战性和趣味性的体育活动。
教学要求:教师需关注学生在拔河游戏中的技能掌握、体能发展和情感体验,注重个体差异,确保每位学生都能在活动中得到充分锻炼和提高。
在教学过程中,将目标分解为具体的学习成果,以便于教学设计和评估的实施。
二、教学内容1. 理论知识:- 拔河运动的起源、发展及文化意义。
- 拔河比赛规则和裁判方法。
- 运动生理学基本知识:力量、耐力的训练方法和生理作用。
2. 技能训练:- 拔河基本技巧:站位、用力方式、呼吸调整。
- 团队协作策略:战术配合、角色分工。
- 安全防护知识:预防运动损伤、正确处理突发状况。
3. 实践活动:- 分组练习:拔河技巧训练、团队协作练习。
- 模拟比赛:体验真实比赛场景,运用所学技巧和策略。
- 总结反思:分析比赛过程中的优点和不足,提高自我评价能力。
教材章节关联:本教学内容与体育课本中“团队运动”章节相关,涵盖了拔河运动的理论和实践部分。
通过本课程的学习,学生将能更好地理解和掌握拔河运动的相关知识和技能。
《EDA课程设计》教学大纲第一篇:《EDA课程设计》教学大纲设计四拔河游戏机1、设计一个能进行拔河游戏的电路。
2、电路使用15个(或9个)发光二极管,开机后只有中间一个发亮,此即拔河的中心点。
3、游戏双方各持一个按钮,迅速地、不断地按动,产生脉冲,谁按得快,亮点就向谁的方向移动,每按一次,亮点移动一次。
4、亮点移到任一方终端二极管时,这一方就获胜,此时双方按钮均无作用,输出保持,只有复位后才使亮点恢复到中心。
5、用数码管显示获胜者的盘数。
教学提示:1、按钮信号即输入的脉冲信号,每按一次按钮都应能进行有效的计数。
2、用可逆计数器的加、减计数输入端分别接受两路脉冲信号,可逆计数器原始输出状态为0000,经译码器输出,使中间一只二极管发亮。
3、当计数器进行加法计数时,亮点向右移;进行减法计数时,亮点向左移。
4、由一个控制电路指示谁胜谁负,当亮点移到任一方终端时,由控制电路产生一个信号,使计数器停止计数。
5、将双方终端二极管“点亮”信号分别接两个计数器的“使能”端,当一方取胜时,相应的计数器进行一次计数,这样得到双方取胜次数的显示。
6、设置一个“复位”按钮,使亮点回到中心,取胜计数器也要设置一个“复位”按钮,使之能清零。
设计五乒乓球比赛游戏机1、设计一个由甲、乙双方参赛,有裁判的3人乒乓球游戏机。
2、用8个(或更多个)LED排成一条直线,以中点为界,两边各代表参赛双方的位置,其中一只点亮的LED指示球的当前位置,点亮的LED依此从左到右,或从右到左,其移动的速度应能调节。
3、当“球”(点亮的那只LED)运动到某方的最后一位时,参赛者应能果断地按下位于自己一方的按钮开关,即表示启动球拍击球。
若击中,则球向相反方向移动;若未击中,则对方得1分。
4、一方得分时,电路自动响铃3秒,这期间发球无效,等铃声停止后方能继续比赛。
5、设置自动记分电路,甲、乙双方各用2位数码管进行记分显示,每计满21分为1局。
6、甲、乙双方各设一个发光二极管,表示拥有发球权,每隔5次自动交换发球权,拥有发球权的一方发球才有效。
电子技术课程设计——拔河游戏机的设计拔河游戏机的设计一、选题依据设计一台具有自动数字显示功能的拔河游戏机.电子游戏是常见的娱乐活动,电子游戏的设计有趣味性高,操作简单.通过多它的设计扩展自身思路,提高自身综合运用知识能力.二、设计要求游戏分甲乙双方,设计一拔河游戏机,用按键的速度来模拟双方的力量,一点亮的发光二极管的左右移动显示双方比赛的状态.1. 拔河游戏机有9个发光二极管排成一排,比赛开始时,中间的发光二极管点亮,此为拔河中心.2. 甲乙双方各持一个按键,比赛开始时双方迅速地不断按动各自的按键,以此产生脉冲,谁按得快,亮点就向谁方移动(以甲方为右,乙方为左).3. 当任意一方终端发光二极管点亮时,这一方就取胜一局,此时发光二极管发光状态保持,双方按键无效,必须经复位键复位,两点才能恢复移至中间,开始新一轮的比赛.4. 要设置显示器显示甲乙双方赢的局数.三、电路结构及其工作原理1.电路的结构框图:图1 拔河游戏机线路框图2.电路的原理图:图2 拔河游戏机整机线路图3.电路工作原理:1、电路框图的说明可逆计数器CC40193原始状态输出接至译码器地址输入端,比赛开始时,可逆计数器原始输出状态是0000,经译码器输出使中间的一只发光二极管点亮.当按动A、B两个按键时,分别产生两个脉冲信号,经整形后分别加到可逆计数器上,可逆计数器输出的代码经译码器译码后驱动发光二极管点亮并产生位移,当亮点移到任何一方终端后,由于控制电路的作用,使这一状态被锁定,而对输入脉冲不起作用.如按动复位键,亮点又回到中点位置,比赛又可重新开始.将双方终端二极管的正端分别经两个与非门后接至二个十进制计数器CC4518的允许控制端EN,当任一方取胜,该方终端二极管点亮,产生一个下降沿使其对应的计数器计数.这样,计数器的输出即显示了胜者取胜的盘数.2、编码器的使用与说明编码器有两个输入端,四个输出端,要进行加/减计数,因此选用CC40193双时钟二进制同步加减器来完成.图3 编码电路3、整形电路的设计与分析说明CC40193是可逆计数器,控制加减的CP脉冲分别加至5脚和4脚,此时当电路要求进行加法计数时,减法输入端CPD 必须接高电平;进行减法计数时,加法输入端CPU 也必须接高电平,若直接由A、B键产生的脉冲加到5脚或4脚,那么就有很多时机在进行计数输入时另一计数输入端为低电平,使计数器不能计数,双方按键均失去作用,拔河比赛不能正常进行.加一整形电路,使A、B二键出来的脉冲经整形后变为一个占空比很大的脉冲,这样就减少了进行某一计数时另一计数输入为低电平的可能性,从而使每按一次键都有可能进行有效的计数.整形电路由与门CC4081和与非门CC4011实现.图4整形电路图4、译码电路的设计与分析说明选用4线-16线CC4514译码器.译码器的输出Q0~Q14 分接9个发光二极管,二极管的负端接地,而正端接译码器;这样,当输出为高电平时发光二极管点亮.比赛准备,译码器输入为0000,Q0 输出为“1”,中心处二极管首先点亮,当编码器进行加法计数时,亮点向右移,进行减法计数时,亮点向左移.图5 译码电路图5、控制电路的设计与分析说明为指示出谁胜谁负,需用一个控制电路.当亮点移到任何一方的终端时,判该方为胜,此时双方的按键均宣告无效.此电路可用异或门CC4030和非门CC4011来实现.将双方终端二极管的正极接至异或门的两个输入端,当获胜一方为“1”,而另一方则为“0”,异或门输出为“1”,经非门产生低电平“0”,再送到CC40193计数器的置数端,于是计数器停止计数,处于预置状态,由于计数器数据端A、B、C、D和输出端QA、QB、QC、QD对应相连,输入也就是输出,从而使计数器对输入脉冲不起作用.图6 控制电路图6、胜负显示电路的设计与分析说明将双方终端二极管正极经非门后的输出分别接到二个CC4518计数器的EN端,CC4518的两组4位BCD码分别接到实验装置的两组译码显示器的A、B、C、D插口处.当一方取胜时,该方终端二极管发亮,产生一个上升沿,使相应的计数器进行加一计数,于是就得到了双方取胜次数的显示,若一位数不够,则进行二位数的级联.图7 胜负显示电路图7、复位电路的设计与分析说明为能进行多次比赛而需要进行复位操作,使亮点返回中心点, 可用一个开关控制CC40193的清零端R即可.胜负显示器的复位也应用一个开关来控制胜负计数器CC4518的清零端R,使其重新计数.注:1、CC40193同步递增递减二进制计数器引脚排列及功能参考CC40193(74LS193)同步十进制可逆计数器的引脚排列及功能.74LS193是同步十进制可逆计数器,它具有双时钟输入,并具有清除和置数等功能,其引脚排列及逻辑符号如下所示:图8 74LS193的引脚排列及逻辑符号(a)引脚排列(b) 逻辑符号图中:为置数端,为加计数时钟输入端,为减计数时钟输入端,为非同步进位输出端,为非同步借位输出端,P0、P1、P2、P3为计数器输入端,为清除端,Q0、Q1、Q2、Q3为数据输出端.其功能表如下:输入输出米RP3 P2 P1 P0 Q3 Q2 Q1 Q01 ×××××××0 0 0 00 0 ××d c B a d c b A1 1 ××××加计数01 1 ××××减计数图9 CC4514 4线—16线译码器引脚排列A0~A3 —数据输入端INH —输出禁止控制端LE —数据锁存控制端输入高电平输出端输入高电平输出端LE INH A3 A2 A1 A0 LE INH A3 A2 A1 A01 0 0 0 0 0 YO 1 0 1 0 0 1 Y9 1 0 0 0 0 1 Y1 1 0 1 0 1 0 Y10 1 0 0 0 1 0 Y2 1 0 1 0 1 1 Y11 1 0 0 0 1 1 Y3 1 0 1 1 0 0 Y12 1 0 0 1 0 0 Y4 1 0 1 1 0 1 Y13 1 0 0 1 0 1 Y5 1 0 1 1 1 0 Y14 1 0 0 1 1 0 Y6 1 0 1 1 1 1 Y15 1 0 0 1 1 1 Y7 1 1 × × × × 无1 0 1 0 0 0 Y8 0 0 × × × × ①3、CC4518双十进制同步计数器引脚排列及功能:1CP、2CP —时钟输入端1R、2R —清除端1EN、2EN —计数允许控制端1Q0~1Q3 —计数器输出端2Q0~2Q3 —计数器输出端图10 CC4518 双十进制同步计数器引脚排列输入输出功能CP R EN↑ 0 1 加计数0 0 ↓ 加计数↓ 0 ×× 0 ↑保持↑ 0 01 0 ↓× 1 × 全部为“0”四、电路主要元件简介1、同步递增递减二进制计数器(CC40193)1个,4线-16线译码器(CC4514)一个,异或门(CC4030)一个,双十进制同步计数器(CC4518)2个,译码器(CC4511)2个,与非门(CC4081)2个,与非门(CC4011)11个.2、电阻:200欧的9个,1000欧的4个.3、发光二极管(LED)9个.4、电源输入串口 1个,导线若干.五、课程设计体会:通过本次课程设计,使我对专业课《数字电子技术》及《模拟电子技术》的知识又有了更加深刻的理解和掌握,我掌握CC40193同步递增递减二进制计数器引脚排列及功能、CC4514 4线-16线译码器引脚排列及功能和CC4518双十进制同步计数器引脚排列及功能,对电子器件的认识也不再停留在字面上,实现了从理论到实践的飞跃.自己动手设计使用电路图,安装元器件,调试器件,试验并让其应用,这些过程不仅仅让我更深刻的明白了课本上的原理知识,还让我认识到了使用时的注意事项,安装时的方法等.这对于我们以后动手能力也有个很大的提高.。
一、设计要求:1、拔河游戏机需要9个发光二极管排成一行,开机后只有中间一个亮点,以此作为拔河的中间线,游戏双方各持一个按键,迅速、不端地按动产生脉冲,哪方按得快,亮点就向哪方移动,每按一次,亮点移动一次。
移到任一方二极管的终端,该方获胜,此时双方按键均无作用,输出保持,只有经复位后才能使亮点恢复到中心线。
2、显示器显示胜者的盘数。
二、采用器件及软件环境:硬件:ispLSl1016E芯片软件:ispEXPERT System及windows2000操作系统三、设计思想及说明:1、概述:使用ispLSl1016E芯片,使用ispEXPERT下载到芯片,采用74LS162计数,采用数字电路实现系统设备模拟测试2、设计思想:9个发光二极管用来模拟拔河的过程,中间一个灯为中线标志。
模拟的两端按左右两个按钮,按钮产生脉冲信号,芯片根据两侧按钮信号的快慢,控制中间的发光二极管的灯的熄灭,某一侧按得较快,中间亮的灯就会向那一侧移动;当亮的灯到达最外侧的灯时,锁定程序,(即任何按键无效,直到按复位键复位)并且相应端的计数器计数加一,用以表示获胜的次数。
使用复位键可以在锁定或者在比赛中断后重新开始时,将标志灯回到中心。
3、说明:中间灯亮表示中线;最外侧灯亮表示该端获胜;计数表示获胜次数;复位键使亮灯回到中线位置。
四、设计步骤,各模块组成,简要说明:1、设计步骤:分析设计要求,选择合适芯片,编写芯片代码,下载代码到芯片,连接数字电路,分项测试功能。
2、模块组成:设计程序使用一个名为baheji的模块,模块分为初始化(复位),判断是否到达最末端,没有的话,根据按键方式判断移动中间的信号灯;如果到达末端,产生计数,并且锁定;四个部分。
3、简要说明:count1.ar = cd1;count2.ar = cd1;score1.ar = cd2;score2.ar = cd2;初始化(复位)拔河游戏。
(count1-count2==4)或(count1-count2==-4);//说明:判断是否到达最末端的条件,如果是的话,计分器加1,并执行将死锁,并且将L发光二极管锁定状态。
eda拔河游戏机课程设计一、课程目标知识目标:1. 让学生理解并掌握EDA(电子设计自动化)拔河游戏机的基本原理和设计流程。
2. 让学生掌握相关电子元件的功能、连接方式及在电路中的应用。
3. 让学生了解并掌握基础的编程知识,能对拔河游戏机的程序进行简单修改。
技能目标:1. 培养学生动手操作能力,能独立完成拔河游戏机的搭建和调试。
2. 培养学生团队协作能力,通过小组合作完成拔河游戏机的整体设计。
3. 培养学生问题解决能力,能针对游戏中出现的问题进行排查和修复。
情感态度价值观目标:1. 激发学生对电子制作的兴趣,培养创新意识和实践精神。
2. 培养学生良好的团队合作精神,学会倾听、沟通和协调。
3. 增强学生对科技与生活的联系的认识,提高环保意识和责任感。
本课程针对的学生特点为:好奇心强、动手能力强,具有一定的电子和编程基础。
课程性质为实践性较强的项目式学习,旨在让学生在实际操作中掌握知识,提高能力。
教学要求注重理论与实践相结合,以学生为主体,教师为主导,关注学生的个体差异,鼓励学生发挥潜能。
通过本课程的学习,期望学生能够实现上述具体的学习成果,为后续的电子设计奠定基础。
二、教学内容根据课程目标,本章节教学内容主要包括以下几部分:1. 电子元件基础知识:讲解常用电子元件(如电阻、电容、二极管、三极管等)的原理、功能及在电路中的应用。
2. EDA设计工具使用:介绍EDA软件(如Proteus、Multisim等)的基本操作,包括原理图绘制、电路仿真、PCB布线等。
3. 拔河游戏机设计原理:分析拔河游戏机的工作原理,讲解电路设计、程序编写及硬件搭建。
4. 编程知识:结合拔河游戏机程序,教授基础编程语言(如C语言、汇编语言等)的使用。
5. 实践操作:指导学生进行拔河游戏机的搭建、调试及优化。
教学内容安排如下:第一课时:电子元件基础知识学习,分析拔河游戏机电路原理。
第二课时:学习EDA设计工具使用,绘制拔河游戏机原理图。
XXXXXX学院课程设计题目:EDA拔河游戏机课程设计作者:XXX专业:自动化班级:XXX学号:XXXXX指导老师:XXX2012年12月15日主要内容、基本要求、主要参考资料等主要内容:电子拔河游戏机是一种能容纳甲乙双方参赛游戏电路。
由一排发光二极管表示拔河的“电子绳”。
由甲乙双方通过按纽开关使发光二极管向一方的终点延伸,当延伸到某方的最后一个发光二极管时,则该方获胜,连续比赛多局以定胜负。
基本要求:1、设计一个能进行拔河游戏的电路。
2、电路使用9个发光二极管,开机后只有中间一个发亮,此即拔河的中心点。
3、游戏双方各持一个按钮,迅速地、不断地按动,产生脉冲,谁按得快,亮点就向谁的方向移动,每按一次,亮点移动一次。
4、亮点移到任一方终端二极管时,这一方就获胜,此时双方按钮均无作用,输出保持,只有复位后才使亮点恢复到中心。
5、用数码管显示获胜者的盘数。
主要参考资料:[1] 潘松著.EDA技术实用教程(第二版). 北京:科学出版社,2005.[2] 康华光主编.电子技术基础模拟部分. 北京:高教出版社,2006.[3] 阎石主编.数字电子技术基础. 北京:高教出版社,2003.一、总体设计思想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 is--分频模块component 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); --拔河绳子输入led:out std_logic_vector(7 downto 0); --输出到LEDq: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,start=>tmp_start,sum1=>sum1,sum2=>sum2,music_begin=>music_begin,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); --计数beginrecord1<=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'; --绳子右移end if;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';end if;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 iswhen s9=>case 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 s5=>case 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<="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=>case num iswhen "000"=> col<="11111111"; row<="11111111"; 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引脚付出值,保存仿真波形文件。