Vivado初体验LED工程 1

简介: Vivado初体验LED工程

前言

本节我们要做的是熟练使用 Vivado 创建工程并实现对 LED 灯控制,每秒钟控制开发板上的 LED 灯翻转一次,实现亮、灭、亮、灭的控制。会控制 LED 灯,其它外设也慢慢就会了。


一、PL 和 PS

在FPGA中

  • PS:处理系统 (Processing System) :就是与 FPGA 无关的 ARM 的 SOC 的部分。
  • PL:可编程逻辑 (Progarmmable Logic): 就是 FPGA 部分。之所以叫 PL,而不是叫 FPGA,用英文简写可能便于理解区分,或者显得比较专业吧。

对于 ZYNQ,就是两大功能块,PS 部分和 PL 部分, ARM 的 SOC 部分,和 FPGA 部分。我们可以通过调用 IP 核,系统会使用 AXI(Advanced eXtensible Interface)接口将 IP 与处理器连接,也就是实现 PL 与 PS 互联。

我们就是要实现基于 PL 的点灯实验。

二、LED 硬件介绍

1、开发板的 PL 部分连接了 1 个红色的用户 LED 灯。这 1 个灯完全由 PL 控制。

2、我们可以根据原理图的连线关系确定 LED 和 PL 管脚的绑定关系。

LED -> R19

3、原理图中以 PS_MIO 开头的 IO 都是 PS 端 IO,不需要绑定,也不能绑定。

三、创建 Vivado 工程

1、启动 Vivado,在 Vivado 开发环境里点击 “Create New Project”,创建一个新的工程

2、弹出一个建立新工程的向导,点击 “Next”

3、在弹出的对话框中输入工程名和工程存放的目录,我们这里取一个 led 的工程名。需要注意工程路径 “Project location” 不能有中文、空格,路径名称也不能太长。点击 next

4、在工程类型中选择 “RTL Project”

5、目标语言 “Target language” 选择 “Verilog”,虽然选择 Verilog,但 VHDL 也可以使用,支持多语言混合编程。

6、点击 “Next”,不添加任何文件

7、在 “Default Part” 选项中,器件家族 “Family” 选择 “Zynq-7000”,封装类型 “Package” 选择 “clg400”,减少我们选择范围。AC7010 在下拉列表中选择 “xc7z010clg400-1”,AC7020 在下拉列表中选择 “xc7z020clg400-2”“-2” 表示速率等级,数字越大,性能越好,速率高的芯片向下兼容速率低的芯片。

8、点击 “Finish” 就可以完成以后名为 “led” 工程的创建。

9、Vivado 软件界面

四、创建 Verilog HDL 文件

1、点击 Project Manager 下的 Add Sources 图标(或者使用快捷键 Alt+A)

2、选择添加或创建设计源文件 “Add or create design sources”,点击 “Next”

3、选择创建文件 “Create File”

4、文件名 “File name” 设置为 “led”,点击 “OK”

5、点击 “Finish”,完成 “led.v” 文件添加

6、在弹出的模块定义 “Define Module” 中可以指定 “led.v” 文件的模块名称 “Module name”,这里默认不变为 “led”,还可以指定一些端口,这里暂时不指定,点击 “OK”

7、在弹出的对话框中选择 “Yes”

8、双击 “led.v” 可以打开文件,然后编辑

9、编写 “led.v”,这里定义了一个 32 位的寄存器 timer,用于循环计数 0~49999999(1 秒钟),计数到 49999999(1 秒)的时候,寄存器 timer 变为 0,并翻转一个 LED。这样原来 LED 是灭的话,就会点亮,如果原来 LED 为亮的话,就会熄灭。编写好后的代码如下:

`timescale 1ns / 1ps
module led(
    input sys_clk,
    input rst_n,
    output reg  led
    );
reg[31:0] timer_cnt;
always@(posedge sys_clk or negedge rst_n)
begin
  if(~rst_n) begin
        led <= 1'b0;
        timer_cnt <= 32'd0;
    end
    else if(timer_cnt >= 32'd49_999_999)
    begin
        led <= ~led;
        timer_cnt <= 32'd0;
    end
    else
    begin
        led <= led;
        timer_cnt <= timer_cnt + 32'd1;
    end
end
endmodule

目录
相关文章
|
Go 芯片 异构计算
Vivado初体验LED工程 3
Vivado初体验LED工程
441 0
|
存储 编译器 索引
Verilog基础【一】
Verilog基础【一】
696 0
IEEE 754规格化浮点数所能表示的最大值和最小值
IEEE 754规格化浮点数所能表示的最大值和最小值
5257 1
IEEE 754规格化浮点数所能表示的最大值和最小值
|
负载均衡 监控 算法
负载均衡的方法有哪些?
负载均衡的方法有哪些?
854 59
|
存储 负载均衡 算法
一致性哈希汇总
本文介绍了多种一致性哈希算法,包括Consistent Hashing Ring、Rendezvous、Jump、Multi-probe、Maglev、Anchor和Dx。这些算法各有特点,如Jump Hash实现了完美的key分布,而DxHash结合了多种算法的优点,支持动态扩缩容。文章还分析了各算法的性能指标,如内存使用、初始化时间、查询时间和调整集群大小的效率,以及均衡性和单调性。最后讨论了副本、权重和负载均衡策略的应用。
930 62
一致性哈希汇总
|
存储 机器学习/深度学习 人工智能
数据结构学习笔记——图的存储结构(邻接矩阵和邻接表)
数据结构学习笔记——图的存储结构(邻接矩阵和邻接表)
数据结构学习笔记——图的存储结构(邻接矩阵和邻接表)
|
存储 运维 虚拟化
虚拟化数据恢复——Hyper-V虚拟化故障导致虚拟机文件丢失的数据恢复案例
在Windows Server上部署的Hyper-V虚拟化环境中,因存储中虚拟机数据文件丢失导致服务瘫痪。北亚企安数据恢复工程师通过物理检测、操作系统及文件系统检测,确定为人为格式化造成,并通过镜像硬盘、重组RAID、分析并恢复文件索引项等步骤,成功恢复数据,最终在新Hyper-V环境中验证并迁移所有虚拟机,确保用户业务恢复正常运行。
|
并行计算 安全 Java
Python 多线程并行执行详解
Python 多线程并行执行详解
664 3
conda和pip指定镜像源下载
conda和pip指定镜像源下载
1494 1
|
Perl
sed删除不匹配正则表达式的行(保留匹配行)
sed删除不匹配正则表达式的行(保留匹配行)
1621 2