• 敏捷硬件开发语言Chisel与数字系统设计
图书条目标准图
21年品牌 40万+商家 超1.5亿件商品

敏捷硬件开发语言Chisel与数字系统设计

正版图书

26 3.8折 69 全新

库存3件

河北廊坊
认证卖家担保交易快速发货售后保障

作者梁峰

出版社电子工业出版社

出版时间2022-06

版次1

装帧其他

货号C143

上书时间2024-11-13

明杰书屋

三年老店
已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
图书标准信息
  • 作者 梁峰
  • 出版社 电子工业出版社
  • 出版时间 2022-06
  • 版次 1
  • ISBN 9787121434129
  • 定价 69.00元
  • 装帧 其他
  • 开本 16开
  • 页数 268页
  • 字数 429千字
【内容简介】
从20世纪90年代开始,利用硬件描述语言和综合技术设计实现复杂数字系统的方法已经在集成电路设计领域得到普及。随着集成电路集成度的不断提高,传统硬件描述语言和设计方法的开发效率低下的问题越来越明显。近年来逐渐崭露头角的敏捷化设计方法将把集成电路设计带入一个新的阶段。与此同时,集成电路设计也需要一种适应敏捷化设计方法的新型硬件开发语言。本书从实用性和先进性出发,较全面地介绍新型硬件开发语言Chisel和数字系统敏捷化设计方法。全书分两篇。第一篇共10章,主要内容包括Chisel语言简介、Chisel的数据类型、Chisel的模块与硬件类型、Chisel常用的硬件原语、如何将Chisel代码转换生成Verilog HDL代码及基本测试方法、Chisel的黑盒、用Chisel实现多时钟域设计、Chisel的函数应用及其他议题等。第二篇共9章,介绍编写Chisel需要掌握的Scala语言编程基础知识。读者可以根据自身情况,跳过第二篇Scala基础部分,直接学习Chisel的硬件开发功能。本书提供配套的课后练习参考答案、仿真程序代码等。本书可作为集成电路科学与工程、电子信息类、计算机类等相关专业的高年级本科生及研究生的教学用书,也可供从事集成电路设计的工程人员和EDA专业人员学习、参考。
【作者简介】
梁峰,西安交通大学微电子学院教授,博士生导师,从事高性能计算架构、高性能计算单元设计、高级设计方法学、数字信号处理算法及电路设计、智能软硬件系统开发、未来非冯诺依曼计算架构等研究,近年来主持国家、军队、省部级及企业合作项目十余项,与国内知名企业和研究所建立了广泛的合作关系,积累了一系列可工程化和产业化的科研成果,在各种学术期刊和国际会议上发表学术论文60多篇,指导本科生、研究生参加国家级竞赛获奖二十余项,累计培养了几十名研究生。
【目录】
第一篇  敏捷硬件开发语言Chisel

第1章  新型敏捷硬件开发语言——Chisel和Scala2

1.1  最好的宿主——什么是Scala2

1.2  敏捷开发——什么是Chisel2

1.3  Scala入门——让你的代码跑起来4

1.3.1  Scala的安装方法4

1.3.2  使用Scala解释器4

1.3.3  运行Scala脚本4

1.3.4  编译非脚本文件5

1.3.5  使用IDEA开发Scala项目5

1.3.6  总结7

1.4  章节安排7

1.5  参考文献8

1.6  课后练习8

第2章  Chisel入门及数据类型9

2.1  Chisel开发环境的安装步骤9

2.1.1  安装步骤9

2.1.2  开发环境测试10

2.1.3  小结11

2.2  Chisel的常见问题11

2.3  Chisel的变量与数据类型12

2.3.1  数据字面量与数据类型13

2.3.2  数据宽度14

2.3.3  类型转换14

2.3.4  向量15

2.3.5  混合向量16

2.3.6  包裹16

2.3.7  Chisel的内建操作符17

2.3.8  位宽推断18

2.3.9  Chisel泛型19

2.4  总结19

2.5  课后练习19

