- 第1章 超大规模集成电路VLSI @18
- 1.1 模拟电路与数字电路 @18
- 1.2 半导体 @20
- 1.3 晶体管 @23
- 1.4 MOS场效应管与CMOS @24
- 1.5 集成电路 @27
- 1.6 ASIC和FPGA @30
- 第2章 硬件描述语言HDL @35
- 2.1 RTL及其综合 @36
- 2.2 VHDL语言 @39
- 2.3 Verilog和System Verilog语言 @45
- 2.4 高级编程语言与高级HDL @53
- 2.5 Chisel语言与Scala语言 @56
- 2.5.1 Scala语言简介 @57
- 2.5.2 Chisel语言的内嵌 @60
- 第3章 Chisel编译的前端 @73
- Annotation与编译过程 @73
- 从命令行开始 @77
- Chisel的Shell和命令行选项 @82
- Chisel的编译过程 @97
- 第4章 Chisel代码的Elaborate和Convert @122
- Chisel代码的Elaborate @122
- Chisel输出的Convert @145
- 第5章 Chisel的基本语素 @162
- 5.1 组合电路 @162
- 5.2 Chisel的Data类 @166
- 5.3 Bundle和Vec @171
- 5.4 Wire @179
- 5.5 比较器 @181
- 5.6 Mux @183
- 5.7 PriorityMux @184
- 5.8 OneHot @186
- 5.9 Mux1H @187
- 5.10 Bundle上的信号传输 @190
- 5.11 When语句 @195
- 5.12 寄存器 @200
- 5.13 移位寄存器 @207
- 5.14 Counter @210
- 5.15 存储器Mem @213
- 5.16 RawModule和Module @219
- 5.17 BlackBox和ExtModule @230
- 5.18 Pipe @236
- 5.19 PipelineConnect @240
- 5.20 Queue @243
- 第6章 Chisel编译的后端 @248
- 6.1 VerilogEmitter @264
- 6.2 第一步:对中间结果的预处理runTransforms() @271
- 6.3 第二步:emit_verilog() @286
- 6.3.1 build_netlist() @286
- 6.3.2 build_ports() @290
- 6.3.3 build_streams() @291
- 6.3.4 emit_streams() @303
- 第7章 RISC处理器 @310
- 7.1 RISC-1和RISC-2 @316
- 7.2 SPARC @320
- 7.3 MIPS @322
- 7.4 ARM @325
- 7.4.1 ARM的Thumb指令 @330
- 7.4.2 ARM的DSP扩充 @331
- 7.4.3 ARM的SIMD扩充 @331
- 7.4.4 ARM的Jazelle指令 @331
- 7.4.5 ARM的安全性扩充 @331
- 7.4.6 ARM的客户指令 @332
- 7.4.7 ARM的Cortex系列 @333
- 7.5 其它RISC处理器 @335
- 第8章 计算机的微结构 @336
- 8.1 时钟频率的提高 @338
- 8.2 指令执行的流水线化 @339
- 8.3 数据依赖及延迟 @343
- 8.4 条件转移的预判 @344
- 8.5 深度流水线 @347
- 8.6 指令的脱序(Out-Of-Order)执行 @349
- 8.7 Reorder Buffer @350
- 8.8 Reservation Station @350
- 8.9 寄存器重命名 @352
- 8.10 CISC指令的流水线困境 @352
- 8.11 超级标量流水线 @353
- 8.12 超标量流水线中的转移预判 @356
- 8.13 超标量流水线中的数据依赖和脱序执行 @356
- 8.14 超标量流水线中的指令派发 @357
- 8.15 VLIW/EPIC结构 @357
- 8.16 访存延迟和多线程 @360
- 8.17 香山SoC的微结构 @361
- 第9章 RISC-V的系统结构及其实现 @363
- 9.1 RISC-V的基本ISA @370
- 9.2 RV32M/RV64M标准扩充 @372
- 9.3 原子操作标准扩充RV32A/RV64A @373
- 9.3.1 存储一致性的问题 @373
- 9.3.2 缓存一致性的问题 @380
- 9.3.3 操作次序的改变与存储模型 @382
- 9.4 浮点运算标准扩充RV32F/RV32D/RF32Q @385
- 9.5 压缩指令扩充RV32C @390
- 9.6 向量运算标准扩充RV32V @394
- 9.7 CSR指令 @395
- 9.8 RISC-V处理器的运行模式 @397
- 9.9 特权指令 @399
- 9.10 虚存映射 @401
- 9.11 CSR寄存器 @404
- 9.12 物理存储熟悉PMA与物理存储保护PMP @406
- 9.13 高管态(Hypervisor模式) @408
- 第10章 参数协调与Diplomacy @412
- 10.1 参数的一致化 @417
- 10.2 LazyModule @453
- 10.3 节点间的绑定 @460
- 10.4 节点间的instantiate @462
- 第11章 存储子系统与TileLink @472
- 11.1 TLBuffer @512
- 11.2 TLXbas @516
- 11.3 TLArbiter @528
- 第12章 外设与AXI4 @535
- 12.1 AXI4 @536
- 12.2 AXI4Xbar @549
- 12.3 AXI4Arbiter @555
- 12.4 AXI4ToTL @556
- 12.5 TLToAXI4 @562
- 12.6 AXI4Deinterleaver @568
- 12.7 AXI4UserYanker @572
- 12.8 AXI4Fragmenter @574
- 12.9 AXI4IdIndexer @580
- 12.10 TLWidthWidget @582
- 第13章 时钟与时钟域 @590
- 13.1 计算机系统的时钟 @590
- 13.2 时钟信号的自动配备 @596
- 13.3 时钟域 @603
- 13.4 跨时钟域的信号对接 @610
- 13.5 CreditedCrossing @612
- 13.6 AsyncCrossing @616
- 13.7 RationalCrossing @620
- 第14章 配置与参数 @627
- 14.1 硬件设计的参数化 @627
- 14.2 参数的搜索与覆盖 @630