实验题目: 抢答器设计
实验目的: 掌握应用数字逻辑设计集成开发环境进行抢答器设计的方法;掌握时序逻辑电路设计的过程。
实验内容:
1、设计支持3名参赛者的抢答器,并具有主持人控制的复位功能;
2、当一名参赛者按下抢答键时,对应的LED灯亮起,屏蔽其他选手;
3、分析实验结果,验证电路的功能是否符合设计要求。
实验步骤:
1、在数字逻辑集成开发环境中新建一个抢答器工程;
2、编写Verilog HDL源程序;
3、编译和逻辑综合源程序;
4、编写Verilog HDL仿真测试程序;
5、调用数字逻辑设计仿真环境对源程序进行仿真;
6、安装输入/输出端口建立约束文件;
7、下载到实验开发板,观察实践运行结果。
实验数据记录:
- 写出编写的Verilog HDL源程序。
module question_counter (
input wire clk,
input wire reset,
input wire [2:0] button_pressed,
output reg [2:0] led_on
);
always @(posedge clk or posedge reset) begin
if (reset) begin
led_on <= 3'b000;
end else begin
case (button_pressed)
3'b001: led_on <= 3'b001; // Player 1
3'b010: led_on <= 3'b010; // Player 2
3'b100: led_on <= 3'b100; // Player 3
default: led_on <= 3'b000;
endcase
end
end
endmodule
- 写出编写的Verilog HDL仿真测试程序。
module tb_question_counter;
reg clk, reset;
reg [2:0] button_pressed;
wire [2:0] led_on;
// 实例化抢答器模块
question_counter uut (
.clk(clk),
.reset(reset),
.button_pressed(button_pressed),
.led_on(led_on)
);
// 生成时钟信号
always #5 clk = ~clk;
// 初始化信号
initial begin
clk = 0;
reset = 1;
#10 reset = 0;
#10 button_pressed = 3'b001; #10 button_pressed = 3'b010; #10 button_pressed = 3'b100; #10 $finish;
end
endmodule
3、画出仿真环境中测试波形图。