Chisel手册之Types
来源:互联网 发布:经典文案 知乎 编辑:程序博客网 时间:2024/05/22 06:31
本文是Chisel手册第二篇Types。
Types
表示硬件设计的Chisel图包含原始节点和类型节点。Chisel类型系统与底层Scala类型系统分开维护,因此类型节点散布在原始节点之间,以允许Chisel检查并响应Chisel类型。Chisel类型节点在硬件设计转换为C ++或Verilog之前被擦除。getRawNode运算符定义在基本Node类中,跳过类型节点并返回找到的第一个原始节点。下图显示了内置的Chisel类型层次结构,其中Data为最顶层节点。
(1) 内置标量类型包括Bool,SInt和UInt和内置聚合类型Bundle和Vec允许用户使用其他类型的集合扩展Chisel数据类型集。
(2) Data自身就是一个节点。
abstract class Data extends Node ;
(3) Data类具有用于在类型之间转换和将端口方法委托给其单个输入的方法。我们将在Port一节讨论端口。最后,用户可以在其自己的类型节点(例如bundle)中覆盖cloneType方法,以便反映克隆所需的构造参数。
(4) Data节点可以用于四种目的:
types: UInt(width = 8), 在指定最小位宽的图中记录中间类型(在本节中描述)
wires: UInt(width = 8), 作为数据的前向声明,允许将来的条件更新(在Updateable一节中描述)
ports: UInt(dir = OUTPUT, width = 8), 定义模块接口的专用线,还能指定方向(在Ports一节中描述)
literals: UInt(1) 或 UInt(1, 8), 可以使类型对象构造函数来构造其值和可选宽度。
Bits
object Bits ;
class Bits extends Data with Updateable ;
(1) Bits具有用于简单位操作的方法。注意,##是二进制连接,而Cat是一个正则拼接。为了避免与Scala的内置==冲突,Chisel的按位比较命名为===。
(2) 使用Fill可以创建n位宽的域:
def Fill(n: Int, field: Bits): Bits
(3) 一个两输入的选择器可以使用Mux:
def Mux[T <: Data](sel: Bits, cons: T, alt: T): T
(4) 常量或字面值使用Scala整数或传递给构造函数的字符串表示:
UInt(1)
UInt("ha")
UInt("o12")
UInt("b1010") // binary 4-bit lit from string.
Bools
object Bool ;
class Bool extends UInt ;
(1) 布尔值用Bools表示。
(2) Bool与UInt(width = 1)相等。
Nums
(1) Num是一个类型节点,定义了算术运算。
class Num extends Bits ;
(2) 有符号和无符号整数被认为是定点数的子集,并且分别由类型SInt和UInt表示。
object SInt ;
class SInt extends Num ;
object UInt ;
class UInt extends Num ;
Bundles
(1) Bundle将几种不同类型的命名字段组合成一个连续单元,非常像C中的struct。
class Bundle extends Data ;
Vecs
(1)Vecs可以创建可索引元素向量。
object Vec ;
class Vec[T <: Data](n: Int, val gen: () => T) extends Data ;
0 0
- Chisel手册之Types
- Chisel手册之Nodes
- chisel
- LLDB调试神器之Chisel的安装
- iOS开发之LLDB — Chisel插件的安装说明
- Android Resource Types之More Types简介
- elasticsearch之mapping types
- 安装Chisel
- chisel安装
- 接触chisel
- Chisel介绍
- Chisel入门教程
- Solr_专题:shema 之 types
- types
- system memory 之 Memory Technology Types
- boost源码剖析之:Tuple Types
- Scheme基本概念之 Disjointness of Types
- python之二types and operators
- MySQL(2)-约束的添加及删除
- 计算机网络基础——网络的性能
- 怎么判断IOS安装包中是否包含jspatch代码
- C语言实现菱形星星
- 【HTML5学习笔记】9:音频和视频的嵌入
- Chisel手册之Types
- 常用排序算法之简单选择排序
- CentOS 下安装 Node.js
- unity 让自定义 ui shader 支持 UGUI 的 Mask 功能
- 深度卷积网络图像风格转移(一)需求分析
- 二分贪心练习题-E5
- 百度地图最新路线偏号和批量地址反编码
- linux系统添加根证书 linux证书信任列表
- android service插件化之一