Chisel 学习笔记(四)
生活随笔
收集整理的這篇文章主要介紹了
Chisel 学习笔记(四)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Chisel?
Chisel中的組合邏輯
Input與Output
Chisel中的所有類都要繼承Module
類中必須要定義io類型,用來表示該模塊的輸入輸出端口
每一個輸入輸出端口,需要說明是有符號數還是無符號數,以及數據位寬
數據類型與賦值
Chisel中所有的變量只能用val,不能用var
Chisel中的數據類型有UInt,SInt,Bool,并且Chisel中的數據類型只能和Chisel中的數據類型進行運算,因此運算時如果需要操作常數,需寫成2.U的形式
在變量初始化時使用等號,在賦值時使用:=,代表左側變量由右側表達式驅動
另外scala中提供比較常見的如多選器,連接器
對于加法運算,Chisel提供了兩種加法運算,+&表示會保留進位,+不保留進位
控制語句
如果有多條賦值語句驅動相同左側變量,則選擇最后一個,如下
class LastConnect extends Module {val io = IO(new Bundle {val in = Input(UInt(4.W))val out = Output(UInt(4.W))})io.out := 1.Uio.out := 2.Uio.out := 3.Uio.out := 4.U //編譯器選擇這一條 }when, elsewhen, otherwise
Chisel中提供條件語句when, elsewhen和otherwise
使用方式和if-else語句一樣
語法如下:
示例如下:
class Max3 extends Module {val io = IO(new Bundle {val in1 = Input(UInt(16.W))val in2 = Input(UInt(16.W))val in3 = Input(UInt(16.W))val out = Output(UInt(16.W))})when(io.in1 > io.in2 && io.in1 > io.in3) {io.out := io.in1 }.elsewhen(io.in2 > io.in1 && io.in2 > io.in3) {io.out := io.in2 }.otherwise {io.out := io.in3} }需要注意的是,Chisel中的條件語句不像scala中的那樣,最后一行為返回值
val result = when(squareIt) { x * x }.otherwise { x }這樣是不行的
轉載于:https://www.cnblogs.com/JamesDYX/p/10079689.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Chisel 学习笔记(四)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1_boostrap概述
- 下一篇: 如何通过shell脚本操作MongoDB