FPGA开发实验(1)- LED流水灯实验

一、实验任务

本节的实验任务是使用达芬奇开发板上的四个 LED 灯顺序点亮并熄灭,循环往复产生流水灯的效果,流水间隔时间为 0.5s。LED 灯硬件原理图如下图所示:
在这里插入图片描述

二、程序设计

2.1 流水灯模块设计

在这里插入图片描述
模块flow_led。输入:sys_clk,sys_rst_n。输出:led。

2.2 流水灯波形图

在这里插入图片描述
系统时钟为50MHZ,0.5s需要0.5*50_000_000=25_000_000个时钟周期,所以cnt需要计数25000000-1次。

2.3 RTL代码设计

RTL代码flow_led.v如下:

module flow_led(
    input sys_clk;
    input sys_rst_n;
    output reg [3:0] led;
);

reg [24:0] cnt;

always @(posedge sys_clk or negedge sys_rst_n) begin
    if(!sys_rst_n)
        cnt <= 25'd0;
    else if(cnt == 25'd25000000 - 25'd1)
        cnt <= 25'd0;
    else
        cnt <= cnt + 1;
end

always @(posedge sys_clk or negedge sys_rst_n) begin
    if(!sys_rst_n)
        led <= 4'b0001;
    else if(cnt == 25'd25000000 - 25'd1)
        led <= {led[2:0],led[3]};
    else
        led <= led;
end
    
endmodule

2.3 仿真验证

仿真代码tb_flow_led.v如下:

`timescale 1ns/1ns
module tb_flow_led();
    
parameter CLK_PERIOD = 20;  //时钟周期为20ns

reg sys_clk;
reg sys_rst_n;

initial begin               //初始化时钟与复位
    sys_clk   <= 1'b0;
    sys_rst_n <= 1'b0;
    #200
    sys_rst_n <= 1'b1;
end

always @(#CLK_PERIOD) sys_clk = ~sys_clk;
    
flow_led u_flow_led(
    .sys_clk   (sys_clk),
    .sys_rst_n (sys_rst_n),
    .led       (led)
);
endmodule

由于0.5s仿真周期太长,所以我们将flow_led.v中的cnt的周期缩短为25。
仿真结果如下图:
在这里插入图片描述

三、下载验证

3.1引脚约束

#时序约束
create_clock -period 20.000 -name sys_clk -waveform {0.000 10.000} [get_ports sys_clk]
#IO 管脚约束
set_property -dict {PACKAGE_PIN R4 IOSTANDARD LVCMOS33} [get_ports sys_clk]
set_property -dict {PACKAGE_PIN U2 IOSTANDARD LVCMOS33} [get_ports sys_rst_n]
set_property -dict {PACKAGE_PIN R2 IOSTANDARD LVCMOS33} [get_ports {led[0]}]
set_property -dict {PACKAGE_PIN R3 IOSTANDARD LVCMOS33} [get_ports {led[1]}]
set_property -dict {PACKAGE_PIN V2 IOSTANDARD LVCMOS33} [get_ports {led[2]}]
set_property -dict {PACKAGE_PIN Y2 IOSTANDARD LVCMOS33} [get_ports {led[3]}]

3.2 分析与综合

通过vivado分析与综合后结果如下:

在这里插入图片描述

3.3 上板验证

将开发板与电脑连接下载验证,结果与预期符合呈现流水灯效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HQAQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值