×

scala

Chisel教程——08.Chisel参数化生成器(从Scala讲起)(chisel教程汇总)

枫叶?飘飘 枫叶?飘飘 发表于2024-06-29 浏览4607 评论0
Chisel参数化生成器(从Scala讲起) 动机 要想使得Chisel模块成为代码生成器,就必须要有一些东西来告诉生成器如何执行这个工作。这一节会介绍模块的参数化,涉及多种方法和Scala语言特性。参数传递实现的丰富会直接传递到生成的电路的丰富。参数应该提供有用的默认值、容易设置,且不会设置成非法或无意义的值。对于更复杂的系统,如果能够以一种不影响其他模块用法的方法在局部重载,那就很有用。 参数传递 Chisel为写硬件生成器提供了强大的构造。生成器是接受一些电路参数并生成一个电

scala

Chisel教程——01.Scala介绍(chisel scala)

dsadsa012 dsadsa012 发表于2024-06-21 浏览5948 评论0
Scala介绍 什么是Scala Scala是一种支持通用编程范式的编程语言,选择Scala作为硬件开发语言的原因如下: 它是托管嵌入式DSL的一种很好的的语言; 它具有强大而优雅的库,用于处理各种数据集合; 有严格的类型系统,有助于在开发周期的早期(即,编译时)捕获一大类错误; 具有强大的表达和传递功能功能的方式; Chisel比Chipel、Chijel和Chicel更顺口。(这里是一个梗,Chisel全程为Constructing Hardware in a Scala Emb

scala

Chisel教程——02.Chisel环境配置和第一个Chisel模块的实现与测试(chisel教程汇总)

?₂₀₀₁₁₁₀₁ ?₂₀₀₁₁₁₀₁ 发表于2024-06-21 浏览7120 评论0
Chisel环境配置和第一个Chisel模块的实现与测试 动机 现在已经对Scala有一定的了解了,可以开始构造一些硬件了。Chisel的全称为Constructing Hardware In a Scala Embedded Language,是一个基于Scala的DSL(Domain Specific Language,特定领域专用语言),因此可以在同一串代码内兼得Scala和Chisel编程的优点。 理解哪些代码是Scala哪些又是Chisel这点很重要,不过后面再谈。 现在开

scala

Chisel教程——10.Chisel标准库中的中间件整理(接口和函数)

忽然一转身 忽然一转身 发表于2024-06-18 浏览4345 评论0
Chisel标准库中的中间件整理(接口和函数) 动机 Chisel很重要的特性就是复用,所以提供一个标准库很有意义。Chisel的标准库中有针对常用硬件模块的接口库(鼓励和RTL之间的互通性)和生成器库,非常好用。 Chisel Cheatsheet 在Chisel教程——03.Chisel中的组合逻辑(结尾附上Chisel3 Cheat Sheet)_github-3rr0r的博客-CSDN博客_chisel教程一文中,我给出了Chisel的Cheatsheet,里面概括了全部主

scala

Chisel教程——05.Chisel中的时序逻辑(包含显式多时钟、显式同步复位和显式异步复位)

高乐 高乐 发表于2024-06-15 浏览5940 评论0
时序逻辑 动机 我们是不可能写出一个不包含状态的有意义的数字逻辑电路的! 我们是不可能写出一个不包含状态的有意义的数字逻辑电路的! 我们是不可能写出一个不包含状态的有意义的数字逻辑电路的! 重要的话说三遍! 因为不存储中间结果就几乎啥也干不了。 这一节会描述如何用Chisel表达一般的时序逻辑,到了本节的最后,你应该就具备用Chisel实现并测试一个移位寄存器的能力了。 需要强调的是本节可能不会太震撼,因为Chisel的强大并不体现在时序逻辑模式,而是在设计的参数化上。之前已

scala

Chisel教程——03.Chisel中的组合逻辑(结尾附上Chisel3 Cheat Sheet)

asdas asdas 发表于2024-06-14 浏览6603 评论0
Chisel组合逻辑 这一节将会介绍如何使用Chisel组件来实现组合逻辑。 本节将会演示三种基本的Chisel类型(UInt,无符号整数;SInt,有符号整数;Bool,布尔值)可以如何连接和操作。 需要注意的是所有的Chisel变量都声明为Scala的val,绝对不要用Scala中的var来实现硬件构造,因为构造本身在定义后就不会变化了,只有它的值可以在硬件上运行时变化。连线可以用于参数化的类型。 常见运算符 加法实现 首先构造一个Module,这个就不详细介绍了: im

scala

吃透Chisel语言.05.Chisel基础(二)——组合电路与运算符

ohblue ohblue 发表于2024-06-13 浏览4938 评论0
Chisel基础(二)——组合电路与运算符 组合逻辑电路从数学的角度来讲,就是用布尔代数的操作符来描述的数字逻辑电路,也就是一系列布尔代数运算符的组合。Chisel中,这些布尔代数的操作符跟C、Java、Scala以及其他编程语言中定义的是类似的,比如,&是按位与操作符,|是按位或操作符。这一部分就详细介绍Chisel中基本的位运算符、算术运算符、逻辑运算符、比较运算符等,以及Chisel中的一个高阶组合电路运算符——多路选择器。 一个简单组合逻辑电路的例子 下面这一行代码,定

scala

Chisel速成——跟着这个Chisel教程来就行了(已完结)(chisel教程汇总)

田小会 田小会 发表于2024-06-12 浏览5984 评论0
本系列是基础的Chisel教程系列,基于官方的Chisel-Bootcamp,结合了很多Scala的知识,中间补充自己在探索过程中的思考,还会补充一些其他Chisel相关内容,这一系列的目标是基本掌握Chisel语言,为后续设计实现CPU打下坚实基础! 目前本系列已经完结,全部内容收录在专栏Chisel速成班教程,目录如下: Chisel教程——00.ex.scala metals插件(VS Code)、sbt和coursier换国内源 Chisel教程——01.Scala介绍 Chis

scala

Chisel教程——04.Chisel中的控制流(chisel教程汇总)

舜 发表于2024-05-27 浏览4206 评论0
控制流 动机 本系列到目前为止,Chisel中的软硬件之间都有很强的对应关系。但引入控制流之后就不一样了,对软硬件的看法就应该有很大的分歧了。 本节会在生成器软件和硬件中都引入控制流。如果重新连接到一个Chisel连线会怎么样呢?如何让一个多路选择器有两个以上的输入呢?本节会给出这两个问题的答案。 最后连接语义 前面提到,Chisel通过运算符:=来连接组件,由于各种原因,允许发射多条连接语句到相同的组件。 对于赋值之后重新赋值的多条语句,最后一条连接语句会生效: class