Chisel Tutorial(三)——组合电路
来源:互联网 发布:qq晒密软件 编辑:程序博客网 时间:2024/05/08 09:34
以下内容依据2015-7-10版的Chisel 2.2 Tutorial整理
组合电路
在Chisel中每个电路都是一些node的集合,每个node是一个硬件操作单元,具有0个、1个或者多个输入,依据输入驱动一个输出。上一篇博客“Chisel Tutorial(二)——Chisel的数据类型”中介绍的变量就可以认为是一个0输入的node,其输出是一个固定值,也就是变量的值。不同的node可以通过操作符连接在一起,例如可以通过如下表达式表示一个简单的组合逻辑电路:
(a & b) | (~c & d)
上述表达式的语法应该很好理解,&表示bit与,|表示bit或,~表示bit反,a-d表示一些命名wire。
任何一个简单地表达式都可以被转化为一个电路树,命名wire作为叶子节点,操作符组成中间节点,电路的最终输出是电路树根节点的输出,对于上面的简单表达式而言,根节点就是bit或。
在Chisel中给一个wire命名就是声明一个变量,使用Scala中的关键词val。如下:
val sel = a | bval out = (sel & in1) | (~sel & in2)
针对不同数据类型,Chisel定义了不同的硬件操作符,如下表所示。
Chisel有一个很大的特点就是变量宽度推测,wire的宽度是可以推测出来的,按照如下规则推测:
此处的wz就是z的宽度。
除了右移操作外,宽度推测机制得到的输出wire的宽度始终大于或者等于输入wire的宽度。
0 0
- Chisel Tutorial(三)——组合电路
- Chisel Tutorial(一)——Chisel介绍
- Chisel Tutorial(二)——Chisel的数据类型
- Chisel Tutorial(四)——函数
- Chisel Tutorial(六)——端口
- Chisel Tutorial(七)——模块
- Chisel Tutorial(五)——Bundles与Vecs
- Chisel Tutorial(八)——运行与测试
- Chisel Tutorial(九)——状态单元
- Chisel实验笔记(三)
- 组合电路
- chisel
- iOS开发之LLDB — Chisel插件的安装说明
- Chisel实验笔记(一)
- Chisel实验笔记(二)
- Chisel实验笔记(四)
- Chisel 专题(一) 安装
- # Unity EditorTool Dev Tutorial(三)——数据存储工具
- HDU 2845(Beans)动态规划
- Leetcode之nextPermutation
- Java改进的冒泡排序ImprovedBubbleSort
- spring mvc 全解介绍
- 使用Java 连接MongoDB3.X 3.04 带 auth 认证
- Chisel Tutorial(三)——组合电路
- 进程锁 process mutex ??
- 网络爬虫基础!
- Android安卓开发官方文档国内镜像
- LeetCode 题解(157): Restore IP Addresses
- Apache Tomcat8必备知识
- Struts2中的OGNL表达式的详解
- iOS手势识别的详细使用(拖动,缩放,旋转,点击,手势依赖,自定义手势)
- android(3)自定义View