ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

复旦微FMQL45T900实测:国产FPGA能否替代Xilinx ZYNQ?

复旦微FMQL45T900实测:国产FPGA能否替代Xilinx ZYNQ? 国产FPGA这几年动静不小尤其是复旦微的FMQL系列很多做嵌入式和老FPGA的兄弟都在观望到底能不能替代手头用惯了的Xilinx ZYNQ我最近拿到一块FMQL45T900的开发板花了大概两周时间把常用外设、PS端Linux、PL端逻辑、以及和ZYNQ的迁移对比都跑了一遍。这篇就把实测过程、踩到的坑、以及选型时真正该关心的点摊开讲清楚。如果你正在评估国产化替代方案或者单纯想找一块ARMFPGA异构的开发板入门这篇应该能帮你省下不少试错时间。FMQL45T900这颗芯片的定位很明确就是冲着ZYNQ-7000系列去的PS端是四核ARM Cortex-A53加双核Cortex-R5PL端是等效20nm工艺的FPGA逻辑资源整体算力比ZYNQ-7020高出一截。但参数好看不等于好用工具链成熟度、IP生态、迁移成本才是决定项目能不能落地的关键。下面我按实际调试顺序从硬件上电、工具链搭建、PS端系统、PL端逻辑到对比结论一步步拆。1. 上电之前先把板子的供电和启动模式搞清楚拿到一块新开发板我习惯先不急着插电脑而是把供电、启动拨码、调试接口这三样确认清楚。很多板子点不亮的问题其实都出在这一步。1.1 供电轨与上电时序的实测FMQL45T900开发板一般需要多路供电核心电压、DDR电压、PS端IO电压、PL端IO电压还有辅助电压。板子上通常有电源指示灯但指示灯亮不代表时序对。我用示波器抓了一下几路电源的上电顺序发现核心电压先起然后是DDR和IO最后是PL的辅助电压整体上电时间在几毫秒量级。这里有个容易忽略的点FMQL45T900的PS和PL是独立供电域如果PL端IO电压没起来就去配置PL会出现配置失败但又不报错的情况表现为下载成功但逻辑不工作。我的建议是上电后先量一遍各路电压的实际值确认在芯片手册要求的容差范围内再动软件。供电轨典型电压实测注意点核心电压0.85V左右纹波要小负载跳变时不能跌太多DDR电压1.35V/1.5V取决于DDR颗粒型号别搞错PS IO1.8V/3.3V看外设电平标准PL IO1.8V/2.5V/3.3V按Bank分别设置1.2 启动模式拨码与JTAG的关系这块板子支持多种启动方式JTAG、QSPI Flash、SD卡、eMMC。拨码开关决定从哪个介质启动。我一开始想直接用JTAG调试结果拨码还在QSPI位置导致PS端一直尝试从Flash启动JTAG连上了但PS不响应。正确的做法是纯JTAG调试时把启动模式拨到JTAG档要跑Linux就从SD卡或eMMC启动。切换启动模式后一定要断电重启热复位有时候不生效。这个坑我在ZYNQ上也踩过属于异构SoC的通病。提示拨码开关的丝印有时候和实际逻辑相反第一次用建议对照原理图确认别只看板子上的标注。2. 工具链搭建国产FPGA最容易被劝退的一环工具链是国产FPGA和Xilinx差距最明显的地方没有之一。复旦微用的是自家的Procise工具套件界面和操作逻辑跟Vivado、ISE都不一样第一次上手需要适应。2.1 Procise的安装与License配置Procise的安装包体积不小安装过程倒是中规中矩。真正麻烦的是License。复旦微的License一般绑定网卡MAC地址申请时需要提供主机信息。我建议提前把网卡信息准备好申请下来后放到指定目录环境变量也要配对否则工具启动会提示找不到License。安装完成后我建议先跑一遍自带的示例工程确认工具链本身没问题再去建自己的工程。这一步能排除掉大部分环境问题。2.2 和Vivado操作习惯的差异用过Vivado的人转Procise最大的不适应在于工程结构和约束文件的写法。Vivado的XDC约束、Block Design图形化设计在Procise里对应的是不同的概念和文件格式。Procise也有图形化的系统集成界面但IP核的丰富程度和ZYNQ没法比。我的经验是不要指望把Vivado的工程直接搬过来迁移时逻辑代码Verilog/VHDL基本可以复用但约束、IP、Block Design这些必须重做。下面这张表是我实际迁移时整理的对照关系。功能Xilinx ZYNQ复旦微FMQL45T900开发工具VivadoProcise约束文件XDC自有格式图形化集成Block Design系统集成界面PS配置ZYNQ Processing System IP对应PS配置IP逻辑综合Vivado SynthesisProcise综合2.3 综合与布局布线的实际耗时我拿一个中等规模的逻辑工程做了对比测试同样的功能ZYNQ-7020在Vivado下综合加实现大概十几分钟FMQL45T900在Procise下时间接近但布局布线阶段的收敛性稍差时序紧张时需要多轮迭代。这不是说工具不行而是国产工具的时序优化算法还在追赶实际项目里要预留更多的时序余量。注意Procise的时序报告解读方式和Vivado不同关键路径的展示逻辑有差异第一次看容易误判。建议对照工具文档把报告字段含义搞清楚。3. PS端跑Linux从SD卡启动到外设验证PS端是ARM核跑Linux是常规操作。FMQL45T900的PS端性能比ZYNQ-7020强不少四核A53跑起来很流畅。但系统移植过程中还是有几个点需要注意。3.1 启动镜像的制作与烧录复旦微提供了对应的启动镜像制作流程一般包括FSBL、设备树、内核、根文件系统几部分。我用官方提供的SDK生成了FSBL然后打包成启动镜像写到SD卡。这里的关键是分区格式和文件放置位置要对否则PS端找不到启动文件。制作SD卡启动盘时我习惯用两个分区一个FAT分区放启动文件一个ext4分区放根文件系统。烧录完成后插到板子上串口能正常打印启动日志就说明PS端基本通了。3.2 串口、网口、USB的逐一验证系统起来之后我按顺序验证了常用外设。串口是调试的基础一定要先通网口用来传文件、跑网络服务USB用来接键鼠或者存储设备。FMQL45T900的PS端外设控制器和ZYNQ类似但设备树配置不一样需要根据实际板子的引脚连接来改。我遇到的一个问题是网口PHY的复位引脚配置错了导致网口时通时不通。后来对照原理图改了设备树里的GPIO配置才稳定。这类问题在ZYNQ上也会遇到本质是硬件和软件配置要对齐。3.3 和ZYNQ Linux体验的对比从使用体验看FMQL45T900跑Linux的流畅度和ZYNQ-7020相当甚至更好毕竟CPU核心更强。但生态上ZYNQ的PetaLinux工具链更成熟各种驱动和参考设计更丰富。复旦微这边官方提供的BSP和文档相对少一些遇到问题更多要靠自己查手册和社区。我的建议是如果项目对Linux生态依赖很深比如要用到大量现成的开源驱动和框架ZYNQ的迁移成本更低如果只是跑一个相对固定的系统FMQL45T900完全够用。4. PL端逻辑开发从点灯到高速接口PL端是FPGA的本行也是评估一颗芯片好不好用的核心。FMQL45T900的PL逻辑资源比ZYNQ-7020多适合做稍大规模的逻辑设计。4.1 第一个工程点灯与时钟约束点灯是FPGA的Hello World。在Procise里建工程、写Verilog、加约束、综合实现、下载整个流程走一遍能快速熟悉工具。这里最关键的是时钟约束一定要根据板子上的晶振频率正确约束否则时序报告没意义。我用的板子PL端有一个50MHz的晶振约束里写清楚周期综合出来的时序才准。点灯工程虽然简单但能验证工具链、下载器、板子三者是否都正常。4.2 时序收敛与时序报告解读逻辑规模上去之后时序收敛就是主要矛盾。FMQL45T900的PL端在Procise里的时序收敛我的体会是要留足余量。同样的逻辑在Vivado里可能轻松跑到100MHz在Procise里可能只能跑到80MHz左右需要优化代码或者调整约束。时序报告里重点看建立时间违例和保持时间违例。建立时间违例通常是组合逻辑太长需要插流水线保持时间违例一般是时钟偏斜问题需要调整时钟约束或者布局。这些原理和Xilinx平台是一样的只是工具报告的形式不同。4.3 高速接口的实测表现我测试了PL端的LVDS接口和高速收发器。LVDS接收在FMQL45T900上表现稳定配合正确的IO标准和端接电阻能跑到预期的速率。高速收发器的使用和ZYNQ类似但IP配置界面不同需要重新熟悉。这里要提醒的是高速接口对PCB布线要求很高开发板的布线质量直接影响实测结果。如果自己画板差分对的等长、阻抗控制一定要做好否则芯片再好也跑不起来。5. 迁移成本与选型建议什么场景该选谁跑完这一圈我对FMQL45T900的定位有了比较清晰的认识。它不是ZYNQ的简单复制而是在特定场景下可以替代的选择。5.1 代码迁移的实际工作量纯逻辑代码Verilog/VHDL迁移工作量最小基本可以直接复用。约束文件需要重写IP核需要替换或重新配置Block Design需要重建。如果原工程大量依赖Xilinx的专用IP迁移工作量会显著增加。我的经验是一个中等复杂度的ZYNQ工程迁移到FMQL45T900如果逻辑部分占大头大概需要一到两周如果PS端和IP依赖很重可能需要一个月以上。5.2 国产化替代的真实考量选国产FPGA很多时候是供应链和自主可控的考量。FMQL45T900在性能和资源上能满足大部分中端应用工具链虽然不如Xilinx成熟但基本功能齐全。真正要评估的是你的项目能不能接受工具链的差异团队能不能快速上手Procise。如果项目周期紧、对生态依赖深继续用ZYNQ更稳妥如果是长期项目、有国产化要求、团队愿意投入学习成本FMQL45T900是值得考虑的方案。5.3 给不同阶段开发者的建议对FPGA新手我反而不建议一上来就用国产工具因为学习资料和社区支持相对少遇到问题容易卡住。先用ZYNQ或者Intel的平台把FPGA的基本功练扎实再转国产平台会顺很多。对有经验的工程师FMQL45T900的上手成本主要在工具链逻辑设计本身的经验是通用的。把Procise用熟之后开发效率不会比Vivado差太多。场景推荐选择理由学习入门ZYNQ/Intel资料多、社区活跃中端量产、国产化要求FMQL45T900性能够、自主可控重度依赖Xilinx IPZYNQ迁移成本高长期自研项目FMQL45T900可控性好、成本可优化最后分享一个我在调试中总结的小技巧不管用哪家的工具建工程时都先把时钟约束和引脚约束写对再写逻辑。很多逻辑不工作的问题追根溯源都是约束没写对。这个习惯能帮你省下大量排查时间。
返回列表