新書推薦:

《
你的代谢还好吗:控制“五高”饮食运动法
》
售價:NT$
254

《
战国史料编年辑证(全二册)(杨宽著作集)
》
售價:NT$
1265

《
流动的世界想象:中国当代电影与视觉文化
》
售價:NT$
347

《
传播与帝国:1860—1930 年的媒体、市场与全球化(跨洲史料详尽呈现全球通信全景,资本视角重新定
》
售價:NT$
458

《
不再为他人而活:接纳自我的阿德勒心理学
》
售價:NT$
301

《
马可波罗和他的世界 蒙古世纪全球史陆海书系
》
售價:NT$
398

《
更生:中国文明与人文精神重塑
》
售價:NT$
755

《
四海之内:中国历史四十讲
》
售價:NT$
454
|
| 編輯推薦: |
本书立足工程实践,贯穿大量设计案例,实现 “语法学习+系统设计”的提升。从简单的组合逻辑、时序逻辑电路,到复杂的 FIFO 缓冲器、串口模块、Leros 处理器,每个示例均提供完整代码与详细设计思路。书中还清晰地呈现 Chisel 开发环境搭建、仿真测试、Verilog 代码生成等全流程操作,配套波形测试、打印调试、多线程测试等实用技巧,让读者能够快速上手并应用于实际项目。 本书结构层层递进,构建起从基础到进阶的完整知识体系。开篇介绍数字系统设计基本概念与发展趋势,帮助读者建立宏观认知;接着,系统讲解 Chisel 数据类型、模块定义、硬件生成器等核心要素,兼顾 Scala 语言配置技巧;然后,聚焦输入信号处理、有限状态机、总线互联等复杂模块设计,最终延伸至通用化 FPGA 逻辑结构的探索。这种“从入门到精通”的梯度化内容设计,既适合零基础学习者,也能为工程师提供创新思路。 针对 Chisel 语言生态尚未完善的现状,本书提供全方位学习支持。不仅详细说明 IntelliJ IDEA、Icarus Verilog 等工具的安装与使用,还配套知乎专栏“数字系统设计与 Chisel 实现”,
|
| 內容簡介: |
|
本书从实用性角度出发,对基于Chisel语言的数字系统设计的方法、技术和相关工具进行了系统介绍,主要内容包括:数字系统设计的基础知识、Chisel语言开发环境及仿真测试方法、使用Chisel语言进行数字系统设计的要素、使用Scala语言配置硬件生成的相关方法、复杂的数字系统功能模块的实例,以及对通用化FPGA逻辑结构的展望。书中引入大量设计示例,帮助读者在学习Chisel语法的同时,系统掌握数字系统设计的相关知识。本书既适合作为高校计算机类专业数字系统设计相关课程的教材,也适合从事数字系统设计相关工作的工程师阅读。
|
| 關於作者: |
|
刘苍,毕业于国防科学技术大学计算机学院,工学博士。现任教于海军工程大学,主要研究方向为芯片开发、数字系统设计、微电子学与固体电子学等,2、发表发表学术论文二十余篇,其中以第一作者发表SCI/EI检索论文8篇;主持国家自然科学基金、湖北省自然科学基金各一项,参与多个国家级课题;申请国家发明专利十余项。Chisel语言生态社区的积极贡献者,在知乎等技术社区发表关于Chisel语言的系列文章。
|
| 目錄:
|
目 录 前言 第 1 章 数字系统设计基础 1 1.1 数字系统设计概述 1 1.1.1 什么是数字信号 1 1.1.2 什么是数字电路 2 1.1.3 什么是数字系统 3 1.1.4 现代数字系统的设计流程 3 1.2 基于 FPGA 的数字系统设计 概述 5 1.2.1 FPGA 概述 5 1.2.2 基于 FPGA 的数字系统设计流程 7 1.3 数字系统设计的发展趋势 8 1.3.1 基于框架的低代码设计 8 1.3.2 领域专用处理器 9 1.3.3 异构计算架构 9 1.3.4 安全性设计 10 第 2 章 Chisel 语言概述 11 2.1 FPGA 逻辑设计方法 11 2.1.1 原理图输入法 11 2.1.2 VHDL 设计语言 12 2.1.3 Verilog 设计语言 13 2.1.4 Chisel 设计语言 13 2.1.5 各种设计方法的对比 15 2.2 开发工具的安装 16 2.2.1 IntelliJ IDEA 的安装 16 2.2.2 Icarus Verilog 的安装 19 2.3 使用 IntelliJ IDEA 进行 Chisel 逻辑设计的流程 24 第 3 章 基于 Chisel 语言的程序构建 和基础测试 28 3.1 使用 sbt 构建工程 28 3.1.1 代码组织 28 3.1.2 运行 sbt 脚本 30 3.1.3 生成 Verilog 代码文件 31 3.1.4 工具流 32 3.2 基于 Chisel 语言进行测试33 3.2.1 ScalaTest 33 3.2.2 ChiselTest 35 3.2.3 波形测试 40 3.2.4 打印调试 41 第 4 章 高阶测试及验证 43 4.1 调试 43 4.2 Chisel 设计的测试 43 4.3 多线程测试 48 4.4 仿真验证模拟器 49 第 5 章 数字系统的组成 51 5.1 Chisel 的数据类型和常数 51 5.2 组合逻辑电路 53 5.2.1 逻辑运算 53 VI 5.2.2 算术运算 54 5.2.3 多路选择器 56 5.3 寄存器 57 5.4 Bundle 和 Vec 59 5.4.1 Bundle 59 5.4.2 Vec 61 5.5 Wire、Reg 和 IO 66 第 6 章 模块的定义及例化 68 6.1 Chisel 语言的模块 68 6.2 模块嵌套 71 6.3 算术逻辑单元 74 6.4 批量连接 75 6.5 例化第三方模块 77 第 7 章 组合逻辑电路设计 81 7.1 组合逻辑电路 81 7.2 译码器 83 7.3 编码器 85 7.4 仲裁器 87 7.5 优先级编码器 90 7.6 比较器 90 第 8 章 时序逻辑电路设计 92 8.1 寄存器 92 8.2 计数器 96 8.2.1 递增计数器和递减计数器的 设计 97 8.2.2 通过计数器构造时序 99 8.2.3 计数器优化 100 8.2.4 定时器 101 8.2.5 脉冲宽度调制 102 8.3 移位寄存器 104 8.3.1 并行输出的移位寄存器 105 8.3.2 并行输入的移位寄存器 105 8.4 存储器 106 第 9 章 硬件生成器 110 9.1 Scala 语言简介 110 9.2 使用函数实现轻量级模块 112 9.3 含配置参数的数字电路设计 114 9.3.1 简单的参数化配置 114 9.3.2 样例类 115 9.3.3 含类型参数的函数 116 9.3.4 含类型参数的模块 118 9.3.5 参数化的 Bundle 类型 119 9.4 生成组合逻辑 120 9.5 继承的使用 122 9.6 使用函数式编程进行硬件 生成 125 9.6.1 搜索最小值 126 9.6.2 仲裁树 128 第 10 章 输入信号处理 133 10.1 异步输入 133 10.2 输入信号去抖动 134 10.3 输入信号滤波 136 10.4 将输入信号处理封装为函数 137 10.5 同步复位 138 第 11 章 有限状态机 139 11.1 基本有限状态机 139 11.2 快速输出的 Mealy 型有限状 态机 143 VII 11.3 Moore 型有限状态机和 Mealy 型有限状态机的对比 146 第 12 章 状态机通信互联 149 12.1 闪灯程序示例 149 12.2 含数据通路的状态机 153 12.3 ready/valid 流控接口 158 第 13 章 设计示例 162 13.1 FIFO 缓冲器 162 13.2 串口 165 13.3 FIFO 的设计变体 171 13.3.1 参数化的 FIFO 171 13.3.2 基于标准化接口设计 BubbleFifo 173 13.3.3 双缓冲 FIFO 缓冲器 174 13.3.4 基于寄存器堆的 FIFO 缓 冲器 176 13.3.5 基于片上存储器的 FIFO 缓冲器 179 13.4 多时钟域存储器 181 第 14 章 互联 183 14.1 经典的微处理器总线 183 14.2 片上总线 184 14.2.1 组合式握手协议 185 14.2.2 流水线握手协议 185 14.2.3 I/O 外设设计示例 187 14.2.4 存储器映射外设设计示例 188 14.3 总线和接口标准 191 14.3.1 Wishbone 总线 191 14.3.2 AXI 总线 192 14.3.3 Open Core Protocol 标准 192 14.3.4 其他总线标准 192 第 15 章 Leros 处理器设计 194 15.1 指令集 194 15.2 数据通路 197 15.3 算术逻辑单元 198 15.4 指令译码单元 203 15.5 汇编指令 206 15.6 指令存储器 209 15.7 数据通路的状态机设计 209 第 16 章 通用化 FPGA 逻辑结构 设计 213 16.1 为什么进行通用化 FPGA 逻辑结构设计 213 16.2 可重构通用化 FPGA 逻辑 设计 214 16.2.1 总体设计 214 16.2.2 数据交换模块 215 16.2.3 信号转换模块 216 16.3 原型系统设计和验证 217 16.3.1 可重构通用化 FPGA 逻辑结构 原型系统 217 16.3.2 下一步工作计划 218 16.4 对通用化、标准化逻辑设计 的展望 219 附录 A Chisel 3.6 手册 220 A.1 变量说明 220 A.2 关键词 220 A.3 wire 型信号创建及赋值 220 VIII A.4 信号构造方法 220 A.5 枚举 Enum 的用法 221 A.6 集合类型 221 A.6.1 Bundle 方法 221 A.6.2 Vec 方法 223 A.7 操作符 224 A.8 代码生成 225 A.9 强制类型转换 226 A.10 标准单元库 227 A.10.1 位操作 227 A.10.2 状态组件及模块的标准单 元库 227 A.10.3 接口 228 A.11 模块的定义和例化 230 参考文献 231
|
| 內容試閱:
|
前 言 人类在大约 35 000 ~ 50 000 年前学会使用语言,从而开启了人类历史上的第一次 信息技术革命。之后的每次信息技术革命都是通过大幅提升交流信息和应用信息的能 力,对人类生产力和生产关系的方方面面产生重要影响。从 20 世纪 60 年代开始,随 着计算机技术和通信技术的结合,人类历史上第五次信息技术革命开启,从而进入了 信息时代,推动了以数字化、计算机、通信技术为代表的现代信息技术的发展。现代 信息技术和现代数字系统相互依存、相互促进,现代信息技术的高速发展离不开现代 数字系统的支撑和创新,现代数字系统的发展也离不开现代信息技术的需求和应用。 硬件描述语言(Hardware Description Language,HDL)是现代数字系统设计中不 可或缺的部分,主要用于进行数字芯片的前端设计和现场可编程门阵列(Field Programmable Gate Array,FPGA)的逻辑设计,对计算机、通信以及控制等领域的快速 发展起到支撑作用。未来,数字系统将朝着集成度更高、系统更复杂、功耗更低以及 应用领域更细分的方向不断发展。登纳德缩放定律的失效和摩尔定律发展的减缓,使 我们对数字系统领域创新的需求更加迫切。各大半导体公司虽然仍在竭尽全力提高芯 片性能,但性能提升的同时也带来成本的急剧上升。重要原因之一是,采用诞生并成 熟于 20 世纪的传统 HDL(Verilog 和 VHDL)进行的数字系统设计,存在开发效率低 下、代码量大、调试复杂等问题。因此,对新型 HDL 的探索、创新和推广应用具有重 要意义。 作为新型 HDL 之一的 Chisel(Constructing Hardware In a Scala Embedded Language) 语言诞生于 2012 年,经历多个版本的更新和迭代,当前最新的 3.6 版本于 2023 年 4 月发布。相比基于传统的 HDL 进行数字系统设计,Chisel 语言具有更高的抽象层 次、更灵活的设计方法以及更好的代码重用性,可以显著提升开发效率,使设计师能 够在更短的时间内完成更多的工作,并通过重复使用来分摊验证成本,有效地为设计 单位节约一次性工程(Non-Recurring Engineering,NRE)费用。Chisel 语言的这些优 势不仅适合成熟的商业公司用来进行产品研发,还非常适合学生和小团队进行创新及 工程实现。因此,Chisel 语言受到学术界和工业界的广泛关注。 本书从实用性角度出发,对基于 Chisel 语言的数字系统设计进行了系统介绍。书 中引入了大量设计示例,读者在学习 Chisel 语法的同时,能够系统掌握数字系统设计 的相关知识。其中,第 1 章对数字系统设计的基本概念和发展趋势进行介绍,帮助读 IV 者对数字系统设计建立宏观的认识。第 2 章至第 4 章介绍 Chisel 语言的开发环境及 仿真测试方法,并给出简单的应用示例,方便读者在后续学习过程中建立 Chisel 工程 并进行仿真验证。第 5 章至第 8 章介绍使用 Chisel 语言进行数字系统设计的基本要 素。第 9 章系统地介绍使用 Scala 语言配置硬件生成的相关方法,熟练运用该方法可 以显著提升代码的灵活性和可重用性。第 10 章至第 15 章介绍了一些较复杂的数字系 统功能模块示例,在给出设计代码的同时详细介绍了设计思路,从而进一步提升读者 的工程实践能力。最后一章介绍了作者提出的一种通用化 FPGA 逻辑结构,这项工作 在 FPGA 的模块级通用化研究方面迈出了一小步,希望抛砖引玉,激发读者对数字系 统设计标准化和通用化的思考。 Chisel 语言从诞生至今已超过十年,但仍处在不断完善和发展的阶段。Chisel 语 言的诸多优势使其有望成为主流的逻辑设计语言之一。当前,Chisel 语言最大的困难 在于:相比成熟的 Verilog 和 VHDL,其配套的集成开发环境生态和应用生态尚在建立 过程中。希望本书的出版能对 Chisel 语言的推广及应用生态的建立起到积极作用。此 外,作者为本书开设了知乎专栏“数字系统设计与 Chisel 实现”,旨在介绍最新版本的 软件和安装步骤、对调试中遇到的问题及解决思路进行总结,以及介绍本书中的部分 示例和仿真结果,从而为 Chisel 语言生态的建设贡献力量。 道阻且长,行则将至;行而不辍,未来可期。一代代数字系统研究人员先后提出 了多种高级语言数字逻辑设计方案以替代 Verilog 和 VHDL,但均未取得决定性成功, 但是使用高级语言进行数字逻辑设计符合历史的发展规律。Chisel 语言作为一次新的 尝试,在数字系统设计的历史长河中只是一朵小浪花,但我们唯有不断尝试,才能探 索出最完美的设计语言! 由于时间仓促,加之作者水平有限,书中的错误和不妥之处在所难免,恳请广大 读者批评指正!
|
|