实验题目:??抢答器设计 ????????????????????????????????????
实验目的:??掌握应用数字逻辑设计集成开发环境进行抢答器设计的方法;掌握时序逻辑电路设计的过程。?????????????????????????
实验内容:
1、设计支持3名参赛者的抢答器,并具有主持人控制的复位功能;
2、当一名参赛者按下抢答键时,对应的LED灯亮起,屏蔽其他选手;
3、分析实验结果,验证电路的功能是否符合设计要求。
实验步骤:
1、在数字逻辑集成开发环境中新建一个抢答器工程;
2、编写Verilog?HDL源程序;
3、编译和逻辑综合源程序;
4、编写Verilog?HDL仿真测试程序;
5、调用数字逻辑设计仿真环境对源程序进行仿真;
6、安装输入/输出端口建立约束文件;
7、下载到实验开发板,观察实践运行结果。
实验数据记录:
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
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、画出仿真环境中测试波形图。