文档介绍:成绩指导教师日期 张歆奕2014-3-27   五邑大学实验报告实验课程名称:电子系统EDA  院系名称:   信息学院       专业名称:   电子信息工程      实验项目名称:   四人抢答器     班级: 学号:  报告人:                   ,在设计过程中先将系统模块化,然后逐步实现,根据设计功能要求,该设计主要包括按键抢答输入,数码管显示组号,蜂鸣器报警电路,倒计时电路和数码管显示倒计时电路。抢答器整体结构图,如图1图1该系统可实现要求中的基本功能,K1,K2,K3,K4为抢答开关,按下该键(Ki=0)进行抢答,释放该键(Ki=1)不抢答;按下START键后,20秒倒计时开始,由倒计时模块输出时间到译码模块,译码模块控制LED2显示倒计时间。在20秒内,当有一路抢答键最先按下,抢答成功者组号由抢答模块直接输出组号对应的数码管的二进制编码,使数码管LED1直接显示其组号,SPEAKER鸣响,停止倒计时,同时封锁其它各路抢答信号;若在20秒内没有抢答键按下,LED2显示00,LED1显示“F”,表示超时,封锁所有抢答信号,需按下START,才可以开始下一次抢START为抢答开始开关。(一)抢答模块程序代码:moduleqiangda(clk,start,key,seg_zuhao,s_out,chaoshi,block);inputclk,start,chaoshi; //定义时钟信号,抢答开始信号,超时信号输入input[3:0]key;  ////四路抢答输入端口outputreg[7:0]seg_zuhao;//输出七段数码管outputregs_out,block; //输出锁存信号和蜂鸣器信号reg[3:0]out;regspeaker; //蜂鸣器控制integeri;always@(posedgeclkornegedgestartorposedgechaoshi)beginif(!start)beginseg_zuhao=8'b10111111;//数码管显示“-”block=0;    out=4'd0;speaker=1'b0;endelseif(chaoshi==1)beginblock<=1;seg_zuhao<=8'b10001110;endelseif(!block)beginif(key==4'b0111)beginout=4'd1;seg_zuhao=8'b11111001; //数码管显示组号“1”block=1;     //封锁其它人抢答speaker=1'b1;  //蜂鸣器endelseif(key==4'b1011)beginout=4'd2;seg_zuhao=8'b10100100; //数码管显示组号“2”block=1;speaker=1'b1;endelseif(key==4'b1101)beginout<=4'd3;seg_zuhao=8'b10110000; //数码管显示组号“3”block=1;speaker=1'b1;endelseif(key==4'b1110)beginout=4'd4;seg_zuhao=8'b10011001;//数码管显示组号“4”block=1;speaker=1'b1;endelseseg_zuhao=8'b11111111;endendalways@(posedgeclk)  //蜂鸣器部分beginif(speaker==1)beginif(i<25000000)begins_out<=1;i<=i+1;end //<=0;endelsebegins_out<=0;i<=0;endendendmodule说明:本段程序实现基本的抢答功能,block为锁存信号,当有一组按下抢答按钮后,系统锁存,其他组别抢答无效;同时通过speaker向蜂鸣器发出信号,蜂鸣器响一下表示抢答成功;于此同时信号block输送给倒计时模块,用于停止倒计时;seg_zuhao为静态显示抢答成功的组号,预置数为”-”;当接受到超时信号chaoshi时,系统锁存,所有组抢答无效,同时seg_zuhao输出“F”,表示超时。(二)分频器程序代码:moduletime_1s(clk,clk_1s);inputclk;  outputregclk_1s;integerm;always@(posedgeclk)beginif(m<'d25000000)m<=m+'d1;else beginm<='d0;clk_1s<=~clk_1s;endendendmodule说明:输入时钟信号和抢答模块的一样都是50MHZ,通过计数