【FPGA & Modsim】 抢答器设计

实验题目:  抢答器设计                                     

实验目的:  掌握应用数字逻辑设计集成开发环境进行抢答器设计的方法;掌握时序逻辑电路设计的过程                         

实验内容:

1、设计支持3名参赛者的抢答器,并具有主持人控制的复位功能;

2、当一名参赛者按下抢答键时,对应的LED灯亮起,屏蔽其他选手;

3、分析实验结果,验证电路的功能是否符合设计要求。

实验步骤:

1、在数字逻辑集成开发环境中新建一个抢答器工程;

2、编写Verilog HDL源程序;

3、编译和逻辑综合源程序;

4、编写Verilog HDL仿真测试程序;

5、调用数字逻辑设计仿真环境对源程序进行仿真;

6、安装输入/输出端口建立约束文件;

7、下载到实验开发板,观察实践运行结果。

实验数据记录:

  1. 写出编写的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

  1. 写出编写的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、画出仿真环境中测试波形图。

【FPGA & Modsim】 抢答器设计_第1张图片

【FPGA & Modsim】 抢答器设计_第2张图片

【FPGA & Modsim】 抢答器设计_第3张图片

你可能感兴趣的:(FPGA学习记录,fpga开发)