第1章:开发环境搭建——Vivado/ISE工具安装与配置、License激活、硬件调试器(JTAG)连接、目标板卡上电验证

各位同学,咱们直接进入正题。

做宇航级FPGA开发,第一步就是把“家伙事儿”支棱起来。环境搭不好,后面全是白忙活。我见过太多新手卡在安装和License上,一卡就是半天。今天咱们就把这第一步走稳了。

1.1 工具链选择:Vivado还是ISE?

先说结论:新项目用Vivado,老项目维护用ISE

Vivado是Xilinx从7系列开始主推的工具,支持Kintex-7、Virtex-7、以及更先进的UltraScale、UltraScale+系列。咱们宇航级常用的XC7K325T、XC7VX690T、XQKU060这些,都得用Vivado。

ISE则停留在Spartan-6、Virtex-6及更早的器件。如果你手头有老项目要维护,比如Virtex-5 QV系列,那还得留着ISE。我个人习惯是两台机器,一台装Vivado 2020.1(稳定版),一台装ISE 14.7(最终版)。

重要提醒:宇航级FPGA开发,工具版本别追新。Vivado 2019.1到2021.1这几个版本经过大量项目验证,相对稳定。2022以后的版本,有些IP核的时序模型变了,容易踩坑。

1.2 Vivado安装与配置

安装过程其实不复杂,但有几个细节要注意。

1.2.1 下载与安装

去Xilinx官网下载Vivado HLx WebPACK或Design Edition。宇航级开发建议用Design Edition,因为需要Vivado ML(机器学习)优化引擎,对时序收敛有帮助。

安装时注意:

  • 磁盘空间:至少留80GB。Vivado全安装完大概60GB,加上后续项目文件,80GB是底线。我吃过亏,第一次装只留了50GB,装到一半报错,气得我...嗯,不说了。
  • 安装路径:不要有中文,不要有空格。老老实实用 C:\Xilinx\Vivado\2020.1 这种格式。
  • 组件选择:勾选“Vivado ML Edition”、“Vitis”(如果你要做嵌入式开发)、“DocNav”(离线文档,宇航级开发经常断网,这个很有用)。

1.2.2 License激活——最坑的一步

License激活,说白了就是让工具认你。宇航级开发通常用Node-Locked License(节点锁定)或者Floating License(浮动)。

我个人建议:用Node-Locked License。浮动License虽然灵活,但一旦服务器挂了,你整个团队都得停工。我在某研究所就遇到过,服务器重启后License服务没起来,十几个人干瞪眼等了一上午。

激活步骤:

  1. 打开Vivado,点击 Help → Manage License
  2. 选择 Load License,浏览你的.lic文件
  3. 注意:网卡MAC地址必须和License绑定的MAC一致。如果你换了网卡或者用了虚拟机,记得改MAC或者重新生成License。

避坑指南:我曾经遇到一个情况——License明明加载成功,但综合时提示“Feature not found”。查了半天,发现是系统时间被改到了2025年(测试用的),License过期了。所以,系统时间一定要正确,尤其是做老项目用ISE时,ISE 14.7的License在2024年以后就失效了,需要打补丁。

1.3 ISE安装与配置(老项目维护用)

ISE 14.7是最终版,安装起来比Vivado麻烦。为什么?因为它太老了,对Windows 10/11兼容性不好。

我的经验:

  • 最好用Windows 7或者Windows 10 LTSC版本。Win11上装ISE,各种DLL报错,折腾死人。
  • 安装顺序:先装ISE,再装PlanAhead(如果要用)。注意,ISE 14.7的安装包自带License,但只支持Spartan-6和Virtex-6。如果你要用Virtex-5 QV,需要额外申请License。
  • 环境变量:装完后检查 XILINX_EDKXILINX_ISE 环境变量是否指向正确路径。我习惯手动设置一下,防止路径里有空格导致脚本跑不起来。

小技巧:ISE在Win10上启动时如果报错“Unable to load ...”,试试右键→属性→兼容性→勾选“以Windows 7兼容模式运行”。我试过,90%的问题能解决。

1.4 硬件调试器(JTAG)连接

工具装好了,License激活了,接下来就是连硬件。宇航级开发常用的调试器有:

调试器型号 支持器件 最高速率 备注
Xilinx Platform Cable USB II 全系列 30 MHz 经典款,稳定但慢
Digilent JTAG-HS3 7系列及以后 100 MHz 性价比高,我常用
Xilinx HW-USB-III 全系列 60 MHz 官方推荐,支持高速配置
国产调试器(如ZLG) 部分兼容 视型号而定 注意驱动兼容性

