• 第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