使用Xilinx Vivado设计套件创建一个简单的HelloWorld项目

时间:2025-11-01  作者:Diven  阅读:0

什么是FPGA

Xilinx以制造 可编程门阵列(FPGA)而闻名,是基于一个通过可编程接点连接的可配置逻辑块(CLBs)矩阵。根据Control Engineering Europe中的 “FPGA的优点(Advantages of FPGA)”这篇文章,多种控制回路能够以不同但是十分快的速度在FPGA设备上运行。FPGA也可以在制造后再编程以达到别种应用或是功能需求,这使在专业工程师中非常流行。许多工程师都把这种技术应用到机械学习,无线通信,嵌入式视觉和云计算应用中。

使用Xilinx Vivado设计套件创建一个简单的HelloWorld项目

什么是ZYNQ

Xilinx Zynq®-7000 全可编程系统芯片 (AP SoC)系列包含了基于嵌入式处理器的软件可编程性和FPGA的硬件可编程性。这个技术使得我们在单一设备上集成CPU,DSP,ASSP和混合信号功能时进行关键分析和硬件加速。

安装Vivado, SDK 和板支持文件

在创建数字或系统设计前你首先需要安装 Xilinx Vivado 设计套件。 Xilinx Vivado Webpack 这个版本是免费的,通过 Digilent Wiki 上提供的使用指导也可以帮助你快读安装和运行Vivado。在下载Vivado时,确保你使用设计工具(Design Tools)栏目中的“软件开发套件(Software Development Kit)”来安装SDK。为了防止你忘了这个步骤,你也可以返回安装软件来安装“软件开发套件(Software Development Kit)”。

内容

一旦你下载并安装了Vivado,你需要把ZYBO板文件放入本地Xilinx Vivado文件夹,定义了ZYBO板上的不同界面和协议。之后你就可以成功建立IP和SDK了。Diligent提供了一个教程: https://reference.digilentinc.com/reference/software/vivado/board-files?。.. 。

注意:在Vivado board文件安装指导中,你需要把头文件(board_files)放入你的本地文件夹。然后,我会推荐你复制独立的board文件(例如,一旦你下载了vivdado board文件,找到vivado-boards-masterewoard_files并复制“zybo文件夹”。否则你可能会在设计中碰到一些不必要的错误。

创建项目

我将会使用 Digilent ZYBO 并根据 开始指南(getting started guide) 来创建一个简单的HelloWorld项目。

项目概要

在这个项目中你将会学到如何用四个板上的开关来控制板上的LED。当你按下四个不同的按钮后,你可以看到来自电脑端的多种信息。

设计流程

打开Vivada并选择Zybo板

创建一个新的Vivado项目

在新的项目中创建一个空的板块设计工作区

使用IP集成工具添加需要的IP模块并创建硬件设计

验证并保存板块设计

创建HDL系统封装

运行设计综合与实现

生成Bit文件

导出包含了bit源文件的硬件设计到SDK工具

开启 SDK

硬件设计概要

你可以根据开始指南(getting started guide)中的步骤2-6来创建硬件设计,以下是一些说明。

自动运行模块(Run Block Automation)对话框可以让你提供微处理器系统需要的一些基础特性输入。

“3.4)双击新的axi_gpio_0内核可以弹出自定义窗口。在IP设置页检查启动双通道,并点击OK”,你可以创建两种输入-SW和BTN。每一个axi_gpio内核都支持32位单双GPIO通道。在这个项目中,每个通道我们只需要四位。你可以在AXI GPIO Guide中找到详细信息。

“3.5)重复步骤3.3可以添加另一个GPIO内核,但是不要启动双通道”,你将会创建一个输出-LED。

自动运行连接可以帮助你hook界面和外部I/O接口

默认,UART界面中的已经被放置在ZYNQ IP中了

请参考:http://blog.dev-flow.com/en/8-first-use-of-the-zynq-7000-processor-system-on-a-zynq/。

软件设计概要

你可以根据开始指南(getting started guide)中的步骤7-10来创建软件设计,以下是一些说明。

当你打开“src”文件夹中的“helloworld.c’’文件后(参考开始指南(getting started guide)中的步骤9.4),你可以通过以下步骤在用户界面看到一些预设功能和库的详细内容。

