第1章 PYNQ开发平台介绍 1
1.1 PYNQ开发板 1
1.1.1 PYNQ Z1 1
1.1.2 PYNQ Z2 2
1.2 Zynq 7020芯片 3
1.3 PYNQ框架 5
1.4 PYNQ平台的使用 5
第2章 实验环境的准备 6
2.1线下方式实验环境的准备 6
2.1.1在本机安装Vivado软件 6
2.1.2 PYNQ板卡的准备 6
2.1.3使用Jupyter Notebook与PYNQ建立连接 9
2.2线上方式实验环境的准备 10
第3章 基于PYNQ的组成原理实验流程概览 12
3.1整体开发流程介绍 12
3.2 Vivado开发流程概览 13
3.3基于Python的硬件交互 14
第4章 Vivado开发流程 15
4.1创建工程 15
4.2设计输入 20
4.2.1原理图方式 20
4.2.2 Verilog/VHDL方式 23
4.3仿真 26
4.4综合 28
4.5引脚绑定(I/O处理) 29
4.5.1物理引脚的绑定 30
4.5.2与监控模块(PS)的连接 30
4.6实现 38
4.7 TCL使用介绍 39
4.8实例演示 40
4.8.1原理图方式 41
4.8.2 Verilog方式 49
第5章 基于Python的I/O交互 54
5.1 Jupyter Notebook介绍 54
5.1.1 Jupyter组件 54
5.1.2 Notebook基础 55
5.1.3 Notebook用户界面 56
5.2使用PYNQ Overlay加载流文件 57
5.3 Python引脚绑定 57
5.4基于Python调试组合逻辑 58
5.5基于Python调试时序逻辑 59
5.6实例演示 61
5.6.1上传bit和.tcl文件 61
5.6.2基于Python的I/O交互 61
第6章 硬件描述语言简介 63
6.1“模块”的描述 63
6.1.1输入/输出端口说明 64
6.1.2数据对象和数据类型 64
6.1.3顺序语句与并行语句 65
6.2模块基本用法示例 65
6.2.1八位乘法器 65
6.2.2译码器 66
6.2.3八位二进制比较器 67
6.2.4 JK触发器设计 68
6.3层次化设计 69
6.3.1描述方式 69
6.3.2层次化设计的写法 70
6.4 VHDL语言基础 72
6.4.1标识符 72
6.4.2数据对象 72
6.4.3数据类型 73
6.4.4数据类型转换 74
6.4.5运算符 75
6.4.6运算符优先级 76
6.4.7 VHDL常用语法 76
6.5 Verilog HDL语言基础 81
6.5.1数据类型 81
6.5.2数字表示形式 81
6.5.3 parameter定义常量 82
6.5.4宏定义’define 82
6.5.5运算符及表达式 82
6.5.6运算符优先级 84
6.5.7 Verilog HDL常用语法 85
第7章 基于开源CPU的组成原理实验 87
7.1 RISC-V指令集 87
7.2基于RISC-V的逐条增加指令式实验 90
7.2.1 5级流水介绍 91
7.2.2单条指令的RISC-V处理器设计 91
7.2.3 2条指令的RISC-V处理器设计 101
7.2.4 3条指令的RISC-V处理器设计 103
7.2.5 10条指令的RISC-V处理器设计 106
7.3开源RISC-V处理器蜂鸟E200介绍 109
7.4基于开源项目的CPU综合实验 112
7.4.1从完整SoC项目中抽取出CPU内核上板验证 112
7.4.2删减掉特定的部分并补全 112
7.4.3扩展开源处理器的流水线级数 113
7.4.4优秀工作的遴选方法 113
第8章 实验内容设计 114
8.1基于原理图的实验 115
8.1.1全加器 115
8.1.2译码器 117
8.1.3多路选择器 119
8.1.4触发器与寄存器 120
8.1.5移位寄存器 122
8.1.6计数器 124
8.1.7有限状态机 126
8.1.8运算器/ALU 128
8.1.9存储器 129
8.1.10寄存器堆 130
8.1.11总线 131
8.1.12微程序控制器 134
8.2基于Verilog HDL的实验 138
8.2.1全加器 138
8.2.2译码器 140
8.2.3多路选择器 141
8.2.4触发器与寄存器 142
8.2.5移位寄存器 143
8.2.6计数器 146
8.2.7有限状态机 147
8.2.8运算器/ALU 149
8.2.9存储器 150
8.2.10寄存器堆 151
8.2.11总线 153
8.2.12微程序控制器 155
8.2.13中断 159
8.2.14基于开源项目的CPU内核的实现 160
8.2.15为开源CPU增加指令 161
8.2.16增加开源CPU的流水线级数 162
参考文献 164