首页›行业资讯›Open Logic——一个FPGA标准库
← 返回行业资讯
开源项目

Open Logic——一个FPGA标准库

VHDLwhiz ·
介绍开源VHDL库Open Logic,可节省时间并避免厂商锁定。
本文为原文全文的中文翻译(约 2497 字),原文配图已同步至站内;机器翻译仅供快速阅读,细节请以原文为准。

这是一篇由Oliver Bründler撰写的客座文章,我(Jonas)在2025年欧洲FPGA大会上认识了他。他通过创建一个开源VHDL库为社区做出了巨大贡献,这将使许多开发者受益。你可以在文章下方的作者简介框中了解更多关于他的信息。

但首先,让我们听听Oliver怎么说!

你今年正在设计第三个FPGA项目,结果又一次发现自己从头编写相同的FIFO实现,只是为了适配不同的器件。听起来很熟悉吧?

你花了多少小时调试一个本应是标准电路的CDC电路?

你有多经常发现自己被锁定在某个FPGA供应商上?

这些正是Open Logic旨在解决的问题。

什么是Open Logic?

在FPGA设计中,有大量相当标准的功能被频繁使用,并在许多教科书中有所描述:FIFO、跨时钟域、标准接口等等。FPGA设计的问题在于,与大多数传统语言不同,它不存在标准库这样的东西。

你有哪些选择?自己编写这些元件——将精力投入到这些基础工作上而非你的应用上?使用FPGA供应商提供的宏,使你的代码被锁定在该供应商上?

显然,依赖某种开源标准组件库会是更好的选择。市面上确实存在一些可用的库,但很难找到在文档完备性、真正的厂商独立性、代码质量以及公开可见的 CI/CD 流水线方面达到专业使用标准的库。

这就是我决定启动 Open Logic 项目的原因——提供我在其他地方未能找到的那只“独角兽”:一个高质量、厂商独立且可专业使用的 FPGA 标准组件库。

Open Logic 迅速获得了关注。如今在 GitHub 上拥有超过 700 颗星,它是最受欢迎的开源 FPGA 库之一。

Open Logic 背后的理念

Open Logic 并非首个开源 VHDL 库——所以你可能会问自己,它有何不同,以及为什么你应该使用这个库。该项目遵循以下理念——至于这是否符合你的需求,由你自己决定。

没有人愿意调试不是自己写的开源代码。

Open Logic 旨在提供可信赖的代码——并为每个元素的文档提供质量保障措施。这些内容会根据最近一次 CI 运行的结果进行更新。

开源代码应该为你节省时间——而不是仅仅把你的时间转移到学习如何使用它上。

Open Logic 不仅提供代码,更注重简洁的用户体验。这始于为每个提供的元素及其所有接口配备完善的文档。此外,每个可选的配置设置和端口都带有默认值,因此用户在实例化时可以省略未使用的设置和端口,从而编写出简洁易读的代码。

Open Logic 能让您快速上手的一个关键点是,它提供了脚本,可将 Open Logic 集成到所有支持的工具中(目前包括 AMD、Altera、Microchip、Gowin、Efinix)。

只有 HDL 才是真正独立于厂商的。

Open Logic 不包含任何厂商特定的原语或宏。相反,它完全依赖推断来使用所有器件资源——并且它附带了一个强大的框架,用于定期检查推断在所有支持的工具中是否正确工作。这种方法确保 Open Logic 与所有当前及未来的器件兼容,并且可以自然地编译到任何器件——甚至是那些未获得官方支持的器件(例如 Lattice)。

尽管 Open Logic 使用 VHDL 编写,但它可以在 Verilog 中使用——并且明确承诺保持这一现状。所有接口的设计方式都使得从 Verilog 进行实例化成为可能,并且提供了 Verilog 教程。

Open Logic 内容

这篇文章太短,无法详细涵盖内容。这可能会在后续文章中完成。要概览所提供的内容,最好参考项目文档中提供的实体列表。

总体而言,Open Logic 按所谓的区域进行组织:

基本功能,如 FIFO、CDC、RAM、CAM、延迟线、仲裁器、CRC 等。

AXI4 主设备和 AXI4-Lite 从设备。

常用接口,如 SPI、I2C、UART 或同步器。

定点数学运算。

入门指南

Open Logic 为所有支持的工具提供了教程。按照你所使用工具的教程操作,15 分钟内即可让第一个 Open Logic 设计运行起来!

教程可在此处找到。

克隆 Open Logic,在你的项目中试用,如果你喜欢就继续使用它。

Open Logic 采用 PSI HDL 许可证(为 FPGA 使用而修改的 LGPL),该许可证明确考虑了商业用途,并且不意味着使用 Open Logic 的项目特定代码需要遵循 copyleft。

Open Logic 是一个社区项目。由 FPGA 工程师为 FPGA 工程师打造。

通过在 GitHub 上给 Open Logic 加星来支持该项目——甚至可以考虑通过 GitHub sponsors 赞助该项目:https://github.com/sponsors/open-logic(每一份“每月一杯咖啡”的支持都值得感谢!)。

也欢迎你做出贡献——无论是贡献代码,还是 simply 报告文档中的任何问题或不清晰之处。

帮助该项目的另一种方式是传播相关信息。向你的朋友介绍它,发布关于你基于 Open Logic 项目所取得成功的内容,并帮助将 Open Logic 确立为使用的“常识”。

延伸阅读

GitHub 上的 Open Logic

最好的信息来源是 Open Logic 的文档,该文档以 Markdown 格式与代码一起提供。你可以直接在 GitHub 仓库中找到它:https://github.com/open-logic/open-logic

YouTube 上的 Open Logic

还有一个 YouTube 频道可用——视频通常是入门某个主题的最佳方式:https://www.youtube.com/@OpenLogicFPGA

我会定期在 LinkedIn 上发布更新。关注我以保持最新动态:https://www.linkedin.com/in/oliver-bruendler

当然——未来可能还会有更多发表在 VHDLWhiz 上的文章——看到这篇文章在 GitHub stars 和 GitHub Sponsors 捐赠方面产生影响,当然会增加此类文章出现的可能性……

阅读原文 →
来源:VHDLwhiz

本页摘要由 AI 辅助整理,经编辑审核后发布;AI 仅用于提炼与分类,原文均附来源链接。