当前位置:首页 > 电源 > 数字电源
[导读]VHDL和Verilog是用于描述可综合数字硬件的两种主流语言。但我们不应忘记,它们最初可不是为了这个目的创建的,而是为了模拟和归档。这个事实加之许多其它语法弱点,引发了许

VHDL和Verilog是用于描述可综合数字硬件的两种主流语言。但我们不应忘记,它们最初可不是为了这个目的创建的,而是为了模拟和归档。这个事实加之许多其它语法弱点,引发了许多问题,比如设计参数化能力弱;设计可重用性差;代码冗长、方法繁复;以及使可综合和不可综合特征之间的边界模糊不清。为了应对这些限制和问题,一些新的替代解决方案已经出现,如Bluespec、Chisel、CλaSH、Migen、MyHDL和SpinalHDL等。

以不同方式描述硬件

与VHDL和Verilog一样,SpinalHDL可用于通过定义寄存器和门来描述硬件,SpinalHDL不使用众所周知的事件驱动范式来描述硬件(如VHDL和Verilog),而是使用专为此目的设计的语法。这允许在其声明中区分组合信号与寄存器,并通过定义规则来描述硬件行为。这意味着信号和寄存器可以在相同的条件语句中分配,而这对于“事件驱动”替代方案是不可能的(见图1)。

 

 

图1:简单的硬件描述。

语言的所有语法都可用于硬件描述,语法可分为两类。一类是:通过使用专用类型显式(explicitly)定义可综合硬件;另一类是:可用于阐述硬件结构,例如实例循环、功能和类。除此之外,SpinalHDL编译器将执行许多检查,以确保用户设计是合法的,例如:是否缺少组合循环;所有组合分配的完整性、以避免不必要的闩锁指推(inferring unwanted latche);跨时钟域连接的合法性等——这使得SpinalHDL用起来很安全。

但SpinalHDL与VHDL和Verilog的主要不同是其嵌入到通用语言(Scala)中这一事实。由于这种方法,我们得到一个“Meta HDL”,其中高层级部分(类、动态阵列、字典...)可用于通过算法手段生成可综合的硬件描述。这提供了非常高的表现力来描述灵活和可重复使用的硬件。实际上,正是它使SpinalHDL有能力以面向对象和功能性编程的方式来操纵所描述设计的每一个元素;它与一个有能力的标准库结合起来,从而在元硬件描述和阐述能力方面获得了出乎意料的能力,远超VHDL、Verilog和SystemVerilog所能(见图2)。

 

 

图2:使用抽象实现寄存器库(register bank)。

SpinalHDL编译器能够将用户编写的硬件描述转换为人类可读和可综合的VHDL/Verilog网表(正如大多数原理图输入工具贯穿所用),这使得它已经与行业中使用的大多数EDA工具兼容。

此外,目标语言/EDA工具不须本地支持Spinal-HDL提供的所有高级功能(例如类型和数据结构参数化),在被解压缩/展开到生成的VHDL/Verilog网表前,在SpinalHDL编译器内部得以支持、解决(见图3)。

 

 

图3:仲裁管道的实现。

未来展望

作为这些概念的现实演示者,我们使用SpinalHDL实现了一款名为“Pinsec”的小型SoC,它集成了RISC-V CPU、SDRAM控制器、嵌入式RAM、GPIO、定时器、UART、VGA和JTAG调试接口,由AXI4和APB3互连全部连接在一起(见图4)。

 

 

图4:Pinsec SoC框图。

该演示表明,可非常容易地实现设计的顶层,特别是在涉及总线互连的参数化和实例化时。 与传统方法不同,SpinalHDL只需几行代码就能搞定,从而大大提高了可读性和生产率。例如,将新外设连接到APB互连只需要一行参数化代码(见图5)。

 

 

图5:Pinsec的总线桥和所有APB3总线构造的顶层实例化。

另一个有趣的演示是RISC-V CPU(名为VexRiscv)的第二次迭代,演示了使用SpinalHDL的先进元硬件描述功能带来的增益。首先,CPU顶层是一个空白骨架,它只提供一些阐述服务、作为信号通过各阶段(stage)的自动流水线、以及各阶段的仲裁接口。

