FPGA中按键程序设计示例

本文中使用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运行仿真。
在这里插入图片描述
运行结果为:
在这里插入图片描述

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
FPGA(可编程逻辑门阵列)是一种集成电路设备,具有可重新编程的特性。FPGA程序设计是指在FPGA芯片上编写逻辑电路的过程。下面以一个简单的数码时钟设计为例,来介绍FPGA程序设计实例。 数码时钟是一种显示时间的设备,通常由七段显示器构成。要在FPGA上设计一个数码时钟,首先需要了解七段显示器的原理,以及FPGA开发板的硬件接口。 我们先将数码时钟的小时、分钟和秒分别用BCD码表示,然后使用逻辑门电路将其转换为七段显示器的输入信号。接着,在FPGA开发工具创建一个新的工程,选择对应的FPGA型号和开发板。 在开发工具,我们可以使用HDL(硬件描述语言)来编写FPGA程序。以VHDL为例,我们可以使用process语句和if语句来实现数码时钟的逻辑电路。在process语句,我们可以根据接收到的时钟信号和控制信号,更新时、分、秒的值,并将其转换为七段显示器的输入信号。 在实现逻辑电路后,我们需要将FPGA程序综合(synthesis),然后生成比特流文件(bitstream)。通过JTAG接口,将比特流文件下载到FPGA芯片,并在开发板上进行测试。 测试时,可以通过按键或开关来控制数码时钟的操作,比如调整时、分、秒的值,或者暂停、继续计时等功能。同时,数码时钟的输出信号将驱动七段显示器,显示当前的时、分、秒。 总结起来,以上就是一个FPGA程序设计实例:设计一个数码时钟。通过了解数码时钟的工作原理,编写逻辑电路,生成比特流文件,将其下载到FPGA芯片,并通过开发板进行测试,最终实现了一个可实时显示时间的数码时钟。这个实例展示了FPGA程序设计的基本过程,以及如何将逻辑电路转换为硬件实现的能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值