当前位置: 首页 > article >正文

FPGA第 13 篇,使用 Xilinx Vivado 创建项目,点亮 LED 灯,Vivado 的基本使用(点亮ZYNQ-7010开发板的LED灯)

前言

在FPGA设计中,Xilinx Vivado软件是一款功能强大的设计工具,它不仅支持硬件描述语言(HDL)的开发,还提供了丰富的图形化设计界面,方便用户进行硬件设计、调试和测试。这里我们将详细介绍,如何使用Vivado软件点亮ZYNQ-7010开发板上的LED灯,涵盖从工程创建到代码实现的全过程。


一. 环境准备

在开始之前,请确保您已安装以下软件和工具。请看

  • Xilinx Vivado Design Suite
  • ZYNQ-7010开发板
  • USB JTAG调试器(如Xilinx Platform Cable USB)


二. 创建工程

创建 Vivado 工程,请看

1. 打开和创建

打开Vivado,点击“Create New Project”,点击下一步。

2. 名称和位置

在“Project Name”框中输入项目名称,选择一个合适的存储位置,并点击“Next”。

3. 选择和同意

在“Project Type”中选择“RTL Project”,勾选“Do not specify sources at this time”,然后点击“Next”。

这里众多选项,分别代表不同意思,请看

新项目

项目类型

指定要创建的项目类型。

  • RTL项目
    您将能够添加源文件、在IP集成器中创建模块设计、生成IP、运行RTL分析、综合、实现、设计规划和分析。
    ☐ 此时不指定源文件

  • 后综合项目
    您将能够添加源文件、查看设备资源、运行设计分析、规划和实现。
    ☐ 此时不指定源文件

  • I/O规划项目
    不指定设计源文件。您将能够查看部件/封装资源。

  • 导入项目
    从Synplify、XST或ISE项目文件创建Vivado项目。

  • 示例项目
    从预定义的模板创建一个新的Vivado项目。

这里我们选择第一项,添加项目源文件。

4. 选择和型号

在“Default Part”页面中,选择您的ZYNQ-7010开发板的型号(如Zynq-7000系列),选择Package 引脚类型,然后选择Speed 速度等级,再选择Part 部件类型,最后点击“Next”。

这里也有很多选项,分别代表不同意思,请看

新项目

默认部件

为您的项目选择一个默认的Xilinx部件或板。

部件 | 板卡

重置所有过滤器

类别:全部                                        封装:clg400                               温度:剩余所有

家族:Zynq-7000                              速度:-2                                       静态功耗:剩余所有

搜索:

根据自己开发板的型号,对号入座,选择对应选项。

5. 点击和完成

最后点击“Finish”,完成项目创建。

正在创建,

完成创建后,来到主页。


三. 添加文件

添加源文件,请看

1. 添加文件

在“Project Manager”中,右键单击“Sources”文件夹,选择“Add Sources”,或者点击加号➕图标,还可以鼠标右击,都可以添加源文件。

2. 选择同意

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

分别表示

添加源文件

添加源文件

此向导引导您完成为项目添加和创建源文件的过程。

  • 添加或创建约束条件
  • 添加或创建设计源文件
  • 添加或创建仿真源文件

这里我们选择第二项,添加或创建设计源文件。

3. 创建源文件

点击“Create File”,选择File type语言类型 和 File name文件名称,然后点击“OK”后,点击“Finish”,完成创建。

这里创建的是项目里面的文件,下面图片头部,显示的是我们创建的项目名称和位置,注意区分。

然后这里还会弹出,模块弹框,直接输入模块名称,点击 OK ,点击 Yes ,完成创建。

双击LED.v,打开源文件,可以看到,项目和源文件,创建成功。


四. 编写代码

编写Verilog代码,以下是点亮LED灯的Verilog代码示例。请看

