spinalHDL简介
spinalHDL 简介
引用官方的简介如下:SpinalHDL is a hardware description language written in Scala, a statically-typed functional language using the Java virtual machine (JVM). In order to start programming with SpinalHDL, you must have a JVM as well as the Scala compiler.
spinalHDL优势
这就要谈到verilog
的劣势了,写过verilog
的同学可能多多少少都会有这样的体会,那就是verilog
在编译时,并不会提供很严格的语法检查,这也就意味着如果你粗心写错一个位宽,那么后期排错是相对比较困难的,当然要避免这种困难,就得时刻提醒自己声明或者使用变量的时候要严格的加上位宽的声明,比如声明常量1,大部分同学可能都会只写一个1,但是比较严谨的写法还是显式的声明它的位宽。verilog
最最令人头疼的当属连线了,当你去写一个cpu
的时候,你就会发现你大部分的时间会花在连线上,而且不一定就能够一次保证连对。因此我们此次介绍的spinalHDL
语言不仅有很好的语法检查,而且避免了重复时间的连线,这一点在我们之后的学习中一定也能够身有体会。当然verilog
语言本身还有其他的问题,也有许多的博客总结过,在次不做赘述。感兴趣的同学可以自行百度。
spinalHDL入门途径
学习spinalHDL
你需要有一定的scala
和计算机组成原理的基础,当然只是简单的scala
基础就行,能够对一个单周期cpu
的取指,译码等过程有简单的认识和理解,如果还不熟悉的同学可以去查阅相关的资料补补课,比如菜鸟之类的网站的基础知识就做的挺好的。当你有了一定的基础之后,一定要仔细的阅读官方的英文文档,虽然是英文,但是精下心来对于各位来说也不是什么大问题。至于为什么一定要阅读官方的文档呢?这是因为官方文档提供了各种工具的安装使用的过程,基本的语法介绍,这些东西在我们前期入门学习的过程中都能起到很大的帮助作用,在者就是熟悉官方文档可以为我们的排错或者查阅问题提供一个很好的帮助。避免大家因为在其他的地方查询浪费了太多的时间,而其也不一定能过保证其正确性。
官方文档入口
github项目地址
我们的目标
在说明我们此次的目标之前,我想说明一下自己为什么想要出这么一期教程,一是兴趣使然,二是国内使用这门语言的同学应该也比较少,入门的途径或者资料是很稀缺的,因此为了使自己能够更加专心的学习spinalHDL
,也为了能够给后来者提供一个相对比较粗浅的入门,因此决心写这么一期文章。那么言归正传,我们将会带大家从0开始,尝试用spinalHDL
语言构建一个简单的mips
单周期的cpu
。希望看到这里的各位最终都能够坚持下来。