1、module YangLu(clk,inputEn,inputL1,inputL2,inputL3,inputL4,Sig1,Sig2,Sig3,Sig4,Led,Buzz er);/ 一开始时声明有哪些端口 /输入口 input clk,inputEn,inputL1,inputL2,inputL3,inputL4; /输出口 output Sig1,Sig2,Sig3,Sig4; output 0:7Led; output Buzzer; /在输出口配置个寄存器,以便运算 reg Sig1=1b1,Sig2=1b1,Sig3=1b1,Sig4=1b1; reg 0:7Led; reg Bu
2、zzer; /配置寄存器,EnFlat 是表明开始抢答的标志位 reg EnFlat=1b0; /BuClk 是蜂鸣器的标志位 reg BuClk=1b0; /BuL 是做蜂鸣器的延时用 reg 0:7BuL=8d0; always (posedge clk)/捕捉时钟 begin /初始化各按键并开始抢答 if(inputEn=1b0) begin / 初始化各个标志位和参数 EnFlat=1b1; / 各个按键对应的 LED 控制端 Sig1=1b1; Sig2=1b1; Sig3=1b1; Sig4=1b1;/ 静态数码管的控制端,有 8 位 Led=8b11111111; BuClk=
3、1b0; / 蜂鸣器的控制管脚,低电平为发声音 Buzzer=1b1; end /开始抢答 if(EnFlat=1b1) begin / 如果按键 1 按下 if(inputL1=1b0) begin / 禁止其他选手抢答 EnFlat=1b0; / 对应的 LED 点亮 Sig1=1b0; / 静态数码管显示序号1 Led=8b01101111; / 指示蜂鸣器发声 BuClk=1b1; end / 如果按键 2 按下 else if(inputL2=1b0) begin / 禁止其他选手抢答 EnFlat=1b0; Sig2=1b0;Led=8b00011010; BuClk=1b1; e
4、nd / 如果按键 3 按下 else if(inputL3=1b0) begin / 禁止其他选手抢答 EnFlat=1b0; Sig3=1b0; Led=8b01001010; BuClk=1b1; end / 如果按键 4 按下 else if(inputL4=1b0) begin / 禁止其他选手抢答 EnFlat=1b0; Sig4=1b0; Led=8b01101001; BuClk=1b1; end end /当蜂鸣器标志位置 1 时 /进入此蜂鸣器处理程序 if(BuClk=1b1)begin / 蜂鸣器发声 Buzzer=1b0; / 延时变量加 1 BuL = BuL + 8d1; / 当到达延时的时间时关掉蜂鸣器 if(BuL=8d255) begin / 延时变量复位 BuL=8d0; / 蜂鸣器标志位复位 BuClk=1b0; / 蜂鸣器停掉 Buzzer=1b1; end end end endmodule