第3章  模块与硬件类型20

3.1  Chisel是如何赋值的20

3.2  端口(IO)21

3.2.1  定义端口列表21

3.2.2  翻转端口列表的方向21

3.2.3  整体连接22

3.2.4  动态修改端口23

3.3  模块24

3.3.1  模块分类24

3.3.2  定义模块26

3.3.3  例化模块27

3.3.4  例化多个模块28

3.4  线网28

3.4.1  Wire28

3.4.2  WireDefault29

3.4.3  未驱动的线网30

3.5  寄存器31

3.5.1  Reg31

3.5.2  RegNext32

3.5.3  RegInit32

3.5.4  RegEnable33

3.5.5  ShiftRegister34

3.5.6  寄存器实例34

3.5.7  异步寄存器39

3.6  寄存器组41

3.7  用when给电路赋值42

3.8  总结44

3.9  参考文献45

3.10  课后练习46

第4章  Chisel常用的硬件原语47

4.1  多路选择器47

4.2  优先编码器48

4.3  仲裁器48

4.4  队列51

4.5  ROM54

4.6  RAM55

4.7  带写掩码的RAM57

4.8  从文件读取数据到RAM58

4.9  计数器62

4.10  线性反馈移位寄存器66

4.11  状态机70

4.12  总结73

4.13  参考文献73

4.14  课后练习73

第5章  生成Verilog HDL代码与基本测试74

5.1  生成Verilog HDL代码74

5.1.1  execute74

5.1.2  emitVerilog76

5.2  增加参数的方法77

5.2.1  Firrtl传递参数77

5.2.2  给主函数传递参数78

5.3  编写chisel-iotesters测试79

5.4  运行chisel-iotesters测试81

5.5  使用chiseltest进行测试82

5.6  总结85

5.7  课后练习85

第6章  黑盒86

6.1  例化黑盒86

6.2  复制Verilog文件88

6.3  内联Verilog文件90

6.4  inout端口91

6.5  总结92

6.6  课后练习92

第7章  多时钟域设计94

7.1  没有隐式端口的模块94

7.2  定义一个时钟域和复位域95

7.2.1  withClockAndReset95

7.2.2  withClock和withReset96

7.2.3  复位信号的三种类型103

7.3  使用时钟负沿和低有效的复位信号103

7.4  示例:异步FIFO105

7.5  总结108

7.6  参考文献108

7.7  课后练习108

第8章  函数的应用109

8.1  用函数抽象组合逻辑109

8.2  用工厂方法简化模块的例化110

8.3  用Scala的函数简化代码113

8.4  Chisel的打印函数114

8.4.1  Scala风格114

8.4.2  C风格116

8.5  使用打印函数实例116

8.6  Chisel的对数函数119

8.7  与硬件相关的函数119

8.8  隐式类的应用122

8.9  递归函数的应用123

8.10  总结125

8.11  参考文献125

8.12  课后练习125

第9章  其他议题126

9.1  重命名模块名称126

9.2  命名规则127

9.3  重命名模块内信号名称131

9.3.1  前缀131

9.3.2  suggestName132

9.3.3  forceName133

9.4  参数化的Bundle135

9.5  FixedPoint137

9.6  assert138

9.7  总结140

9.8  参考文献140

9.9  课后练习140

第10章  riscv-mini141

10.1  riscv-mini简介141

10.2  数据通路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参数化机制149

10.4.1  Field[T]类149

10.4.2  View类150

10.4.3  Parameters类及其伴生对象151

10.4.4  Config类152

10.5  参数化机制的应用152

10.6  总结157

10.7  参考文献157

10.8  课后练习158

第二篇  Scala语言编程基础知识

第11章  Scala的变量及函数160

11.1  变量定义与基本类型160

11.1.1  定义一个变量160

11.1.2  Scala的基本类型161

11.1.3  小结164

11.2  函数及其几种形式164

11.2.1  定义一个函数164

11.2.2  方法166

11.2.3  嵌套函数166