连接步骤:

  1. 上电顺序:先接JTAG线,再给板卡上电。反过来容易导致调试器IO电平冲突,严重时会烧调试器。我烧过一个Platform Cable USB II,心疼了好几天。
  2. 驱动安装:Win10会自动安装驱动,但如果识别不到,去Xilinx安装目录下找 \\Xilinx\\Vivado\\2020.1\\data\\drivers\\,手动安装。
  3. 验证连接:打开Vivado,点击 Open Hardware Manager → Open Target → Auto Connect。如果能识别到FPGA型号和IDCODE,说明连接成功。

注意:宇航级板卡通常有JTAG链保护电路,防止误操作。如果连不上,先检查板卡上的JTAG使能跳线是否在正确位置。我遇到过一块VCU118,跳线默认在“安全模式”,折腾了两小时才发现。

1.5 目标板卡上电验证

最后一步,也是最激动人心的一步——上电验证。咱们以Xilinx VCU118(Virtex UltraScale+)为例。

1.5.1 板卡上电前检查

  • 电源:VCU118需要12V/5A供电,别用劣质电源。纹波太大可能导致FPGA配置失败。
  • 模式开关:SW6(配置模式)拨到“JTAG”模式(通常为0001)。
  • 时钟:检查板载时钟是否正常。VCU118默认有100MHz参考时钟,用示波器量一下,确保频率稳定。

1.5.2 上电与配置

上电后,板卡上的LED会闪烁。正常情况:

  • DONE灯:如果FPGA已经配置过,DONE灯会亮。如果是空片,DONE灯不亮。
  • INIT_B灯:初始化完成后常亮。如果闪烁,说明配置出错。

接下来,咱们写一个最简单的LED闪烁程序,验证整个链路:

// led_blink.v
module led_blink (
    input  wire clk,      // 100MHz
    input  wire rst_n,    // 复位,低有效
    output reg  led       // 板载LED
);

reg [27:0] cnt;

always @(posedge clk or negedge rst_n) begin
    if (!rst_n)
        cnt <= 28'd0;
    else
        cnt <= cnt + 1'b1;
end

always @(posedge clk or negedge rst_n) begin
    if (!rst_n)
        led <= 1'b0;
    else if (cnt == 28'd50_000_000)  // 0.5秒翻转一次
        led <= ~led;
    else
        led <= led;
end

endmodule

综合、实现、生成bit文件,然后通过Hardware Manager下载。如果LED开始闪烁,恭喜你,环境搭建成功了!

个人经验:第一次上电验证,别搞复杂逻辑。就一个LED闪烁,排除所有干扰因素。我见过有人一上来就跑DDR4测试,结果板卡有问题,排查了三天才发现是电源纹波太大。从最简单的开始,一步步来。

1.6 国产化板卡的特殊注意事项

现在很多项目要求国产化,比如复旦微的FMQL系列、紫光同创的Logos系列。这些板卡的环境搭建和Xilinx略有不同:

  • 工具链:复旦微用PDS(Pango Design Suite),紫光同创用TD(TangDynasty)。安装时注意License是绑定网卡还是绑定USB加密狗。复旦微的License通常绑定网卡,换机器需要重新申请。
  • JTAG调试器:国产板卡通常用CMSIS-DAP或者J-Link,速率比Xilinx的慢一些,但够用。注意驱动要装对,Win10下CMSIS-DAP有时需要禁用驱动签名。
  • 上电时序:国产FPGA对上电时序更敏感。我遇到过一块FMQL45,核电压1.0V和IO电压1.8V必须同时上电,差10ms就起不来。后来加了电源监控芯片才解决。

警告:国产化板卡的文档往往不够详细,遇到问题多去官方论坛或者FAE群里问。别自己闷头搞,我当年调一块紫光同创的板卡,因为文档里写错了配置电阻值,浪费了一周时间。

小结

环境搭建这事儿,说白了就是细心加耐心。工具装好、License激活、JTAG连上、板卡跑起来,这四步走完,咱们就可以正式开始写逻辑了。下一章,咱们聊聊宇航级FPGA的时钟管理和复位设计——这可是决定你的设计能不能在太空里稳定运行的关键。

记住:环境搭得好,开发没烦恼。


公众号:蓝海资料掘金营,微信deep3321