与一个允许在CPU顶层注入硬件的插件注册系统相结合,该方法支持——可以具有相同功能的多个变体、而无需将其集成到CPU代码中的——非常灵活的CPU架构。插件可从最简单的事情(例如程序计数器或整数ALU)到最复杂的操作(例如通过L1缓存的加载和存储支持)。

插件之间的合作也可能非常复杂。例如,所有插件都可以发布新的指令操作码,以及如何由指令解码器进行解码。

然后,指令解码器将使用与SpinalHDL元硬件功能相结合的Quine-Mc Cluskey算法来生成最小指令解码逻辑。

结论

使用SpinalHDL是改变数字硬件设计愿景并实现真正工程化的一种体验。凭借其所有功能,它允许芯片设计人员描述优雅和可重复使用的硬件,而没有通常使用的HDL(如VHDL、Verilog甚至System-Verilog)的繁琐和限制。它也证明了使用软件工程技术在生成的RTL中没有任何开销就可详细描述硬件结构的可行性和收益。该语言及其参考编译器也是完全免费和开源的。

最后,请注意:上述示例中使用的所有功用和类,如Stream、RGB、队列、Apb3Decoder、AxiLite4和AxiLite4SlaveFactory都不是Spinal-HDL语言中提供的功能,而是由标准库使用其常规语法提供。换句话说,可以通过实现新的库、抽象层和可从根本上改善硬件描述表现力的工具来扩展语言本身;也可在不忽视抽象硬件的条件下、通过引入新的概念来扩展语言(因为这些库仍然在RTL域内实现)。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

本届年会将在上海(11月13-14日)、北京(11月19-20日)和深圳(11月27-28日)举行,面向嵌入式设计工程师推出25门技术课程

关键字: 嵌入式 MCU 模拟

上海2025年9月5日 /美通社/ -- 由纽伦堡会展(上海)有限公司举办的上海国际嵌入式会议将于 2025 年 10 月 16-17 日在上海世博展览馆举办。 此次会议将由三个版块组成:嵌入式技术会议、汽...

关键字: 嵌入式 CE CHINA EMBEDDED

从外部看,电子系统仿佛一个统一的学科或设备,各组成部分协同工作,浑然一体。然而揭开表象,其内在却是另一番景象:一个碎片化、多层次的世界——其中每一层都独立且复杂,衍生出各自特有的工具、专家、工作流程,甚至哲学体系。

关键字: 嵌入式 电子系统 半导体

8位单片机在嵌入式设计领域已经成为半个多世纪以来的主流选择。尽管嵌入式系统市场日益复杂,8位单片机依然不断发展,积极应对新的挑战和系统需求。如今,Microchip推出的8位PIC®和AVR®单片机系列,配备了先进的独立...

关键字: 单片机 嵌入式 CPU

深圳2025年8月28日 /美通社/ -- 8月26日,2025 ELEXCON深圳国际电子展盛大启幕。本届大会以"All for AI"为主题,深圳市德...

关键字: AI 工业级 SSD 嵌入式

深圳2025年8月26日 /美通社/ -- 8月26日,由博闻创意会展主办的 第22届深圳国际电子展暨嵌入式展(elexcon2025)在深圳(福田)会展中心隆重开幕。 作为中国电子与嵌入式技术领域的专业大展,本届展会...

关键字: 嵌入式 电子 高通 AI

在电子电路设计中,确保电源的稳定和安全至关重要。LTC4365 作为一款出色的过压(OV)、欠压(UV)以及反向极性故障保护控制器,在众多领域得到了广泛应用。其能够为电源输入电压可能出现过高、过低甚至负值的应用场景提供可...

关键字: 控制器 栅极 输出电压

模块化设计作为一种将系统拆分为独立、可复用组件的方法,能够在低代码平台中实现功能的灵活组合,并最大限度地提升系统性能。本文将探讨如何通过模块化设计,使得低代码平台既能快速适应变化,又能保持高效稳定的运行。

关键字: 模块化设计 嵌入式

CPU亲和度通过限制进程或线程可以运行的CPU核心集合,使得它们只能在指定的CPU核心上执行。这可以减少CPU缓存的失效次数,提高缓存命中率,从而提升系统性能。

关键字: Linux 嵌入式

加密算法分对称加密和非对称算法,其中对称加密算法的加密与解密密钥相同,非对称加密算法的加密密钥与解密密钥不同,此外,还有一类不需要密钥的散列算法。

关键字: 算法 嵌入式
关闭