当前位置: 首页 > news >正文

[读书日志]从零开始学习Chisel 第一篇:书籍介绍,Scala与Chisel概述,Scala安装运行(敏捷硬件开发语言Chisel与数字系统设计)

简介:从20世纪90年代开始,利用硬件描述语言和综合技术设计实现复杂数字系统的方法已经在集成电路设计领域得到普及。随着集成电路集成度的不断提高,传统硬件描述语言和设计方法的开发效率低下的问题越来越明显。近年来逐渐崭露头角的敏捷化设计方法将把集成电路设计带入一个新的阶段。与此同时,集成电路设计也需要一种适应敏捷化设计方法的新型硬件开发语言。本书从实用性和先进性出发,较全面地介绍新型硬件开发语言Chisel和数字系统敏捷化设计方法。全书分两篇。第一篇共10章,主要内容包括Chisel语言简介、Chisel的数据类型、Chisel的模块与硬件类型、Chisel常用的硬件原语、如何将Chisel代码转换生成Verilog HDL代码及基本测试方法、Chisel的黑盒、用Chisel实现多时钟域设计、Chisel的函数应用及其他议题等。第二篇共9章,介绍编写Chisel需要掌握的Scala语言编程基础知识。读者可以根据自身情况,跳过第二篇Scala基础部分,直接学习Chisel的硬件开发功能。本书提供配套的课后练习参考答案、仿真程序代码等。本书可作为集成电路科学与工程、电子信息类、计算机类等相关专业的高年级本科生及研究生的教学用书,也可供从事集成电路设计的工程人员和EDA专业人员学习、参考。

0.为什么选择本书

进一步学习CPU时,我们发现很多资源都是使用chisel语言设计的,仅仅使用verilog也许很难支撑我们的进阶学习。因此,学习一门更加有利于快速实现的语言是有必要的。本书是市面上唯一一本成体系地讲解Chisel和Scala地书籍,具有很强的参考价值。由于笔者自己之前并没有java和scala基础,所以这个学习路径势必是比较陡峭的,所以我的学习思路可以适应零基础的入门学习路线。从零开始的Chisel,从这里开始!

1.Scala与Chisel入门概述

本章主要解决的就是一个问题,Chisel为什么选择Scala,以及我们为什么选择Chisel。对于笔者这样的电子专业的小白来说,并没有学习过java,使用的编程语言大多数是C和Python,C++使用都很少。所以固然,也没有听说过Scala。

Why Scala?

  • Scala基于JVM(Java虚拟机)运行,其语法更强大,形式更简单,代码量更少。

  • Scala是面向对象的函数式语言,C/C++、Python,Java都是指令式编程。

  • Scala是一门可以自由伸缩的语言,能够裁剪已有的系统类库,也可以扩展自定义库。它的学习曲线并不平滑,而是阶梯式的。

  • Scala由于其强大语法特性,成为了一种优秀的“宿主”语言,可以便捷地开发出一门新语言。

  • Scala比Python更简洁,抽象程度比C++更高。

看到这些特性,笔者简直是已经按耐不住一探究竟的狂热心情,这么好的语言我之前怎么没学习过!

Why Chisel?

verilog诞生的历史悠久,它是C语言时代的产物。随着软件各种语言开发效率的巨大进步,硬件开发语言显得无法跟上潮流。关于这个问题的讨论并非近年才开始,而是早已持续数年。主张改进verilog的一派开发了systemverilog,但它仍有很多不足,主要应用于验证领域。主张重构新语言的C++派开发了systemC,但它并没有受到广泛的支持。主张Java的一派直到近年才推出了Chisel,它推动了硬件设计的敏捷开发。它可以通过Firrtl编译器转换为Verilog HDL或VHDL,它实际上仍然会生成verilog代码,借助verilog间接生成电路,因此不存在EDA方面的限制。

Chisel为硬件电路设计引入了面向对象特性,减少了很多不必要的语法,改进了有瑕疵的语法。它生成的verilog都是可综合的,消除了一些歧义语法,利用模式匹配、特质混入、类继承等特性能够快速改变电路结构。

