视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
基于VHDL的四路抢答器
2025-09-24 11:13:13 责编:小OO
文档
《EDA技术综合设计 》

课程设计报告

报 告  题 目:  基于VHDL的四路抢答器    

作者所在系部:        电子工程系           

作者所在专业:                       

作者所在班级:                      

作 者 姓 名 :                         

指导教师姓名:                       

完 成 时 间 :                    

一 概 述………………………………………………………………………3

二 方案设计与论证………………………………………………………………3

三 单元电路设计…………………………………………………………………3

3.1抢答鉴别模块……………………………………………………3

3.1.1源程序设计 ………………………… ……………………………… 4                                               

3.1.2 仿真图………………………………………… …………………… 4

3.2 抢答计时模块 ………………………………………… ……………… 5

3.2.1源程序设计 ………………………………………………………… 5

3.2.2 仿真图 ………………………………………………………………6

3.3 数据选择模块 ……………………………………………………………6

 3.3.1源程序设计 ………………………………………………………… 6

3.3.2 仿真图……………………………………………………………… 7

3.4报警模块……………………………………………… ………………… 7

 3.4.1源程序设计 ………………………………………………………… 7

3.4.2 仿真图………………………………………… …………………… 8

3.5分频模块……………………………………………………………………8

 3.5.1源程序设计 ………………………………………………………… 8

3.5.2 仿真图…………………………………………………………………9

3.6 顶层文件………………………………………………………………… 9

3.6.1源程序设计……………………………………………………………9

3.6.2 仿真图 ………………………………………………………………10

3.7顶层文件……………………………………………………………………10

3.8 主电路连线图………………………………………………………………10

四、器件编程与下载 ……………………………………………………………11

五 性能测试与分析………………………………………………………………12

(要围绕设计要求中的各项指标进行)

六 实验设备………………………………………………………………………12

七 心得体会………………………………………………………………………12

八 参考文献………………………………………………………………………13

课程设计任务书

课题

名称基于VHDL的四路答器

完成

时间

指导

教师

职称学生

姓名

班级
总体设计要求和技术要点
设计要求:

1.抢答器同时供4名选手或4个代表队比赛,分别用4个按钮S0~ S3表示。

2.设置一个系统清除和抢答控制开关S,该开关由主持人控制。

3.抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时扬声器发出报警声响提示。选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。

4. 抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。当主持人启动“开始”键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间0.5秒左右。

5. 参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。

6. 如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。

技术要点:1、实现封锁功能; 3、总程序的编译、仿真、打包并下载到实验箱。

工作内容及时间进度安排

工作内容:1、编程、仿真、打包、编辑总程序,编译。2、下载到实验箱,验证结果。

进度安排:周一到周五上机调试程序。周六并下载验证,做硬件实验。周日课设验收并总结报告。

课程设计成果
1.与设计内容对应的软件程序         2.课程设计报告书

3.成果使用说明书                   4.设计工作量要求

  课程设计流程图 

一、概述 

抢答器主要由抢答鉴别模块、抢答计时模块、数据选择模块、报警器、译码模块和分频模块组成。在设计中,要实现倒计时功能,并且主持人按键后才能抢答,一人抢答后,其他人就不能再抢答了。抢答器共有3个输出显示,选手代号、计数器的个位和十位,把这三个输出与显示译码器连接,实现显示功能。当主持人按下控制键、选手按下抢答键或倒计时到时蜂鸣器短暂响起。

二、方案设计与论证

将该任务分成六个模块进行设计,分别为:抢答器鉴别模块、抢答器计时模块、数据选择模块、报警模块、译码模块和分频模块,最后是撰写顶层文件。

1、抢答器鉴别模块:

在这个模块中主要实现抢答过程中的抢答功能,并能对超前抢答进行警告,还能记录无论是正常抢答还是朝前抢答者的台号,并且能实现当有一路抢答按键按下时,该路抢答信号将其余个绿抢答封锁的功能。其中有四个抢答信号s0、s1、s2、s3;抢答使能信号s;抢答状态显示信号states;抢答与警报时钟信号clk2;系统复位信号rst;警报信号tmp。

2、抢答器计时模块:

在这个模块中主要实现抢答过程中的计时功能,在有抢答开始后进行30秒的倒计时,并且在30秒倒计时后无人抢答显示超时并报警。其中有抢答时钟信号clk2;系统复位信号rst;抢答使能信号s;抢答状态显示信号states;无人抢答警报信号warn;计时中止信号stop;计时十位和个位信号tb,ta。

3、数据选择模块:

在这个模块中主要实现抢答过程中的数据输入功能,输入信号a[3..0]、b[3..0]、c[3..0];计数输出信号s;数据输出信号y;计数脉冲clk2,实现a、b、c按脉冲轮流选通,在数码管上显示。

