【野生实验】01-zybo-z7-20 点亮LED灯

实体硬件:Digilent的zybo-z7-20开发板;
开发环境:Vivado 2018.3;
目标:通过PL部分,进行FPGA编程,点亮开发板上的四盏led灯。
参考:博文ZYBOZ7从入门到进阶-2 zyboz7纯PL开发之LED点灯这片博文写的比较清晰完整,这里的实验过程基本一致,不过有两点区别:
1、这里提供了两个录屏的视频作为参考;
2、我把实验分成两步:(1)点亮led灯,(2)让led闪烁起来。分成两部分应该更容易理解。

基本步骤1
1、Vivado 新建工程
2、添加 led.v 程序,则也就是顶层模块,用来点亮小灯泡。

module led(
    input sys_clk, //系统时钟 125MHz
    output reg[3:0] led  //4盏 led灯,
    );    
    always @(posedge sys_clk)
    begin
        led <= 4'b1001;
    end  
endmodule

3、添加板子上管脚的约束文件
3.1 从Git(https://github.com/Digilent/digilent-xdc)上下载的约束文件:Zybo-Z7-Master.xdc;
3.2 去掉sysclk系统时钟和led部分的注释;
3.3 修改时钟部分的引脚命名。

4、直接生成Bitstream文件

5、下载到板子上,观察结果。

6、修改代码,增加计数器,统计时间。根据时间改变led灯的亮灭方式。

module led(
    input sys_clk, //系统时钟,125MHz
    output reg[3:0] led //四盏灯
    );
    
    parameter ONE_SECOND = 32'd124_999_999;
    parameter HALF_SECOND = (32'd124_999_999-1)/2;
    
    reg [32:0] counter;
   initial begin //初始化,这里让开头和结尾的两盏灯亮一下,不过估计这个时间太短了,看不到。
        led <= 4'b1001;
        counter <= 32'd0;    
    end
    
    always @(posedge sys_clk) // 增加一个计数器,统计半秒钟内来的上升沿个数;
    begin
        if (counter < HALF_SECOND) // 如果计数没有到半秒钟,继续计数
        begin
            counter <= counter + 32'd1;
        end
        else  // 如果计数到了半秒钟,计数器清零;改变led灯的状态,{} 
        begin
            counter <= 32'd0;
            led <= {led[2:0],~led[3]};
        end 
    end
endmodule

  1. 两个参考视频,没有声音,建议倍速播放:
    01-点亮zybo-z7的led
    02-让led灯闪烁起来 ↩︎

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值