敏捷硬件開(kāi)發(fā)語(yǔ)言Chisel與數(shù)字系統(tǒng)設(shè)計(jì)
定 價(jià):69 元
- 作者:梁峰 等
- 出版時(shí)間:2022/6/1
- ISBN:9787121434129
- 出 版 社:電子工業(yè)出版社
- 中圖法分類(lèi):TN402
- 頁(yè)碼:268
- 紙張:
- 版次:01
- 開(kāi)本:16開(kāi)
從20世紀(jì)90年代開(kāi)始,利用硬件描述語(yǔ)言和綜合技術(shù)設(shè)計(jì)實(shí)現(xiàn)復(fù)雜數(shù)字系統(tǒng)的方法已經(jīng)在集成電路設(shè)計(jì)領(lǐng)域得到普及。隨著集成電路集成度的不斷提高,傳統(tǒng)硬件描述語(yǔ)言和設(shè)計(jì)方法的開(kāi)發(fā)效率低下的問(wèn)題越來(lái)越明顯。近年來(lái)逐漸嶄露頭角的敏捷化設(shè)計(jì)方法將把集成電路設(shè)計(jì)帶入一個(gè)新的階段。與此同時(shí),集成電路設(shè)計(jì)也需要一種適應(yīng)敏捷化設(shè)計(jì)方法的新型硬件開(kāi)發(fā)語(yǔ)言。本書(shū)從實(shí)用性和先進(jìn)性出發(fā),較全面地介紹新型硬件開(kāi)發(fā)語(yǔ)言Chisel和數(shù)字系統(tǒng)敏捷化設(shè)計(jì)方法。全書(shū)分兩篇。第一篇共10章,主要內(nèi)容包括Chisel語(yǔ)言簡(jiǎn)介、Chisel的數(shù)據(jù)類(lèi)型、Chisel的模塊與硬件類(lèi)型、Chisel常用的硬件原語(yǔ)、如何將Chisel代碼轉(zhuǎn)換生成Verilog HDL代碼及基本測(cè)試方法、Chisel的黑盒、用Chisel實(shí)現(xiàn)多時(shí)鐘域設(shè)計(jì)、Chisel的函數(shù)應(yīng)用及其他議題等。第二篇共9章,介紹編寫(xiě)Chisel需要掌握的Scala語(yǔ)言編程基礎(chǔ)知識(shí)。讀者可以根據(jù)自身情況,跳過(guò)第二篇Scala基礎(chǔ)部分,直接學(xué)習(xí)Chisel的硬件開(kāi)發(fā)功能。本書(shū)提供配套的課后練習(xí)參考答案、仿真程序代碼等。本書(shū)可作為集成電路科學(xué)與工程、電子信息類(lèi)、計(jì)算機(jī)類(lèi)等相關(guān)專(zhuān)業(yè)的高年級(jí)本科生及研究生的教學(xué)用書(shū),也可供從事集成電路設(shè)計(jì)的工程人員和EDA專(zhuān)業(yè)人員學(xué)習(xí)、參考。
梁峰,西安交通大學(xué)微電子學(xué)院教授,博士生導(dǎo)師,從事高性能計(jì)算架構(gòu)、高性能計(jì)算單元設(shè)計(jì)、高級(jí)設(shè)計(jì)方法學(xué)、數(shù)字信號(hào)處理算法及電路設(shè)計(jì)、智能軟硬件系統(tǒng)開(kāi)發(fā)、未來(lái)非馮諾依曼計(jì)算架構(gòu)等研究,近年來(lái)主持國(guó)家、軍隊(duì)、省部級(jí)及企業(yè)合作項(xiàng)目十余項(xiàng),與國(guó)內(nèi)知名企業(yè)和研究所建立了廣泛的合作關(guān)系,積累了一系列可工程化和產(chǎn)業(yè)化的科研成果,在各種學(xué)術(shù)期刊和國(guó)際會(huì)議上發(fā)表學(xué)術(shù)論文60多篇,指導(dǎo)本科生、研究生參加國(guó)家級(jí)競(jìng)賽獲獎(jiǎng)二十余項(xiàng),累計(jì)培養(yǎng)了幾十名研究生。
第一篇 敏捷硬件開(kāi)發(fā)語(yǔ)言Chisel
第1章 新型敏捷硬件開(kāi)發(fā)語(yǔ)言——Chisel和Scala 2
1.1 最好的宿主——什么是Scala 2
1.2 敏捷開(kāi)發(fā)——什么是Chisel 2
1.3 Scala入門(mén)——讓你的代碼跑起來(lái) 4
1.3.1 Scala的安裝方法 4
1.3.2 使用Scala解釋器 4
1.3.3 運(yùn)行Scala腳本 4
1.3.4 編譯非腳本文件 5
1.3.5 使用IDEA開(kāi)發(fā)Scala項(xiàng)目 5
1.3.6 總結(jié) 7
1.4 章節(jié)安排 7
1.5 參考文獻(xiàn) 8
1.6 課后練習(xí) 8
第2章 Chisel入門(mén)及數(shù)據(jù)類(lèi)型 9
2.1 Chisel開(kāi)發(fā)環(huán)境的安裝步驟 9
2.1.1 安裝步驟 9
2.1.2 開(kāi)發(fā)環(huán)境測(cè)試 10
2.1.3 小結(jié) 11
2.2 Chisel的常見(jiàn)問(wèn)題 11
2.3 Chisel的變量與數(shù)據(jù)類(lèi)型 12
2.3.1 數(shù)據(jù)字面量與數(shù)據(jù)類(lèi)型 13
2.3.2 數(shù)據(jù)寬度 14
2.3.3 類(lèi)型轉(zhuǎn)換 14
2.3.4 向量 15
2.3.5 混合向量 16
2.3.6 包裹 16
2.3.7 Chisel的內(nèi)建操作符 17
2.3.8 位寬推斷 18
2.3.9 Chisel泛型 19
2.4 總結(jié) 19
2.5 課后練習(xí) 19
第3章 模塊與硬件類(lèi)型 20
3.1 Chisel是如何賦值的 20
3.2 端口(IO) 21
3.2.1 定義端口列表 21
3.2.2 翻轉(zhuǎn)端口列表的方向 21
3.2.3 整體連接 22
3.2.4 動(dòng)態(tài)修改端口 23
3.3 模塊 24
3.3.1 模塊分類(lèi) 24
3.3.2 定義模塊 26
3.3.3 例化模塊 27
3.3.4 例化多個(gè)模塊 28
3.4 線(xiàn)網(wǎng) 28
3.4.1 Wire 28
3.4.2 WireDefault 29
3.4.3 未驅(qū)動(dòng)的線(xiàn)網(wǎng) 30
3.5 寄存器 31
3.5.1 Reg 31
3.5.2 RegNext 32
3.5.3 RegInit 32
3.5.4 RegEnable 33
3.5.5 ShiftRegister 34
3.5.6 寄存器實(shí)例 34
3.5.7 異步寄存器 39
3.6 寄存器組 41
3.7 用when給電路賦值 42
3.8 總結(jié) 44
3.9 參考文獻(xiàn) 45
3.10 課后練習(xí) 46
第4章 Chisel常用的硬件原語(yǔ) 47
4.1 多路選擇器 47
4.2 優(yōu)先編碼器 48
4.3 仲裁器 48
4.4 隊(duì)列 51
4.5 ROM 54
4.6 RAM 55
4.7 帶寫(xiě)掩碼的RAM 57
4.8 從文件讀取數(shù)據(jù)到RAM 58
4.9 計(jì)數(shù)器 62
4.10 線(xiàn)性反饋移位寄存器 66
4.11 狀態(tài)機(jī) 70
4.12 總結(jié) 73
4.13 參考文獻(xiàn) 73
4.14 課后練習(xí) 73
第5章 生成Verilog HDL代碼與基本測(cè)試 74
5.1 生成Verilog HDL代碼 74
5.1.1 execute 74
5.1.2 emitVerilog 76
5.2 增加參數(shù)的方法 77
5.2.1 Firrtl傳遞參數(shù) 77
5.2.2 給主函數(shù)傳遞參數(shù) 78
5.3 編寫(xiě)chisel-iotesters測(cè)試 79
5.4 運(yùn)行chisel-iotesters測(cè)試 81
5.5 使用chiseltest進(jìn)行測(cè)試 82
5.6 總結(jié) 85
5.7 課后練習(xí) 85
第6章 黑盒 86
6.1 例化黑盒 86
6.2 復(fù)制Verilog文件 88
6.3 內(nèi)聯(lián)Verilog文件 90
6.4 inout端口 91
6.5 總結(jié) 92
6.6 課后練習(xí) 92
第7章 多時(shí)鐘域設(shè)計(jì) 94
7.1 沒(méi)有隱式端口的模塊 94
7.2 定義一個(gè)時(shí)鐘域和復(fù)位域 95
7.2.1 withClockAndReset 95
7.2.2 withClock和withReset 96
7.2.3 復(fù)位信號(hào)的三種類(lèi)型 103
7.3 使用時(shí)鐘負(fù)沿和低有效的復(fù)位信號(hào) 103
7.4 示例:異步FIFO 105
7.5 總結(jié) 108
7.6 參考文獻(xiàn) 108
7.7 課后練習(xí) 108
第8章 函數(shù)的應(yīng)用 109
8.1 用函數(shù)抽象組合邏輯 109
8.2 用工廠(chǎng)方法簡(jiǎn)化模塊的例化 110
8.3 用Scala的函數(shù)簡(jiǎn)化代碼 113
8.4 Chisel的打印函數(shù) 114
8.4.1 Scala風(fēng)格 114
8.4.2 C風(fēng)格 116
8.5 使用打印函數(shù)實(shí)例 116
8.6 Chisel的對(duì)數(shù)函數(shù) 119
8.7 與硬件相關(guān)的函數(shù) 119
8.8 隱式類(lèi)的應(yīng)用 122
8.9 遞歸函數(shù)的應(yīng)用 123
8.10 總結(jié) 125
8.11 參考文獻(xiàn) 125
8.12 課后練習(xí) 125
第9章 其他議題 126
9.1 重命名模塊名稱(chēng) 126
9.2 命名規(guī)則 127
9.3 重命名模塊內(nèi)信號(hào)名稱(chēng) 131
9.3.1 前綴 131
9.3.2 suggestName 132
9.3.3 forceName 133
9.4 參數(shù)化的Bundle 135
9.5 FixedPoint 137
9.6 assert 138
9.7 總結(jié) 140
9.8 參考文獻(xiàn) 140
9.9 課后練習(xí) 140
第10章 riscv-mini 141
10.1 riscv-mini簡(jiǎn)介 141
10.2 數(shù)據(jù)通路 141
10.3 riscv-mini的子模塊 142
10.3.1 ALU模塊 142
10.3.2 BrCond模塊 143
10.3.3 Cache模塊 144
10.3.4 Control模塊 145
10.3.5 CSR模塊 146
10.3.6 ImmGen模塊 147
10.3.7 Instructions模塊 147
10.3.8 RegFile模塊 148
10.3.9 Datapath模塊 148
10.3.10 Core模塊 149
10.4 riscv-mini參數(shù)化機(jī)制 149
10.4.1 Field[T]類(lèi) 149
10.4.2 View類(lèi) 150
10.4.3 Parameters類(lèi)及其伴生對(duì)象 151
10.4.4 Config類(lèi) 152
10.5 參數(shù)化機(jī)制的應(yīng)用 152
10.6 總結(jié) 157
10.7 參考文獻(xiàn) 157
10.8 課后練習(xí) 158
第二篇 Scala語(yǔ)言編程基礎(chǔ)知識(shí)
第11章 Scala的變量及函數(shù) 160
11.1 變量定義與基本類(lèi)型 160
11.1.1 定義一個(gè)變量 160
11.1.2 Scala的基本類(lèi)型 161
11.1.3 小結(jié) 164
11.2 函數(shù)及其幾種形式 164
11.2.1 定義一個(gè)函數(shù) 164
11.2.2 方法 166
11.2.3 嵌套函數(shù) 166
11.2.4 函數(shù)字面量 166
11.2.5 部分應(yīng)用函數(shù) 167
11.2.6 閉包 168
11.2.7 函數(shù)的特殊調(diào)用形式 169
11.2.8 柯里化 170
11.2.9 傳名參數(shù) 170
11.2.10 小結(jié) 172
11.3 參考文獻(xiàn) 172
第12章 Scala面向?qū)ο缶幊?173
12.1 類(lèi)和對(duì)象 173
12.1.1 類(lèi) 173
12.1.2 類(lèi)的構(gòu)造方法 174
12.1.3 重寫(xiě)toString方法 175
12.1.4 方法重載 176
12.1.5 類(lèi)參數(shù) 176
12.1.6 單例對(duì)象與伴生對(duì)象 176
12.1.7 工廠(chǎng)對(duì)象與工廠(chǎng)方法 178
12.1.8 apply方法 178
12.1.9 主函數(shù) 179
12.1.10 小結(jié) 180
12.2 操作符即方法 180
12.2.1 操作符在Scala中的解釋 180
12.2.2 三種操作符 181
12.2.3 操作符的優(yōu)先級(jí)和結(jié)合性 183
12.2.4 預(yù)設(shè)操作符 184
12.2.5 對(duì)象的相等性 184
12.2.6 小結(jié) 185
12.3 類(lèi)繼承 185
12.3.1 Scala的類(lèi)繼承 185
12.3.2 調(diào)用超類(lèi)的構(gòu)造方法 186
12.3.3 重寫(xiě)超類(lèi)的成員 187
12.3.4 子類(lèi)型多態(tài)與動(dòng)態(tài)綁定 189
12.3.5 抽象類(lèi) 189
12.3.6 關(guān)于多重繼承 190
12.3.7 Scala類(lèi)的層次結(jié)構(gòu) 190
12.3.8 小結(jié) 192
12.4 特質(zhì) 192
12.4.1 什么是特質(zhì) 192
12.4.2 特質(zhì)的層次 193
12.4.3 混入特質(zhì)的簡(jiǎn)便方法 194
12.4.4 特質(zhì)的線(xiàn)性化疊加計(jì)算 194
12.4.5 小結(jié) 197
12.5 參考文獻(xiàn) 197
第13章 包和導(dǎo)入 198
13.1 包 198
13.2 包的層次和精確代碼訪(fǎng)問(wèn) 198
13.3 import導(dǎo)入 201
13.4 自引用 201
13.5 訪(fǎng)問(wèn)修飾符 202
13.6 包對(duì)象 203
13.7 總結(jié) 203
13.8 參考文獻(xiàn) 203
第14章 集合 204
14.1 數(shù)組 204
14.1.1 數(shù)組的定義 204
14.1.2 數(shù)組的索引與元素修改 204
14.2 列表 205
14.2.1 列表的定義 205
14.2.2 列表添加數(shù)據(jù) 205
14.2.3 列表子對(duì)象Nil 206
14.3 數(shù)組緩沖與列表緩沖 207
14.4 元組 208
14.4.1 元組的定義 208
14.4.2 元組的索引 208
14.4.3 元組作為函數(shù)的入口參數(shù) 209
14.4.4 元組的遍歷 209
14.5 映射 209
14.5.1 映射的定義 209
14.5.2 映射的三種取值方式 210
14.5.3 映射遍歷的四種方式 210
14.6 集 211
14.7 序列 211
14.8 集合的常用方法 211
14.8.1 map 211
14.8.2 foreach 211
14.8.3 zip 212
14.8.4 reduce 212
14.8.5 fold 212
14.8.6 scan 212
14.9 總結(jié) 212
第15章 內(nèi)建控制結(jié)構(gòu) 213
15.1 if表達(dá)式 213
15.2 while循環(huán) 214
15.3 for表達(dá)式與for循環(huán) 214
15.4 用try表達(dá)式處理異常 216
15.4.1 拋出一個(gè)異常 216
15.4.2 try-catch 217
15.4.3 finally 217
15.5 match表達(dá)式 217
15.6 關(guān)于continue和break 218
15.7 關(guān)于變量的作用域 219
15.8 總結(jié) 220
15.9 參考文獻(xiàn) 220
第16章 模式匹配 221
16.1 樣例類(lèi)和對(duì)象 221
16.2 模式匹配 222
16.3 模式的種類(lèi) 222
16.3.1 通配模式 222
16.3.2 常量模式 223
16.3.3 變量模式 223
16.3.4 構(gòu)造方法模式 224
16.3.5 序列模式 225
16.3.6 元組模式 225
16.3.7 帶類(lèi)型的模式 226
16.3.8 變量綁定模式 226
16.4 模式守衛(wèi) 226
16.5 密封類(lèi) 227
16.6 可選值 228
16.7 模式匹配的另類(lèi)用法 228
16.8 偏函數(shù) 229
16.9 總結(jié) 230
16.10 參考文獻(xiàn) 230
第17章 類(lèi)型參數(shù)化 231
17.1 var類(lèi)型的字段 231
17.2 類(lèi)型構(gòu)造器 232
17.3 型變注解 233
17.4 檢查型變注解 233
17.5 類(lèi)型構(gòu)造器的繼承關(guān)系 235
17.6 上界和下界 235
17.7 方法的類(lèi)型參數(shù) 236
17.8 對(duì)象私有數(shù)據(jù) 236
17.9 總結(jié) 238
第18章 抽象成員 239
18.1 抽象成員 239
18.2 初始化抽象val字段 240
18.2.1 預(yù)初始化字段 241
18.2.2 惰性的val字段 242
18.3 抽象類(lèi)型 243
18.4 細(xì)化類(lèi)型 244
18.5 Scala的枚舉 245
18.6 總結(jié) 246
18.7 參考文獻(xiàn) 246
第19章 隱式轉(zhuǎn)換與隱式參數(shù) 247
19.1 隱式定義的規(guī)則 247
19.2 隱式地轉(zhuǎn)換到期望類(lèi)型 248
19.3 隱式地轉(zhuǎn)換接收端 248
19.4 隱式類(lèi) 249
19.5 隱式參數(shù) 250
19.6 含有隱式參數(shù)的主構(gòu)造方法 251
19.7 上下文界定 252
19.8 多個(gè)匹配的隱式定義 253
19.9 總結(jié) 255
19.10 參考文獻(xiàn) 255