EDA实训报告班级:17电子信息工程技术二班同组:彭元毛张贵萍王子文一.EDA设计要求抢答器是为智力竞赛参赛者答题时进行抢答而设计的一种优先判决器电路,竞赛者可以分为若干组,抢答是各组对主持人提出的问题要在最短的时间内做出判断,并按下抢答按键回答问题。当第一人按下按键后,则在显示器上显示该组的号码,对应的灯亮,同时电路将其他各组按键封锁,使其不起作用。抢答者回答正确加分,回答错误则减分。若抢答时间内无人抢答,则报警灯亮。回答完问题后,有主持人将所有按键恢复,重新开始下一轮抢答。因此要完成抢答器的逻辑功能,该电路应包括抢答器鉴别模块、抢答器计数模块、报警模块、译码模块、分频模块、计分模块。(一).抢答器鉴别模块在这个模块中主要实现抢答过程中的抢答功能,并能对超前抢答进行警告,还能记录无论是正常抢答还是朝前抢答者的台号,并且能实现当有一路抢答按键按下时,该路抢答信号将其余的抢答信号封锁的功能。其中有四个抢答信号s0、s1、s2、s3;抢答状态显示信号states;抢答与警报时钟信号clk0;系统复位信号rst;警报信号warm。(二).抢答器计时模块在这个模块中主要实现抢答过程中的计时功能,在有抢答开始后进行20秒的倒计时,并且在20秒倒计时后无人抢答显示超时并报警。其中有抢答时钟信号clk1;系统复位信号rst;抢答使能信号start;无人抢答警报信号warn;计时中止信号stop;计时十位和个位信号tb,ta。(三).报警模块该模块中主要实现抢答过程中的报警功能,当主持人按下控制键,有限时间内无人抢答或是计数到时蜂鸣器开始报警,计数停止信号stop;状态输出信号alm;计数脉冲clk。(四).译码模块在这个模块中主要实现抢答过程中将BCD码转换成7段的计时功能。(五).分频模块在这个模块中主要实现抢答过程中所需的时钟信号。(六).计分模块在计分电路的设计中,按照一般的设计原则,按一定数进制进行加减。由于此设计要先预置100分,所以可以设计rest开关,当它为高电平的时候就进行预置,然后为低电平的时候,有主持人控制ADD与ACC两个开关对抢答者做出的回答进行加减分判断。预置数100分,就由AA0、AA1、AA2控制个、十、百位信号,因为个位一直为零,所以就将它一直设置成低电平,然后当十位为“9”的时候,向百位进位,百位就加“1”,减分的时候,当十位为“0”的时候,就向百位借“1”。二.程序代码(一).抢答器鉴别模块代码、仿真modulejianbie(clk0,rst,key,s0,s1,s2,s3,states,led,warm,buzz);inputclk0,rst,key,s0,s1,s2,s3;output[6:0]states;output[3:0]led;outputwarm;outputbuzz;regEnFlat=1'b1;reg[3:0]states=4'b0000;reg[3:0]led=4'b1111;regspeaker;regwarm=1'b1;regbuzz;integeri;always@(posedgeclk0)beginif(key==1)beginif(s0==0)beginstates=4'b0001;warm=1'b0;endif(s1==0)beginstates=4'b0010;warm=1'b0;endif(s2==0)beginstates=4'b0011;warm=1'b0;endif(s3==0)beginstates=4'b0100;warm=1'b0;endendif(key==1'b0)if(EnFlat==1'b1)beginif((s0==1'b0)&&(EnFlat==1'b1))beginled=4'b1110;states=4'b0001;EnFlat=1'b0;speaker=1'b1;endelseif((s1==1'b0)&&(EnFlat==1'b1))beginled=4'b1101;states=4'b0010;EnFlat=1'b0;speaker=1'b1;endelseif((s2==1'b0)&&(EnFlat==1'b1))beginled=4'b1011;states=4'b0011;EnFlat=1'b0;speaker=1'b1;endelseif((s3==1'b0)&&(EnFlat==1'b1))beginled=4'b0111;states=4'b0100;EnFlat=1'b0;speaker=1'b1;endendif(rst)beginEnFlat=1'b1;led=4'b1111;states=3'd0;warm=1'b1;speaker=1'b0;endendalways@(posedgeclk0)beginif(speaker==1)beginif(i25000000)beginbuzz=1;i=i+1;endelsebuzz=0;endelsebeginbuzz=0;i=0;endendendmodule图2.1.1鉴别模块仿真(二)、抢答器计时模块代码、仿真modulejishi(clk_1s,ta,tb,chaoshi,start,block,rst,stop);inputclk_1s,start,block,rst,stop;outputreg[3:0]ta,tb;outputregchaoshi;reg[5:0]ji20;always@(posedgeclk_1s)beginif(start==0)beginji20=6'd20;ta=4'd0;tb=4'd2;endelseif(!block)beginif(ji20==0)beginta=0;tb=0;chaoshi=1;endelseif(ji2011)beginji20=ji20-6'b1;ta=ji20;tb=4'd0;endelsebeginji20=ji20-6'b1;ta=ji20-6'd10;tb=4'd1;endif(rst)beginji20=6'd20;ta=4'd0;tb=4'd2;chaoshi=0;endendendendmodule(三).报警模块代码、仿真modulebaojing(stop,alm,clk,fmq,warn);inputstop,clk,warn;outputregalm,fmq;always@(posedgeclk)beginalm=0;fmq=0;if(warn&&!stop)图2.2.1抢答器计时仿真beginalm=1;fmq=1;endendendmodule