




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、EDA技术课程设计说明书数字式竞赛抢答器 学 院: 电气与信息工程学院 学生姓名: 程 波 指导教师: 王晓丽 职称/学位 硕士 专 业: 电气工程及其自动化 班 级: 电气本1202班 学 号: 1230140210 完成时间: 2015年6月28日 摘 要 当今的社会竞争日益激烈,选拔人才,评选优胜,知识竞赛之类的活动愈加频繁,那摩就必然离不开抢答器。抢答器是为智力竞赛参赛者答题时进行抢答而设计的一种优先判决器电路,竞赛者可以分为若干组,抢答时各组对主持人提出的问题要在最短的时间内做出判断,并按下抢答按键回答问题。当第一个人按下按键后,则在显示器上显示该组的号码,对应的灯亮,同时电路将其他
2、各组按键封锁,使其不起作用。若抢答时间内无人抢答,则报警灯亮。回答完问题后,由主持人将所有按键恢复,重新开始下一轮抢答。此次课程设计的内容是设计一个可容纳四组参赛者同时抢答的数字抢答器。主要模块有抢答鉴别模块、计时模块、犯规模块、计分模块以及显示模块,这些模块的组合构成了抢答器系统框图。通过编写相应的VHDL程序实现即功能仿真,顶层文件及整体仿真。关键词:抢答器;VHDL目 录1 绪论1 2 抢答器的设计要求23 抢答器的功能模块3 3.1 抢答器的抢答鉴别模块设计3 3.1.1 抢答鉴别的功能3 3.1.2 抢答鉴别模块的时序仿真图3 3.2 抢答器的计时模块设计4 3.2.1 计时模块的功
3、能4 3.2.2 计时模块的时序仿真图4 3.3 抢答器的计分模块设计5 3.3.1 计分模块的功能5 3.3.2 计分模块的时序仿真图5 3.4 抢答器的译码显示模块设计6 3.4.1 译码显示模块的功能6 3.4.2 译码显示模块的时序仿真图6 3.5 抢答器的犯规模块设计7 3.5.1 犯规模块的功能7 3.5.2 犯规模块的时序仿真图74 抢答器的顶层原理图设计8 4.1 顶层原理图的源文件8 4.2 顶层设计的时序仿真图8结束语10参考文献11致谢12附录13 附录A 抢答鉴别模块VHDL源程序13 附录B 计时模块VHDL源程序15 附录C 计分模块VHDL源程序18 附录D 译码
4、显示模块VHDL源程序21 附录E 犯规模块VHDL源程序22I1 绪论 EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。随着电子技术和计算机技术的飞速发展,电子线路的设计工作也日益显得重要。
5、经过人工设计、制作实验板、调试再修改的多次循环才定型的传统产品设计方法必然被计算机辅助设计所取代,因为这种费时费力又费资源的设计调试方法既增加了产品开发的成本,又受到实验工作场地及仪器设备的限制。为了克服上述困难,加拿大Interactive Image Technologies公司推出的基于Windows 9598NT操作系统的EDA软件(Electronics Workbench“电子工作台”,EWB)。他可以将不同类型的电路组合成混合电路进行仿真。EWB是用在计算机上作为电子线路设计模拟和仿真的新的软件包,是一个具有很高实用价值的计算机辅助设计工具。目前已在电子工程设计等领域得到了广泛地
6、应用。与目前流行的电路仿真软件相比较,EWB具有界面直观、操作方便等优点。他改变了有些电路仿真软件输入电路采用文本方式的不便之处,该软件在创建电路、选用元器件的测试仪器等均可以直接从屏幕图形中选取,而且测试仪器的图形与实物外形基本相似,从而大大提高了电子设计工作的效率。2 抢答器的设计要求 在许多比赛活动中,为了准确、公正、直观地判断出第一抢答者,通常设置一台抢答器,通过数显、灯光及音响等多种手段指示出第一抢答者。同时,还可以设置计分、犯规及奖惩计录等多种功能。本设计的具体要求是:设计一个课容纳四组参赛者同时抢答的数字抢答器,可判断第一抢答者并报警指示抢答成功,其他组再抢答均无效。若提前抢答则
7、对相应的抢答组发出警报。同时,要求给出系统总体组成框图,设计思路,完成以上模块的VHDL文件并进行仿真验证。3 抢答器的功能模块 3.1 抢答器的抢答鉴别模块设计3.1.1 抢答鉴别模块的功能该模块主要实现抢答过程中的抢答功能,并能对超前抢答进行警告。同时,抢答鉴别模块还用来准确直观地判断A、B、C、D四组抢答者谁最先按下按钮,并为显示端送出信号,通过译码显示和报警等途径使观众能够清楚地知道是哪一组抢答成功,能记录无论是正常抢答还是超前抢答者的台号,并且能实现当有一路抢答按键按下时,该路的抢答信号会将其余信号封锁。它是整个系统的核心部分。同时组别显示端为下一模块输入信号,以便主持人为该组抢答成
8、功者进行加分的操作。抢答鉴别模块设计图如图1所示,其VHDL源程序见附录A。图1 抢答鉴别模块设计图3.1.2 抢答鉴别模块的时序仿真图 如图2,为抢答鉴别模块的时序仿真图。抢答时设置时钟信号CLK,在抢答时需要一个允许开始抢答信号,设置为states,该信号输入后,指示灯亮,信号为LED,提示选手开始抢答,为了鉴别抢答者,设置A、B、C、D为了使系统重新进入抢答状态,还需要一个复位信号,设置为CLR。从仿真图中可以看出,A的速度最快,但明显有一点抢先,紧随其后的是B,C,D,这三人均没有抢先,而且可以看出,抢答开始后,灯LED0亮。图2 抢答鉴别模块的时序仿真图3.2 抢答器的计时模块设计3
9、.2.1 计时模块的功能该模块主要实现抢答过程中的计时功能,在有抢答开始后进行所设时间的倒计时,并且在倒计时后无人抢答显示超时并报警。设置抢答时钟信号为clk,计时预置控制端ldn,系统复位清零信号为clr,抢答使能信号为en,计时预置数据调整按钮个位为ta,十位为tb。计时输出信号端qa3.0和qb3.0。计时模块设计图如图3所示,其VHDL源程序见附录B。图3 计时模块设计图 3.2.2 计时模块的时序仿真图 如图4,为抢答器的计时模块的时序仿真图。当清零信号clr=1时,模块输出信号qa=0000,qb=0000。当预置控制信号ldn=1可以通过ta来调整qa,ta来一次高电平,则qa的
10、数值就加1;用tb来调整qb,通过这两个调整信号可调整参赛者答题所需要的时间。在clr=0,ldn=0,en=1时,通过时钟信号clk的上升沿来进行倒计时。图4 计时模块的时序仿真图3.3 抢答器的计分模块设计3.3.1 计分模块的功能 系统的输入信号为:加分按钮端ADD,选择组别号输入端CHOSE3.0;系统的输出信号为:A组分数输出端A23.0、A13.0、A03.0B组分数输出端B23.0、B13.0、B03.0,C组分数输出端C23.0、C13.0、C03.0。 计分模块设计图如图5所示,其VHDL源程序见附录C。图5 计分模块设计图 3.3.2 计分模块的时序仿真图 如图6,为抢答器
11、的计分模块的时序仿真图。计分模块的运行方式是按照十进制进行加法,即当时钟出现上升沿时就进行加一的操作。计分模块为哪组进行计分取决于鉴别模块的输入信号CHOSE,当CHOSE=0001时表示A组最先抢答,则在此模块中为A组计分;当CHOSE=0010时表示B组最先抢答,则在此模块中为B组计分;当CHOSE=0100时表示C组最先抢答,则在此模块中为C组计分;当CHOSE=1000时表示D组最先抢答,则在此模块中为D组计分。图6 计分模块的时序仿真图3.4 抢答器的译码显示模块设计3.4.1 译码显示模块的功能 该模块实际上是一个译码器,译码器是组合逻辑电路的一个重要的器件,该模块中主要实现抢答过
12、程中将BCD码转化成7段数码管的功能。in43.0为输入信号,out76.0为输出信号。译码显示模块设计图如图7所示,其VHDL源程序见附录D。图7 译码显示模块设计图 3.4.2 译码显示模块的时序仿真图如图8,为抢答器的译码显示模块的时序仿真图。当输入0001,输出0000110,即在共阴极数码管上显示1;即显示A组抢答成功。当输入0010,输出1011011,即在共阴极数码管上显示2;即显示B组抢答成功。当输入0011,输出1001111,即在共阴极数码管上显示3;即显示C组抢答成功。当输入0100,输出1100110,即在共阴极数码管上显示4;即显示D组抢答成功。图8 译码显示模块的时
13、序仿真图3.5 抢答器的犯规模块设计3.5.1 犯规模块的功能 该模块主要实现抢答过程中的报警功能,当主持人按下控制键,在有限的时间内,没有人抢答或是主持人未按下控制按钮就抢答时开始报警,计数开始状态start,计数输入信号a、b、c、d以及状态输出信号y。犯规模块设计图如图9所示,其VHDL源程序见附录E。图9 犯规模块设计图 3.5.2 犯规模块的时序仿真图 如图10,为抢答器的犯规模块的时序仿真图。如图,当B组有人在未允许抢答之前抢答,其输出报警信号y为高电平。图10 犯规模块的时序仿真图4 抢答器的顶层原理图设计4.1 顶层原理图的源文件单独模块只有彼此联系起来构成一个完整的系统,才能
14、实现其功能,这个过程有两种实现方法:元件例化和元器件图示连线。为了能直观的表示各模块之间的连接关系。我采用元器件图示连线,这种连线方法思路清晰可见,而且用的时候很简单方便,即使出现错误也很好检查。 按照要求,我们可以将整个系统分为五个主要模块:抢答鉴别模块;抢答计时模块;抢答计分模块;译码显示模块和犯规模块。对于需显示的信息,需要增加或外接译码器,进行显示译码。考虑到实验开发平台提供的输出显示资源的限制,我们将组别显示和计时显示的译码器内设,而将各组的计分显示的译码器外接。整个系统的总的顶层设计图如图11所示。图11 抢答器总的顶层设计图4.2 顶层设计的时序仿真图 如图12,为抢答器的顶层设
15、计的时序仿真图。从仿真图中可以看出,当允许答题后,四组(A、B、C、D)任意一组抢答时,在规定的时间抢答成功,即该组就加分。图中A组,抢答成功加分一次,LED0被点亮,其SCOREA加1。译码显示模块(YMSC)显示对应组号(0000110),即为1。B组抢答成功两次,LED1被点亮,其SCOREA加2。译码显示模块(YMSC)显示对应组号(1011011),即为2。D组抢答成功三次,LED3被点亮,其SCOREA加3。译码显示模块(YMSC)显示对应组号(1111111),即为8。图12 顶层设计的时序仿真图 结束语本次的EDA课程设计虽然只有短暂的一周时间,但是通过实践,使我对EDA技术有
16、了更进一步的了解。同时,大致懂得了一个课题制作的具体流程和实施方法。另外,课程设计对Quartus软件的使用要求较高,从而使我能较为熟练的运用此软件。在设计时,采用模块化的设计思路使得问题变的简单明了,大大缩短了时间,降低了发生错误的机侓,也便于修改和更新。课程设计中,需要找很多资料,在当今的信息化环境中,虽然资料很多,但需要仔细斟酌才能找到所要的。这次的课程设计很好的锻炼了这种能力。此外,与同学和老师的交流必不可少,我从中也学到了不少东西。课程设计是一次很好的锻炼机会,我从中学的很多知识对将来的学习和工作都有很大的帮助,十分感谢学校能提供这样一个机会。参考文献1潘松,黄继业.EDA技术与VH
17、DLM(第2版).北京:清华大学出版社,20072曹昕燕,周凤臣,聂春燕,EDA技术实验与课程设计M.北京:清华大学出版社, 20063潘松,黄继业.EDA技术实用教程-VHDL版M(第四版).北京:科学出版社,20104杭州康芯电子有限公司GW48-PK3实验系统说明书. 杭州康芯电子有限公司,2006 5姜雪松,吴钰淳.VHDL设计实例与仿真M.机械工业出版社,20076李伟英,谢完成.基于EDA技术的抢答器的设计与实现J.科学技术与实现,2008.8(11) 致 谢在这次设计中,我花了不少的时间,其中有苦也有乐。苦的是我付出了不少的汗水,乐的是在付出的过程中我得到了许多,也学会了许多。因
18、为一个人的能力毕竟有限,在设计方面难免会出现这样或那样的错误,但正是这些促进了我的进步。根据对整体结构的分析,我采用层次结构化的设计概念,将此项设计任务分成若干模块,规定每一模块的功能和各模块之间的接口,然后再将各模块合起来联试,这就培养了我对层次化设计的概念。在此次课程设计中,我真正体会到了知识地重要性。在设计的过程中,遇到问题我会先独立思考,到自己不能解决的时候我就会和同学讨论,实在解决不了就向老师请教,应该说从功能的实现到流程图的绘制,从程序的编写到程序的检查,从程序的调试到文档的书写,其间每一个过程都凝集着大家对我的支持。最后,在设计的过程中我进一步养成了软件设计的方法,完成了一个项目
19、的程序编写,进一步了解了设计的步骤,也进一步加深了对课程的理解,增强了对本课程的兴趣,为以后的工作积累了一定的经验,在这次课程设计中,非常感谢王晓丽老师为我疑难解惑,也感谢同学们对我的帮助。附 录附录A 抢答鉴别模块VHDL源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity QIANGDA is port(CLR,CLK:in std_logic; A,B,C,D:in std_logic; states: buffer std_logic_vector(3 downto 0);
20、LED: buffer std_logic_vector(3 downto 0); warm: out std_logic);end entity QIANGDA;architecture art of QIANGDA is signal Q: std_logic_vector(3 downto 0);beginp1:process(A,B,C,D,CLR,CLK)beginif CLR='1' then warm<='0' Q<="0000" elsif CLK'event and CLK='1' the
21、n if (A='1'or Q(0)='1')and not (Q(1)='1'or Q(2)='1'or Q(3)='1') then Q(0)<='1' end if; if (B='1'or Q(1)='1')and not (Q(0)='1'or Q(2)='1'or Q(3)='1') then Q(1)<='1' end if; if (C='1'or Q(2)=&
22、#39;1')and not (Q(0)='1'or Q(1)='1'or Q(3)='1') then Q(2)<='1' end if; if (D='1'or Q(3)='1')and not (Q(0)='1'or Q(1)='1'or Q(2)='1') then Q(3)<='1' end if; warm<=Q(0)or Q(1)or Q(2)or Q(3);end if;end process
23、p1;p2:process(states(0),states(1),states(2),states(3),LED)begin if(Q="0000")then states<="0000" elsif(Q="0001")then states<="0001" elsif(Q="0010")then states<="0010" elsif(Q="0100")then states<="0100" elsif(Q
24、="1000")then states<="1000" end if; LED<=Q;end process p2;end art; 附录B 计时模块VHDL源程序library ieee; use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity JISHI 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_
25、logic_vector(3 downto 0);end entity JISHI;architecture art of JISHI is signal da: std_logic_vector(3 downto 0); signal db: std_logic_vector(3 downto 0);begin process(ta,clr) isbegin if(clr='1')then da<="1001" elsif(ta'event and ta='1')then if(ldn='1')then if(
26、da="0000")then da<="1001" else da<=da-1; end if; end if; end if;end process;process(tb,clr) isbegin if(clr='1')then db<="0101" elsif(tb'event and tb='1')then if(ldn='1')then if db="0000"then db<="1001" else db&
27、lt;=db-1; end if; end if; end if;end process;process(clk) is variable tmpa: std_logic_vector(3 downto 0); variable tmpb: std_logic_vector(3 downto 0);begin if(clr='1')then tmpa:="0000" tmpb:="0000" elsif clk'event and clk='1' then if en='1'then tmpa:=d
28、a; tmpb:=db; elsif tmpa="0000"then if tmpb="0000"then tmpa:="0000" else tmpa:="1001" end if; if tmpb="0000"then tmpb:="0000" else tmpb:=tmpb-1; end if; else tmpa:=tmpa-1; end if; end if; qa<=tmpa; qb<=tmpb;end process;end architecture
29、 art; 附录C 计分模块VHDL源程序library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity JIFEN is port( ADD: in std_logic; CHOSE:in std_logic_vector(3 downto 0); A2,A1,A0:OUT std_logic_vector(3 downto 0); B2,B1,B0:OUT std_logic_vector(3 downto 0); C2,C1,C0:OUT std_logic_vector(3 downt
30、o 0); D2,D1,D0:OUT std_logic_vector(3 downto 0); END JIFEN; ARCHITECTURE rtl OF JIFEN IS BEGIN PROCESS(ADD,CHOSE) VARIABLE POINTS_A2,POINTS_A1: STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE POINTS_B2,POINTS_B1: STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE POINTS_C2,POINTS_C1: STD_LOGIC_VECTOR(3 DOWNTO 0); VARIAB
31、LE POINTS_D2,POINTS_D1: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF ADD'EVENT AND ADD='1' THEN IF CHOSE="0001" THEN IF POINTS_A1="1001" THEN POINTS_A1:="0000" IF POINTS_A2="1001" THEN POINTS_A2:="0000" ELSE POINTS_A2:=POINTS_A2+'1' END
32、 IF; ELSE POINTS_A1:=POINTS_A1+'1' END IF; ELSIF CHOSE="0010" THEN IF POINTS_B1="1001" THEN POINTS_B1:="0000" IF POINTS_B2="1001" THEN POINTS_B2:="0000" ELSE POINTS_B2:=POINTS_B2+'1' END IF; ELSE POINTS_B1:=POINTS_B1+'1' END I
33、F; ELSIF CHOSE="0100" THEN IF POINTS_C1="1001" THEN POINTS_C1:="0000" IF POINTS_C2="1001" THEN POINTS_C2:="0000" ELSE POINTS_C2:=POINTS_C2+'1' END IF; ELSE POINTS_C1:=POINTS_C1+'1' END IF; ELSIF CHOSE="1000" THEN IF POINTS_D
34、1="1001" THEN POINTS_D1:="0000" IF POINTS_D2="1001" THEN POINTS_D2:="0000" ELSE POINTS_D2:=POINTS_D2+'1' END IF; ELSE POINTS_D1:=POINTS_D1+'1' END IF; END IF; END IF; A2<=POINTS_A2; A1<=POINTS_A1; A0<="0000" B2<=POINTS_B2; B1<=POINTS_B1; B0<="0000" C2<=POINTS_C2; C1<=POINTS_C1; C0<="0000" D2<=POINTS_D2; D1<=POINTS_D1; D0<="0000" END PROCESS; END rtl;附录D 译码显示模块VHDL源程序library ieee; use ieee.std_logic_1164.all; ENTITY XIANSHI IS PORT(DIN : IN STD_LOGIC_VECTOR(3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 五金店新零售模式探索与实施策略考核试卷
- 工程设计规范与标准考核试卷
- 机织运动服装在运动康复中的角色考核试卷
- 技术服务多元化战略与市场拓展考核试卷
- 服装行业大数据分析应用考核试卷
- 户外登山鞋租赁与保养常识考核试卷
- 中小学生手卫生课件
- 施工电梯备案合同范本
- 劳务永久合同范本
- 宠物购买意向合同范本
- 注册安全工程师安全生产技术培训讲义课件
- 美发店承包合同范本(2篇)
- 2023年苏州健雄职业技术学院单招考试面试题库及答案解析
- 公司组织架构图(可编辑模版)
- 人教版六年级科学下册教案全册
- TCITSA 24-2022 基于ETC的高速公路自由流收费技术规范
- 叉车装卸区域安全风险告知牌
- 2022届江苏省南京师范大学附属中学高三(下)考前最后一模物理试题(解析版)
- 《普通生物学教案》word版
- 贵州省就业失业登记表
- 预防电信诈骗网络诈骗讲座PPT幻灯片课件
评论
0/150
提交评论