2. 开发环境搭建:Lattice Diamond软件安装、License配置、创建第一个工程、工程结构解析

好,咱们正式开始动手了。

这一章,我带你走一遍Lattice Diamond开发环境的搭建流程。说实话,很多初学者卡在第一步——软件装好了,License配不对,工程建起来又不知道每个文件是干嘛的。别急,咱们一步步来。

2.1 Lattice Diamond软件安装

Lattice Diamond是Lattice半导体官方提供的FPGA开发IDE。我个人习惯用2021.1版本,稳定,坑少。

安装前注意几点:

  • 操作系统:Windows 10 64位或Linux(Ubuntu 18.04/20.04)。我建议用Windows,驱动和调试器支持更省心。
  • 硬盘空间:至少留出10GB。Diamond本体大概4GB,加上器件库和更新包,你懂的。
  • 关闭杀毒软件:安装过程中会写注册表和系统变量,杀毒软件容易误拦。我遇到过好几次,装到一半卡住,最后发现是360在捣乱。

安装步骤:

  1. 从Lattice官网下载Diamond安装包(需要注册账号,免费)。
  2. 双击运行安装程序,选择“Full Installation”。
  3. 选择安装路径——不要有中文和空格。我一般装到 C:\lscc\diamond\3.12 这种路径。
  4. 勾选你需要用的器件系列。比如MachXO2、MachXO3、ECP5、CrossLink等。全选也行,就是占空间。
  5. 等待安装完成,大概20-30分钟。
小提示:安装完成后,建议重启电脑。环境变量才会生效。

2.2 License配置

装完软件,打开Diamond,大概率会弹出一个License错误窗口。别慌,这是正常现象。

License有两种:

  • Node-Locked License:绑定一台电脑的MAC地址。适合个人开发。
  • Floating License:网络浮动,适合团队。

咱们说最常见的Node-Locked方式。

配置步骤:

  1. 打开Diamond,点击菜单 Help → License Manager
  2. 选择 Install License,浏览到你存放 license.dat 文件的路径。
  3. 点击 Apply,如果提示“License installed successfully”,就搞定了。
注意:我曾经遇到一个坑——license文件路径里有中文,Diamond死活认不到。后来改成纯英文路径,一次通过。所以,所有路径都不要有中文

如果还是报错,检查环境变量 LM_LICENSE_FILE 是否指向了正确的license文件路径。可以在系统环境变量里手动添加。

2.3 创建第一个工程

好,License配好了,咱们来建第一个工程。目标很简单:写一个与门,然后烧到板子上看LED亮不亮。

新建工程步骤:

  1. 打开Diamond,点击 File → New → Project
  2. 输入工程名,比如 my_first_and_gate。选择工程路径。
  3. 选择器件型号。我用的是 MachXO2-1200HC,封装TQFP144。你根据自己板子选。
  4. 点击 Finish,工程就建好了。

接下来,添加一个Verilog源文件:

  1. 右键 Input FilesNew File
  2. 选择 Verilog File,命名为 and_gate.v
  3. 写入以下代码:
module and_gate (
    input  wire a,
    input  wire b,
    output wire y
);
    assign y = a & b;
endmodule

然后写一个顶层文件,把输入输出映射到板子上的引脚:

module top (
    input  wire btn_a,
    input  wire btn_b,
    output wire led
);
    and_gate u_and (
        .a(btn_a),
        .b(btn_b),
        .y(led)
    );
endmodule

保存后,在Diamond左侧的 Process 窗口,双击 Synthesize Design 进行综合。如果没报错,恭喜你,第一步走通了。

核心要点:综合就是把你写的Verilog代码翻译成FPGA内部的查找表(LUT)和连线。说白了,就是把逻辑变成硬件。

2.4 工程结构解析

工程建好了,咱们看看Diamond到底生成了哪些文件。很多新手一打开工程目录就懵了——一堆文件夹,不知道哪个是哪个。

我帮你梳理一下核心文件结构:

文件/文件夹 作用
.ldf 工程文件,双击它就能打开整个工程。相当于Diamond的“项目入口”。
impl/ 实现文件夹。里面放着综合、布局布线、时序分析的结果。
src/ 源代码文件夹。你的 .v 文件、.vhd 文件都放这里。
constraint/ 约束文件夹。放 .lpf 文件(引脚分配、时序约束)。
synplify/ 综合工具Synplify的工作目录。一般不用手动管。
par/ 布局布线(Place and Route)的输出目录。

嗯,这里要特别说一下 .lpf 文件。它是Lattice的引脚约束文件。你写Verilog时用的 inputoutput 信号,必须通过 .lpf 文件映射到FPGA的实际物理引脚上。否则,综合出来的电路不知道信号该从哪个管脚进出。

举个例子,我的板子上按钮接在 PIN_1PIN_2,LED接在 PIN_3,那么 .lpf 文件内容就是:

LOCATE COMP "btn_a" SITE "PIN_1";
LOCATE COMP "btn_b" SITE "PIN_2";
LOCATE COMP "led"   SITE "PIN_3";

保存后,在Diamond里右键 Input FilesAdd File,把这个 .lpf 文件加进去。然后重新综合、布局布线,最后生成烧录文件。

我的习惯:每次新建工程,我都会先创建一个 constraint 文件夹,把 .lpf 文件放进去。这样工程结构清晰,后期维护也方便。

2.5 知识体系一览

为了让你更直观地理解本章的知识脉络,我画了一张流程图:

开发环境搭建知识体系 1. Diamond软件安装 2. License配置 3. 创建第一个工程 4. 工程结构解析 安装包下载 路径无中文 Node-Locked 环境变量 Verilog代码 综合验证 .ldf / .lpf src / impl 选择器件系列 MachXO2/ECP5 License Manager Apply生效 引脚映射 生成bit流 约束文件 综合结果

这张图把四个步骤串起来了。你跟着箭头走,就能把环境搭好,跑通第一个工程。

避坑提醒:我曾经在工程路径里用了中文,结果综合时报错“cannot open file”。查了半天才发现是路径编码问题。从此以后,所有工程路径我都用英文+下划线,再也没出过类似问题。

好了,环境搭建就讲到这里。你跟着操作一遍,应该能顺利跑起来。如果遇到问题,回头看看我提到的几个坑点,大概率能解决。


专注资料整理