




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
湖南工业大学EDA课程设计 湖南工业大学 智力竞赛抢答器 学 院电器与信息工程学院专 业 应用电子 班 级 电子0821班 学 号 08395202135 学生姓名 莫琪 指导教师 周维龙 日期:2011.142011.1.114 目录摘要3关键词31引言41.1 设计的目的41.2 设计的基本内容42 设计规划过程62.1智力竞赛抢答器的组成原理62.2抢答器模块的设计62.2.1鉴别锁存模块的设计72.2.2答题计时模块82.2.3计分电路模块102.2.4扫描显示模块133 结束语154 致谢155 参考文献166 附件17摘要 本文所设计的抢答器是一种比较简易的抢答器,没有使用特别多的,复杂的元器件。它的以VHDL硬件描述语言作为平台,结合动手实验而完成的。它的特点是电路简单、制作方便、操作简单、方便、性能可靠,实用于多种智力竞赛活动。本抢答器的电路主要有四部分组成:鉴别锁存电路、答题计时电路、计分电路以及扫描显示模块的电路。这个抢答器设计基本上满足了实际比赛应用中的各种需要。在实际中有很大的用途。关键词 VHDL; 抢答器;时序控制; 1引言无论是在学校、工厂、军队还是益智性电视节目, 都会举办各种各样的智力竞赛, 都会用到抢答器。目前市场上已有各种各样的智力竞赛抢答器, 但绝大多数是早期设计的, 以模拟电路、数字电路或者模拟电路与数字电路相结合的产品。这部分抢答器已相当成熟, 但功能越多的电路相对来说就越复杂, 且成本偏高, 故障高, 显示方式简单( 有的甚至没有显示电路) , 无法判断提前抢按按钮的行为, 不便于电路升级换代。本设计就是基于VHDL设计的一个智力竞赛抢答器尽量使竞赛真正达到公正、公平、公开。1.1 设计的目的 本次设计的目的就是在掌握EDA实验开发系统的初步使用基础上,了解EDA技术,了解并掌握VHDL硬件描述语言的设计方法和思想,通过学习的VHDL语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识,学习VHDL基本单元电路的综合设计应用。通过对智力竞赛抢答器的设计,巩固和综合运用所学课程,理论联系实际,提高设计能力,提高分析、解决计算机技术实际问题的独立工作能力。本文采用经输入与非门和非门后的反馈信号的高电平作为解锁存,用555定时器的模型来倒计时,同时以脉冲信号来控制加法器和减法器来控制抢答过程中的计分,应用二极管和数码显示管为主要部件来设计扫描显示器。通过课程设计深入理解VHDL语言的精髓和掌握运用所学的知识,达到课程设计的目标。1.2 设计的基本内容本文是设计的一个四路智力竞赛抢答器,利用VHDL设计抢答器的各个模块,并使用EDA 工具对各模块进行仿真验证。智力竞赛抢答器的设计分为四个模块:鉴别锁存模块;答题计时模块;抢答计分模块以及扫描显示模块。把各个模块整合后,通过电路的输入输出对应关系连接起来。设计成一个有如下功能的抢答器:(1)具有第一抢答信号的鉴别锁存功能。在主持人发出抢答指令后,若有参赛者按抢答器按钮,则该组指示灯亮,显示器显示出抢答者的组别。同时电路处于自锁状态,使其他组的抢答器按钮不起作用。(2)具有计分功能。在初始状态时,主持人可以设置答题时间的初始值。在主持人对抢答组别进行确认,并给出倒计时计数开始信号以后,抢答者开始回答问题。此时,显示器从初始值开始计时,计至0时停止计数。(3)具有计分功能。在初始状态时,主持人可以给每组设置初始分值。第三者组抢答完毕后,由主持人打分,答对一次加10分阶段,错则减10分。 (4)扫描显示功能。在初始状态时,各组计分给出一个固定的值并将它扫描显示在屏幕上,当计分或者要显示的数据发生变化时,再次扫描并显示出来。 2 设计规划过程2.1智力竞赛抢答器的组成原理因为设计的是四路抢答器,所以系统的输入信号有:各组的抢答按钮A、B、C、D,系统清零信号CLR,系统时钟信号CLK,计分复位端RST,加分按钮端ADD,计时预置控制端LDN,计时使能端EN,计时预置数据调整按钮TA、TB;系统的输出信号有:四个组抢答成功与否的指示灯控制信号输出口LEDA、LEDB、LEDC、LEDD,四个组抢答时的计时数码显示控制信号若干,抢答成功组别显示的控制信号若干,各组计分动态显示的控制信号若干。 根据以上的分析,我们可将整个系统分为四个主要模块:鉴别锁存模块,答题计时模块,计分电路模块,扫描显示模块。总系统框图如2.1所示。 第四组 第一组扫描显示扬声器组别显示主持人复位时间到抢答信号计 分 电 路答题计时电路 第一信号输出第一信号鉴别,锁存加分复位减分图2.1 系统框图2.2抢答器模块的设计抢答器中各个模块由VHDL实现后,利用EDA工具对各模块进行了时序仿真(Timing Simulation),其目的是通过时序可以更清楚的了解程序的工作过程。2.2.1鉴别锁存模块的设计 鉴别锁存模块的关键是准确判断出第一抢答者并将其锁存,实现的方法可使用触发器或锁存器,在得到第一信号后将输入封锁,使其它组的抢答信号无效。形成第一抢答信号后,用编码、译码及数码显示电路显示第一抢答者的组别,控制扬声器发出音响,并启动答题计时电路。本模块采用74HC373芯片,一开始,当所有开关均未按下时,锁存器输出全为高电平,经输入与非门和非门后的反馈信号仍为高电平,该信号作为锁存器使能端控制信号,使锁存器处于等待接收触发输入状态;当任一开关按下时,输出信号中必有一路为低电平,则反馈信号变为低电平,锁存器刚刚接收到的开关被锁存,这时其它开关信息的输入将被封锁。由此可见,触发锁存电路具有时序电路的特征,是实现抢答器功能的关键。鉴别锁存电路可以由VHDL程序来实现,以下是一断鉴别锁存的VHDL程序: BEGIN PROCESS(CLK) IS BEGIN IF CLR=0 THEN STATES=0000; A1=0;B1=0;C1=0;D1=0; ELSIF CLKEVENT AND CLK=1 THEN IF (A=0AND B=1AND C=1AND D=1) THEN A1=1; B1=0; C1=0; D1=0; STATES=W1; ELSIF (A=1AND B=0AND C=1AND D=1) THEN A1=0; B1=1; C1=0; D1=0; STATES=W2; ELSIF (A=1AND B=1AND C=0AND D=1) THEN A1=0; B1=0; C1=1; D1=0; STATES=W3; ELSIF (A=1AND B=1AND C=1AND D=0) THEN A1=0; B1=0; C1=0; D1=1; STATES=W4; - ELSE A1=0; B1=0; C1=0; D1=0; STATES=0000; END IF; END IF; END PROCESS; END ARCHITECTURE ART; 鉴别锁存电路由VHDL程序实现后,其仿真图如图2.2.1所示。 图2.2.1 鉴别锁存仿真图时序仿真分析:RST,STA为输入控制信号,A,B,C,D为输入信号,表示参与答题的四位选手,START,A1,B1,C1,D1为输出信号,表示抢答的输出结果,如图3.2.1所示:当A,B,C,D四个输入信号,有一个先为1时候,表示首先抢答,则输出A1为1,表示抢答成功,其他信号被屏蔽,为无效信号。2.2.2答题计时模块答题计时模块的任务是当主持人启动这个计时开关时开始计时,如果在规定的时间内答完题则答题有效,如果在规定的时间内没有完成,则答题无效。计时器从规定的时间倒计时,计时为零时计时结束。答题有无效作凭主持人来判断。本模块由比较器C1和C2,基本RS触发器和三极管T1组成。两个比较器的翻转分别由高电平触发THR和低电平触发TRI的输入电压与比较基准电压比较决定,其输出控制RS触发器和放电BJT晶体客T的状态。计时电路可以由VHDL程序来实现,以下是一断计时的VHDL程序: BEGIN IF CLR=0 THEN DA=0000; DB=0000; ELSIF clockevent and clock=1 then IF TA=0 THEN IF DA=1001 THEN DA=0000; ELSE DA=DA+1 ; END IF; END IF; IF TB=0 THEN IF DB=1001 THEN DB=0000; ELSE DB=DB+1; END IF; END IF; END IF; END PROCESS; PROCESS(clock) IS VARIABLE TMPA: STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE TMPB: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF CLR=0 THEN TMPA:=0000; TMPB:=0000; ELSIF clockEVENT AND clock=1 THEN IF LDN=0 THEN TMPA:=DA; TMPB:=DB; ELSIF EN=1 THEN IF TMPA=0000 THEN TMPA:=1001; IF TMPB=0000 THEN TMPB:=1001; ELSE TMPB:=TMPB-1; END IF; ELSE TMPA:=TMPA-1; END IF; END IF; END IF; QA=TMPA; QB=TMPB; END PROCESS; END ARCHITECTURE ART; 答题计时电路由VHDL程序实现后,其仿真图如图2.2.2所示。 图2.2.2 答题计时仿真图时序仿真分析:CLK为输入时钟信号,LDN为输入信号,表示开始答题,如图3.2.2所示:当选手开始答题的时候,CLK输入时钟脉冲信号,开始记时间,当选手答题完毕后,记时结束,如若在规定时间内没完成答题,则表示答题失败。2.2.3计分电路模块 计分电路模块是给答题人计分用的,按照规定如果主持人判定答题有效则加分,如无效则按照设定不加分或者扣分。并将分数显示在计分屏幕上。本模块采用74LS112芯片,设置成两个电路一个加法器和一个减法器。个位电路始终显示为0所以将它直接接显示器的个位,再把十位的看成个位加减,依此类推。电路中设加分,减分和复位按钮。加法器和减法器电路中的单脉冲分别为加分和减分按钮,而两个电路中的清零电平开关就是复位按钮。计分电路可以由VHDL程序来实现,以下是一断计分的VHDL程序:BEGIN IF (clkEVENT AND clk=1) THEN IF RST=0 THEN POINTS_A1:=0000; POINTS_B1:=0000; POINTS_C1:=0000; POINTS_D1:=0000; ELSIF ADD=0 then cnt:=cnt+1; IF cnt=2500000 then cnt:=0; IF CHOS=0001 THEN IF POINTS_A1=1001 THEN POINTS_A1:=0000; ELSE POINTS_A1:=POINTS_A1+1; END IF; ELSIF CHOS=0010 THEN IF POINTS_B1=1001 THEN POINTS_B1:=0000; ELSE POINTS_B1:=POINTS_B1+1; END IF; ELSIF CHOS=0011 THEN IF POINTS_C1=1001 THEN POINTS_C1:=0000; ELSE POINTS_C1:=POINTS_C1+1; END IF; ELSIF CHOS=0100 THEN IF POINTS_D1=1001 THEN POINTS_D1:=0000; ELSE POINTS_D1:=POINTS_D1+1; END IF; else cnt:=0; END IF; END IF; END IF; END IF; AA1=POINTS_A1; BB1=POINTS_B1; CC1=POINTS_C1; DD1=POINTS_D1; END PROCESS; END ARCHITECTURE ART;计分电路由VHDL程序实现后,其仿真图如图2.2.3所示。 图2.2.3 计分电路仿真图时序仿真分析:RST为输入控制信号,用来复位,ADD为输入信号,表示答对一题加分,CHOSE输入信号,用来选择选手,AA2,AA1,AA0,BB2,BB1,BB0为输出信号,表示记分的结果,如图3.2.3所示:选择A选手答题,如答对,则输出A2为1,如答错,则输出A1为-1,如没答,则输出A0为0。2.2.4扫描显示模块此模块将计分电路中的计分结果通过扫描并显示出来于屏幕上。抢答者和观众则通过显示屏幕上的分数来判别竞赛都之间的成绩。最终胜负结果也是通过这个分数来判别的。显示部分采用动态扫描4 位LED 显示接口电路, LED 动态显示是单片机中应用最为广泛的一种显示方式, 其接口电路是把所有显示器的8 个笔划段adp 同名端并联在一起, 而每一个显示器的公共极COM是各自独立地受I/O 线控制, CPU 的字段输出口送出字形码时, 所有显示器由于同名端并连接收到相同的字形码, 但究竟哪个显示器亮, 则取决于COM端, 而这一端是由I/O 控制的, 所以就可以自行决定何时显示哪一位了, 在轮流点亮扫描过程中, 每位显示器的点亮时间表是极为短暂的, 但由于人的视觉暂留现象及发光二极管的余辉将就尽管实际上各位显示器并非同时点亮, 但只要扫描速度足够快, 给人的印象就是一组稳定的显示数据, 不会有闪烁感。扫描显示电路可以由VHDL程序来实现,以下是一断扫描显示的VHDL程序:begin if (clk_freshevent and clk_fresh=1) then cnt:=cnt+1; if cnt=000 then segcs=10000000; seg=ZBXS; elsif cnt=001 then segcs=00100000; seg=A1; elsif cnt=010 then segcs=00010000; seg=B1; elsif cnt=011 then segcs=00001000; seg=C1; elsif cnt=100 then segcs=00000100; seg=D1; elsif cnt=101 then segcs=00000010; seg=JSXS1; elsif cnt=110 then segcs=00000001; seg=JSXS2; elsif cnt=111 then segcs=00000000; seg=0000000; end if; end if;end process;end rtl;扫描显示由VHDL程序实现后,其仿真图如图2.2.4所示。 图2.2.4 扫描显示电路仿真图时序仿真分析:IN4为输入信号,OUT为输出显示信号,如图3.2.4所示,把输入信号进行编码输出。3 结束语通过二周的紧张工作,最后完成了我的设计任务基于VHDL的四路智力竞赛抢答器的设计。通过本次课程设计的学习,我深深的体会到设计课的重要性和目的性所在。本次设计课不仅仅培养了我们实际操作能力,也培养了我们灵活运用课本知识,理论联系实际,独立自主的进行设计的能力。它不仅仅是一个学习新知识新方法的好机会,同时也是对我所学知识的一次综合的检验和复习,使我明白了自己的缺陷所在,从而查漏补缺。希望学校以后多安排一些类似的实践环节,让同学们学以致用。在设计中要求我要有耐心和毅力,还要细心,稍有不慎,一个小小的错误就会导致结果的不正确,而对错误的检查要求我要有足够的耐心,通过这次设计和设计中遇到的问题,也积累了一定的经验,对以后从事集成电路设计工作会有一定的帮助。在应用VHDL的过程中让我真正领会到了其并行运行与其他软件顺序执行的差别及其在电路设计上的优越性。用VHDL硬件描述语言的形式来进行数字系统的设计方便灵活,利用EDA软件进行编译优化仿真极大地减少了电路设计时间和可能发生的错误,降低了开发成本,这种设计方法必将在未来的数字系统设计中发挥越来越重要的作用。4 致谢在此次课程设计中,非常感谢周维龙老师对我的指导与大力的帮助。如果没有他严谨细致、一丝不苟地批阅和指正,本文很难在这个短时间内完成。从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我很大的帮助,在这里请接受我诚挚的谢意!5 参考文献1康华光电了技术基础教程部分M北京:高等教育版社,20002宋卫海,王明晶数字电子技术M济南:山东科学技术出版社,20063曾繁泰,陈美金.VHDL程序设计M.北京:清华大学出版社,20014潘松.VHDL实用教程M.成都:电子科技大学出版社,20006 附件(1)SCN 模块的VHDL程序:-任一选手按下键后,锁存器完成锁存,对-其余选手的请求不做响应,直到主持人按-下复位键 -LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SCN IS PORT( CP:IN STD_LOGIC; CLR:IN STD_LOGIC; Q:OUT STD_LOGIC);END SCN;ARCHITECTURE RTL OF SCN ISBEGIN PROCESS(CP,CLR) BEGIN IF CLR=0 THEN -不完整的条件产生锁存 Q=0; ELSIF CPEVENT AND CP=0 THEN QDOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7=1111111; END CASE; END PROCESS; END ARCHITECTURE ART;(3)显示模块的VHDL程序:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity seg is Port (clk : in std_logic; A1:in std_logic_vector(6 downto 0); B1:in std_logic_vector(6 downto 0); C1:in std_logic_vector(6 downto 0); D1:in std_logic_vector(6 downto 0); ZBXS:in std_logic_vector(6 downto 0); JSXS1:in std_logic_vector(6 downto 0); JSXS2:in std_logic_vector(6 downto 0); seg : out std_logic_vector(6 downto 0); -输出7位seg数据; segcs : out std_logic_vector(7 downto 0); -数码管位选信号;end seg;architecture rtl of seg issignal clk_fresh : std_logic;beginprocess(clk)- -1KHZ;用于数码管扫描信号variable cnt : integer range 0 to 20000;-定时1MSbegin if clkevent and clk=1 then cnt:=cnt+1; if cnt10000 then clk_fresh=1; elsif cnt20000 then clk_fresh=0; else cnt:=0;clk_fresh=0; end if; end if;end process;process(clk_fresh)-位选信号(扫描时间1MS)variable cnt : std_logic_vector(2 downto 0);begin if (clk_freshevent and clk_fresh=1) then cnt:=cnt+1; if cnt=000 then segcs=10000000; seg=ZBXS; elsif cnt=001 then segcs=00100000; seg=A1; elsif cnt=010 then segcs=00010000; seg=B1; elsif cnt=011 then segcs=00001000; seg=C1; elsif cnt=100 then segcs=00000100; seg=D1; elsif cnt=101 then segcs=00000010; seg=JSXS1; elsif cnt=110 then segcs=00000001; seg=JSXS2; elsif cnt=111 then segcs=00000000; seg=0000000; end if; end if;end process;end rtl;(4)主控模块QDJB的VHDL程序:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY QDJB IS PORT(CLR: IN STD_LOGIC; CLK: IN STD_LOGIC; A, B, C, D: IN STD_LOGIC; A1,B1,C1,D1: OUT STD_LOGIC; STATES: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END ENTITY QDJB; ARCHITECTURE ART OF QDJB IS CONSTANT W1: STD_LOGIC_VECTOR:=0001; CONSTANT W2: STD_LOGIC_VECTOR:=0010; CONSTANT W3: STD_LOGIC_VECTOR:=0011; CONSTANT W4: STD_LOGIC_VECTOR:=0100; BEGIN PROCESS(CLK) IS BEGIN IF CLR=0 THEN STATES=0000; A1=0;B1=0;C1=0;D1=0; ELSIF CLKEVENT AND CLK=1 THEN IF (A=0AND B=1AND C=1AND D=1) THEN A1=1; B1=0; C1=0; D1=0; STATES=W1; ELSIF (A=1AND B=0AND C=1AND D=1) THEN A1=0; B1=1; C1=0; D1=0; STATES=W2; ELSIF (A=1AND B=1AND C=0AND D=1) THEN A1=0; B1=0; C1=1; D1=0; STATES=W3; ELSIF (A=1AND B=1AND C=1AND D=0) THEN A1=0; B1=0; C1=0; D1=1; STATES=W4; - ELSE A1=0; B1=0; C1=0; D1=0; STATES=0000; END IF; END IF; END PROCESS; END ARCHITECTURE ART; (5)定时模块的VHDL程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY JSQ IS PORT(CLR,LDN,EN,CLK: IN STD_LOGIC; TA,TB: IN STD_LOGIC; QA: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); QB: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END ENTITY JSQ; ARCHITECTURE ART OF JSQ IS SIGNAL DA: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL DB: STD_LOGIC_VECTOR(3 DOWNTO 0); signal tempcounter: integer range 0 to 5000000; signal clock:std_logic; BEGINprocess(clk)beginif(clkevent and clk=1)then-上升沿tempcounter=tempcounter+1;if tempcounter2500000 then clock=0;elsif tempcounter5000000 then clock=1;else tempcounter=0;clock=1;end if;end if;-end if;end process; PROCESS(TA,TB,CLR,clock) IS BEGIN IF CLR=0 THEN DA=0000; DB=0000; ELSIF clockevent and clock=1 then IF TA=0 THEN IF DA=1001 THEN DA=0000; ELSE DA=DA+1 ; END IF; END IF; IF TB=0 THEN IF DB=1001 THEN DB=0000; ELSE DB=DB+1; END IF; END IF; END IF; END PROCESS; PROCESS(clock) IS VARIABLE TMPA: STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE TMPB: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF CLR=0 THEN TMPA:=0000; TMPB:=0000; ELSIF clockEVENT AND clock=1 THEN IF LDN=0 THEN TMPA:=DA; TMPB:=DB; ELSIF EN=1 THEN IF TMPA=0000 THEN TMPA:=1001; IF TMPB=0000 THEN TMPB:=1001; ELSE TMPB:=TMPB-1; END IF; ELSE TMPA:=TMPA-1; END IF; END IF; END IF; QA=TMPA; QB=TMPB; END PROCESS; END ARCHITECTURE ART; (6)倒计时计数模块JFQ的VHDL程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 论文课件字体
- 2026届山东省招远市化学九上期末学业水平测试试题含解析
- 2025年生化各章试题及答案
- 论据使用方法
- 客户服务竞赛试题及答案
- 四寸小蛋糕培训课件
- 物资堆垛考试题及答案
- 数学随机考试题及答案
- 2025年关于叶酸试题及答案
- 记叙文表现手法课件
- 托管班的转让合同协议书
- 2025年新西师大版数学三年级上册全册教学课件
- 2025年证券从业资格考试金融市场基础知识押题及答案
- (正式版)DB1509∕T 0003-2023 《奶绵羊产奶性能测定技术规程》
- 2025年吉林省教育系统校级后备干部选拔考试题及答案
- 社区安全知识培训资料课件
- 托盘运输知识培训内容课件
- 2024年春季云南省高中学业水平合格性考试化学试卷真题(含答案)
- 2025年不明原因肺炎应急演练预案范文
- 子宫腺肌病课件
- 2025年小学语文教师业务理论考试试题及答案教材过关题库
评论
0/150
提交评论