【FPGA & Modsim】 抢答器设计

发布时间:2024年01月16日

实验题目:??抢答器设计 ????????????????????????????????????

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

实验内容:

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

文章来源:https://blog.csdn.net/m0_51956878/article/details/135607081
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。