由于Chisel是建构在Scala之上的,因此本书安排了前后两部分内容,第一部分介绍Chisel的语法与实战,第二部分介绍Scala的语法与实战。由于我们是零基础入门,所以需要首先学习Scala的语法。我们从第二部分开始学习。

2.Scala语言编程基础

2.1 Scala的运行

为了更遍历地使用Scala和各种编译链,我们最好在Linux环境下进行学习。这里我使用Windows11的Ubuntu子系统进行学习,使用虚拟机也可以。关于如何在Windows11上运行Ubuntu子系统,可以查阅其他资料,在这里不赘述。

环境:ARM64 Windows11 MatebookEGo Snapdragon (TM) 8cx Gen 3 @ 3.0 GHz 3.00 GHz Ubuntu22.04 WSL2

官方网站:Install | The Scala Programming Language

以我的执行环境为例,介绍安装过程:

首先需要安装java环境,我的ubuntu中没有自带java环境。

sudo apt install default-jdk

之后执行这条指令:

curl -fL https://github.com/VirtusLab/coursier-m1/releases/latest/download/cs-aarch64-pc-linux.gz | gzip -d > cs && chmod +x cs && ./cs setupsudo apt install default-jdk

这时scala已经被成功安装,但我们需要重启Ubuntu,对我而言我重启了命令行。之后我们用下面的语句测试:

scala -version

如果能正确显示版本号,没有WARNNING则说明已经安装完成。这时直接输入scala便可进入scala编译器,可以开始执行程序了。

jia@J-MateBookEGo:~$ scala
Welcome to Scala 3.6.2 (21.0.5, Java OpenJDK 64-Bit Server VM).
Type in expressions for evaluation. Or try :help.
​
scala> 1+2
val res0: Int = 3

如果我们希望使用图形化界面编程,可以安装IDEA,网上教程很多,在这里不多说明了。

http://www.lryc.cn/news/515852.html

相关文章:

  • 二、用例图
  • LWIP之一:使用STM32CubeMX搭建基于FreeRTOS的LWIP工程并分析协议栈初始化过程
  • 个性化电影推荐系统|Java|SSM|JSP|
  • UE5AI感知组件
  • 每日一学——日志管理工具(ELK Stack)
  • “智能筛查新助手:AI智能筛查分析软件系统如何改变我们的生活
  • DeepSeek v3为何爆火?如何用其集成Milvus搭建RAG?
  • linux-centos-安装miniconda3
  • html+css+js网页设计 美食 好厨艺西餐美食企业网站模板6个页面
  • QT-窗口嵌入外部exe
  • C#中使用系统默认应用程序打开文件
  • 如何在 Ubuntu 22.04 上配置 Logrotate 高级教程
  • java项目之校园管理系统的设计与实现(源码+文档)
  • 关于 webservice 日志中 源IP是node IP的问题,是否能解决换成 真实的客户端IP呢
  • Serializable接口
  • 如何操作github,gitee,gitcode三个git平台建立镜像仓库机制,这样便于维护项目只需要维护一个平台仓库地址的即可-优雅草央千澈
  • 【HDU】1089 A+B for Input-Output Practice (I)
  • lua库介绍:数据处理与操作工具库 - leo
  • 逆向入门(1)C篇-正儿巴经的第1个实验
  • vue数据请求通用方案:axios的options都有哪些值
  • 使用R语言绘制标准的中国地图和世界地图
  • 【PyTorch】迁移学习、数据增强
  • Lucas-Kanade光流法详解
  • python多张图片生成/合成gif
  • iptable限制多个端口出站
  • springmvc--请求参数的绑定
  • Redis查询缓存
  • 双馈风电DFIG并网系统次转子侧变流器RSC抑制策略研究基于LADRC和重复控制的方法
  • 国产编辑器EverEdit - 使用技巧:变量重命名的一种简单替代方法
  • 使用SSH建立内网穿透,能够访问内网的web服务器