抢答器的设计.EDA课程设计
- 格式:doc
- 大小:194.50 KB
- 文档页数:15
EDA 课程设计报告书课题名称 抢答器的设计 姓 名王昆学 号 0812201-36 院 系 物理与电信工程系 专 业 电子信息工程 指导教师周来秀 讲师2011年 6月10日※※※※※※※※※ ※※ ※※ ※※※※※※※※※※※2008级学生EDA 课程设计抢答器的设计王昆(湖南城市学院物理与电信工程系电子信息工程专业,湖南益阳,41300)1设计目的本次设计的目的就是了解并掌握VHDL硬件描述语言的设计方法和思想,通过学习的VHDL语言知识理论联系实际,掌握所学的课程知识,学习VHDL基本单元电路的综合设计应用。
通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试用户程序,来加深对该课程的认识和理解,充分发挥我们的个体创造能力。
通过课程设计深入理解VHDL语言的精髓,达到课程设计的目标。
2设计的主要内容和要求抢答器是为智力竞赛参赛者答题时进行抢答而设计的一种优先判决器电路,竞赛者可以分为若干组,抢答时各组对主持人提出的问题要在最短的时间内做出判断,并按下抢答按键回答问题。
当第一个人按下按键后,则在显示器上显示该组的号码,对应的灯亮,同时电路将其他各组按键封锁,使其不起作用。
若抢答时间内无人抢答,则报警灯亮。
回答完问题后,由主持人将所有按键恢复,重新开始下一轮抢答。
因此要完成抢答器的逻辑功能,该电路应包括抢答器鉴别模块、抢答器计数模块、报警模块、译码模块、分频模块。
3 整体设计方案1、概述将该任务分成五个模块进行设计,分别为:抢答器鉴别模块、抢答器计时模块、报警模块、分频模块、译码模块。
2、抢答器鉴别模块在这个模块中主要实现抢答过程中的抢答功能,并能对超前抢答进行警告,还能记录无论是正常抢答还是朝前抢答者的台号,并且能实现当有一路抢答按键按下时,该路抢答信号将其余的抢答信号封锁的功能。
其中有四个抢答信号s0、s1、s2、s3;抢答状态显示信号states;抢答与警报时钟信号clk2;系统复位信号rst;警报信号warm。
3、抢答器计数模块在这个模块中主要实现抢答过程中的计时功能,在有抢答开始后进行20秒的倒计时,并且在20秒倒计时后无人抢答显示超时并报警。
其中有抢答时钟信号clk1;系统复位信号rst;抢答使能信号start;无人抢答警报信号warn;计时中止信号stop;计时十位和个位信号tb,ta。
4、报警模块在这个模块中主要实现抢答过程中的报警功能,当主持人按下控制键,有限时间内,人抢答或是计数到时蜂鸣器开始报警,计数停止信号stop;状态输出信号alm;计数脉冲clk。
5、译码模块在这个模块中主要实现抢答过程中将BCD码转换成7段的功能。
6、分频模块:在这个模块中主要实现抢答过程中所需的时钟信号。
7、顶层文件在这个模块中是对前五个模块的综合编写的顶层文件。
4 软件设计4.1主电路图连线图4.1 主电路连线图4.2 子模块设计4.2.1抢答鉴别模块该模块主要实现抢答过程中的抢答功能,并能对超前抢答进行警告,还能记录无论是正常抢答还是朝前抢答者的台号,并且能实现当有一路抢答按键按下时,该路抢答信号将其余的抢答信号封锁的功能,并有四个抢答信号s0、s1、s2、s3;抢答状态显示信号states;抢答与警报时钟信号clk2;系统复位信号rst;警报信号warm图4.2 抢答器鉴别元件图VHDL源程序library ieee;--库头文件use ieee.std_logic_1164.all;--用了标准逻辑的IEEE第1164号文件,这个文件包括了VHDL中的经常用的许多东西use ieee.std_logic_unsigned.all;entity xuanshou is --定义实体port(rst,clk2:in std_logic;s0,s1,s2,s3:in std_logic;--4个组states:buffer std_logic_vector(3 downto 0);light:buffer std_logic_vector(3 downto 0);warm:out std_logic);end xuanshou ;architecture one of xuanshou is --定义了实体的一个结构体signal st:std_logic_vector(3 downto 0);beginp1:process(s0,rst,s1,s2,s3,clk2)beginif rst='0' thenwarm<='0';st<="0000";elsif clk2'event and clk2='1' then --锁存,当有一组选中时其他组再抢答没作用if (s0='1' or st(0)='1')and not( st(1)='1' or st(2)='1' orst(3)='1' )then st(0)<='1';end if ;if (s1='1' or st(1)='1')and not( st(0)='1' or st(2)='1' orst(3)='1' )then st(1)<='1';end if ;if (s2='1' or st(2)='1')and not( st(0)='1' or st(1)='1' orst(3)='1' )then st(2)<='1';end if ;if (s3='1' or st(3)='1')and not( st(0)='1' or st(1)='1' orst(2)='1' )then st(3)<='1';end if ;warm<=st(0) or st(1) or st(2) or st(3);end if ;end process p1;p2:process(states(0),states(1),states(2),states(3),light)beginif (st="0000") then states<="0000";elsif (st<="0001") then states<="0001";elsif (st<="0010") then states<="0010";elsif (st<="0100") then states<="0011";elsif (st<="1000") then states<="0100";end if;light<=st;end process p2;end one;4.2.2计数模块该模块主要实现抢答过程中的计时功能,在有抢答开始后进行20秒的倒计时,并且在20秒倒计时后无人抢答显示超时并报警,抢答时钟信号clk1;系统复位信号rst;抢答使能信号start;无人抢答警报信号warn;计时中止信号stop;计时十位和个位信号tb,ta图4.3 计数元件图VHDL源程序library ieee; --库头文件use ieee.std_logic_1164.all; --用了标准逻辑的IEEE第1164号文件use ieee.std_logic_unsigned.all;entity JS is ----定义实体port(clk1,rst,start,stop:in std_logic;ta,tb:buffer std_logic_vector(3 downto 0));end JS;architecture one of JS is –定义结构体signal co:std_logic;beginp1:process(clk1,rst,start,stop,ta)beginif rst='0' or stop='1' thenta<="0000";--清零,倒计时60秒elsif clk1'event and clk1='1' thenco<='0';if start='1' thenif ta="0000" thenta<="1001";co<='1';else ta<=ta-1; --置数控制,如果不想要60可以从TA,TB输入倒计时秒数end if;end if;end if;end process p1;p2:process(co,rst,start,stop,tb)beginif rst='0' or stop='1' thentb<="0010";elsif co'event and co='1' thenif start='1' thenif tb="0000" then tb<="0011"; --遇到9则自动变为0,否则减一else tb<=tb-1;end if;end if;end if;end process p2;end one ;4.2.3 报警模块该模块主要实现抢答过程中的报警功能,当主持人按下控制键,有限时间内,人抢答或是计数到时蜂鸣器开始报警,计数停止信号stop;状态输出信号alm;计数脉冲clk图4.4 报警元件图VHDL源程序library ieee; --库头文件use ieee.std_logic_1164.all; --用了标准逻辑的IEEE第1164号文件entity shengyin is6 port(rst:in std_logic;warn:in std_logic;clk:in std_logic;ta,tb:in integer range 0 to 9;stop:in std_logic;alm:out std_logic );end;architecture bhv of shengyin is --定义了实体的一个结构体beginprocess(warn,ta,tb,stop,clk)beginif rst='0'thenalm<='0';elsif stop='1'thenalm<='0';elsif ta=0 and tb=0 thenalm<=clk;elsif warn='1'thenalm<=clk;else alm<='0';end if;end process;end;4.2.4 七段译码器模块该模块中主要实现抢答过程中将BCD码转换成7段的功能。