第二章 开发环境搭建: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硬盘空间
- 关闭杀毒软件(这个很重要,我吃过亏)
安装步骤其实很简单:
- 双击安装包,选“Install Diamond Programmer”和“Install Diamond Design Tools”
- 一路Next,到License那一步先跳过
- 安装完成后,重启电脑
嗯,这里要注意:安装过程中会提示安装USB驱动,一定要选“是”。否则后面下载器连不上,你哭都来不及。
2.2 License配置——破解其实就三步
Diamond是收费软件,但Lattice对学生和个人开发者比较友好。你可以去官网申请免费License,也可以用我下面说的方法。
我个人习惯用浮动License的方式:
- 下载破解工具(网上搜“Diamond License Generator”就能找到)
- 打开工具,填入你的网卡MAC地址
- 生成license.dat文件,放到Diamond安装目录下的“license”文件夹里
配置环境变量也很关键:
变量名:LM_LICENSE_FILE
变量值:C:\Lattice\Diamond\3.12\license\license.dat
我曾经遇到过一个问题:明明license文件放对了,环境变量也配了,但软件还是报“License not found”。后来发现是杀毒软件把license文件当病毒隔离了。所以,装完软件先关掉实时防护,再放license文件。
2.3 工程创建流程——从零到第一个工程
环境搭好了,咱们来建第一个工程。说白了就是点几下鼠标的事,但顺序错了会出幺蛾子。
步骤一:新建工程
- 打开Diamond,点击“File → New → Project”
- 输入工程名(别用中文),选好保存路径
- 选择器件型号:比如我常用的LFE5U-45F-8BG381C
- 点击“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能理解的电路,再分配到具体的逻辑单元上。
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:
- 在Clarity里选“PLL”模块
- 输入时钟频率:50 MHz
- 输出时钟频率:100 MHz
- 点击“Generate”,选择输出路径
- 把生成的.v文件和.ipx文件加到工程里
2.5 本章知识体系一览
下面这张图,是我画的一个流程图,帮你理清开发环境搭建的整个逻辑。从安装到跑通第一个工程,每一步都环环相扣。
这张图把整个流程串起来了。你跟着走一遍,基本不会出大问题。如果卡在哪一步,回头看看图,找到对应的节点,排查起来也快。
好了,这一章的内容就到这。环境搭好了,下一章咱们就开始写真正的光纤通信接口代码了。到时候,我会带你从最简单的8B/10B编码开始,一步步搭建一个完整的收发链路。