您的位置 首页 FPGA

怎么让数字硬件规划简单化

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)的第2次迭代,演示了运用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域内完成)。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/fpga/153550.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部