介绍Chisel与Scala的不同与关联。
 
 
一. 层次高低
 
Chisel是使用Scala语言编写的具体代码。从抽象层次上看,Scala更高。
 
1. 语言与代码
 
Chisel是使用Scala语言编写的代码。
 
2. 语言与代码库
 
Chisel是使用Scala语言编写的代码库。
 
 
二. 范围大小
 
3. 通用语言与领域专用语言
 
Scala是一门通用语言,可用于各个领域编程。
 
Chisel使用Scala实现的领域专用语言(DSL),专门用于硬件建模使用。
 
 
三. 思维方式不同
 
4. 软件编程与硬件建模
 
Scala是一门软件编程语言,其使用基于软件编程思维;
 
Chisel是硬件模型构建语言,其使用基于硬件模型构建思维;
 
软件编程的最小单位为汇编指令;
硬件建模的最小单位为硬件模块;
 
软件编程基于指令执行;
硬件模型基于电磁传播;
 
 
四. Chisel:狭义与广义
 
5. 狭义的Chisel
 
狭义的Chisel是一个使用Scala语言实现的硬件模型构件库,其各个组成部分与硬件模型分别对应。
 
总结如下:
a. Chisel使用的UInt/SInt/Bool/Bits,描述硬件模型中使用的类型,最终落实到Wire/Reg上;
b. Chisel使用PrimOp,对应硬件模型中的各种原子操作,如加减乘除,移位等操作;
c. Chisel使用的":=",对应到硬件模型中的连接,把下游连接到上游,接收上游值的变化(电平变化);
d. Chisel使用when/elsewhen/otherwise,描述硬件模型中的选择逻辑;
 
所有的验证、转换工作都基于硬件模型进行。
 
6. 广义的Chisel
 
广义的Chisel,是一个硬件模型构建方法论(methodology)。
 
包含两个部分:
首先,实现一个硬件模型构件库,用于构建硬件模型;
其次,提高一个层次,使用Scala作为硬件模型生成器;
 
这个层次的提升极大的提高了硬件模型的构建效率。
 
硬件模型在Chisel中的叫法为:Hardware graph;
硬件模型生成器在Chisel中的叫法为电路生成器:Circuit generator;
 
电路生成器源于Verilog的generate。
由于Scala语言的函数式编程方法,而有了极大的提升。
 
 

Chisel3 - Chisel vs. Scala的更多相关文章

  1. Chisel3 - bind - Binding

    https://mp.weixin.qq.com/s/2318e6VJ4wFGpWwBOmTikA   Chisel数据类型(Data)与Module的绑定关系,根据Data的使用方式不同,而有多种绑 ...

  2. Chisel3 - util - Valid

    https://mp.weixin.qq.com/s/L5eAwv--WzZdr-CfW2-XNA   Chisel提供的Valid接口.如果valid为置1,则表明输出的bits有效:反之,则输出无 ...

  3. Chisel3-Intellij IDEA安装Scala插件

    https://mp.weixin.qq.com/s/xTk5ucvSNuwsh8C6E362cg   后续开启RISC-V开发相关内容.   RISC-V开发推荐使用Chisel编程语言.Chise ...

  4. Chisel3 - util - OneHot

    https://mp.weixin.qq.com/s/Jsy8P3m9W2EYKwneGVekiw   独热码相关的电路生成器.   参考链接: https://github.com/freechip ...

  5. Chisel3 - util - MixedVec

    https://mp.weixin.qq.com/s/mO648yx4_ZRedXSWX4Gj2g   可以容纳不同类型的变量的向量.   参考链接: https://github.com/freec ...

  6. Chisel3 - util - Mux

    https://mp.weixin.qq.com/s/TK1mHqvDpG9fbLJyNxJp-Q   Mux相关电路生成器.   参考链接: https://github.com/freechips ...

  7. Chisel3 - util - Lookup

    https://mp.weixin.qq.com/s/g85Si6n37D9PYfR5hEoRQQ     实现一个查找逻辑.   参考链接: https://github.com/freechips ...

  8. Chisel3 - util - Math vs. CircuitMath

    https://mp.weixin.qq.com/s/8lC8vQnBdKW9C39H0QFFkA     对数相关的辅助方法,Math通过软件方法实现,CircuitMath通过硬件方法实现.   ...

  9. Chisel3 - util - LFSR16

    https://mp.weixin.qq.com/s/DSdb4tmRwDTOki7mbyuu9A     实现16位线性反馈移位寄存器.可用于生成简单的伪随机数.     ​​     ​​   参 ...

随机推荐

  1. T - zxa and leaf HDU - 5682 二分+dfs

    T - zxa and leaf HDU - 5682 题目大意是:给你一颗树,这棵树有些节点已经设置了它的美丽值,然后剩下一些节点需要我们设置美丽值. 一条边的丑陋程度等于被定义为由这个边缘连接的两 ...

  2. 多重背包转化成完全背包 E - Charlie's Change

    http://poj.org/problem?id=1787 这个题目我一看就觉得是一个多重背包,但是呢,我不知道怎么输出路径,所以无可奈何,我就只能看一下题解了. 看了题解发现居然是把多重背包转化成 ...

  3. mybatis与hibernate运行流程比较

    hibernate长时间没用,感觉生疏了,正好借这篇文章整合下知识,顺便复习比较下两种框架. 概述: Mybatis和hibernate不同,它不完全是一个ORM框架,因为MyBatis需要程序员自己 ...

  4. Qt之connect

    Qt4之connect 基本用法 connect(ui->toolButton, SIGNAL(clicked()), this, SLOT(OnClickButton())); disconn ...

  5. HBase Filter 过滤器之QualifierFilter详解

    前言:本文详细介绍了 HBase QualifierFilter 过滤器 Java&Shell API 的使用,并贴出了相关示例代码以供参考.QualifierFilter 基于列名进行过滤, ...

  6. idea 2020 配置本地 Maven 仓库

    问题: 默认Maven 仓库地址在C盘,C盘是系统盘能少放东西尽量少放. 只需要简单的两步 1.File~Settings 然后搜索 maven 如下图绿框 修改成你自己的 Maven 仓库 2.Fi ...

  7. [ACdream 1215 Get Out!]判断点在封闭图形内, SPFA判负环

    大致题意:在二维平面上,给一些圆形岛屿的坐标和半径,以及圆形船的位置和半径,问能否划到无穷远的地方去 思路:考虑任意两点,如果a和b之间船不能通过,则连一条边,则问题转化为判断点是否在多边形中.先进行 ...

  8. 帝国cms列表页内容简介字段smalltext去除里面html格式代码 设置方法

    帝国cms列表页内容简介字段smalltext去除里面html格式代码帝国cms列表页调用内容简介出现html代码怎么办 近来在用帝国cms的时候,发现一个问题,在列表页调用产品简介的时候出现了这种h ...

  9. fragment hide/show 生命周期

    Fragment的使用越来越普遍了,掌握它的生命周期以及注意事项时非常有必要的,首先 All subclasses of Fragment must include a public empty co ...

  10. Python基础语法day_02——字符串规则

    day_02 使用方法修改字符串的大小写 将字符串首字母变成大写 >>> name = "ada lovelace" >>> print(nam ...