首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
chisel学习笔记——基本类型
返回列表
发新帖
chisel学习笔记——基本类型
[复制链接]
发表于 2022-12-19 15:59:25
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
Chisel学习笔记(二)——基本类型
因为是对着chisel book学的,这篇实际上是加上我的理解的chisel book的翻译
1.信号类型与常量
Chisel提供了三种基本的类型来描述信号、寄存器、组合逻辑:
Bits
SInt
UInt
此外,还定义了逻辑类型Bool。
1.1类型定义
一个Chisel类型的定义有两部分:位宽与类型
比如看下面的例子:
Bits(7.W)
SInt(8.W)
UInt(9.W)
复制
代码
分别定义了7bits的Bits类型,8bits的有符号数,9bits的无符号数
1.2 常量定义
而一个Chisel常量类型的定义则有三部分:位宽、类型和值
比如看下面的例子:
-3.S(4.W)
复制
代码
这个定义代表一个4bits的有符号数3,其中-3、4都是Scala原生的整型,而通过.S、.W转换为Chisel定义的有符号数与宽度类型
对于上面的例子应该这样理解,首先4.W将Scala整型4转换为Chisel width,然后作为参数传入.S构成Chisel四位有符号数类型,然后把Scala整型-3转换为Chisel四位有符号数-3。
对于常量的定义,还可以使用其它的进制(16、8、2),这种情况下应该用Scala的字符串类型来表达,如:
"hff".U
"o377".U
"b1111_1111".U
复制
代码
都代表十进制的255
2. 组合逻辑
首先有必要介绍Scala的一个特性——类型推断,类似C++的auto,对应的关键字为val。这个特性使得我们可以不用像Verilog一样,对每一个变量显式声明它的类型、位宽(位宽实际上作为Bits、SInt、UInt类型的一项属性存在)。
先看一个例子:
val logic = a & b | c
复制代码
上面的代码描述了下面这样一个电路:
代码中,logic的类型为val,如前述,这不是一个实际的类型,只是表示logic是一个变量,而logic的变量由Scala推断得出。
另外,还可以先将一个变量定义为Wire,然后再用一种持续赋值的方法来进行“连接”:
val w = Wire(UInt())
w := a & b
复制代码
可以通过类似下标访问的方法来提取某一位或一个区间:
val bit31 = x(31)
val bit0to7 = x(7, 0)
复制代码
还可以进行拼接:
val word = bits1 ## bits2
复制代码
下面两张表介绍了Chisel中定义的一些硬件算子:
[table][tr]OperatorDescriptionData Types[/tr][tr][td]*、/、%[/td][td]乘、除、取模[/td][td]UInt、SInt[/td][/tr][tr][td]+、-[/td][td]加、减[/td][td]UInt、SInt[/td][/tr][tr][td]===、=/=[/td][td]等于、不等于[/td][td]UInt、SInt,返回Bool[/td][/tr][tr][td]>、>=、
回复
使用道具
举报
返回列表
浏览过的版块
数据仓库与分析
云原生
Oracle
物联网
SAAS
前端开发
SQL-Server
运维.售后
DevOps与敏捷开发
Mysql
兜兜零元
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表