4、报警模块:

 在这个模块中主要实现抢答过程中的报警功能,当主持人按下控制键,有限时间内  人抢答或是计数到时蜂鸣器开始报警,有效电平输入信号i;状态输出信号q;计数脉冲clk2。

5、译码模块:

在这个模块中主要实现抢答过程中将BCD码转换成7段的功能。

6、分频模块:

在这个模块中主要实现抢答过程中实现输出双脉冲的功能。

7、顶层文件:

在这个模块中是对前七个模块的综合编写的顶层文件。

一、单元电路设计

3.1抢答鉴别模块

  3.1.1、VHDL源程序

library ieee;--抢答鉴别模块

use ieee.std_logic_11.all;

use ieee.std_logic_unsigned.all;

entity qdjb is

  port(rst,clk2:in std_logic;

tmp:out std_logic);

end qdjb;

architecture one of qdjb  is

signal st:std_logic_vector(3 downto 0);

begin

p1:process(s0,rst,s1,s2,s3,clk2)

  begin

if (s1='1' or st(1)='1')and not( st(0)='1' or st(2)='1' or st(3)='1' ) then st(1)<='1';

if (s2='1' or st(2)='1')and not( st(0)='1' or st(1)='1' or st(3)='1' ) then st(2)<='1';

if (s3='1' or st(3)='1')and not( st(0)='1' or st(1)='1' or st(2)='1' ) then st(3)<='1';

tmp<=s0 or s1 or s2 or s3;

end if ;

end process p1;