11.2.4  函数字面量166

11.2.5  部分应用函数167

11.2.6  闭包168

11.2.7  函数的特殊调用形式169

11.2.8  柯里化170

11.2.9  传名参数170

11.2.10  小结172

11.3  参考文献172

第12章  Scala面向对象编程173

12.1  类和对象173

12.1.1  类173

12.1.2  类的构造方法174

12.1.3  重写toString方法175

12.1.4  方法重载176

12.1.5  类参数176

12.1.6  单例对象与伴生对象176

12.1.7  工厂对象与工厂方法178

12.1.8  apply方法178

12.1.9  主函数179

12.1.10  小结180

12.2  操作符即方法180

12.2.1  操作符在Scala中的解释180

12.2.2  三种操作符181

12.2.3  操作符的优先级和结合性183

12.2.4  预设操作符184

12.2.5  对象的相等性184

12.2.6  小结185

12.3  类继承185

12.3.1  Scala的类继承185

12.3.2  调用超类的构造方法186

12.3.3  重写超类的成员187

12.3.4  子类型多态与动态绑定189

12.3.5  抽象类189

12.3.6  关于多重继承190

12.3.7  Scala类的层次结构190

12.3.8  小结192

12.4  特质192

12.4.1  什么是特质192

12.4.2  特质的层次193

12.4.3  混入特质的简便方法194

12.4.4  特质的线性化叠加计算194

12.4.5  小结197

12.5  参考文献197

第13章  包和导入198

13.1  包198

13.2  包的层次和精确代码访问198

13.3  import导入201

13.4  自引用201

13.5  访问修饰符202

13.6  包对象203

13.7  总结203

13.8  参考文献203

第14章  集合204

14.1  数组204

14.1.1  数组的定义204

14.1.2  数组的索引与元素修改204

14.2  列表205

14.2.1  列表的定义205

14.2.2  列表添加数据205

14.2.3  列表子对象Nil206

14.3  数组缓冲与列表缓冲207

14.4  元组208

14.4.1  元组的定义208

14.4.2  元组的索引208

14.4.3  元组作为函数的入口参数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  map211

14.8.2  foreach211

14.8.3  zip212

14.8.4  reduce212

14.8.5  fold212

14.8.6  scan212

14.9  总结212

第15章  内建控制结构213

15.1  if表达式213

15.2  while循环214

15.3  for表达式与for循环214

15.4  用try表达式处理异常216

15.4.1  抛出一个异常216

15.4.2  try-catch217

15.4.3  finally217

15.5  match表达式217

15.6  关于continue和break218

15.7  关于变量的作用域219

15.8  总结220

15.9  参考文献220

第16章  模式匹配221

16.1  样例类和对象221

16.2  模式匹配222

16.3  模式的种类222

16.3.1  通配模式222

16.3.2  常量模式223

16.3.3  变量模式223

16.3.4  构造方法模式224

16.3.5  序列模式225

16.3.6  元组模式225

16.3.7  带类型的模式226

16.3.8  变量绑定模式226

16.4  模式守卫226

16.5  密封类227

16.6  可选值228

16.7  模式匹配的另类用法228

16.8  偏函数229

16.9  总结230

16.10  参考文献230

第17章  类型参数化231

17.1  var类型的字段231

17.2  类型构造器232

17.3  型变注解233

17.4  检查型变注解233

17.5  类型构造器的继承关系235

17.6  上界和下界235

17.7  方法的类型参数236

17.8  对象私有数据236

17.9  总结238

第18章  抽象成员239

18.1  抽象成员239

18.2  初始化抽象val字段240

18.2.1  预初始化字段241

18.2.2  惰性的val字段242

18.3  抽象类型243

18.4  细化类型244

18.5  Scala的枚举245

18.6  总结246

18.7  参考文献246

第19章  隐式转换与隐式参数247

19.1  隐式定义的规则247

19.2  隐式地转换到期望类型248

19.3  隐式地转换接收端248

1
点击展开 点击收起

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP