码迷,mamicode.com
首页 > 其他好文 > 详细

Chisel3 - 字面量(literal)

时间:2018-11-28 23:48:39      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:empty   value   emoji   pac   oauth   可读性   rgba   图片   就会   

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)

标签:empty   value   emoji   pac   oauth   可读性   rgba   图片   就会   

原文地址:https://www.cnblogs.com/wjcdx/p/10035406.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!