当前位置:首页 > 新闻资讯 > FPGA之家动态 >

FPGA中按键程序设计示例

时间:2024-07-31      来源:网络搜集 关于我们 0

本文中使用Zynq 7000系列中的xc7z035ffg676-2器件的100MHz PL侧的外部差分时钟来检测外部按键是否按下,当按键被按下时,对应的灯会被点亮。当松开按键时,对应的灯会熄灭。

1、编写代码

新建工程,选用xc7z035ffg676-2器件。

点击Design Sources中的“+”新建一个代码文件KEY.v。

文件类型选择Verilog。

KEY.v文件创建完成后,可以看到Design Sources文件夹中有KEY.v文件,打开该文件编辑内容。

module KEY(

input       clk,

input       rst,

input       key,

output   led

    );

parameter delay_time = 200;

reg [31:0] cnt;

reg  led_r;

assign led = led_r;

always @(posedge clk or negedge rst)

begin

  if(!rst)  begin

    cnt <= b0;

    led_r <= b0;

  end

  else  begin

    if(!key)  begin

      if( cnt < delay_time) begin

        cnt <= cnt + b1;

        led_r <= led_r;

      end   

      else begin

          cnt <= cnt;

          led_r <= b1;

        end

      end   

    else begin

      cnt <= b0;

      led_r <= b0;

    end

  end    

end

endmodule

2、仿真设计

点击Design Sources中的“+”创建仿真文件SIM.v

文件类型选择Verilog。

SIM.v文件创建完成后,可以看到Design Sources文件夹中有SIM.v文件,打开该文件编辑代码。

在这里,key = 1表示没有按按键,key = 0表示按下按键。

module SIM(

    );

    reg   clk;

    reg   rst;

    reg   key;

    wire  led;

    KEY  KEY(

    .clk(clk),

    .rst(rst),

    .key(key),

    .led(led)

    );

    initial

      begin

        clk = b0;

        rst = b0;

        key = b1;

        #1000;

        rst = b1;

        #20000;

        key = b0;

        #10000;

        key = b1;

        #20000;

        key = b0;

      end

    always #5 clk = !clk;

endmodule

3、开始仿真

左键点击“PROJECT MANAGER——SIMULATION——RUN Simulation”。

选择Run Behavioral Simulation.

右键点击Scope下的KEY,选择Add to Wave Window,将KEY中的信号全部添加到右侧视图中。

点击Run All运行仿真。

运行结果为:


注明:本内容来源网络,不用于商业使用,禁止转载,如有侵权,请来信到邮箱:429562386ⓐqq.com 或联系本站客服处理,感谢配合!

用户登陆

    未注册用户登录后会自动为您创建账号

提交留言