标记功能/库

右击预设功能/库并打开新选项看到声明

以下是代码和注释

#include

#include “platform.h”

#include

#include “xparameters.h”

#include “sleep.h”

int main()

{

XGpio input, output;

int button_data = 0;

int switch_data = 0;

XGpio_Initialize(&input, XPAR_AXI_GPIO_0_DEVICE_ID);

XGpio_Initialize(&output, XPAR_AXI_GPIO_1_DEVICE_ID);

XGpio_SetDataDirection(&input, 1, 0xF);

XGpio_SetDataDirection(&input, 2, 0xF);

XGpio_SetDataDirection(&output, 1, 0x0);

init_platform();

while(1){

switch_data = XGpio_DiscreteRead(&input, 2);

XGpio_DiscreteWrite(&output, 1, switch_data);

button_data = XGpio_DiscreteRead(&input, 1);

if(button_data == 0x0){}

else if(button_data == 0x1)

xil_printf(“button 0 pressed”);

else if(button_data == 0x2)

xil_printf(“button 1 pressed”);

else if(button_data == 0x4)

xil_printf(“button 2 pressed”);

else if(button_data == 0x8)

xil_printf(“button 3 pressed”);

else

xil_printf(“multiple buttons pressed”);

usleep(200000);

}

cleanup_platform();

return 0;

}

运行项目

你可以根据步骤11来运行项目。在你对FPGA进行编程并成功创建应用后,你可以看到以下:

1. 试着按下四个开关,并且各自相对应的LED会亮起

2. 在串口端,按下每一个按钮,会弹出“按钮已被按下”的信息。

猜您喜欢

贴片电阻体积小巧,上面的标识也常常让人摸不着头脑。别担心,掌握一些简单的技巧,你就能轻松识别它们的阻值。对于三位数的标识,前两位数字表示阻值,最后一位数字表示1...
2025-04-14 15:03:59

在当今信息化时代,2G、3G、4G和5G模块在通信领域是非常重要的配件。2G模块主要用于基本的语音通话和短信服务,适合简单的物联网应用,如远程监控和数据采集。随...
2009-01-01 00:00:00

现代电子技术中,晶体二极管作为重要的半导体器件,应用于整流、信号处理、开关等多个领域。随着科技的不断发展,市场上涌现出越来越多的新型晶体二极管,原有的二极管可能...
2025-04-03 10:30:34

在FPGA设计中,时序约束对于电路性能和可靠性非常重要。在上一篇的文章中,已经详细介绍了FPGA时序约束的主时钟约束。本文将重点讲解衍生时钟约束和时钟分组约束设...
2023-06-12 17:29:00

贴片电阻上的「01B」标记并非直接表示阻值大小,而是代表其阻值代码。要确定01B贴片电阻的具体阻值,需要将其代码进行解码。「01B」采用的是三位数代码标注法。其...
2024-11-26 11:30:02

高压脉冲储能电容是现代科技中的重要设备。能储存大量能量,并快速释放。很多行业都需要这种设备,尤其是电力和电子领域。本文将深入探讨高压脉冲储能电容的特点与应用。高...
2025-03-22 10:01:07

固定式衰减器是常见的信号处理器件,应用于通信、广播和其电子设备中。根据其结构和功能的不同,固定式衰减器可以分为几类。根据衰减方式的不同,可以将其分为被动衰减器和...
2013-02-12 00:00:00

电阻作为电子元件中的基础元件,其性能和类型的多样化成为电子设计中的重要因素。四端子电阻因其高精度和低误差的特点,应用于精密测量和高端电子设备中。作为知名的电阻制...
2024-11-28 07:53:35

内六角喉塞是常见的机械配件,应用于各类管道连接和密封场合。采用内六角设计,便于使用专用工具进行安装和拆卸,确保了连接的牢固性和密封性。内六角喉塞通常由高品质金属...
2024-07-07 00:00:00

电子发烧友网报道(文/李弯弯)CMOS图像传感器通常由像敏单元阵列、行驱动器、列驱动器、时序控制逻辑、AD转换器、数据总线输出接口、控制接口等组成,它们通常都被...
2024-09-18 00:04:00