Chisel3 - 字面量(literal)
Posted wjcdx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Chisel3 - 字面量(literal)相关的知识,希望对你有一定的参考价值。
https://mp.weixin.qq.com/s/uiW4k4DeguvYsG8LhHk2Ug
介绍Chisel3中基本数据类型的字面量的写法,及其背后的实现机制,也就是Scala隐式规则。
参考链接:
??
1. 位宽字面量(literal)
8.W,即位宽为8,类型为Width
2. 有符号数字面量
8.S,即大小为8的有符号数,位宽自动推断(1+4位)。
??
3. 无符号数字面量
8.U,即大小为8的无符号数,位宽自动推断(4位)。
??
带进制的字符串:
??
加下划线提高可读性:
??
4. 布尔型字面量
true.B/false.B,即值为true/false的布尔型数,位宽为1.
??
5. 固定位宽
给有符号和无符号数传入位宽参数,即可指定位宽,如8.U(32.W)即指定位宽为32位。
??
For literals of type UInt, the value is zero-extended to the desired bit width.
For literals of type SInt, the value is sign-extended to fill the desired bit width.
If the given bit width is too small to hold the argument value, then a Chisel error is generated.
6. 隐式转换规则
.W/.U/.S/.B实际上都是类的方法:
??
??
??
但是8.U中的8是Int型,而Int类型没有.W/.U/.S方法,true/false是Boolean类型没有.B方法,为什么可以调用呢?
这里用到的就是Scala的隐式规则。
当Scala在Int类型上找不到.W/.U/.S这些方法的时候,就会查找隐式规则:
a. 哪个类型有这些目标方法?
b. 有没有隐式规则可以把Int类型转换成为含有目标方法的类型?
在 import chisel3._ 的时候,即把这些隐式规则引入进来了:
??
以上是关于Chisel3 - 字面量(literal)的主要内容,如果未能解决你的问题,请参考以下文章
Literal 字面值 字面量 的理解
简写函数字面量(function literal)
JavaScript字面量
字面量
03_数字的字面量
3.Javascript数据类型之进制数和字符串