https://mp.weixin.qq.com/s/KqyklKrPLtPm38sftMYlHA   1. 使用Maven获取库   Chisel相关的库基本上都可以使用Maven获取到(https://mvnrepository.com/artifact/edu.berkeley.cs):   ​​   其中Chisel Iotesters是用来进行验证的库,可以看到各个版本及其发布日期: ​​   随便打开一个版本: ​​ 可以看到该版本的基本信息,点击jar可以直接下载库的jar包.下面…
https://mp.weixin.qq.com/s/mTmXXBzSizgiigFYVQXKpw     介绍Chisel与Scala的不同与关联.   ​​   一. 层次高低   Chisel是使用Scala语言编写的具体代码.从抽象层次上看,Scala更高.   1. 语言与代码   Chisel是使用Scala语言编写的代码.   2. 语言与代码库   Chisel是使用Scala语言编写的代码库.     二. 范围大小   3. 通用语言与领域专用语言   Scala是一门通用语…
https://mp.weixin.qq.com/s/x6j7LZg7i7i_KcNEA8YCQw   Chisel作为领域专用语言(DSL),用于构建硬件模型.待硬件模型建立后,再基于模型进行仿真.验证,以及转换.硬件模型可以转换为firrtl,也可以转换为verilog.   接下来介绍Chisel如何构建硬件模型.   ​​   1. Command   Command定义用于构建硬件模型的命令.   命令可以分为两类:用于定义数据类型的命令,用于定义逻辑的命令.   用于定义数据的命令,…
https://mp.weixin.qq.com/s/2318e6VJ4wFGpWwBOmTikA   Chisel数据类型(Data)与Module的绑定关系,根据Data的使用方式不同,而有多种绑定类型.   参考链接: https://github.com/freechipsproject/chisel3/blob/master/chiselFrontend/src/main/scala/chisel3/core/Binding.scala   1. Binding   类型继承图如下:…
https://mp.weixin.qq.com/s/L5eAwv--WzZdr-CfW2-XNA   Chisel提供的Valid接口.如果valid为置1,则表明输出的bits有效:反之,则输出无效.   参考链接: https://github.com/freechipsproject/chisel3/blob/master/src/main/scala/chisel3/util/Valid.scala   ​​   1. Valid是一组用户自定义的输入输出接口   类的声明如下: cl…
https://mp.weixin.qq.com/s/Aye-SrUUuIP6_o67Rlt5OQ   全加器   逻辑图如下: ​​   参考链接: https://github.com/ucb-bar/chisel-tutorial/blob/release/src/main/scala/examples/FullAdder.scala     1. 引入Chisel3   ​​   2. 继承自Module类   ​​   3. 定义输入输出接口   ​​ 创建输入和输出接口,包括: a.…
https://mp.weixin.qq.com/s/2vjM-gcauvHnn6KJzlOm4g   Chisel的模块和Verilog的模块很相似,都用来定义模块结构(hierarchical structure).   Chisel的模块定义,包含三部分内容: a. 继承自Module类: b. 定义模块输入输出接口(继承自Bundle): c. 把内部各部分与输入输出接口连接起来:   参考链接: https://github.com/freechipsproject/chisel3/w…
https://mp.weixin.qq.com/s/rI-CJM6GyI6EUHPZ3uYiFg   如同Verilog中的众多运算符,Chisel也针对自身的数据类型,提供了很多运算符.   Chisel语言内嵌于Scala.在Scala中,基本上所有的运算符都被当做一般的字符,可以作为命名符号(identifier)的一部分.并且Scala支持省略函数调用时,括在参数两边的括号.所以Scala中定义运算符重载很简单,可以很大的提高代码的可读性.     1. 运算符   参考链接: htt…
https://mp.weixin.qq.com/s/36jreQGpDLCCNfmUwI34lA   模块接口有三种方向:Input/Output/Inout.Chisel在声明模块接口的时候,也需要提供这些信息.   参考链接: https://github.com/freechipsproject/chisel3/wiki/Ports     1. SpeicifiedDirection   声明模块接口方向时,使用的方向类型: ​​ 其中: a. 带下划线的为对象:   2. Actua…
https://mp.weixin.qq.com/s/bSrM-wLRn7O_75xYKeoaEQ   Chisel中的基本数据类型,不是Verilog中的Wire和Reg.Wire和Register只是数据的容器,而非数据本身.所以Chisel中的数据类型抽象层次更高一些,更关注数据的行为和组织形式的异同.   基本数据类型的类图如下: ​​ 其中: 1. 实线箭头为继承父类(extends): 2. 虚线箭头为实现接口(with): 3. 倾斜字体的类为抽象类(abstract): 4. 标…