第一章:MachXO系列芯片概述
1.1 Lattice Semiconductor公司简介
先聊聊Lattice这家公司。做FPGA的圈子不大,Lattice算是其中很有特色的一家。我个人习惯把FPGA厂商分成两类:一类是Xilinx(现在叫AMD)和Intel那种巨无霸,专攻高端大芯片;另一类就是Lattice,专注做低功耗、小尺寸的FPGA。
Lattice成立于1983年,比很多做FPGA的工程师年龄都大。他们最早做的是PLD(可编程逻辑器件),后来慢慢转型到FPGA。你想想看,能在半导体行业活40多年,没两把刷子是不可能的。
Lattice最厉害的地方在哪?说白了就是「小而美」。他们的芯片功耗低、封装小、启动快,特别适合做系统里的「小配角」——比如给主芯片做桥接、做I/O扩展、做控制逻辑。我在项目中遇到过好几次,主芯片的GPIO不够用,或者接口不匹配,塞一片Lattice的小FPGA进去,问题就解决了。
核心定位: Lattice = 低功耗 + 小尺寸 + 即时启动。不是用来跑Linux的,是用来做「胶合逻辑」的。
1.2 MachXO系列芯片家族
MachXO系列是Lattice的看家产品线之一。从最早的MachXO,到后来的MachXO2、MachXO3,再到最新的MachXO5-NX,每一代都有明显的升级。我按时间线给你捋一捋。
1.2.1 MachXO(第一代)
这是开山之作。2005年左右推出的,主打CPLD升级市场。那时候很多系统还在用传统的CPLD,比如Altera的MAX系列。MachXO的出现,让工程师们发现:原来FPGA也可以做到这么小、这么便宜、启动这么快。
特点:
- 基于SRAM工艺,但内置了Flash配置存储器
- 上电即用,不需要外部配置芯片
- 逻辑单元从256到2280个不等
- 支持3.3V、2.5V、1.8V多种电压
小提示: 第一代MachXO现在基本退市了,但如果你在维护老项目,可能还会碰到。我去年还帮一个客户修过MachXO的老板子,那芯片真是皮实,十几年了还能正常工作。
1.2.2 MachXO2(第二代)
这一代是真正的爆款。MachXO2在2010年左右推出,相比第一代,功耗降低了100倍,成本也大幅下降。为什么能做到?因为工艺从130nm跳到了65nm,而且用了Lattice自研的「超低功耗」架构。
关键参数:
| 参数 | MachXO2 |
|---|---|
| 逻辑单元 | 256 ~ 6864 |
| 嵌入式RAM | 6.2 ~ 92 Kb |
| 用户I/O | 22 ~ 335 |
| 工作频率 | 最高150 MHz |
| 静态功耗 | 低至19 µA |
嗯,这里要注意:MachXO2的静态功耗只有19微安,比很多芯片的漏电流还小。我曾经在一个电池供电的项目里用MachXO2做电源管理,整板功耗控制在50微安以下,客户非常满意。
1.2.3 MachXO3(第三代)
MachXO3是2014年推出的,主要升级点是容量和接口。逻辑单元最高到9400个,而且增加了DDR3内存接口和高速SerDes(最高3.2 Gbps)。
适合做什么?
- 需要少量DDR3缓存的桥接应用
- 需要高速串行通信的I/O扩展
- 替代中小规模的CPLD/FPGA
说实话,MachXO3是我个人用得最多的一代。它的性价比很高,而且封装选择多,从BGA到QFN都有。我记得有个项目需要在-40°C到85°C的环境下工作,MachXO3跑得稳稳的,一点问题没有。
1.2.4 MachXO5-NX(第五代)
这是最新的成员,基于Lattice的Nexus平台,采用28nm FD-SOI工艺。FD-SOI是什么?简单说就是一种既能降低功耗又能减少软错误率的工艺。MachXO5-NX的逻辑单元最高到21K,SerDes速度提升到8 Gbps,还支持PCIe Gen2。
MachXO5-NX的亮点:
- 28nm FD-SOI工艺,功耗比前代再降50%
- 支持PCIe Gen2 x4
- 内置硬核ADC(12位,1 MSPS)
- 安全启动,防止固件被篡改
为什么会用到硬核ADC?我在一个工业控制项目里就踩过坑:用外部ADC加FPGA的方案,PCB布线麻烦,成本也高。MachXO5-NX直接把ADC集成进去了,省事不少。
1.3 典型应用场景
MachXO系列的应用场景,说白了就四个字:「胶合逻辑」。什么意思?就是系统里那些「缺什么补什么」的活儿。我总结了几类最常见的用法。
1.3.1 CPLD升级
这是MachXO系列最原始的应用。传统的CPLD(比如Lattice自己的ispMACH系列)逻辑资源少、不支持RAM、不支持PLL。如果你需要稍微复杂一点的控制逻辑,CPLD就不够用了。
升级到MachXO的好处:
- 逻辑单元多10~100倍
- 内置RAM,可以做FIFO或小缓存
- 有PLL,可以产生不同频率的时钟
- 封装兼容,很多MachXO的封装和CPLD是pin-to-pin兼容的
避坑指南: 我曾经直接把CPLD的代码移植到MachXO上,结果发现时序跑不过。为什么?因为CPLD的组合逻辑延迟是固定的,而FPGA的延迟和布线有关。后来我重新做了时序约束,才解决问题。所以,别偷懒,该做STA还是要做。
1.3.2 桥接
桥接是MachXO系列最拿手的活儿。比如:
- SPI转I2C
- UART转GPIO
- 并行总线转串行总线
- 不同电压域之间的电平转换
你想想看,主芯片的接口不够用,或者协议不匹配,加一片MachXO,写几行Verilog,问题就解决了。而且MachXO的启动时间只有几毫秒,比主芯片还快,不会拖慢系统启动。
1.3.3 控制逻辑
很多系统里需要一些「不复杂但必须可靠」的控制逻辑。比如:
- 电源上电时序控制
- 复位信号管理
- 风扇PWM控制
- LED指示灯驱动
这些活儿用MCU做有点浪费,用CPLD做又不够灵活。MachXO正好卡在中间,逻辑资源够用,功耗又低。我有个项目用MachXO2做了12路电源的时序控制,代码不到100行,跑了好几年没出过问题。
1.3.4 I/O扩展
这是最「简单粗暴」的应用。主芯片的GPIO不够?加一片MachXO,把SPI或I2C转成几十个GPIO。MachXO3L系列最多可以提供335个I/O,足够用了。
实际案例: 我之前做一个摄像头模组测试板,需要同时控制32个传感器的复位、电源和状态读取。主芯片只有16个GPIO,根本不够。后来用了一片MachXO3L-6400,通过SPI接口扩展出48个GPIO,完美解决。
1.4 知识体系总览
为了让你对MachXO系列有个整体认识,我画了一张图。这张图展示了MachXO系列的核心定位、产品家族和典型应用之间的关系。
这张图你看懂了吗?从上到下,从左到右,其实就是一条「选型路径」:先确定你要做什么应用,再选对应的芯片系列。比如做简单的I/O扩展,MachXO2就够用了;如果需要高速SerDes,那就得上MachXO5-NX。
我的建议: 新手入门,先从MachXO2开始。资料多、工具成熟、价格便宜。等把Lattice Diamond或Radiant软件用熟了,再考虑MachXO3或MachXO5-NX。别一上来就追最新的,容易把自己绕晕。
公众号:蓝海资料掘金营,微信deep3321