上周实验室的师弟抱着一台用了三年的笔记本过来说课程组发下来的工程包在他新装的软件里打开全是红色报错连综合都跑不起来。我第一反应就问他装的哪个版本——果然是 2017.4 的工程他用最新版去开。这种事我见过太多次了FPGA 入门这条路上Vivado 2017.4 安装教程几乎是绕不开的一关。它之所以到现在还有一堆人在找安装教程不是因为它新恰恰是因为它老而且老得刚好卡在一个很舒服的位置上教程多、教材配套、免费授权够用、老机器也扛得住。这篇东西我不打算写成说明书式的流水账而是把我自己装过七八次、帮别人远程救过十几次现场攒下来的经验按为什么这么选—具体怎么做—出问题怎么查的顺序摊开讲。不管你是刚上手的 FPGA 新手还是装到一半卡住想找答案的人都能从里面挑到能直接用的东西。整个过程大概需要两到三个小时其中一大半时间是在等进度条所以建议你找个不急着交作业的下午来干这事。1. 2024 年还装 Vivado 2017.4到底图什么先把这个问题说清楚因为很多人是被老师或者教程按着头装的心里并不服气装的过程中一旦遇到点麻烦就容易放弃。知道自己在图什么遇到坎的时候才有动力继续折腾。1.1 教程、教材和开发板例程的版本锁定国内高校的 FPGA 课程和大量开发板配套例程工程文件基本都是在 2017.x 这个时间点上做的。你用更高版本的软件去打开这些工程会遇到几类很典型的问题IP 核需要重新锁定甚至重新生成、部分约束文件的语法被判定为过时、综合策略名称对不上。这些问题不是不能解决但对一个刚入门、连综合和实现都还没分清的新手来说光是排查这些玄学报错就足够劝退了。反过来你按教程的版本来教程里截图长什么样你屏幕上就长什么样出错时你还能对着图一步步核对。学习的早期阶段减少变量比追求新版本重要得多。这是我个人的一个很实在的体会入门期的工具越和教程一致越省时间。1.2 免费 WebPACK 授权覆盖的器件范围Vivado 的免费授权叫 WebPACK这是很多人选 2017.4 的第二个理由。它不需要你申请任何 License 文件装完就能直接用覆盖的器件以中小容量为主包括 Artix-7 的 A35T、A50T、A100TSpartan-7 全系Kintex-7 里的一部分小容量型号以及 Zynq-7000 里的 7010、7020 这类小容量芯片。这些芯片对应的正是高校实验板和入门级开发板的主流配置。你手上那块黑金、正点原子或者其他品牌的入门板大概率就在这个范围里。具体清单建议你在安装器勾选器件那一步自己看一眼因为不同小版本之间会有微调以安装界面里显示的为准最稳妥。如果你手上的板子是 A200T 或者更大容量的 Kintex那就要提前确认一下是否在免费范围内不然装完发现器件不支持白折腾。1.3 老机器跑得动新版本未必现在的 Vivado 完整安装动辄几十个 GB综合和实现的时候内存占用也很凶。2017.4 在这方面的压力明显小一截8GB 内存的机器跑个小工程是能忍的16GB 就很舒服了。我见过太多人在一台商务本上装最新版结果打开工程就风扇狂转、界面卡成幻灯片最后还是要退回来装老版本。1.4 什么时候你该果断换新版本也不是说 2017.4 就是唯一答案。如果你满足下面任意一条就别在 2017.4 上耗着了你的开发板是最近两年出的新板配套例程本身就是新版本工程你需要用到的 IP 或者高速接口比如某些高速收发器相关的 IP在 2017.4 上不提供你的芯片属于新器件系列2017.4 压根不支持。判断标准很简单——问自己我手上的例程是什么版本做的跟着它走就行。2. 装之前先把这几件事定下来系统、磁盘和路径装 Vivado 失败的人里有一大半不是操作错而是一开始环境就没准备好。这部分看着琐碎但提前五分钟确认能省掉后面两小时的重装。2.1 系统和硬件的最低门槛桌面上能跑起来和能干活是两回事我把这两个标准分开列了一下。下表里最低指的是能装能开、跑个点灯工程不崩舒服指的是综合实现不用一直等。项目最低能跑建议配置操作系统64 位 Windows 7 SP1 或 Windows 1064 位 Windows 10内存8 GB16 GB 及以上磁盘可用空间40 GB80 GB 以上且放在固态硬盘分辨率1440×9001920×1080 及以上显卡集成显卡可用独立显卡更稳纯远程桌面容易花屏要特别提醒一点不要想着在虚拟机里装。虚拟机的显卡是模拟出来的Vivado 的图形界面在这种环境下经常出现拖影、菜单拉不出来、点了没反应的问题而且虚拟机一分配内存宿主和客户机两头都紧。真想学直接装在物理机上。2.2 磁盘空间要按两倍来预留很多人看安装说明写着需要约 20GB就只留了 25GB结果装到一半报磁盘空间不足。这里有个容易被忽略的点安装过程中解压出来的临时文件、安装器自己的缓存、以及后续综合实现产生的临时目录加起来往往是安装体积的一到两倍。我的建议是按安装体积 × 2.5来预留。如果你在安装器里只勾选了需要的器件安装体积可能二十多个 GB那你留 60GB 以上比较稳。另外装完之后记得不要把工程目录放在系统盘综合时生成的临时文件很占地方放 D 盘或者专门的工程盘上系统盘的压力会小很多。2.3 路径和用户名里的中文是隐形炸弹这是我最想强调的一条。Vivado 的安装路径、工程路径、以及 Windows 用户目录下面只要出现中文或者空格某些环节就会莫名其妙地报错——不是每次都报所以你很难把因果联系起来但一旦踩上就是排查老半天。正确做法是安装路径用D:\Xilinx这种又短又纯英文的形式工程路径也全部用英文数字和下划线Windows 登录用户如果原本叫张三建议新建一个英文名的本地账户专门用来做开发或者至少确认一下用户目录下没有中文。这个习惯一旦养成后面能避开一大堆玄学问题。3. 安装包从哪来、怎么确认它没坏安装包这一步看起来最简单实际上坑点不少。我见过有人下了三次都装不上最后发现是文件本身下坏了。3.1 Web Installer 和 Single-File Download 怎么选官方渠道提供两种形式一种是体积很小的在线安装器Web Installer你运行它之后它再联网把需要的组件一个个拉下来另一种是单个大文件Single-File Download全部内容打包在内下载完解压即可离线安装。我的选择很明确优先用 Single-File Download。原因很朴素——在线安装器对网络要求高中间断一次你可能要从头再来而且它下载过程中不会给你一个整体进度的安心感容易让人焦虑。单文件虽然一开始下得久但下完就一劳永逸重装系统后还能接着用。如果你网速实在不行那就分批下载但一定要记得校验完整性见下一节。至于从网盘转存来的镜像文件我的态度是谨慎。这类文件常见的问题是分卷缺失、被重新压缩打包过程中损坏或者版本被搞混。用它之前务必做一次哈希校验不然你会在安装过程中看到各种奇怪的解压失败却一直以为是自己操作有问题。3.2 校验哈希这一步别省单文件下载页面通常会给出这个文件的 MD5 或者 SHA-256 校验值。Windows 上可以用 PowerShell 直接算Get-FileHash -Algorithm SHA256 D:\download\Xilinx_Unified_2017.4_xxxx.tar.gz把输出的那串字符和官方给的值逐位对比。不一样就说明文件在传输过程中出了差错重新下载不要抱着试试看能不能装的心态往下走。这一步花你两分钟可能省你两小时。3.3 解压与目录组织如果下到的是压缩包形式解压时用 7-Zip 这类工具不要用系统自带的解压功能去处理超大文件容易在某个分卷处断掉。解压出来的目录建议单独放一层比如D:\download\vivado2017_4方便你之后清理。解压路径同样要遵守纯英文无空格的原则。另外注意磁盘剩余空间——解压一份、安装一份等于同时占两份空间这一层也要算进去。4. 安装界面里的每一个勾选项都在决定什么真正进入安装流程之后界面上的选项其实不多但每一个都影响你后面的体验。这一节我把每一步的意图讲清楚你按自己的需求对号入座。4.1 启动安装程序前的环境处理在双击安装程序之前先做两件事。第一临时关闭杀毒软件和安全卫士类的实时防护。这类软件会在安装器写入几万个文件的过程中频繁扫描并锁定文件句柄导致安装中断或者个别文件写入失败。装完之后再把防护打开就行不用一直关着。第二用管理员身份运行安装程序右键选择以管理员身份运行避免因为权限不足在写注册表或者写系统目录时失败。还有一点经验之谈安装过程尽量一次性跑完不要中途去点开别的程序抢资源更不要让电脑进入睡眠。我一般会把电源计划临时改成高性能并且把屏保和自动睡眠都关掉。4.2 版本与器件的选择逻辑安装器会让你选择要装哪个版本2017.4 这一代提供的选项大致是 WebPACK、Design Edition、System Edition 这几档。对个人学习和绝大部分课程实验来说选免费的 WebPACK 就够了它不需要授权文件功能上对中小规模设计的支持是完整的。接下来是勾选器件族。这里的原则是只勾你确定会用到的。全勾当然省事但体积会大出一大截安装时间也会明显拉长。如果你手上的板子是 Artix-7 的 A35T那就只勾 Artix-7 相关的型号如果课程里还会用到 Zynq再把 Zynq-7000 的小容量型号勾上。不确定的话把 Artix-7、Spartan-7、Zynq-7000 这三族勾上基本能覆盖入门阶段的所有场景。需要提醒的是如果某个型号不在 WebPACK 的免费范围里你在勾选界面可能会看到它被标灰或者提示需要额外授权。这个时候先别急着跳过记下型号装完之后单独去确认授权问题比装完才发现强。4.3 组件取舍SDK、DocNav、Model Composer 要不要装安装器里除了主程序还会附带一堆组件。我的取舍经验是这样的Vivado 主程序必装SDK 如果你要玩 Zynq 或者需要用到软核处理器就装上用不到可以省下来文档查看器DocNav现在意义不大查资料直接看在线文档更方便可以不装Model Composer、System Generator 这类和 Simulink 联动的组件除非你的课程明确要用否则别装它们体积不小而且还会牵出一堆依赖。这里多说一句安装时勾得越多后面出问题的面越大。入门阶段追求的是能跑通不是功能齐全。4.4 两小时等待期间可以做和不该做的事安装进度条走完通常要一到两个小时取决于你的磁盘速度和勾选了多少组件。这段时间里你可以做的把开发板的驱动先了解一下、把后面要用的例程工程文件整理好、把手册目录翻一翻。不该做的去点开安装目录看进度、去运行别的吃磁盘的程序、去手动结束看起来卡住了的进程。关于看起来卡住这件事我要专门说一下。安装到某个组件时进度条长时间不动是正常的尤其是刚开始解压和最后写注册表这两个阶段。判断是否真卡死的方法是打开任务管理器看进程的磁盘读写和 CPU 占用只要还有活动就继续等。贸然结束再重来往往会留下残缺的注册表项给后续卸载添麻烦。5. License 这件事WebPACK 用户其实不用太操心授权是 FPGA 工具链里最容易让人焦虑的部分但如果你用的是免费版加入门芯片这件事其实很简单。5.1 免费版到底免费在哪WebPACK 的免费是指你不需要申请任何授权文件也不需要联网激活装完打开就能对支持的器件做综合、实现、生成比特流。它限制的是器件范围不是功能模块。也就是说在它支持的芯片上你用的综合引擎、实现引擎、仿真工具和付费版是同一套。这个设计对学习者非常友好。所以你完全不用去搜Vivado 2017.4 怎么激活这类内容正常情况下你根本用不到。5.2 需要额外授权时的申请与加载如果你的器件超出了免费范围或者你想用更高档的版本就需要一个授权文件。流程是通过工具自带的授权管理器生成一个主机信息文件然后去官方渠道申请拿到.lic文件之后在授权管理器里加载进去。加载完之后授权管理器里会显示每一项功能的有效期和状态。把状态那一列全部确认成有效再去做综合别等到综合跑到一半跳出版权提示那时候浪费的是你的时间。5.3 License 失效的几种典型情况授权出问题最常见的三个原因一是到期评估类授权一般有期限到期前会有提示二是主机信息变了比如你换了网卡、重装了系统某些授权会和硬件信息绑定一变就失效这种情况只能重新申请三是同一份授权被用在了多台机器上超过了允许的数量。有个习惯值得养成把申请下来的.lic文件单独备份一份别只留在软件目录里。系统一重装软件目录可能就没了备份还在。6. 装完不算完用一个最小工程验证环境安装过程顺利结束、软件能打开不代表环境就完全正常了。真正可靠的验证方式是跑通一个完整的最小流程建工程、写代码、综合、实现、生成比特流。6.1 首次启动与界面初始化第一次启动会比之后慢很多因为软件要初始化一堆配置和缓存。启动过程中如果卡在加载界面先别急着重装等个三五分钟看看。首次进去之后建议先做一件事把语言和字体调成自己看着舒服的设置然后把自动保存的间隔调短一点防止意外退出丢代码。另外首次启动时会提示你是否要关联一些外部工具比如文本编辑器、仿真工具。这时候可以顺手把外部编辑器设成你熟悉的比如 VS Code 或者 Notepad后面写代码会顺手很多。6.2 建一个 LED 闪烁工程把流程走通一遍新建工程时选择 RTL 工程类型然后在器件选择页面挑一个你板子上实际存在的型号。不确定型号的话翻一下板子的原理图或者例程里的工程设置都能查到。建好工程之后加一个最小的 Verilog 文件下面这段可以直接抄就是一个分频计数的亮灭循环module led_blink( input wire clk, input wire rst_n, output reg led ); reg [24:0] cnt; always (posedge clk or negedge rst_n) begin if (!rst_n) begin cnt 25d0; led 1b0; end else if (cnt 25d24_999_999) begin cnt 25d0; led ~led; end else begin cnt cnt 1b1; end end endmodule这段代码里那个 25 位的计数器就是用来把板子上的高频时钟分频成大约一秒一次的变化具体数值按你板子的时钟频率改。写完之后依次点综合、实现、生成比特流整条链路能顺利跑完说明你的环境是健康的可以开始正式学习了。6.3 编辑器与外部工具的关联设置工程跑通之后把这几件事顺手配一下后面会省很多事。一是设置默认的顶层模块避免综合器找不到入口二是把常用的代码模板或者片段存起来写状态机、写跨时钟域同步的时候直接调用三是找一个自己顺手的代码格式化习惯Verilog 的缩进和对齐看起来是小事但代码一长可读性差会让你排查问题的时间翻倍。7. 那些年踩过的坑安装与启动问题排查这部分我按症状—排查思路—处理方式来讲遇到问题时可以对照着往下走。7.1 双击安装程序没反应这是最高频的一个问题。排查顺序是这样的先看文件是不是还在解压过程中或者解压不完整安装器的入口文件如果是个脚本或者快捷方式源文件缺失点它也是没反应的再看是不是被杀毒软件拦了试着临时关闭防护再点一次然后是权限问题右键用管理员身份运行最后看用户目录是不是中文切到英文账户下再试。7.2 安装中途报解压失败、写入失败如果报的是解压类错误八成是安装包本身损坏或者磁盘空间不足。前者回去做哈希校验后者清理一下磁盘。如果报的是写入失败多数是权限或者杀毒软件锁文件导致的关掉实时防护、确认安装目录不是只读、确认目标盘不是那种格式特殊的移动硬盘。还有一种情况是安装到一半电源掉了或者你手动重启了这种最麻烦因为注册表里已经留了半截记录。处理方式是用控制面板里的卸载功能先把它清掉再去安装目录手动删掉残留文件夹然后重新装。7.3 启动卡在加载界面先分清是真卡死还是慢。打开任务管理器看进程有没有在动有动静就等。如果确实不动了常见的两个原因是显卡驱动问题和远程桌面环境。前者尝试更新显卡驱动后者就别折腾了老老实实坐在物理机前面操作。另外系统区域设置如果被改成了非中文之外的特殊配置也可能导致界面渲染异常这种情况恢复成默认的中文区域设置再试。7.4 综合时报器件不支持报错信息里通常会写明是哪个器件不支持。这时候先确认两件事一是你在安装时到底勾没勾这个器件族没勾就得回来补装二是这个型号是否在免费授权范围内不在的话就会提示需要授权。两条都确认过还是不行那就检查一下工程里设置的器件型号拼写有没有错多打一个字母或者少打一个后缀都会导致匹配失败。症状最可能的根因处理方式安装程序双击无反应权限不足或杀软拦截管理员身份运行临时关闭防护安装中途解压失败安装包损坏或空间不足校验哈希清理磁盘后重来启动长时间白屏显卡驱动或远程桌面更新驱动改用物理机操作综合报器件不支持未安装该器件族或超出免费范围补装器件或确认授权生成比特流时报路径错误工程路径含中文或空格迁移到纯英文路径重建工程8. 多版本共存、迁移与绿色版玩法装完这一版之后你很可能还会遇到需要装别的版本的情况比如课程后面换了板子或者你想试试新版本。提前把共存方案想清楚能避免很多混乱。8.1 不同版本放不同目录Vivado 是支持多版本共存的前提是安装到不同的目录比如D:\Xilinx\Vivado\2017.4和D:\Xilinx\Vivado\2020.2这样平级放。启动时通过开始菜单里对应的快捷方式进入各自的口令和授权互不干扰。需要注意的是环境变量。有些工具链会依赖某个全局变量指向工具路径装了多个版本之后这个变量指向哪个版本会影响脚本运行。如果你只是用图形界面问题不大如果要用命令行批处理就得在脚本里显式指定路径而不是依赖全局变量。8.2 工程升级是不可逆的先备份用高版本打开低版本工程时软件会提示是否升级。这个操作是不可逆的——升级之后再用低版本就打不开了而且部分设置会按照新版本的规则重写。我的习惯是升级之前把整个工程目录复制一份命名上带上版本号比如led_project_2017和led_project_2020。如果是给别人交作业或者和同学协作一定要先问清楚对方用哪个版本别自己升级完再传给别人那会给对方制造麻烦。8.3 把装好的目录整个备份一份这是个很实用的技巧。Vivado 装好之后整个目录是可以直接复制走的因为它的核心文件都在安装目录里注册表项主要影响的是开始菜单快捷方式和卸载信息。你可以把装好的整个Vivado\2017.4目录复制到移动硬盘上。以后哪台机器要临时用一下把目录拷过去手动配置一下环境变量指向它的bin目录基本上就能跑起来省掉两个小时的安装。当然这种搬运方式对授权的处理不如正式安装干净如果你用的是需要授权文件的版本授权还是得重新配一遍。免费版就没这个顾虑直接用。8.4 卸载时要清理的残留真的不需要这个版本了卸载的时候别只删文件夹。正确顺序是先用控制面板里的卸载程序走一遍正式流程走完之后再去检查几个地方安装根目录下有没有残留的空文件夹、用户目录里的隐藏配置目录一般以点开头、以及系统环境变量里有没有指向旧版本的路径。这几个地方清干净下次装同版本才不会再出玄学问题。顺手说个我自己的习惯每次装完这类大型工具我都会在安装目录放一个纯文本的说明文件写好安装日期、装了什么组件、授权的状态、以及当时遇到的问题和处理方式。过半年再回头看这个文件比任何教程都管用。