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

目录
相关文章
|
7月前
|
Go 芯片 异构计算
Vivado初体验LED工程 3
Vivado初体验LED工程
52 0
|
4月前
|
中间件 编译器 调度
STM32cubemx对FreeRTOS的适配(工程模板配置)
STM32cubemx对FreeRTOS的适配(工程模板配置)
88 0
|
3月前
|
缓存 编译器 程序员
嵌入式开发环境Vscode开发STM32单片机程序
嵌入式开发环境Vscode开发STM32单片机程序
55 0
|
7月前
|
异构计算
Vivado初体验LED工程 2
Vivado初体验LED工程
43 0
|
7月前
STM32F0单片机快速入门二 开发环境的建立 20200128
STM32F0单片机快速入门二 开发环境的建立 20200128
stm32f407探索者开发板(二)——新建工程(基于固件库)(上)
stm32f407探索者开发板(二)——新建工程(基于固件库)(上)
252 0
stm32f407探索者开发板(二)——新建工程(基于固件库)(上)
stm32f407探索者开发板(二)——新建工程(基于固件库)(下)
stm32f407探索者开发板(二)——新建工程(基于固件库)(下)
114 0
stm32f407探索者开发板(二)——新建工程(基于固件库)(下)
|
虚拟化
proteus 与KEIL uvision联调的步骤
两个软件的联调设置,掌握虚拟化配置,省去硬件购置环节。
493 0
proteus 与KEIL uvision联调的步骤
|
物联网 芯片 内存技术
AliOS Things增加自己的开发板STM32F407ZET6,使用CubeMX库
AliOS Things增加自定义开发板,使用CubeMX生成stm32f407zet6对应芯片板
1131 0
《stm32嵌入式系统开发实战指南》一3.3 创建工程
本节书摘来自华章出版社《stm32嵌入式系统开发实战指南》一书中的第3章,第3.3节,作者 李志明 檀永 徐石明,更多章节内容可以访问云栖社区“华章计算机”公众号查看
1367 0

热门文章

最新文章