FPGA应用技巧之Block Design基本使用方法

目录

  • [1 概述](#1 概述)
  • [2 开发优势](#2 开发优势)
    • [2.1 可视化架构,降低开发门槛](#2.1 可视化架构,降低开发门槛)
    • [2.2 快速集成官方IP核,提升开发效率](#2.2 快速集成官方IP核,提升开发效率)
    • [2.3 模块化分层设计,便于迭代维护](#2.3 模块化分层设计,便于迭代维护)
    • [2.4 自动时序与总线适配,规避设计错误](#2.4 自动时序与总线适配,规避设计错误)
    • [2.5 一键导出工程文件,适配全流程开发](#2.5 一键导出工程文件,适配全流程开发)
  • [3 Block Design使用](#3 Block Design使用)
    • [3.1 新建Block Design工程](#3.1 新建Block Design工程)
    • [3.2 添加功能模块(IP核/自定义模块)](#3.2 添加功能模块(IP核/自定义模块))
      • [3.2.1 添加官方IP核](#3.2.1 添加官方IP核)
      • [3.2.2 添加自定义模块](#3.2.2 添加自定义模块)
    • [3.3 模块参数配置](#3.3 模块参数配置)
    • [3.4 模块互联与端口引出](#3.4 模块互联与端口引出)
      • [3.4.1 自动智能连线(推荐)](#3.4.1 自动智能连线(推荐))
      • [3.4.2 手动自定义连线](#3.4.2 手动自定义连线)
      • [3.4.3 外部端口引出](#3.4.3 外部端口引出)
    • [3.5 设计校验与错误修复](#3.5 设计校验与错误修复)
    • [3.6 生成顶层设计文件](#3.6 生成顶层设计文件)
    • [3.7 硬件文件导出(SoC开发必备)](#3.7 硬件文件导出(SoC开发必备))
  • [4 常用操作技巧与注意事项](#4 常用操作技巧与注意事项)
    • [4.1 实用操作技巧](#4.1 实用操作技巧)
    • [4.2 核心注意事项](#4.2 核心注意事项)
  • [5 常见问题解决](#5 常见问题解决)
  • [6 手把手教学Block Design 最小工程(LED闪烁)](#6 手把手教学Block Design 最小工程(LED闪烁))
    • [6.1 案例工程概述](#6.1 案例工程概述)
    • [6.2 前置工程准备](#6.2 前置工程准备)
    • [6.3 添加并配置核心IP模块](#6.3 添加并配置核心IP模块)
      • [6.3.1 配置时钟IP(生成稳定系统时钟)](#6.3.1 配置时钟IP(生成稳定系统时钟))
      • [6.3.2 配置计数器IP(分频生成1Hz信号)](#6.3.2 配置计数器IP(分频生成1Hz信号))
    • [6.4 模块互联与端口引出](#6.4 模块互联与端口引出)
      • [6.4.1 自动时钟复位连线](#6.4.1 自动时钟复位连线)
      • [6.4.2 手动信号连线](#6.4.2 手动信号连线)
      • [6.4.3 引出LED顶层端口](#6.4.3 引出LED顶层端口)
    • [6.5 设计校验与工程生成](#6.5 设计校验与工程生成)
    • [6.6 引脚约束与工程编译](#6.6 引脚约束与工程编译)
  • [7 总结](#7 总结)

1 概述

Block Design是Xilinx Vivado中核心的可视化硬件搭建工具,支持用户以图形化拖拽、连线、配置参数的方式完成FPGA/SoC硬件系统架构设计,替代传统纯代码编写的硬件开发模式。其本质是将各类IP核、自定义模块、接口资源封装为标准化功能块,通过可视化互联完成系统集成,最终生成可综合、可实现的硬件设计文件。

2 开发优势

在Vivado开发中,开发者可选择纯Verilog/VHDL代码建模或Block Design图形化建模,相较于传统代码开发方式,Block Design具备不可替代的优势,是中大型FPGA、Zynq SoC项目的首选设计方式,核心使用价值如下:

2.1 可视化架构,降低开发门槛

传统代码开发需要手动编写端口定义、信号连线、模块例化代码,对新手不友好,且复杂系统代码层级混乱、可读性差。Block Design以图形化界面展示整个硬件系统的模块组成、信号流向、接口互联关系,硬件架构一目了然,无需记忆繁琐的例化语法,极大降低FPGA硬件系统集成的入门难度。

2.2 快速集成官方IP核,提升开发效率

Vivado内置海量官方IP核(时钟、DDR、串口、DMA、FIFO、中断控制器等),覆盖绝大多数通用硬件功能。Block Design支持一键拖拽添加IP、自动配置默认参数、一键复位/时钟互联,无需手动编写IP调用代码,避免手动例化IP出现的语法错误、参数配置错误,大幅缩短开发周期。尤其在Zynq SoC开发中,PS端配置、PS-PL互联仅需通过Block Design可视化操作即可完成,是SoC开发的必备工具。

2.3 模块化分层设计,便于迭代维护

Block Design支持分层模块化设计,可将复杂系统拆解为多个子Block Design,分别完成子模块设计、验证后再顶层集成。各模块功能独立、接口标准化,便于团队分工开发、功能迭代、问题定位。同时,设计文件与代码解耦,后续修改模块参数、调整互联关系无需修改底层代码,维护成本极低。

2.4 自动时序与总线适配,规避设计错误

Block Design内置智能互联机制,支持AXI、APB、时钟、复位等标准总线的自动识别与适配,可自动完成总线位宽匹配、时钟域同步、复位极性统一。同时工具会实时检测设计冲突(端口不匹配、时钟缺失、总线冲突等),实时弹窗报错预警,有效规避手动代码开发中常见的互联错误、时序不匹配问题。

2.5 一键导出工程文件,适配全流程开发

完成Block Design搭建后,可一键生成HDL包装文件、综合文件,直接接入Vivado综合、实现、比特流生成全流程,同时支持导出硬件信息文件用于SDK/Vitis嵌入式软件开发,打通FPGA硬件设计与嵌入式软件开发的链路。

3 Block Design使用

本章节基于Vivado 2019.1及以上版本,详细展示创建Block Design、模块添加、参数配置、信号连线、设计验证、文件导出的完整实操步骤。

3.1 新建Block Design工程

1、打开Vivado软件,创建或打开已有FPGA工程(无需提前编写顶层代码);

2、在左侧导航栏Flow Navigator 中,找到IP Integrator ,点击Create Block Design

3、在弹出的对话框中输入设计名称(如system_design),选择文件保存路径,默认勾选Do not specify sources at this time ,点击OK ,完成空白Block Design创建;

4、创建完成后,界面会打开空白的图形化编辑画布,后续所有模块搭建、连线均在此界面完成。

3.2 添加功能模块(IP核/自定义模块)

Block Design支持添加三类模块:Vivado官方IP核、用户自定义HDL模块、外部网表模块,核心添加方式如下:

3.2.1 添加官方IP核

1、在画布空白处右键,选择Add IP ,或直接点击顶部工具栏**+号按钮;
2、在IP搜索框中输入所需功能关键词(如clk、uart、axi_dma、zynq7),搜索对应IP核;
3、选中目标IP,双击或点击
Add**添加到画布中,工具会默认生成基础功能模块。

3.2.2 添加自定义模块

可参考: FPGA应用技巧之Vivado自定义IP创建与使用

1、提前将编写完成的Verilog/VHDL文件添加到工程源文件中,并完成语法编译无报错;

2、在Block Design画布中右键选择Add Module

3、在弹出列表中选择已导入的自定义模块,点击OK,即可将自定义模块封装为功能块,支持后续可视化连线配置。

3.3 模块参数配置

模块添加完成后,需根据项目需求配置核心参数,确保功能匹配设计需求:

1、双击画布中的目标模块,打开参数配置对话框;

2、根据功能需求修改参数:时钟频率、数据位宽、通道数量、工作模式、中断使能、总线类型等;

3、配置完成后点击OK ,模块端口会根据参数自动更新(如位宽变化、端口增减);

4、关键IP(如Zynq PS、时钟IP)配置完成后,建议点击Validate IP Configuration验证参数合法性,避免配置冲突。

3.4 模块互联与端口引出

模块配置完成后,通过可视化连线实现信号、总线、时钟复位的互联,分为自动连线和手动连线两种方式。

3.4.1 自动智能连线(推荐)

针对时钟、复位、AXI总线等标准接口,Vivado支持一键自动匹配连线,高效且零错误:

1、选中需要互联的两个模块,点击顶部工具栏Run Connection Automation (自动连线按钮);

2、在弹出的对话框中,勾选需要自动连接的信号(时钟、复位、AXI总线、中断等);

3、默认保持总线位宽、时钟域匹配配置,点击OK,工具自动完成所有匹配端口的连线。

3.4.2 手动自定义连线

针对自定义信号、非标准接口,采用手动连线方式:

1、鼠标左键按住模块输出端口,拖拽至目标模块输入端口,松开即可完成单信号连线;

2、批量信号可通过框选端口,批量拖拽连线,适配自定义模块互联场景。

3.4.3 外部端口引出

需要将模块信号引出到FPGA顶层引脚时,进行端口导出:

1、选中需要引出的信号连线,右键选择Make External

2、连线外侧会自动生成顶层端口,可双击端口修改端口名称;

3、所有外部端口后续可绑定FPGA物理引脚,完成硬件引脚适配。

3.5 设计校验与错误修复

连线完成后,必须进行设计合法性校验,排除架构、互联、参数错误,步骤如下:

1、点击顶部工具栏Validate Design (校验按钮),工具自动扫描设计问题;

2、查看底部Messages 信息窗口,严格区分Error(错误)与Warning(警告):所有Error错误必须全部修复,否则无法正常生成工程文件、完成综合实现 ,常见报错类型包含端口悬空不匹配、时钟/复位信号缺失、AXI总线协议冲突、IP参数配置非法等;Warning警告可根据实际设计需求评估,非关键性警告可保留,关键性警告仍需优化修复。

3、双击报错信息可自动定位到问题模块/连线,根据提示修正参数或互联关系,直至设计无报错。

3.6 生成顶层设计文件

Block Design为图形化中间文件,需生成标准HDL文件才能参与综合实现,步骤如下:

1、在Block Design画布空白处右键,选择Generate Output Products

2、弹出对话框默认配置(Synthesis、Implementation),点击Generate ,生成IP输出文件、网表文件;

3、生成完成后,再次右键画布,选择Create HDL Wrapper

4、选择Let Vivado manage wrapper and auto-update (自动管理顶层包装文件),点击OK

5、工具自动生成顶层HDL文件,并自动设为工程顶层模块,无需手动修改代码。

3.7 硬件文件导出(SoC开发必备)

若为Zynq SoC项目,需要导出硬件信息用于嵌入式软件开发,步骤如下:

1、确保Block Design校验通过、文件生成完成;

2、点击顶部菜单栏File - Export - Export Hardware

3、根据需求选择是否勾选Include Bitstream :未生成比特流文件时取消勾选,仅导出硬件架构信息;已完成比特流生成可勾选,完整导出硬件工程文件,点击下一步,自定义导出路径并完成导出;

4、导出完成后可打开Vitis软件,基于该硬件文件搭建嵌入式工程。

4 常用操作技巧与注意事项

4.1 实用操作技巧

1、画布缩放:鼠标滚轮缩放画布,按住鼠标中键拖拽平移画布,适配复杂大架构查看;

2、模块批量编辑:按住Ctrl键多选模块,可批量移动、复制、删除、统一配置参数;

3、模块复用:完成的Block Design可保存为模板,支持跨工程复用,提升复用率;

4、总线折叠:批量信号连线可折叠为总线格式,简化画布布局,提升整洁度。

4.2 核心注意事项

1、时钟与复位完整性:设计中所有功能模块、IP核必须配置匹配的有效时钟和复位信号,严禁输入端口悬空;多时钟域设计需严格区分时钟域,禁止不同时钟域信号随意互联,避免时序违规、功能异常。

2、总线互联规范:AXI、APB、SPI等标准总线互联时,主从设备的总线协议、数据位宽、时钟域、传输模式必须完全匹配,禁止跨规格总线直接互联,否则会触发总线时序错误、数据传输异常。

3、禁止手动修改自动生成文件:工具自动生成的HDL顶层包装文件、IP输出网表文件为动态关联文件,会随Block Design的修改自动更新;手动修改后内容会被覆盖,同时可能引发综合编译报错。若需修改顶层逻辑,需在Block Design中调整架构。

4、分层设计规范:复杂大型硬件系统必须采用分层设计,将功能独立的模块拆解为多个子Block Design,再通过顶层Block Design集成;避免单画布堆砌大量模块,防止布局混乱、工具运行卡顿、编译耗时过长,同时便于模块化调试与团队协作。

5、工程保存与备份:Block Design实时修改后需及时保存,避免软件闪退、工程异常关闭导致设计文件损坏、内容丢失;重要节点设计建议备份整个工程文件,防止文件损坏影响开发进度。

5 常见问题解决

1、IP添加失败、搜索不到目标IP:核心原因为工程器件型号不匹配或IP库未更新。解决方法:确认工程所选FPGA/Zynq器件型号与IP适配;点击顶部Tools - Update IP Catalog 更新本地IP库,刷新后重新搜索添加。

2、自动连线功能失效、无法自动互联:多为模块接口协议、端口类型不匹配导致。解决方法:核对互联模块的总线协议、时钟域、端口输入输出属性是否一致;对于非标准接口,放弃自动连线,采用手动精准连线,补充缺失的匹配端口。

3、生成HDL文件报错:均为设计存在非法问题导致。解决方法:优先执行Validate Design 全局校验,根据报错提示逐一修复端口悬空、参数配置错误、总线冲突、时钟复位缺失等问题,无Error报错后重新生成文件。

4、硬件文件导出失败:核心原因是设计未完成闭环配置。解决方法:确认Block Design无任何Error报错;已成功生成Output Products IP输出文件和HDL Wrapper顶层文件,完成以上步骤后重新执行导出操作。

6 手把手教学Block Design 最小工程(LED闪烁)

本章提供一套零代码、纯Block Design搭建的FPGA最小工程,无需编写Verilog/VHDL代码,仅通过IP核配置与可视化连线,实现LED周期性闪烁功能。本案例适配绝大多数Xilinx FPGA器件(Artix-7、Kintex-7等),是新手入门Block Design的最佳实操项目,可直接复刻验证工具使用全流程。

6.1 案例工程概述

工程功能:利用Vivado官方时钟IP+计数器IP,生成1Hz低频翻转信号,驱动FPGA板载LED闪烁;

核心模块:系统时钟IP(Clk Wizard)+ 通用计数器IP(Counter);

设计特点:纯图形化搭建、无手写代码、自动连线、零语法错误,完整覆盖Block Design核心操作流程。

6.2 前置工程准备

1、打开Vivado软件,新建空白工程,选择对应FPGA器件型号(以xc7035ffg676-2通用型号为例);

2、工程创建完成后,关闭默认源文件创建窗口,无需添加任何HDL源码;

3、按照本文3.1章节步骤,新建Block Design,命名为led_blink_design ,打开空白设计画布。

6.3 添加并配置核心IP模块

6.3.1 配置时钟IP(生成稳定系统时钟)

1、点击画布顶部「+」号,搜索Clk Wizard ,添加时钟管理IP核;

2、双击IP模块进入参数配置界面,切换至「Output Clocks」选项卡;

3、配置输出时钟:将默认时钟频率设置为50MHz,取消多余时钟输出,仅保留clk_out1;

6.3.2 配置计数器IP(分频生成1Hz信号)

1、再次点击「+」号,搜索Counter ,添加通用加减计数器IP核;

2、双击计数器IP进入配置界面,核心参数配置:

  • 计数模式:选择Up(递增计数)

  • 计数器位宽:设置为26位(50MHz时钟分频,26位计数器可实现约1s翻转一次);

  • 复位信号:同步复位,复位极性与时钟IP保持一致(低电平复位);

  • 输出模式:勾选Terminal Count Pulse(计数溢出脉冲),用于生成周期翻转信号;

3、参数配置完成后点击OK,完成计数器IP配置。

6.4 模块互联与端口引出

我们这里pll的输入时钟是外部晶振直接输入的200M差分信号,当需要输入或输出信号时,我们可以选中相关接口,选择make external。

6.4.1 自动时钟复位连线

1、框选时钟IP和计数器IP,点击顶部工具栏Run Connection Automation

2、勾选时钟、复位信号,工具自动完成时钟输出、复位信号的跨模块互联,无需手动接线。

6.4.2 手动信号连线

将计数器IP的溢出脉冲输出端口 ,手动拖拽连线至计数器自身的复位端口,实现计数循环清零,周期性生成翻转信号。

6.4.3 引出LED顶层端口

1、选中计数器溢出信号连线,右键选择Make External,引出顶层输出端口;

2、双击端口名称,修改为led_out ,作为LED驱动输出引脚。

6.5 设计校验与工程生成

1、点击Validate Design 校验设计,确保无Error错误,仅保留默认无害警告;

2、选中bd,右键选择Generate Output Products ,默认配置生成IP输出文件;

3、右键选择Create HDL Wrapper,选择自动管理顶层文件,生成工程顶层模块。

6.6 引脚约束与工程编译

1、打开工程约束文件(XDC),根据开发板硬件引脚,将led_out端口绑定板载LED物理引脚

2、添加时钟引脚约束,匹配开发板外部晶振频率;

c 复制代码
create_clock -period 5.000 [get_ports CLK_IN1_D_0_clk_p]
set_property PACKAGE_PIN C8 [get_ports CLK_IN1_D_0_clk_p]
set_property IOSTANDARD DIFF_SSTL15 [get_ports CLK_IN1_D_0_clk_p]
set_property PACKAGE_PIN AB15 [get_ports led_out]
set_property IOSTANDARD LVCMOS33 [get_ports led_out]

3、执行综合、实现、生成比特流文件,下载至开发板,即可观察到LED周期性闪烁。

7 总结

Block Design是Vivado平台高效完成FPGA/SoC硬件系统集成的核心工具,核心价值在于可视化建模、IP快速集成、模块化迭代、低错误率开发。熟练掌握其使用方法,可大幅降低硬件系统开发难度,提升设计规范性和迭代效率,是FPGA开发、Zynq嵌入式开发的必备技能。日常开发中,简单逻辑可采用代码建模,中大型复杂系统优先使用Block Design完成架构集成。

相关推荐
ALINX技术博客1 小时前
【黑金云课堂】FPGA技术教程FPGA 基础:HDMI视频输入与环路输出实验
fpga开发·音视频
hahaha60162 小时前
HLS高层次综合设计--axi之burst纠偏
开发语言·算法·fpga开发·c#
岁月失语唯石能言21 小时前
《 Web项目测试实战:博客系统的功能/接口/自动化/性能全流程测试报告》
自动化测试·功能测试·selenium·jmeter·接口测试·压力测试·性能测试
珞光电子USRP SDR软件无线电平台21 小时前
国产嵌入式SDR平台LW-E320-G详解:射频、FPGA、ARM架构与应用选型
arm开发·fpga开发·架构
FPGA小迷弟1 天前
【硬核通俗】FPGA实现SDR软件无线电完整技术解析(原理+架构+实战)
fpga开发·dsp开发·sdr·无线电
PhotonixBay1 天前
InGaAs微透镜3D形貌怎么测?共聚焦显微镜在光通信的应用实践
功能测试·测试工具·3d·测试标准
Bug 挖掘机1 天前
网传阿里天猫超市技术近期迎来调整,前端和测试团队合并为“智能交付”团队
自动化测试·软件测试·功能测试·测试开发·ai测试
Eloudy2 天前
HSB FPGA 架构总体
fpga开发·架构
Terasic友晶科技2 天前
【教程】Agilex 5 SOC FPGA的HPS端如何响应FPGA端中断(三)——设备树Overlay
fpga开发·设备树·agilex 5·设备树overlay