2、开发环境搭建:Vivado/Quartus安装、仿真工具配置、硬件平台准备

做运动控制项目,第一步就是把家伙事儿备齐。说白了,开发环境就是你的武器库。我见过不少新手,代码写得挺溜,结果卡在环境配置上,一卡就是半天。嗯,咱们今天就把这事捋清楚。

2.1 开发工具选型:Vivado vs Quartus

选哪个工具,其实取决于你用哪家的芯片。我个人习惯是:Xilinx(AMD)的片子用Vivado,Intel(Altera)的片子用Quartus。别想着混着用,那会把自己坑惨。

对比项 Vivado Quartus Prime
适用芯片 Xilinx 7系列及以后 Intel Cyclone/Arria/Stratix
综合引擎 Synplify-based(自研) Synplify / 自研双引擎
仿真集成 自带XSim 自带ModelSim Starter
IP核管理 Vivado IP Integrator Qsys / Platform Designer
调试工具 ILA(集成逻辑分析仪) SignalTap II

我在项目中遇到过用Vivado做运动控制,结果发现某个IP核在Quartus上跑得更顺。后来我学乖了:先定芯片,再选工具。别反过来。

2.2 Vivado安装与配置

Vivado的安装包很大,动不动就几十个G。我建议你直接下WebPACK版本,免费的,功能也够用。运动控制项目用不到那些高端Licence。

安装要点:

  • 路径不要有中文,不要有空格。我见过有人装在"Program Files (x86)"下面,结果编译报错找半天。
  • 安装时勾选"Vivado HL WebPACK"和"Vitis"(如果你要做Zynq软核)。
  • 仿真器选"XSim",别选别的,省事。

安装完成后,记得配一下环境变量。我个人习惯把C:\Xilinx\Vivado\2023.1\bin加到PATH里,这样在命令行里直接敲vivado就能启动。

# Windows PowerShell 下设置
$env:Path += ";C:\Xilinx\Vivado\2023.1\bin"
# 验证安装
vivado -version

小技巧:第一次启动Vivado会很慢,因为它要生成缓存。别急,去泡杯咖啡。以后就快了。

2.3 Quartus Prime安装与配置

Quartus的安装相对友好一些。我建议用Quartus Prime Lite Edition,免费,支持Cyclone IV/V这些常用芯片。

安装时注意几点:

  • 勾选"ModelSim-Intel FPGA Edition",这是自带的仿真器。
  • 芯片支持包只选你需要的。别全勾,不然硬盘受不了。
  • 安装路径同样不要有中文。

我曾经在Quartus 20.1上踩过一个坑:默认安装不包含某些器件的库,编译时报"Error: Can't find device family"。后来发现要手动添加器件支持。嗯,这里要注意。

# 添加器件支持(命令行)
quartus_map --family=Cyclone IV E --part=EP4CE10F17C8

2.4 仿真工具配置

仿真,说白了就是让你的代码在电脑上先跑一遍。我刚开始做FPGA时,总觉得仿真浪费时间,直接上板调。结果呢?烧一次芯片要5分钟,找bug要半小时。后来我学乖了:仿真做得好,调试省一半时间

2.4.1 Vivado XSim配置

XSim是Vivado自带的仿真器,够用。配置很简单:

  1. 在Vivado里点"Flow → Simulation Settings"
  2. 选择"XSim"作为仿真器
  3. 设置仿真时间,比如10us
  4. 添加你的Testbench文件
// 一个简单的Testbench示例
module tb_pwm_controller;
    reg clk;
    reg rst_n;
    wire pwm_out;
    
    // 实例化被测试模块
    pwm_controller uut (
        .clk(clk),
        .rst_n(rst_n),
        .pwm_out(pwm_out)
    );
    
    // 生成时钟
    always #5 clk = ~clk;  // 100MHz
    
    initial begin
        clk = 0;
        rst_n = 0;
        #20 rst_n = 1;
        #1000 $finish;
    end
endmodule

注意:仿真时间别设太短。我见过有人设了1ns,结果波形啥也看不到。运动控制项目,至少设到100us以上。

2.4.2 ModelSim配置(Quartus用户)

ModelSim是工业级仿真器,功能比XSim强一些。配置步骤:

  1. 在Quartus里点"Assignments → Settings → EDA Tool Settings"
  2. 选择"ModelSim-Altera"
  3. 设置仿真格式为"Verilog HDL"
  4. 编译库文件

我个人习惯用ModelSim的命令行模式,比图形界面快多了:

# 启动ModelSim
vsim -c
# 编译设计文件
vlog pwm_controller.v tb_pwm_controller.v
# 启动仿真
vsim work.tb_pwm_controller
# 添加波形
add wave sim:/tb_pwm_controller/*
# 运行
run 100us

2.5 硬件平台准备

软件配好了,硬件也得跟上。运动控制项目常用的开发板有:

开发板 芯片型号 适合场景 参考价格
Nexys A7 XC7A100T 入门级运动控制 约2000元
DE10-Lite MAX 10 基础PWM/编码器 约1500元
Zynq-7020 XC7Z020 高级运动控制+软核 约3000元

我建议初学者先用Nexys A7DE10-Lite。别一上来就搞Zynq,那玩意涉及ARM和FPGA协同,调试起来头大。

2.5.1 必备外设

做运动控制,你至少需要:

  • PWM输出引脚:控制电机速度
  • 编码器输入引脚:读取电机位置
  • GPIO:控制方向、使能等信号
  • 串口(UART):和上位机通信

我曾经在DE10-Lite上做步进电机控制,结果发现板子上的GPIO不够用。后来只好外扩了一个I/O扩展芯片。嗯,选板子时一定要先数清楚引脚数量。

2.5.2 下载器与连接

Vivado用户需要JTAG下载器,比如Digilent的HS2或HS3。Quartus用户用USB-Blaster。别买山寨的,我吃过亏——山寨下载器烧着烧着就掉线了,板子直接变砖。

避坑指南:我曾经用一根劣质USB线连接下载器,结果下载速度死活上不去。后来换了根带屏蔽的线,问题解决。线材很重要,别省那几十块钱。

2.6 环境验证:跑一个LED闪烁

环境搭好了,怎么知道对不对?跑一个最简单的LED闪烁程序。这就像写代码先打"Hello World"一样。

// led_blink.v
module led_blink(
    input  clk,      // 50MHz时钟
    input  rst_n,    // 复位,低有效
    output reg led   // LED输出
);

reg [24:0] cnt;

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

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

endmodule

把这个程序下载到板子上,如果LED以1Hz的频率闪烁,恭喜你,环境搭建成功!

验证清单:

  • ☐ Vivado/Quartus能正常启动
  • ☐ 仿真工具能跑Testbench
  • ☐ 下载器能被识别
  • ☐ LED闪烁程序能下载并运行

环境搭建这块,说白了就是一次性的苦力活。但做好了,后面就顺了。我见过太多人卡在第一步,结果项目还没开始就放弃了。别急,慢慢来,每一步都验证通过再往下走。

好,环境搭好了,咱们就可以开始写真正的运动控制代码了。


专注资料整理