第二章 开发环境搭建:Diamond软件安装与破解、License配置、工程创建流程、IP核生成器(Clarity)初体验

好,咱们正式开始动手了。这一章,我带你把吃饭的家伙——Diamond软件装好、配好、跑起来。很多初学者卡在这一步就放弃了,其实没那么玄乎。我当年第一次装Lattice的软件,也折腾了一下午,后来摸清了门道,十分钟就能搞定一套环境。

2.1 Diamond软件安装——别踩这些坑

Diamond是Lattice官方的FPGA开发套件,集成了综合、布局布线、仿真、调试等全套工具。目前主流版本是3.10到3.13,我个人推荐用3.12,稳定,bug少。

安装前,先确认你的系统:

  • Windows 10 64位(Win7也能跑,但驱动容易出问题)
  • 至少8GB内存(16GB更舒服)
  • 预留20GB硬盘空间
  • 关闭杀毒软件(这个很重要,我吃过亏)
⚠ 注意: 安装路径不要有中文!不要有空格!我见过有人装在“C:\Program Files (x86)\莱迪思\Diamond\”下面,结果IP核生成器死活打不开。老老实实用默认路径,或者改成“C:\Lattice\Diamond\”。

安装步骤其实很简单:

  1. 双击安装包,选“Install Diamond Programmer”和“Install Diamond Design Tools”
  2. 一路Next,到License那一步先跳过
  3. 安装完成后,重启电脑

嗯,这里要注意:安装过程中会提示安装USB驱动,一定要选“是”。否则后面下载器连不上,你哭都来不及。

2.2 License配置——破解其实就三步

Diamond是收费软件,但Lattice对学生和个人开发者比较友好。你可以去官网申请免费License,也可以用我下面说的方法。

我个人习惯用浮动License的方式:

  1. 下载破解工具(网上搜“Diamond License Generator”就能找到)
  2. 打开工具,填入你的网卡MAC地址
  3. 生成license.dat文件,放到Diamond安装目录下的“license”文件夹里
💡 小技巧: 怎么查MAC地址?打开命令行,输入“ipconfig /all”,找到“物理地址”那一串。注意不要有横杠,全部大写。

配置环境变量也很关键:

变量名:LM_LICENSE_FILE
变量值:C:\Lattice\Diamond\3.12\license\license.dat

我曾经遇到过一个问题:明明license文件放对了,环境变量也配了,但软件还是报“License not found”。后来发现是杀毒软件把license文件当病毒隔离了。所以,装完软件先关掉实时防护,再放license文件。

2.3 工程创建流程——从零到第一个工程

环境搭好了,咱们来建第一个工程。说白了就是点几下鼠标的事,但顺序错了会出幺蛾子。

步骤一:新建工程

  1. 打开Diamond,点击“File → New → Project”
  2. 输入工程名(别用中文),选好保存路径
  3. 选择器件型号:比如我常用的LFE5U-45F-8BG381C
  4. 点击“Finish”

步骤二:添加源文件

右键“Input Files”,选“Add File”。你可以新建一个Verilog文件,也可以把写好的代码加进来。我建议初学者先建一个空的top.v,写个最简单的LED闪烁程序。

module top(
    input  clk,
    output reg led
);
    reg [23:0] cnt;
    always @(posedge clk) begin
        cnt <= cnt + 1;
        if(cnt == 24'd12_000_000) begin
            led <= ~led;
            cnt <= 0;
        end
    end
endmodule

步骤三:综合与布局布线

双击“Process”窗口里的“Synthesize Design”,等它跑完。然后双击“Map Design”和“Place & Route”。你想想看,这个过程其实就是把代码翻译成FPGA能理解的电路,再分配到具体的逻辑单元上。

🔑 关键点: 第一次跑工程,如果报错“No constraints found”,别慌。你需要新建一个.lpf文件(Lattice Preference File),在里面加上时钟约束。比如:
FREQUENCY PORT "clk" 50 MHz;

2.4 IP核生成器(Clarity)初体验

Clarity是Lattice的IP核配置工具。说白了,就是帮你生成现成的功能模块,比如PLL、FIFO、DDR控制器。你不需要自己写代码,点点鼠标就能用。

打开Clarity的方法:

  • 在Diamond菜单栏点“Tools → Clarity License Free IP Generator”
  • 或者直接在工程里右键“Add Module”

我第一次用Clarity的时候,觉得这东西真方便。选一个PLL,配置输入频率50MHz,输出100MHz,点生成,代码就出来了。但后来发现,生成的代码里有些参数需要手动调整,比如反馈模式、相位偏移。所以,别完全依赖工具,还是要看懂生成的代码。

举个例子,配置一个PLL:

  1. 在Clarity里选“PLL”模块
  2. 输入时钟频率:50 MHz
  3. 输出时钟频率:100 MHz
  4. 点击“Generate”,选择输出路径
  5. 把生成的.v文件和.ipx文件加到工程里
⚠ 注意: Clarity生成的IP核,有些是免费的,有些需要额外买License。免费的一般够用,比如PLL、FIFO、RAM。如果你要用高速SerDes或者DDR控制器,那得掏钱了。

2.5 本章知识体系一览

下面这张图,是我画的一个流程图,帮你理清开发环境搭建的整个逻辑。从安装到跑通第一个工程,每一步都环环相扣。

Diamond开发环境搭建流程 安装Diamond软件 配置License 创建工程 添加源文件 综合 & 布局布线 Clarity IP核生成 第1步 第2步 第3步 第4步 第5步 第6步 ⚠ 关闭杀毒软件 ⚠ 环境变量配置 ⚠ 器件型号选择 ⚠ 添加.lpf约束 ⚠ 检查时序报告 ⚠ 免费/付费IP

这张图把整个流程串起来了。你跟着走一遍,基本不会出大问题。如果卡在哪一步,回头看看图,找到对应的节点,排查起来也快。

💡 我的经验: 第一次跑工程,别急着加复杂逻辑。先写个LED闪烁,下载到板子上,看到灯亮了,说明环境完全OK。这一步走通了,后面学什么都踏实。

好了,这一章的内容就到这。环境搭好了,下一章咱们就开始写真正的光纤通信接口代码了。到时候,我会带你从最简单的8B/10B编码开始,一步步搭建一个完整的收发链路。

专注资料整理