p2:process(states(0),states(1),states(2),states(3))

 begin

 if (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;  end process p2;

end one;

3.1.2、仿真图:

3.2抢答计时模块

3.2.1、VHDL源程序

library ieee;--抢答器计时模块

use ieee.std_logic_11.all;

use ieee.std_logic_unsigned.all;

entity js is

  port(clk,rst,s,stop:in std_logic;

end js;

architecture one of js is

signal co:std_logic;

begin

p1:process(clk,rst,s,stop,ta)

end process p1;

p2:process(co,rst,s,stop,tb)

end process p2;

3.2.2、仿真图

3.3数据选择模块

  3.3.1、VHDL源程序

LIBRARY  IEEE;

USE  IEEE.STD_LOGIC_11.ALL;

use ieee.std_logic_unsigned.all;

use ieee.std_logic_arith.all;

ENTITY  sjxz  IS

 PORT (a,b,c: IN  STD_LOGIC_vector(3 downto 0);

clk2,rst: IN  STD_LOGIC;

         s: out  STD_LOGIC_vector(1 downto 0);

             y: OUT STD_LOGIC_vector(3 downto 0) );

 END sjxz;

ARCHITECTURE body_chooser OF sjxz IS

  SIGNAL  count: STD_LOGIC_VECTOR(1 DOWNTO 0);

  BEGIN

s<=count;

  PROCESS(clk2,rst)

  BEGIN

if(rst='0')then count<="00";

     elsif(clk2'event and clk2='1')then 

if(count>="10")then

count<="00";

else count<=count+1;

 end if;

end if;

case count is

WHEN "00"=>y<=a;

WHEN "01"=>y<=b;

WHEN "10"=>y<=c;

WHEN OTHERS=>NULL;

   END CASE; 

   END PROCESS;

   END body_chooser;

3.3.2、仿真图

3.4报警模块

3.4.1、VHDL源程序

LIBRARY IEEE;

USE IEEE.STD_LOGIC_11.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY ALARM IS

PORT(CLK,I:IN STD_LOGIC;

END ALARM;

ARCHITECTURE BEHAVE OF ALARM IS

  SIGNAL warn:STD_LOGIC;

  SIGNAL N:INTEGER RANGE 0 TO 20;

BEGIN

Q<=warn;

  PROCESS(CLK)

END PROCESS;

END BEHAVE;

3.4.2、仿真图

3.5译码模块

3.5.1、VHDL源程序

LIBRARY IEEE;

USE IEEE.STD_LOGIC_11.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY YMQ IS

  PORT(AIN4: IN STD_LOGIC_VECTOR(3 DOWNTO 0);

       DOUT7:  OUT STD_LOGIC_VECTOR(6 DOWNTO 0));

END YMQ;

ARCHITECTURE ART OF YMQ IS

BEGIN

  PROCESS(AIN4)

    BEGIN

   CASE AIN4 IS

    WHEN "0000"=>DOUT7<="1111110";              --0

    WHEN "0001"=>DOUT7<="0110000";              --1

WHEN "0010"=>DOUT7<="1101101"; --2

WHEN "0011"=>DOUT7<="1111001"; --3

WHEN "0100"=>DOUT7<="0110011"; --4

WHEN "0101"=>DOUT7<="1011011"; --5

WHEN "0110"=>DOUT7<="1011111"; --6

    WHEN "0111"=>DOUT7<="1110000";              --7

WHEN "1000"=>DOUT7<="1111111"; --8

WHEN "1001"=>DOUT7<="1111011"; --9

WHEN OTHERS=>DOUT7<="0000000";

    END CASE;

  END PROCESS;

END ARCHITECTURE ART;

3.5.2、仿真图

3.6分频模块

3.6.1、VHDL源程序

LIBRARY IEEE;

USE IEEE.STD_LOGIC_11.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY clkdiv IS

PORT(clk2 : IN STD_LOGIC;

clk16 : OUT STD_LOGIC);

END clkdiv;

ARCHITECTURE rtl OF clkdiv IS

SIGNAL count : STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

PROCESS(clk2)

BEGIN

IF (clk2'event AND clk2='1') THEN

IF(count="1111") THEN

Count <="0000";

ELSE

Count <= count +1;

END IF ;

END IF ;

END PROCESS;

PROCESS(clk2)

BEGIN

IF (clk2'event AND clk2='1') THEN

IF(count="1111") THEN

clk16 <= '1';

ELSE

clk16 <= '0';

END IF ;

END IF ;

END PROCESS;

END rtl;

3.6.2、仿真图

3.7顶层文件

3.7.1VHDL源程序

library ieee;--抢答器顶层文件

use ieee.std_logic_11.all;

use ieee.std_logic_arith.all;

use ieee.std_logic_unsigned.all;

entity qiangdaqi is

  port(clk,clk2,s,s0,s1,s2,s3,stop,rst:in std_logic;

end qiangdaqi;

architecture bhv of qiangdaqi is

component qdjb is

  port(clk2,rst:in std_logic;

           s0,s1,s2,s3:in std_logic;   

end component;

component js is

  port(clk,rst,s,stop:in std_logic;

end component;

component sjxz is

end component;

component ymq is

 port(AIN4:IN STD_LOGIC_VECTOR(3 DOWNTO 0);

end component;

component alarm is

end component;

signal states_out,ta_out,tb_out,y_out:std_logic_vector(3 downto 0);

signal ledout:std_logic_vector(6 downto 0);

signal w:std_logic;

begin

a<=ledout(6);b<=ledout(5);c<=ledout(4);d<=ledout(3);e<=ledout(2);f<=ledout(1);g<=ledout(0);

u1:qdjb port map(clk2,rst,s0,s1,s2,s3,tmp=>k,states=>states_out);

u2:js port map(clk,rst,s,stop,warn=>n,ta=>ta_out,tb=>tb_out);

u3:sjxzportmap(clk2=>clk2,rst=>rst,a=>states_out,b=>ta_out,c=>tb_out,s=>m,y_out;

u4:ymq port map(ain4=>y_out,DOUT7=>ledout);

u5:alarm port map(clk2,i=>s,q_out);

end bhv;

3.7.2仿真图

3.8主电路连线图

四、器件编程与下载

将编译好的模块程序下载到CPLD中(注:device选取要与硬件对应,否则会导致实验失败),连线做硬件实验。 

五、性能测试与分析

 按下复位键rst抢答信号清零、计数器清零,按下始能键s,观察数码管是否开始倒计时同时扬声器是否发出报警声,按下抢答键s0观察数码管是否显示相应位数,再按s1,s2.s3均不改变显示实现封锁,按下rst键,观察是否清零,再按s键,不按别的,直到计时时间到,观察是否显示00,扬声器是否发出报警。  

六、实验设备

计算机,EL教学实验箱

七、心得体会

通过这次EDA课程设计,在了解到抢答器的基本工作原理的同时,我还基本掌握了试验软件的使用方法,并且意识到作为二十一世纪的跨世纪电子通讯专业人才,这些软硬件的应用操作常识是必不可少的。在此次实训的过程中,我们虽然碰到了很多困难和问题,到最后还是靠大家的共同努力与坚持的完成了任务。当遇到了自己无法解决的困难与问题的时候,还请教老师给予指导和帮助。这次实训给我最深的印象就是扩大自己的知识面,了解更多与本专业有关的科技信息,与时代共同进步,才能在将来成为有用的科技人才。

八、参考文献

[1] 、李国洪,沈明山:《可编程逻辑器件EDA技术与实践》,[M].机械工业出版社,2004.7

[2]、江国强:《EDA技术习题与实验》 电子工业出版社 ,2002.5

[3]、曹昕燕,周风臣,聂春燕:《EDA技术试验与课程设计》,清华大学出版社,2006.5

[4]、黄仁欣:《EDA技术实用教程》,清华大学出版社,2006.9

[5]、王振红:《数字电路设计与应用实践教程》,机械工业出版社2003.6 

指导教师评语及设计成绩

       评   语     

课程设计成绩:                 

  

指导教师:              

日期:      年    月   日

下载本文
显示全文
专题