1. 国产FPGA替代的真实战场:从选型焦虑到实测落地
这两年做FPGA项目的人,心里都绕不开一个话题:进口芯片交期和价格的双重暴击。我手头有几个工业控制和图像采集的板子,之前一直用赛灵思的Spartan-6和Artix-7系列,2021年那会儿一颗XC7A35T炒到离谱的价格,交期动不动五六十周,项目排期完全没法做。就是从那时候起,我开始认真评估国产FPGA的替代方案,前后折腾了紫光同创的Titan系列、Logos系列,以及安路科技的EG4、ELF系列,踩了不少坑,也跑通了一些量产项目。
这篇内容不是厂商的软文,也不是简单的参数罗列。我想把这一年多实测下来的经验摊开讲:哪些型号在什么场景下能真正平替赛灵思,哪些地方看着参数漂亮但实际用起来会卡住,工具链的成熟度到底到了什么程度,以及从导入到量产这条路上,我踩过的具体坑和绕过去的办法。如果你正在做国产化选型,或者手头有项目要评估替代方案,这些内容应该能帮你省下不少试错时间。
核心关键词就几个:FPGA、紫光同创、安路科技、赛灵思、Titan。我会围绕这几个点,把逻辑门规模、SerDes速率、DSP资源、BRAM容量、封装兼容性、工具链体验、IP核生态这些维度逐一拆开对比。适合已经有一定FPGA开发基础、正在做选型决策的工程师,也适合刚入门想了解国产芯片现状的朋友。我会尽量用实测数据和项目案例说话,少讲空话。
2. 为什么国产FPGA现在值得认真评估
2.1 供应链现实倒逼的替代需求
先讲清楚一个大背景。过去大家不用国产FPGA,核心原因不是爱国不爱国的问题,而是工具链难用、IP核少、文档差、出了问题找不到人支持。但2020年之后情况变了,进口芯片的交期和价格波动让很多项目根本没法按计划推进。我有个做多路图像采集的客户,原本用Artix-7 XC7A100T,一颗芯片从两百多涨到一千多,还拿不到货,项目直接停摆三个月。这种时候,国产FPGA哪怕工具链差一点,只要能跑通,就是救命方案。
紫光同创和安路科技这两家,是目前国产FPGA里出货量最大、生态相对最完整的。紫光同创背靠紫光集团,产品线覆盖Logos、Titan、Kosmo三个系列,从低端到高端都有布局。安路科技主打EG4、ELF、PH1等系列,在中小规模市场铺得很猛。两家都有一个共同特点:在中低端型号上,已经能做到和赛灵思Spartan-6、Spartan-7、Artix-7的部分型号引脚兼容或者功能对标。
2.2 平替的边界在哪里
这里必须说清楚一个概念:平替不等于完全替代。我见过太多人拿着赛灵思的选型表直接去找国产对应型号,结果发现SerDes速率不够、DSP slice数量差一截、或者IP核根本不支持。正确的做法是先明确你的项目到底用了哪些硬核资源,再去找最接近的国产型号,然后评估工具链和IP的迁移成本。
举个具体例子。赛灵思Artix-7 XC7A35T有33,280个逻辑单元、1,800个DSP slice、1,800Kb BRAM、4个GTP收发器(6.6Gb/s)。紫光同创的Logos-2系列PGC2KG-6,逻辑规模在30K左右,DSP资源接近,但没有高速SerDes。安路科技的EG4S20,逻辑单元20K,DSP 48个,BRAM 1,008Kb,也没有SerDes。所以如果你的项目用了GTP做高速接口,这两个型号都替代不了,得往上找Titan系列或者安路的PH1系列。
注意:选型第一步不是看逻辑规模,而是看你的项目有没有用到SerDes、PCIe硬核、DDR控制器这些专用资源。这些资源一旦缺失,软件层面再怎么优化都补不回来。
2.3 工具链成熟度的真实体感
工具链是国产FPGA最大的短板,但这两年进步很明显。紫光同创的PDS(Pango Design Suite)基于Synopsys的Synplify和自家的布局布线引擎,界面风格接近ISE和Vivado的混合体。安路的Tang Dynasty(TD)工具链也是类似路线,综合用Synplify,布局布线自研。
我实测下来的体感是:中小规模逻辑设计(10K门以内)的流程已经比较顺畅,综合、布局布线、时序收敛都能跑通。但大规模设计(50K门以上)的时序收敛难度明显高于Vivado,需要更多手动约束和迭代。IP核方面,两家都提供了常用的FIFO、RAM、ROM、PLL、DDR控制器、SerDes等,但像PCIe、以太网MAC、MIPI这些复杂IP,要么没有,要么需要额外授权,要么稳定性还需要验证。
3. 紫光同创Titan系列实测拆解
3.1 Titan系列的定位与核心参数
紫光同创的Titan系列是他们家的高端产品线,主要对标赛灵思的Kintex-7和Artix-7高端型号。我手头实测的是Titan-2系列里的PGT30G,逻辑规模约30K,带4个SerDes通道,速率支持到6.25Gb/s,DSP slice数量在120个左右,BRAM容量约1,800Kb。封装是FBGA-484,引脚间距0.8mm,和Artix-7的FBGA-484封装在物理尺寸上接近,但引脚定义完全不同,不能直接换。
Titan系列最大的卖点是集成了硬核DDR3/DDR4控制器和SerDes,这在国产FPGA里算是比较领先的。我拿它做了一个多路LVDS图像采集加DDR3缓存的板子,SerDes用来接收LVDS差分信号,DDR3做帧缓存,逻辑部分做图像预处理。整体跑下来,SerDes的误码率在6.25Gb/s下实测能到1E-12以下,DDR3-1600的读写带宽能跑到理论值的70%左右,这个表现已经能满足大部分工业视觉场景。
3.2 实测项目:多路LVDS图像采集
这个项目的需求是接收4路LVDS差分视频流,每路速率在800Mbps左右,做简单的去马赛克和色彩空间转换,然后通过DDR3缓存后输出到显示接口。之前用Artix-7 XC7A100T做,资源占用大概在60%左右。换成PGT30G之后,逻辑资源占用到了75%,DSP占用到了80%,BRAM占用到了85%,整体比Artix-7紧张不少。
具体原因是紫光同创的DSP slice在实现乘加运算时,效率比赛灵思的DSP48E1低一些。同样的去马赛克算法,在Artix-7上用了36个DSP,在PGT30G上用了52个。BRAM也是类似情况,同样的帧缓存深度,紫光同创需要多占用约20%的BRAM资源。所以如果你要做平替,逻辑规模建议留出至少30%的余量,不能按1:1去对应。
工具链方面,PDS的综合速度比Vivado快不少,一个30K门的设计,综合加布局布线大概15分钟能跑完,Vivado可能要半小时以上。但时序收敛比较折腾,我遇到过一次建立时间违例,在Vivado里加个约束就能过,在PDS里调了三四轮才收敛。后来发现是PDS的布局布线算法对高扇出网络的优化不够激进,需要手动加寄存器复制或者调整约束优先级。
3.3 Titan系列的平替建议
如果你现在用的是Artix-7 XC7A35T到XC7A100T这个区间,Titan-2的PGT30G和PGT50G是可以认真考虑的。但要注意几点:第一,SerDes的协议支持有限,目前主要支持自定义高速接口和部分标准协议,像PCIe Gen2 x4这种,需要确认IP核是否可用。第二,DDR控制器的兼容性需要实测,不同品牌的DDR3颗粒可能需要在工具里调整参数。第三,封装不兼容,PCB必须重新设计。
实操心得:紫光同创的PDS工具里,时序约束的语法和Vivado有差异,尤其是set_false_path和set_multicycle_path的写法。建议先在PDS里跑一遍综合,看看工具自动识别的时钟和时序路径,再手动补充约束,不要直接照搬Vivado的XDC文件。
4. 安路科技EG4与ELF系列实测拆解
4.1 EG4系列的定位与核心参数
安路科技的EG4系列是他们家的主力中端产品,我实测的是EG4S20,逻辑单元20K,DSP 48个,BRAM 1,008Kb,没有SerDes,最大系统时钟能跑到200MHz左右。封装有QFN和FBGA多种选择,其中EG4S20BG256这个型号在引脚上做了不少兼容性设计,可以比较容易地迁移到其他平台。
EG4系列的定位很明确:替代Spartan-6和Spartan-7的中低端型号,主打成本敏感型市场。我拿它做了一个出租车计价器的项目,逻辑部分包括里程计算、计费逻辑、七段数码管驱动、串口通信和按键扫描,资源占用不到30%。这个项目之前用Spartan-6 XC6SLX9做,换成EG4S20之后,逻辑资源反而更宽裕,因为EG4S20的逻辑单元比XC6SLX9多了一倍多。
工具链方面,安路的Tang Dynasty工具链基于Synplify综合,布局布线自研。我实测下来,综合速度很快,一个10K门的设计,综合加布局布线大概5分钟。但工具链的稳定性还有提升空间,我遇到过两次布局布线失败,报错信息不太明确,后来发现是某个时钟域没有正确约束导致的。安路的FAE响应速度还不错,提交问题后一般一两天能给回复。
4.2 实测项目:出租车计价器
这个项目虽然逻辑简单,但涉及多个时钟域和异步接口,比较能反映工具链的成熟度。计价器的核心逻辑包括:里程脉冲计数(外部中断)、计费状态机、数码管动态扫描(1kHz刷新)、串口通信(115200bps)、按键消抖。之前用Spartan-6做的时候,时序约束比较简单,因为逻辑规模小,工具自动优化就能过。
换成EG4S20之后,我遇到了一个典型问题:数码管动态扫描的时钟和串口通信的时钟之间存在亚稳态风险。在Vivado里,我一般用set_clock_groups或者set_false_path来处理,但在TD工具里,这两个约束的语法和生效方式不太一样。后来我采用了双触发器同步加握手信号的方式,在RTL层面解决了跨时钟域问题,工具约束只做了辅助。
这个项目最终跑到了150MHz的系统时钟,数码管扫描和串口通信都稳定工作。实测下来,EG4S20在中小规模逻辑设计上的表现是可靠的,工具链虽然不如Vivado顺手,但基本功能都齐全。
4.3 ELF系列与低功耗场景
安路的ELF系列主打低功耗和小封装,我实测的是ELF2系列的ELF2M5,逻辑单元5K左右,静态功耗在10mW级别,适合电池供电或者对功耗敏感的便携设备。我拿它做了一个温控风扇的控制板,逻辑包括温度传感器读取(I2C接口)、PWM风扇调速、过温保护逻辑。整个板子用一颗ELF2M5就够了,功耗比之前用的CPLD方案还低。
ELF系列的平替对象是Lattice的MachXO系列和赛灵思的CoolRunner系列。如果你之前用CPLD做简单的逻辑控制,现在想升级到FPGA,ELF系列是一个不错的过渡选择。但要注意,ELF系列的逻辑资源有限,复杂的算法或者大容量缓存做不了,适合纯控制逻辑。
5. 平替赛灵思的型号对照与选型逻辑
5.1 型号对照表与资源对比
下面这张表是我根据实测和官方数据手册整理的,列出了赛灵思常用型号和紫光同创、安路科技对应型号的资源对比。需要说明的是,逻辑单元的定义各家不同,赛灵思的一个逻辑单元包含一个4输入LUT和一个触发器,紫光同创和安路科技的定义类似,但实际能实现的逻辑功能可能有差异,所以逻辑单元数量只能作为参考,不能直接等价。
| 赛灵思型号 | 逻辑单元 | DSP | BRAM(Kb) | SerDes | 紫光同创对应 | 安路科技对应 |
|---|---|---|---|---|---|---|
| XC6SLX9 | 9,152 | 16 | 576 | 无 | Logos-1 PGL9 | EG4S10 |
| XC6SLX16 | 14,579 | 32 | 576 | 无 | Logos-1 PGL16 | EG4S15 |
| XC7A35T | 33,280 | 90 | 1,800 | 4 GTP | Titan-2 PGT30G | EG4S20 |
| XC7A100T | 101,440 | 240 | 4,860 | 4 GTP | Titan-2 PGT50G | PH1系列 |
| XC7K325T | 326,080 | 840 | 16,020 | 16 GTX | Titan-3系列 | PH1系列高端 |
从表里能看出来,在中低端市场,国产FPGA的替代能力已经比较强。XC6SLX9和XC6SLX16这两个型号,紫光同创的Logos-1系列和安路的EG4S10/EG4S15都能覆盖,而且逻辑资源还更宽裕。XC7A35T这个级别,紫光同创的Titan-2 PGT30G和安路的EG4S20都能对标,但要注意SerDes的有无。XC7A100T以上,国产FPGA的选择就少了,紫光同创的Titan-2 PGT50G和安路的PH1系列可以评估,但工具链和IP生态的差距会更明显。
5.2 选型决策的五个关键维度
选型不是简单的参数对照,我一般会从五个维度来评估:
第一,硬核资源匹配度。先看你的项目有没有用到SerDes、PCIe、DDR控制器、MIPI这些硬核。如果用了,国产FPGA必须有对应的硬核,否则直接排除。比如你要做PCIe Gen2 x4,紫光同创的Titan-2系列有PCIe硬核,安路的PH1系列也有,但EG4系列就没有。
第二,逻辑资源余量。国产FPGA的工具链优化能力普遍弱于Vivado,同样的RTL代码,在国产工具里综合出来的资源占用可能多20%到30%。所以选型时逻辑资源至少留30%余量,DSP和BRAM也要留类似余量。
第三,封装与PCB兼容性。国产FPGA的封装和引脚定义和赛灵思完全不同,PCB必须重新设计。但如果你的板子还在前期阶段,可以优先选择封装尺寸接近的型号,方便后续切换。
第四,工具链与IP生态。如果你的项目用了大量赛灵思的IP核,比如AXI互联、DDR控制器、以太网MAC,迁移到国产FPGA的工作量会很大。这种情况下,要么找国产FPGA厂商提供对应的IP,要么自己在RTL层面重新实现。
第五,供货与技术支持。国产FPGA的供货周期一般比进口短,但也要看具体型号。紫光同创和安路科技都有FAE团队,响应速度还可以,但复杂问题的解决周期可能比进口厂商长。
5.3 什么场景适合平替,什么场景不建议
根据我的实测经验,适合平替的场景包括:工业控制、电机驱动、LED显示控制、简单的图像采集与处理、通信协议转换、数据采集卡等。这些场景的逻辑规模一般在50K门以内,对SerDes速率要求不高,IP核需求简单。
不建议平替的场景包括:高速通信设备(100G以太网、PCIe Gen3以上)、复杂图像处理(4K视频实时处理)、大规模逻辑设计(100K门以上)、对时序收敛要求极高的场景。这些场景下,国产FPGA的工具链和IP生态还不足以支撑,强行替代可能导致项目延期或者性能不达标。
实操心得:我一般会建议客户先用国产FPGA做一个最小系统验证,把核心逻辑跑通,再决定是否全面迁移。不要一上来就把整个项目移植过去,风险太大。
6. 工具链与开发流程的实操细节
6.1 紫光同创PDS工具链上手要点
紫光同创的PDS工具链安装包大概2GB左右,支持Windows和Linux。安装过程比较顺利,但要注意License的申请和配置,紫光同创的License是绑定MAC地址的,换电脑需要重新申请。工具界面和ISE比较像,左侧是工程管理,右侧是代码编辑和综合布局布线选项。
新建工程的流程是:选择器件型号、添加RTL文件、添加约束文件、设置综合选项、运行综合、运行布局布线、生成比特流。整个过程和Vivado类似,但细节上有差异。比如PDS的综合选项里,有一个“Optimization Strategy”需要选择,我一般选“Area”优先,因为国产FPGA的资源余量本来就不大,面积优化比速度优化更重要。
约束文件的语法是SDC格式,和Vivado的XDC有相似之处,但不完全兼容。比如create_clock的写法基本一样,但set_input_delay和set_output_delay的参数定义有差异。我建议先在PDS里用TimeQuest类似的时序分析工具看看工具自动识别的时钟和路径,再手动补充约束。
6.2 安路TD工具链的实操细节
安路的Tang Dynasty工具链安装包大概1.5GB,同样支持Windows和Linux。安装后需要配置License,安路的License也是绑定MAC地址的。工具界面比较简洁,工程管理、代码编辑、综合、布局布线、下载都在一个界面里完成。
TD工具链的综合引擎是Synplify,所以综合选项和Synplify类似。我一般会开启“Resource Sharing”和“Retiming”选项,这两个选项对面积和时序优化帮助比较大。布局布线的选项里,有一个“Effort Level”需要选择,我一般选“High”,虽然布局布线时间会长一些,但时序收敛的成功率更高。
下载配置方面,安路支持JTAG和SPI Flash两种方式。JTAG下载器可以用安路官方的,也可以用兼容的FTDI下载器。SPI Flash下载需要生成.mcs文件,然后在TD工具里通过“Program Flash”功能烧录。
6.3 从Vivado迁移到国产工具链的注意事项
从Vivado迁移到国产工具链,最大的坑是IP核的替换。Vivado里的IP核,比如Clocking Wizard、Block Memory Generator、AXI Interconnect,在国产工具里要么没有,要么接口和参数不同。我的做法是:对于简单的IP,比如PLL、RAM、FIFO,直接用国产工具里的IP生成器重新生成;对于复杂的IP,比如DDR控制器、PCIe,先确认国产工具是否提供,如果不提供,就在RTL层面自己实现或者找第三方IP。
另一个坑是时序约束的语法差异。Vivado的XDC是基于Tcl的,国产工具的SDC也是基于Tcl的,但命令和参数有差异。我一般会把XDC里的约束逐条翻译成SDC,然后在国产工具里逐条验证。特别注意set_false_path和set_multicycle_path的写法,这两个约束在国产工具里容易出错。
还有一个坑是跨时钟域处理。Vivado对跨时钟域的时序分析比较严格,国产工具可能默认不检查某些路径。我建议在RTL层面就把跨时钟域处理做好,用双触发器同步或者异步FIFO,不要依赖工具约束来“掩盖”问题。
7. 常见问题与排查技巧实录
7.1 综合与布局布线常见报错
问题一:综合报错“Cannot infer RAM”。这个错误一般是因为RTL代码里的RAM描述不符合工具的推断规则。紫光同创的PDS和安路的TD对RAM的推断规则和Vivado有差异,比如Vivado支持二维数组的RAM描述,国产工具可能只支持一维数组。解决办法是改用工具提供的RAM IP核,或者按照工具文档里的模板重写RAM描述。
问题二:布局布线失败“No legal placement”。这个错误一般是因为资源占用过高或者约束冲突。我遇到过一次,逻辑资源占用到了95%,布局布线怎么都过不去。后来把一些逻辑改成时分复用,资源占用降到80%以下,就顺利通过了。所以选型时留资源余量很重要。
问题三:时序违例“Setup violation”。国产工具的布局布线算法对高扇出网络的优化不够,容易导致建立时间违例。解决办法是手动加寄存器复制,或者用max_fanout约束限制扇出。我一般会在综合后看看哪些网络的扇出超过100,然后手动处理。
7.2 下载与配置常见问题
问题一:JTAG下载失败。先检查下载器驱动是否安装,再检查JTAG链是否正常。紫光同创和安路的下载器都需要安装对应的驱动,Windows下可能需要禁用驱动签名强制。如果JTAG链有问题,可以用工具里的“Scan Chain”功能看看能不能识别到器件。
问题二:SPI Flash烧录后不启动。这个一般是.mcs文件生成有问题,或者Flash的型号不兼容。我建议先用JTAG直接下载比特流,确认逻辑功能正常,再烧录Flash。烧录Flash时,注意选择正确的Flash型号和容量,国产FPGA对某些品牌的Flash兼容性不好,建议用官方推荐的型号。
问题三:配置时钟不稳定。国产FPGA的配置时钟一般由内部振荡器提供,如果外部晶振不稳定,可能导致配置失败。我遇到过一次,板子上的晶振负载电容不匹配,导致配置时钟偏差太大,FPGA无法启动。后来换了晶振和负载电容,问题解决。
7.3 常见问题速查表
| 问题现象 | 可能原因 | 排查方法 | 解决办法 |
|---|---|---|---|
| 综合报错RAM推断失败 | RTL描述不符合工具规则 | 检查RAM代码模板 | 改用IP核或重写代码 |
| 布局布线失败 | 资源占用过高 | 查看资源报告 | 优化逻辑或换更大型号 |
| 时序违例 | 高扇出网络 | 查看时序报告 | 寄存器复制或加约束 |
| JTAG下载失败 | 驱动或JTAG链问题 | 检查驱动和Scan Chain | 重装驱动或检查硬件 |
| Flash烧录不启动 | .mcs文件或Flash兼容性 | 先JTAG验证再烧录 | 换Flash型号或重新生成 |
| 配置时钟不稳定 | 晶振或负载电容问题 | 测量时钟频率 | 更换晶振和电容 |
实操心得:国产FPGA的FAE支持很重要,遇到工具链的奇怪问题,不要自己死磕,直接提交问题给FAE,一般一两天能有回复。我遇到过几次布局布线的bug,都是FAE提供了临时补丁或者规避方法。
8. 国产FPGA替代的边界与个人体会
8.1 当前阶段的替代边界
从我这边的实测来看,国产FPGA在中低端市场已经具备了替代能力,尤其是逻辑规模在50K门以内、不需要高速SerDes、IP核需求简单的场景。紫光同创的Titan-2系列和安路的EG4系列,在工业控制、图像采集、通信协议转换这些领域,已经有不少量产案例。
但在高端市场,差距依然明显。100K门以上的大规模设计,国产FPGA的工具链时序收敛能力不足,IP核生态也不完整。高速SerDes的速率和协议支持,和赛灵思的GTX/GTH还有代差。所以如果你的项目是高速通信、复杂图像处理、大规模逻辑设计,国产FPGA暂时还替代不了。
8.2 个人实操体会
这一年多折腾下来,我最大的体会是:国产FPGA的替代不是简单的芯片替换,而是整个开发流程的重新适配。工具链的差异、IP核的缺失、时序约束的不同,都需要花时间去学习和踩坑。但一旦跑通了一个项目,后续的迁移成本会大幅降低。
另外,选型时不要只看参数,要看生态。紫光同创和安路科技都在积极建设开发者社区,提供参考设计、开发板、培训视频,这些资源对上手帮助很大。我建议新手先从官方开发板入手,跑通几个例程,再开始自己的项目。
最后,国产FPGA的进步速度很快。我2021年第一次用紫光同创的PDS工具时,bug很多,时序收敛很困难。到了2023年,工具链的稳定性和易用性已经有了明显提升。安路的TD工具链也是类似情况。所以如果你现在觉得国产FPGA不好用,可以过半年再试试,可能会有惊喜。
8.3 后续可以扩展的方向
如果你对国产FPGA的替代感兴趣,后续可以关注几个方向:一是紫光同创的Titan-3系列和安路的PH1系列在高端市场的表现,看看能不能覆盖100K门以上的设计;二是国产FPGA在AI推理加速、视频编码这些新兴领域的应用,这些场景对IP核和工具链的要求更高,也是国产FPGA需要突破的方向;三是国产FPGA的工具链和开源生态的结合,比如支持Verilator仿真、Yosys综合这些开源工具,可能会吸引更多开发者。
我个人接下来会继续测试紫光同创的Titan-3系列,看看在高速SerDes和DDR4控制器上的表现。如果跑通了,会再写一篇实测分享。