// led_control.v
module led_control (
    input wire clk,         // 时钟信号
    output reg [3:0] led   // 4个LED灯的控制信号
);

    // 时钟分频器,产生一个较慢的LED闪烁频率
    reg [23:0] counter;     // 计数器,用于时钟分频

    always @(posedge clk) begin
        counter <= counter + 1; // 计数器自增
        if (counter == 24'd12499999) begin // 根据需要调整这个值
            led <= ~led; // 取反LED状态
            counter <= 0; // 重置计数器
        end
    end

endmodule

代码说明

  • 输入端口clk:接收系统时钟信号。
  • 输出端口led:控制4个LED灯的状态。
  • 计数器counter:用于实现时钟分频,生成LED闪烁效果。
  • always:在每个时钟上升沿更新计数器,并在计数器达到设定值时切换LED状态。


五. 添加约束

添加约束文件,为确保 Vivado 正确地连接开发板上的引脚,我们需要添加一个约束文件(XDC文件)。请看

  1. 右键单击“Constraints”文件夹,选择“Add Sources”。

  2. 选择“Add or create constraints”,点击“Next”。

  3. 创建一个名为constraints.xdc的约束文件,然后点击“Finish”。

  4. constraints.xdc中添加以下内容,确保将引脚与LED连接正确:

# LED引脚连接
set_property PACKAGE_PIN A2 [get_ports led[0]]  # LED0
set_property PACKAGE_PIN A3 [get_ports led[1]]  # LED1
set_property PACKAGE_PIN A4 [get_ports led[2]]  # LED2
set_property PACKAGE_PIN A5 [get_ports led[3]]  # LED3
set_property IOSTANDARD LVCMOS33 [get_ports {led[0] led[1] led[2] led[3]}]

引脚配置说明

  • PACKAGE_PIN:指定FPGA封装的引脚号。
  • IOSTANDARD:指定引脚的输入输出标准,这里使用LVCMOS33。


六. 综合实现

综合与实现,请看

  1. 在Vivado工具栏上,点击“Run Synthesis”以综合设计。

  2. 等待综合完成后,点击“Run Implementation”进行实现。

  3. 实现完成后,点击“Generate Bitstream”生成比特流文件(.bit)。


七. 编程开发

编程开发板,请看

  1. 将ZYNQ-7010开发板连接到计算机,打开Vivado的“Open Hardware Manager”。

  2. 点击“Open Target”,选择“Auto Connect”。

  3. 在“Hardware Manager”中,右键单击“Program Device”,选择刚生成的比特流文件,点击“Program”。

  4. 等待编程完成,您将看到LED灯开始闪烁。


八. 本篇小结

通过以上步骤,我们成功使用Xilinx Vivado软件创建了一个FPGA工程,编写Verilog代码并点亮了ZYNQ-7010开发板上的LED灯。在实际开发中,我们可以根据需要修改LED的闪烁频率和控制逻辑,为其他硬件设计打下基础。希望能帮助到你!

创作不易,感觉有用,就一键三连,感谢(●'◡'●)


http://www.kler.cn/a/368931.html

相关文章:

  • Hive的数据存储格式
  • 安全见闻(8)——开阔眼界,不做井底之蛙
  • 安全见闻(6)
  • 群控系统服务端开发模式-应用开发-业务架构逻辑开发API准备工作
  • 【Android】Kotlin教程(2)
  • mysql 通过GROUP BY 聚合并且拼接去重另个字段
  • 深入理解JAVA虚拟机(三)
  • go高并发之路——本地缓存
  • 牛客周赛65(C++实现)
  • 练习LabVIEW第二十二题
  • K8S如何基于Istio重新实现微服务
  • git push关联的远程仓库
  • 京东商品详情API全攻略:返回值字段一网打尽
  • JsonPath 更便捷的JSON解析工具
  • Vue2自定义指令及插槽
  • AI 提示词(Prompt)入门 :ChatGPT 4.0 高级功能指南
  • 「C/C++」C++ STL容器库 之 std::list 双向链表容器
  • 不用梅森公式看流程图写式子 和看式子画流程图
  • JavaSE:16、Java IO
  • XJ05、消费金融|额度生命周期管理及额度产品设计
  • glibc中xdr的一个bug
  • python kafka 发送/接收 消息
  • 协议 HTTP
  • WPF+MVVM案例实战(八)- 自定义开关控件封装实现
  • Docker 常用命令全解析:提升对雷池社区版的使用经验
  • 我在1024谈华为