书籍详情
RISC-V处理器与片上系统设计:基于FPGA与云平台的实验教程
作者:暂缺
出版社:电子工业出版社
出版时间:2020-12-01
ISBN:9787121401411
定价:¥98.00
购买这本书可以去
内容简介
本书将线下的FPGA开发板与线上的云平台结合,完成基于开源RISC-V处理器的SiFive Freedom E300片上系统,以及E21处理器配合云平台设计方法的相关实验教程。并用Chisel编程的方式与FPGA硬件,完成国产RT-Thread操作系统验证的移植。全书包含三大部分内容:首先讲述了基于实验所用Digilent Nexys板级硬件设计平台和Vivado开发工具。其次是介绍Verilog HDL、Chisel HCL和一种由国内自主开发的Coffee-HDL这三种硬件描述语言。*后是三种实验教程的设计与实现方法,包含开源的SiFive Freedom E300片上系统的实验;以英伟达开源的深度学习硬件架构NVDLA为例,介绍如何在Freedom E300平台上集成Verilog IP的方法及介绍SiFive E21处理器IP的使用方式与国内自主开发云端SoC开发平台的实验;移植国内自主开发RT-Thread实时多任务操作系统的原理与应用到SiFive Freedom E300片上系统的实验。
作者简介
陈宏铭博士拥有超过二十年的半导体相关行业经验,目前担任上海赛昉科技的技术市场资深总监。特别专注于物联网、人工智能、超算与RISC-V处理器等领域的技术趋势,负责协助中国大陆与港澳台的客户。在加入上海赛昉科技之前,陈博士曾担任创意电子的华东区业务总监以及智原科技的技术与市场总监,负责评估客户设计与市场规划。更早前还担任过明导国际亚太区产品专家,益华电脑应用工程师与联阳半导体数字设计工程师。__eol__陈博士于台湾清华大学获得了电机工学学士与微电子专业工学硕士学位,在北京大学获得了微电子专业理学博士学位。同时也担任武汉大学电子信息学院兼职教授,江南大学物联网工程学院企业讲师,教授本科生有关芯片设计、制造、封测与RISC-V处理器相关的入门知识。
目录
第1章 RISC-V的历史和机遇 1
1.1 RISC-V发明团队与历史 1
1.1.1 商业公司的指令集架构载浮载沉 4
1.1.2 RISC-V指令集架构有什么不同 6
1.1.3 RISC-V发展史及其标志性事件 7
1.2 RISC-V基金会成长的历史 8
1.2.1 RISC-V基金会的成员介绍 9
1.2.2 RISC-V基金会推动20个重点领域的技术 11
1.2.3 RISC-V基金会标准制定过程及工作群组机制 12
1.2.4 RISC-V国际协会的诞生 13
1.3 RISC-V的生态系统 13
1.3.1 RISC-V的开发板和生态系统 14
1.3.2 部分RISC-V社区生态的支持厂商 18
1.3.3 芯片设计业界的RISC-V产品进展 22
1.4 SiFive研发团队技术沿革 24
1.4.1 Rocket Chip SoC生成器 24
1.4.2 使用Chisel语言编写Rocket Chip生成器 26
1.4.3 Rocket标量处理器 27
1.4.4 SiFive强力推动RISC-V生态发展 28
第2章 RISC-V指令集体系架构介绍 32
2.1 引言 32
2.2 RISC-V架构特性 32
2.2.1 简洁性 33
2.2.2 模块化 33
2.3 指令格式 35
2.3.1 指令长度编码 35
2.3.2 指令格式 36
2.4 寄存器列表 37
2.4.1 通用寄存器 37
2.4.2 控制和状态寄存器 38
2.4.3 程序计数器 39
2.5 地址空间与寻址模式 39
2.5.1 地址空间 39
2.5.2 小端格式 40
2.5.3 寻址模式 40
2.6 内存模型 40
2.7 特权模式 41
2.8 中断和异常 42
2.8.1 中断和异常概述 42
2.8.2 RISC-V机器模式下的中断架构 42
2.8.3 机器模式下中断和异常的处理过程 43
2.9 调试规范 44
2.10 RISC-V未来的扩展子集 45
2.10.1 B标准扩展:位操作 45
2.10.2 H特权态架构扩展:支持管理程序(Hypervisor) 45
2.10.3 J标准扩展:动态翻译语言 45
2.10.4 L标准扩展:十进制浮点 46
2.10.5 N标准扩展:用户态中断 46
2.10.6 P标准扩展:封装的单指令多数据(Packed-SIMD)指令 46
2.10.7 Q标准扩展:四精度浮点 46
2.10.8 V标准扩展:基本矢量扩展 46
2.11 RISC-V指令列表 46
2.11.1 I指令子集 47
2.11.2 M指令子集 52
2.11.3 A指令子集 53
2.11.4 F指令子集 55
2.11.5 D指令子集 56
2.11.6 C指令子集 57
第3章 现场可编程逻辑门阵列(FPGA)设计流程 60
3.1 Xilinx FPGA概述与设计流程 60
3.1.1 Xilinx FPGA的基本结构 61
3.1.2 Diligent Nexys A7 FPGA开发平台介绍 63
3.1.3 FPGA的设计流程 64
3.2 Xilinx Vivado集成环境安装与开发流程 67
3.2.1 Vivado集成环境的安装 68
3.2.2 Vivado集成环境的开发流程 76
第4章 SiFive Freedom E300 SoC的原理与实验 92
4.1 Verilog HDL语言简介 92
4.1.1 数据类型 93
4.1.2 数据表示 95
4.1.3 运算符及表达式 96
4.1.4 Verilog HDL常用语法 101
4.1.5 系统函数和任务 106
4.1.6 Verilog HDL语言规范 111
4.1.7 用于Verilog HDL设计的Xilinx 7系列 FPGA原语使用方法 118
4.1.8 小结 128
4.2 Chisel HCL语言简介 129
4.2.1 环境安装 130
4.2.2 Scala编程语言快训 132
4.2.3 Chisel硬件构造语言快训 138
4.2.4 小结 162
4.3 SiFive Freedom E300平台架构介绍 162
4.3.1 E31 RISC-V内核概述 164
4.3.2 中断架构 170
4.3.3 内核本地中断器(CLINT) 175
4.3.4 调试支持 176
4.3.5 SiFive TileLink总线介绍 181
4.4 SiFive Freedom E300在Nexys A7上的开发流程 204
4.4.1 SiFive Freedom SoC生成器简介 204
4.4.2 Verilog IP集成方法与开发流程 210
4.4.3 Freedom E300在Nexys A7上的开发流程 215
第5章 SiFive E21处理器和SoC设计云平台的原理与实验 222
5.1 SiFive E21处理器 222
5.1.1 缩略语和术语列表 223
5.1.2 E21 RISC-V内核概述 224
5.1.3 内存映射 229
5.1.4 中断架构 229
5.1.5 内核本地中断器 236
5.1.6 调试支持 240
5.1.7 使用E21内核评估套件 245
5.2 Coffee-HDL语言简介 258
5.2.1 开发Coffee-HDL语言的动机 258
5.2.2 文件和模块 259
5.2.3 语言要素 261
5.2.4 数据类型 262
5.2.5 操作符 263
5.2.6 位选择和部分选择 264
5.2.7 表达式 264
5.2.8 语句 265
5.2.9 函数 267
5.2.10 LRU算法模块设计示例 267
5.2.11 E21_SOC_FPGA集成模块设计示例 269
5.3 ezchip? SoC在线设计云平台 271
5.3.1 IC Studio主界面布局 272
5.3.2 IC Studio的使用 276
5.3.3 ezchip?可配置制模块 277
5.3.4 生成代码 279
5.3.5 基于SiFive E21 处理器的SoC设计实验 280
5.3.6 基于SiFive E21 处理器的FPGA验证实验 285
第6章 RT-Thread实时多任务操作系统的原理与应用 298
6.1 SiFive Freedom Studio集成开发调试环境安装与介绍 298
6.1.1 Freedom Studio简介与安装 298
6.1.2 启动Freedom Studio 300
6.1.3 创建sifive-welcome项目 301
6.1.4 配置sifive-welcome项目 303
6.1.5 编译sifive-welcome项目 305
6.1.6 运行sifive-welcome项目 306
6.1.7 调试程序 312
6.2 移植RT-Thread实时多任务操作系统的原理 313
6.2.1 嵌入式操作系统概述 313
6.2.2 RT-Thread实时多任务操作系统介绍 315
6.2.3 RT-Thread的底层结构与移植 317
6.3 RT-Tread的UART驱动结构分析、移植及应用 322
6.3.1 RT-Tread外设驱动 322
6.3.2 UART驱动结构分析 323
6.3.3 UART的移植与应用 330
6.4 完成RT-Thread实时操作系统的编译与运行 330
6.4.1 工具准备 331
6.4.2 修改路径与代码 331
6.4.3 文件编译 333
6.4.4 文件烧录 333
附录A 虚拟机与Ubuntu Linux操作系统的安装 335
A.1 虚拟机的安装 335
A.1.1 虚拟机简介 335
A.1.2 VMware安装(以VMware15版本为例) 336
A.2 Ubuntu Linux操作系统安装 337
A.2.1 Ubuntu简介 337
A.2.2 Ubuntu虚拟机的下载和安装 337
A.2.3 虚拟机信息 339
附录B 基于Nexys A7贪吃蛇游戏的设计与实现 341
B.1 硬件设备概述 341
B.2 设计要求 342
B.3 硬件设计 342
B.4 任务设计 344
B.4.1 程序结构 344
B.4.2 任务的数据结构设计 345
B.4.3 全局变量的使用 345
B.4.4 状态机的使用 345
B.5 程序设计详解 346
B.5.1 top模块的使用 346
B.5.2 display模块的使用 346
B.5.3 snake模块的使用 349
B.5.4 fsm模块的使用 351
B.5.5 turn模块的使用 352
B.5.6 apple模块的使用 353
B.5.7 score模块的使用 354
B.6 测试数据 355
参考文献
1.1 RISC-V发明团队与历史 1
1.1.1 商业公司的指令集架构载浮载沉 4
1.1.2 RISC-V指令集架构有什么不同 6
1.1.3 RISC-V发展史及其标志性事件 7
1.2 RISC-V基金会成长的历史 8
1.2.1 RISC-V基金会的成员介绍 9
1.2.2 RISC-V基金会推动20个重点领域的技术 11
1.2.3 RISC-V基金会标准制定过程及工作群组机制 12
1.2.4 RISC-V国际协会的诞生 13
1.3 RISC-V的生态系统 13
1.3.1 RISC-V的开发板和生态系统 14
1.3.2 部分RISC-V社区生态的支持厂商 18
1.3.3 芯片设计业界的RISC-V产品进展 22
1.4 SiFive研发团队技术沿革 24
1.4.1 Rocket Chip SoC生成器 24
1.4.2 使用Chisel语言编写Rocket Chip生成器 26
1.4.3 Rocket标量处理器 27
1.4.4 SiFive强力推动RISC-V生态发展 28
第2章 RISC-V指令集体系架构介绍 32
2.1 引言 32
2.2 RISC-V架构特性 32
2.2.1 简洁性 33
2.2.2 模块化 33
2.3 指令格式 35
2.3.1 指令长度编码 35
2.3.2 指令格式 36
2.4 寄存器列表 37
2.4.1 通用寄存器 37
2.4.2 控制和状态寄存器 38
2.4.3 程序计数器 39
2.5 地址空间与寻址模式 39
2.5.1 地址空间 39
2.5.2 小端格式 40
2.5.3 寻址模式 40
2.6 内存模型 40
2.7 特权模式 41
2.8 中断和异常 42
2.8.1 中断和异常概述 42
2.8.2 RISC-V机器模式下的中断架构 42
2.8.3 机器模式下中断和异常的处理过程 43
2.9 调试规范 44
2.10 RISC-V未来的扩展子集 45
2.10.1 B标准扩展:位操作 45
2.10.2 H特权态架构扩展:支持管理程序(Hypervisor) 45
2.10.3 J标准扩展:动态翻译语言 45
2.10.4 L标准扩展:十进制浮点 46
2.10.5 N标准扩展:用户态中断 46
2.10.6 P标准扩展:封装的单指令多数据(Packed-SIMD)指令 46
2.10.7 Q标准扩展:四精度浮点 46
2.10.8 V标准扩展:基本矢量扩展 46
2.11 RISC-V指令列表 46
2.11.1 I指令子集 47
2.11.2 M指令子集 52
2.11.3 A指令子集 53
2.11.4 F指令子集 55
2.11.5 D指令子集 56
2.11.6 C指令子集 57
第3章 现场可编程逻辑门阵列(FPGA)设计流程 60
3.1 Xilinx FPGA概述与设计流程 60
3.1.1 Xilinx FPGA的基本结构 61
3.1.2 Diligent Nexys A7 FPGA开发平台介绍 63
3.1.3 FPGA的设计流程 64
3.2 Xilinx Vivado集成环境安装与开发流程 67
3.2.1 Vivado集成环境的安装 68
3.2.2 Vivado集成环境的开发流程 76
第4章 SiFive Freedom E300 SoC的原理与实验 92
4.1 Verilog HDL语言简介 92
4.1.1 数据类型 93
4.1.2 数据表示 95
4.1.3 运算符及表达式 96
4.1.4 Verilog HDL常用语法 101
4.1.5 系统函数和任务 106
4.1.6 Verilog HDL语言规范 111
4.1.7 用于Verilog HDL设计的Xilinx 7系列 FPGA原语使用方法 118
4.1.8 小结 128
4.2 Chisel HCL语言简介 129
4.2.1 环境安装 130
4.2.2 Scala编程语言快训 132
4.2.3 Chisel硬件构造语言快训 138
4.2.4 小结 162
4.3 SiFive Freedom E300平台架构介绍 162
4.3.1 E31 RISC-V内核概述 164
4.3.2 中断架构 170
4.3.3 内核本地中断器(CLINT) 175
4.3.4 调试支持 176
4.3.5 SiFive TileLink总线介绍 181
4.4 SiFive Freedom E300在Nexys A7上的开发流程 204
4.4.1 SiFive Freedom SoC生成器简介 204
4.4.2 Verilog IP集成方法与开发流程 210
4.4.3 Freedom E300在Nexys A7上的开发流程 215
第5章 SiFive E21处理器和SoC设计云平台的原理与实验 222
5.1 SiFive E21处理器 222
5.1.1 缩略语和术语列表 223
5.1.2 E21 RISC-V内核概述 224
5.1.3 内存映射 229
5.1.4 中断架构 229
5.1.5 内核本地中断器 236
5.1.6 调试支持 240
5.1.7 使用E21内核评估套件 245
5.2 Coffee-HDL语言简介 258
5.2.1 开发Coffee-HDL语言的动机 258
5.2.2 文件和模块 259
5.2.3 语言要素 261
5.2.4 数据类型 262
5.2.5 操作符 263
5.2.6 位选择和部分选择 264
5.2.7 表达式 264
5.2.8 语句 265
5.2.9 函数 267
5.2.10 LRU算法模块设计示例 267
5.2.11 E21_SOC_FPGA集成模块设计示例 269
5.3 ezchip? SoC在线设计云平台 271
5.3.1 IC Studio主界面布局 272
5.3.2 IC Studio的使用 276
5.3.3 ezchip?可配置制模块 277
5.3.4 生成代码 279
5.3.5 基于SiFive E21 处理器的SoC设计实验 280
5.3.6 基于SiFive E21 处理器的FPGA验证实验 285
第6章 RT-Thread实时多任务操作系统的原理与应用 298
6.1 SiFive Freedom Studio集成开发调试环境安装与介绍 298
6.1.1 Freedom Studio简介与安装 298
6.1.2 启动Freedom Studio 300
6.1.3 创建sifive-welcome项目 301
6.1.4 配置sifive-welcome项目 303
6.1.5 编译sifive-welcome项目 305
6.1.6 运行sifive-welcome项目 306
6.1.7 调试程序 312
6.2 移植RT-Thread实时多任务操作系统的原理 313
6.2.1 嵌入式操作系统概述 313
6.2.2 RT-Thread实时多任务操作系统介绍 315
6.2.3 RT-Thread的底层结构与移植 317
6.3 RT-Tread的UART驱动结构分析、移植及应用 322
6.3.1 RT-Tread外设驱动 322
6.3.2 UART驱动结构分析 323
6.3.3 UART的移植与应用 330
6.4 完成RT-Thread实时操作系统的编译与运行 330
6.4.1 工具准备 331
6.4.2 修改路径与代码 331
6.4.3 文件编译 333
6.4.4 文件烧录 333
附录A 虚拟机与Ubuntu Linux操作系统的安装 335
A.1 虚拟机的安装 335
A.1.1 虚拟机简介 335
A.1.2 VMware安装(以VMware15版本为例) 336
A.2 Ubuntu Linux操作系统安装 337
A.2.1 Ubuntu简介 337
A.2.2 Ubuntu虚拟机的下载和安装 337
A.2.3 虚拟机信息 339
附录B 基于Nexys A7贪吃蛇游戏的设计与实现 341
B.1 硬件设备概述 341
B.2 设计要求 342
B.3 硬件设计 342
B.4 任务设计 344
B.4.1 程序结构 344
B.4.2 任务的数据结构设计 345
B.4.3 全局变量的使用 345
B.4.4 状态机的使用 345
B.5 程序设计详解 346
B.5.1 top模块的使用 346
B.5.2 display模块的使用 346
B.5.3 snake模块的使用 349
B.5.4 fsm模块的使用 351
B.5.5 turn模块的使用 352
B.5.6 apple模块的使用 353
B.5.7 score模块的使用 354
B.6 测试数据 355
参考文献
猜您喜欢