当前位置:首页 > 工业技术
基于Nios Ⅱ的嵌入式SoPC系统设计与Verilog开发实例
基于Nios Ⅱ的嵌入式SoPC系统设计与Verilog开发实例

基于Nios Ⅱ的嵌入式SoPC系统设计与Verilog开发实例PDF电子书下载

工业技术

  • 电子书积分:18 积分如何计算积分?
  • 作 者:(美)PongP.Chu著;金明录,门宏志译
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2015
  • ISBN:9787121257735
  • 页数:641 页
图书介绍:本书基于FPGA的嵌入式系统独特的可硬件编程性,采用“边做边学”的方法详细介绍硬件和软件的设计和开发过程。全书除第一章综述外,分为四个部分。第一部分介绍了基本的硬件描述性语言结构和综合过程,并且显示了用户自定义的数字电路结构。第二部分主要介绍了Nios II处理器,并基于该处理器的系统结构,介绍了嵌入式软件开发。第三部分基于前两部分介绍的知识,深入讲解了一系列外设模块的开发过程。第四部分给出了研究硬件加速的三个案例。全书循序渐进,深入浅出,系统而全面。
《基于Nios Ⅱ的嵌入式SoPC系统设计与Verilog开发实例》目录

第1章 嵌入式系统概述 1

1.1 引言 1

1.1.1 嵌入式系统定义 1

1.1.2 示例系统 1

1.2 系统设计需求 2

1.3 嵌入式SoPC系统 3

1.4 本书结构 6

1.5 文献注释 6

第1部分 基本数字电路开发 8

第2章 门级组合电路 8

2.1 引言 8

2.2 总则 8

2.3 基本词法元素和数据类型 9

2.4 数据类型 10

2.4.1 四值系统 10

2.4.2 数据类型组 10

2.4.3 数字的表示方法 11

2.4.4 运算符 12

2.5 程序框架 12

2.5.1 端口声明 12

2.5.2 程序主体 13

2.5.3 信号声明 13

2.5.4 另一个实例 14

2.6 结构描述 14

2.7 测试平台 17

2.8 文献注释 19

2.9 推荐实验 19

2.9.1 门级greater-than电路代码 19

2.9.2 门级二进制译码器代码 19

第3章 FPGA和EDA软件概述 20

3.1 FPGA 20

3.1.1 通用FPGA器件概述 20

3.1.2 Altera Cyclone Ⅱ系列器件概述 21

3.2 Altera DE1和DE2开发板概述 23

3.3 开发流程 25

3.4 Quartus Ⅱ概述 26

3.5 Quartus Ⅱ简易教程 27

3.5.1 创建设计工程 29

3.5.2 建立测试平台进行RTL仿真 33

3.5.3 编译工程 33

3.5.4 时序分析 34

3.5.5 编程FPGA器件 34

3.6 ModelSim HDL仿真器的简易教程 36

3.7 文献注释 39

3.8 推荐实验 40

3.8.1 门级greater-than电路 40

3.8.2 门级二进制译码器 40

第4章 RTL组合电路 41

4.1 运算符 41

4.1.1 算术运算符 42

4.1.2 移位运算符 42

4.1.3 关系运算符和等式运算符 43

4.1.4 位运算符、缩减运算符和逻辑运算符 43

4.1.5 拼接运算符和复制运算符 44

4.1.6 条件运算符 44

4.1.7 运算符优先级 45

4.1.8 表达式位长调整 45

4.1.9 z和x的综合 46

4.2 组合逻辑电路的always语句块 47

4.2.1 基本语法和行为 48

4.2.2 进程赋值语句 48

4.2.3 变量数据类型 49

4.2.4 简单实例 49

4.3 if语句 50

4.3.1 语法 50

4.3.2 实例 51

4.4 case语句 52

4.4.1 语法 52

4.4.2 实例 53

4.4.3 casez和casex语句 54

4.4.4 全case语句和并行case语句 55

4.5 条件控制结构的路由结构 56

4.5.1 优先级路由网络 56

4.5.2 多路选择网络 57

4.6 always块的一般编码原则 58

4.6.1 组合逻辑电路代码的常见错误 58

4.6.2 指南 61

4.7 参数和常数 61

4.7.1 常数 61

4.7.2 参数 62

4.7.3 Verilog-1995中参数的使用 64

4.8 设计实例 65

4.8.1 十六进制数的七段LED译码器 65

4.8.2 符号幅值加法器 67

4.8.3 桶形移位器 68

4.8.4 简易浮点数加法器 70

4.9 文献注释 73

4.10 推荐实验 73

4.10.1 多功能桶形移位器 73

4.10.2 双优先级编码器 74

4.10.3 BCD码增量器 74

4.10.4 浮点数greater-than电路 74

4.10.5 浮点数和有符号整数间的转换电路 74

4.10.6 加强的浮点数加法器 75

第5章 常规时序电路 76

5.1 引言 76

5.1.1 D触发器和寄存器 76

5.1.2 同步系统 77

5.1.3 代码开发 77

5.2 触发器和寄存器的HDL代码 77

5.2.1 D触发器 78

5.2.2 寄存器 80

5.2.3 寄存器文件 81

5.2.4 SRAM 83

5.3 简单的设计实例 84

5.3.1 移位寄存器 84

5.3.2 二进制计数器及其变形 86

5.4 时序电路的测试平台 89

5.5 时序分析 92

5.5.1 时序参数 92

5.5.2 Quartus Ⅱ中的时序考虑 93

5.6 案例研究 94

5.6.1 秒表 94

5.6.2 FIFO缓存器 98

5.7 Cyclone Ⅱ器件的嵌入式存储器模块 102

5.7.1 DE1开发板上的存储器选项概述 102

5.7.2 嵌入式M4K模块概述 102

5.7.3 添加嵌入式存储器模块的方法 103

5.7.4 导出同步单口RAM的HDL模块 105

5.7.5 导出同步简单双口RAM的HDL模块 106

5.7.6 导出同步真双口RAM的HDL模块 108

5.7.7 导出同步ROM的HDL模块 109

5.7.8 指定RAM初始值的HDL模块 110

5.7.9 FIFO缓存器的再仿真 112

5.8 文献注释 113

5.9 推荐实验 113

5.9.1 可编程方波发生器 113

5.9.2 脉宽调制电路 113

5.9.3 旋转方块电路 113

5.9.4 心跳电路 114

5.9.5 旋转的LED标语电路 114

5.9.6 增强型秒表 114

5.9.7 数据宽度可变的FIFO 114

5.9.8 堆栈 115

5.9.9 基于ROM的符号幅值加法器 115

5.9.10 基于ROM的温度转换 115

第6章 FSM 116

6.1 简介 116

6.1.1 Mealy和Moore输出 116

6.1.2 FSM的表示方法 116

6.2 FSM代码开发 118

6.3 设计实例 120

6.3.1 上升沿检测器 120

6.3.2 去抖电路 125

6.3.3 测试电路 128

6.4 文献注释 130

6.5 推荐实验 130

6.5.1 双边沿检测器 130

6.5.2 另一种去抖电路 130

6.5.3 停车场占用情况计数器 131

第7章 FSMD 132

7.1 引言 132

7.1.1 单一RT操作 132

7.1.2 ASMD图 133

7.1.3 含寄存器的选择框 134

7.2 FSMD代码开发 135

7.2.1 基于RT方法的去抖电路 135

7.2.2 含显示描述数据通路组件的代码 136

7.2.3 含隐式描述数据通路组件的代码 139

7.2.4 比较 141

7.3 设计实例 142

7.3.1 斐波那契数电路 142

7.3.2 除法电路 145

7.3.3 二进制—BCD码转换电路 148

7.3.4 周期计数器 151

7.3.5 精确的低频计数器 154

7.4 文献注释 157

7.5 推荐实验 157

7.5.1 另一种去抖电路 157

7.5.2 BCD—二进制码转换电路 158

7.5.3 含BCD I/O的斐波那契数生成电路:设计方法1 158

7.5.4 含BCD I/O的斐波那契数生成电路:设计方法2 158

7.5.5 自动进位制的低频计数器 158

7.5.6 反应计时器 159

7.5.7 Babbage差分机模拟电路 160

第8章 Verilog精选主题 161

8.1 阻塞赋值语句和非阻塞赋值语句 161

8.1.1 概述 161

8.1.2 组合电路 163

8.1.3 存储器单元 164

8.1.4 混合阻塞和非阻塞两种赋值语句的时序电路 165

8.2 时序电路的另一种编码方式 167

8.2.1 二进制计数器 167

8.2.2 FSM 170

8.2.3 FSMD 171

8.2.4 总结 173

8.3 有符号数据类型的使用 173

8.3.1 概述 173

8.3.2 Verilog-1995中的有符号数 174

8.3.3 Verilog-2001中的有符号数 175

8.4 综合中函数的使用 175

8.4.1 概述 175

8.4.2 例子 176

8.5 附加的测试平台开发结构 178

8.5.1 always块和initial块 178

8.5.2 进程语句 178

8.5.3 时序控制 180

8.5.4 延时控制 180

8.5.5 事件控制 181

8.5.6 wait语句 181

8.5.7 timescale指令 181

8.5.8 系统函数和系统任务 182

8.5.9 用户自定义的函数和任务 186

8.5.10 完备的测试平台的实例 187

8.6 文献注释 193

8.7 推荐实验 193

8.7.1 使用阻塞赋值语句和非阻塞赋值语句的移位寄存器 193

8.7.2 BCD计数器的另一种编码风格 194

8.7.3 FIFO缓存器的另一种编码方式 194

8.7.4 斐波那契数生成电路的另一种编码方式 194

8.7.5 双模式比较器 194

8.7.6 增强型二进制计数器的监测器 194

8.7.7 FIFO缓存器的测试平台 194

第2部分 基本Nios Ⅱ软件开发 196

第9章 Nios Ⅱ处理器概述 196

9.1 引言 196

9.2 寄存器文件和ALU 198

9.2.1 寄存器文件 198

9.2.2 ALU 198

9.3 存储器和I/O结构 198

9.3.1 Nios Ⅱ的存储器接口 198

9.3.2 存储器层次结构概述 198

9.3.3 虚拟存储器 199

9.3.4 存储器保护 199

9.3.5 高速缓冲存储器 199

9.3.6 紧密耦合存储器 200

9.3.7 I/O结构 200

9.3.8 互连结构 200

9.4 异常和中断处理 201

9.5 JTAG调试模块 201

9.6 文献注释 201

9.7 推荐实验 201

9.7.1 Nios Ⅱ和MIPS的比较 201

第10章 Nios Ⅱ系统的引用和底层访问 202

10.1 开发流程的再介绍 202

10.1.1 硬件开发 202

10.1.2 软件开发 202

10.1.3 闪烁LED系统 204

10.2 Nios Ⅱ硬件生成教程 204

10.2.1 在Quartus Ⅱ中创建一个硬件工程 204

10.2.2 创建Nios Ⅱ系统,生成HDL代码 204

10.2.3 创建顶层HDL文件用于实例化Nios Ⅱ系统 209

10.2.4 编译和下载程序 210

10.3 Nios Ⅱ SBT GUI教程 210

10.3.1 创建BSP库 210

10.3.2 使用BSP编辑器配置BSP 211

10.3.3 创建用户应用目录并添加应用程序文件 212

10.3.4 生成和运行软件 212

10.3.5 检查代码大小 213

10.4 针对软硬件一致性的系统id核 213

10.5 底层I/O直接访问 214

10.5.1 C语言指针的复习 215

10.5.2 I/O寄存器的C指针 215

10.6 鲁棒的底层I/O访问 216

10.6.1 system.h 216

10.6.2 alt_types.h 217

10.6.3 io.h 217

10.7 一些关于底层I/O操作的C语言技巧 218

10.7.1 位处理 218

10.7.2 打包和拆包 219

10.8 软件开发 219

10.8.1 基本的嵌入式程序框架 219

10.8.2 主程序和任务程序 220

10.9 文献注释 221

10.10 推荐实验 221

10.10.1 追赶LED电路 221

10.10.2 碰撞LED电路 222

10.10.3 脉宽调制电路 222

10.10.4 旋转方块电路 222

10.10.5 心跳电路 222

10.11 完整程序清单 222

第11章 预先设计的Nios Ⅱ I/O外设 224

11.1 概述 224

11.2 PIO核 224

11.2.1 配置 225

11.2.2 寄存器映射 227

11.2.3 用户可见寄存器 227

11.3 JTAG UART核 228

11.3.1 配置 228

11.3.2 寄存器映射 229

11.4 内部定时器核 229

11.4.1 配置 229

11.4.2 寄存器映射 230

11.5 增强型闪烁LEDNiosⅡ系统 231

11.5.1 SOPC设计 232

11.5.2 顶层HDL文件 235

11.6 增强型闪烁LED系统软件开发 236

11.6.1 设备驱动介绍 236

11.6.2 增强型闪烁LED系统程序结构 236

11.6.3 主程序 237

11.6.4 函数命名习惯 237

11.7 设备驱动程序 238

11.7.1 PIO外设驱动 238

11.7.2 JATA UART 240

11.7.3 定时器 241

11.8 任务程序 242

11.8.1 函数flashsys_init_v1() 242

11.8.2 函数sw_get_command_v1() 242

11.8.3 函数jtaguart_disp_msg_v1() 243

11.8.4 函数sseg_disp_msg_v1() 243

11.8.5 函数led_flash_v1() 244

11.9 软件构建和测试 245

11.10 文献注释 245

11.11 推荐实验 245

11.11.1 闪烁LED系统的“Uptime”特性 245

11.11.2 不同定时器模式的计数 246

11.11.3 JTAGUART输入 246

11.11.4 增强型冲撞LED电路 246

11.11.5 旋转LED标语电路 246

11.11.6 改进的秒表 246

11.11.7 停车场占用情况计数器 246

11.11.8 带按钮开关控制的反应时间定时器 247

11.11.9 带键盘控制的反应时间定时器 247

11.11.10 串行端口通信 247

11.12 完整程序清单 247

第12章 预先设计的Nios Ⅱ I/O驱动和HAL API 256

12.1 HAL概述 256

12.1.1 桌面式嵌入式系统和准系统嵌入式系统 256

12.1.2 HAL范式 257

12.1.3 设备类别 258

12.1.4 遵从HAL的设备驱动 258

12.1.5 _regs.h文件 259

12.1.6 基于HAL的初始化序列 260

12.2 BSP 260

12.2.1 概述 260

12.2.2 BSP文件结构 261

12.2.3 BSP配置 262

12.3 基于HAL的闪烁LED程序 263

12.3.1 使用通用I/O设备的函数 264

12.3.2 使用非通用I/O设备的函数 266

12.3.3 初始化程序和主程序 266

12.3.4 软件构建和测试 267

12.4 设备驱动程序考虑 268

12.4.1 I/O访问法 268

12.4.2 比较 269

12.4.3 本书中的驱动程序 271

12.5 文献注释 271

12.6 推荐实验 271

12.6.1 闪烁LED系统的“Uptime”特性 271

12.6.2 改进的碰撞LED电路 271

12.6.3 停车场使用情况计数器 271

12.6.4 带键盘控制的反应定时器 271

12.6.5 数字闹钟 271

12.7 完整程序清单 272

第13章 中断及中断服务程序 275

13.1 HAL框架中的中断处理 275

13.1.1 概述 275

13.1.2 Nios Ⅱ处理器的中断控制器 276

13.1.3 顶层异常处理程序 276

13.1.4 中断服务程序 277

13.2 基于中断的闪烁LED程序 277

13.2.1 定时器核的中断 278

13.2.2 定时器核的驱动 278

13.2.3 中断服务程序(版本1) 279

13.2.4 中断服务程序(版本2) 281

13.3 中断和调度 282

13.3.1 调度 282

13.3.2 性能 283

13.4 文献注释 284

13.5 推荐实验 285

13.5.1 含按钮开关ISR程序的闪烁LED系统 285

13.5.2 ISR驱动的闪烁LED系统 285

13.5.3 闪烁LED系统中的“Uptime”特性 285

13.5.4 带键盘控制的反应时间定时器 285

13.5.5 数字闹钟 285

13.6 完整程序清单 285

第3部分 用户I/O外设开发 292

第14章 带PIO核的用户I/O外设 292

14.1 引言 292

14.2 集成除法电路到Nios Ⅱ系统 292

14.2.1 PIO模块 292

14.2.2 集成 293

14.3 测试 293

14.4 推荐实验 296

14.4.1 除法核的ISR 296

14.4.2 8位数据的除法核 296

14.4.3 64位数据的除法核 296

14.4.4 斐波那契数电路 297

14.4.5 周期计数器 297

第15章 Avalon互连与SOPC组件 298

15.1 引言 298

15.2 Avalon MM接口 300

15.2.1 Avalon MM从设备接口信号 300

15.2.2 Avalon MM从设备接口性质 301

15.2.3 Avalon MM从设备时序 301

15.3 Avalon接口的系统互连结构 304

15.4 SOPC I/O组件封装电路 305

15.4.1 接口I/O缓存器 306

15.4.2 内存对齐 308

15.4.3 Avalon MM主设备的输出译码 308

15.4.4 Avalon MM主设备的输入多路选择 310

15.4.5 实际考虑 311

15.5 SOPC组件构建指南 311

15.5.1 Avalon接口 312

15.5.2 寄存器映射 312

15.5.3 封装的除法电路 313

15.5.4 SOPC组件创建 315

15.5.5 SOPC组件实例化 320

15.6 测试 320

15.7 文献注释 323

15.8 推荐实验 323

15.8.1 除法核的ISR 323

15.8.2 除法核的另一种缓存方案 323

15.8.3 8位数据的除法核 323

15.8.4 64位数据的除法核 323

15.8.5 斐波那契数电路 323

15.8.6 周期计数器 323

第16章 SRAM和SDRAM控制器 324

16.1 DE1开发板存储器资源 324

16.2 时序和时钟管理的概述 324

16.2.1 时钟分配网络 324

16.2.2 片外访问的时序问题 325

16.2.3 PLL 326

16.3 SRAM概述 327

16.3.1 SRAM单元 327

16.3.2 基本结构 327

16.3.3 时序 328

16.3.4 IS61LV25616AL SRAM芯片 329

16.4 SRAM控制器IP核 330

16.4.1 Avalon接口 331

16.4.2 控制器电路 332

16.4.3 SOPC组件的创建 333

16.5 DRAM概述 334

16.5.1 DRAM单元 334

16.5.2 基本的DRAM结构 335

16.5.3 DRAM时序 336

16.6 SDRAM概述 337

16.6.1 基本的SDRAM结构 337

16.6.2 SDRAM时序 338

16.6.3 ICSI IS42S16400 SDRAM芯片 340

16.7 SDRAM控制器和PLL 340

16.7.1 基本的SDRAM控制器 340

16.7.2 SDRAM控制器IP核 341

16.7.3 SOPC PLL IP核 342

16.8 测试系统 344

16.8.1 测试硬件配置 344

16.8.2 测试软件 346

16.9 文献注释 349

16.10 推荐实验 349

16.10.1 没有I/O寄存器的SRAM控制器 349

16.10.2 SRAM控制器速度测试 349

16.10.3 带Avalon MM三态接口的SRAM控制器 349

16.10.4 SDRAM控制器时钟偏斜测试 349

16.10.5 存储器性能比较 350

16.10.6 锁存器的影响 350

16.10.7 从零构建SDRAM控制器 350

16.11 完整程序清单 350

第17章 PS2键盘和鼠标 352

17.1 引言 352

17.2 PS2接收子系统 352

17.2.1 PS2设备到主机的通信协议 352

17.2.2 设计和代码 353

17.3 PS2传送子系统 356

17.3.1 主机到PS2设备的通信协议 356

17.3.2 设计和代码 357

17.4 完整的PS2系统 361

17.5 PS2控制器IP核开发 363

17.5.1 Avalon接口 363

17.5.2 寄存器映射 363

17.5.3 封装的PS2系统 364

17.5.4 SOPC组件创建 365

17.6 PS2驱动 365

17.6.1 寄存器映射 366

17.6.2 写操作程序 366

17.6.3 读操作程序 366

17.7 键盘驱动 367

17.7.1 扫描码概述 367

17.7.2 与主机的交互 368

17.7.3 驱动程序 369

17.8 鼠标驱动 373

17.8.1 PS2鼠标协议概述 373

17.8.2 与主机的交互 373

17.8.3 驱动程序 374

17.9 测试 376

17.10 书中用户IP核的使用 379

17.10.1 文件组织结构 379

17.10.2 SOPC库集成 379

17.10.3 综合的Nios Ⅱ测试系统 380

17.11 文献注释 385

17.12 推荐实验 385

17.12.1 带看门狗定时器的PS2接收子系统 385

17.12.2 软件接收FIFO 385

17.12.3 软件PS2控制器 385

17.12.4 键盘控制的LED闪烁电路 385

17.12.5 增强型键盘驱动程序Ⅰ 386

17.12.6 增强型键盘驱动程序Ⅱ 386

17.12.7 遥控模式鼠标驱动 386

17.12.8 滚轮鼠标驱动 386

17.13 完整程序清单 386

第18章 VGA控制器 399

18.1 引言 399

18.1.1 CRT显示器的基本操作 399

18.1.2 DE1板上的VGA端口 400

18.1.3 视频控制器 400

18.2 VGA同步 402

18.2.1 水平同步 402

18.2.2 垂直同步 403

18.2.3 VGA同步信号时序计算 403

18.2.4 HDL实现 404

18.3 基于SRAM的视频RAM控制器 406

18.3.1 视频存储器概述 406

18.3.2 DE1开发板的存储器问题 407

18.3.3 Ad Hoc SRAM控制器 407

18.3.4 HDL代码 411

18.4 调色板电路 414

18.5 视频控制器IP核的开发 415

18.5.1 完整的视频控制器 415

18.5.2 Avalon接口 416

18.5.3 寄存器映射 416

18.5.4 封装的视频控制器 416

18.5.5 SOPC组件创建 418

18.6 视频驱动 418

18.6.1 视频内存访问程序 418

18.6.2 几何模型程序 419

18.6.3 位图处理函数 421

18.6.4 位映射文本程序 423

18.7 鼠标处理程序 426

18.8 测试程序 427

18.8.1 图形绘制程序 429

18.8.2 通用绘图程序 430

18.8.3 竖条交换程序 432

18.8.4 鼠标演示程序 433

18.8.5 位映射文本程序 434

18.9 位图文件处理 434

18.9.1 BMP格式概述 435

18.9.2 BMP文件的生成 435

18.9.3 基于子画面的设计 436

18.9.4 BMP文件访问 437

18.9.5 基于主机的文件系统 437

18.9.6 位图文件获取程序 437

18.10 文献注释 441

18.11 推荐实验 442

18.11.1 基于PLL的VGA控制器 442

18.11.2 使用16位内存配置的VGA控制器 442

18.11.3 三位色彩深度的VGA控制器 442

18.11.4 一位颜色深度的VGA控制器 442

18.11.5 带双缓存的VGA控制器 442

18.11.6 分辨率为320×240的VGA控制器 442

18.11.7 含垂直模式操作的VGA控制器 442

18.11.8 几何模型函数 442

18.11.9 位图处理函数 443

18.11.10 模拟“神奇画板”玩具 443

18.11.11 调色板查找表电路 443

18.11.12 虚拟LED闪烁系统控制板 443

18.11.13 虚拟模拟挂钟 443

18.12 推荐工程 443

18.12.1 可配置的VGA控制器 443

18.12.2 使用系统SDRAM的VGA控制器 444

18.12.3 绘图程序 444

18.12.4 视频游戏 444

18.13 完整程序清单 444

第19章 音频编解码控制器 469

19.1 引言 469

19.1.1 编解码器概述 469

19.1.2 WM8731芯片简介 469

19.1.3 WM8731芯片寄存器 470

19.2 I2C控制器 473

19.2.1 I2C接口概述 473

19.2.2 HDL实现 474

19.3 编解码器数据访问控制器 481

19.3.1 数字音频接口概述 481

19.3.2 HDL实现 481

19.4 音频编解码控制器IP核开发 484

19.4.1 完整的音频编解码控制器 484

19.4.2 Avalon接口 486

19.4.3 寄存器映射 486

19.4.4 封装的音频编解码控制器 487

19.4.5 SOPC组件创建 489

19.5 编解码驱动 489

19.5.1 I2C命令程序 490

19.5.2 数据源选择程序 490

19.5.3 芯片初始化程序 491

19.5.4 音频数据访问程序 491

19.6 测试程序 492

19.7 音频文件处理 496

19.7.1 WAV格式概述 496

19.7.2 音频格式转换程序 497

19.7.3 音频数据读取程序 497

19.8 文献注释 499

19.9 推荐实验 500

19.9.1 软件I2C控制器 500

19.9.2 使用主设备时钟模式设计硬件数据访问控制器 500

19.9.3 使用从设备时钟模式的软件数据访问控制器 500

19.9.4 使用主设备时钟模式的软件数据访问控制器 500

19.9.5 可配置的数据访问控制器 500

19.9.6 语音录音机 500

19.9.7 实时正弦波发生器 501

19.9.8 实时音频波形显示 501

19.9.9 回音效果 501

19.10 推荐工程 501

19.10.1 完整的I2C控制器 501

19.10.2 数字均衡器 501

19.10.3 数字音频示波器 502

19.11 完整程序清单 502

第20章 SD卡控制器 514

20.1 SD卡概述 514

20.2 SPI控制器 514

20.2.1 SPI接口概述 514

20.2.2 HDL实现 515

20.3 SPI控制器IP核开发 518

20.3.1 Avalon接口 518

20.3.2 寄存器映射 518

20.3.3 封装的SPI控制器 519

20.3.4 SOPC组件创建 520

20.4 SD卡协议 520

20.4.1 SD卡的命令和响应格式 520

20.4.2 初始化和辨识过程 522

20.4.3 数据读和写过程 523

20.5 SPI与SD卡驱动程序 524

20.5.1 SPI驱动程序 524

20.5.2 SD卡驱动程序 525

20.6 文件访问 531

20.6.1 FAT16结构概述 531

20.6.2 只读FAT16文件访问驱动程序 535

20.7 测试程序 543

20.8 SD卡的数据传输性能 547

20.9 文献注释 548

20.10 推荐实验 548

20.10.1 SD卡的数据传输性能测试 548

20.10.2 鲁棒性强的SD卡驱动程序 548

20.10.3 SD卡存取的专用处理器 548

20.10.4 基于硬件的SD卡的读写操作 548

20.10.5 SD卡信息读取 549

20.10.6 MMC卡支持 549

20.10.7 多扇区读写操作 549

20.10.8 带CRC校验的SD卡驱动程序 549

20.10.9 数字音乐播放器 549

20.10.10 数字相框 549

20.10.11 附加的FAT功能 549

20.11 推荐工程 550

20.11.1 HAL API文件访问集成 550

20.12 完整程序清单 550

第4部分 硬件加速器实例研究 572

第21章 GCD加速器 572

21.1 引言 572

21.2 软件实现 573

21.3 硬件实现 573

21.3.1 ASMD图 573

21.3.2 HDL实现 574

21.4 时间测量 576

21.4.1 HAL时间戳驱动 576

21.4.2 定制的硬件计数器 577

21.5 GCD加速器IP核开发 577

21.5.1 Avalon接口 577

21.5.2 寄存器映射 577

21.5.3 封装的GCD加速器 578

21.6 测试程序 580

21.6.1 GCD程序 580

21.6.2 主程序 581

21.7 性能比较 582

21.8 文献注释 583

21.9 推荐实验 583

21.9.1 使用其他处理器配置的性能 583

21.9.2 最小规模的GCD加速器 583

21.9.3 带后补零电路的GCD加速器 583

21.9.4 64位数据的GCD加速器 583

21.9.5 128位数据的GCD加速器 583

21.9.6 欧拉算法的GCD 583

21.10 完整程序清单 583

第22章 Mandelbrot集合分形加速器 587

22.1 引言 587

22.1.1 Mandelbrot集合的概述 587

22.1.2 Mandelbrot集合点的确定 588

22.1.3 配色方案 589

22.1.4 分形图像的生成 589

22.2 定点运算 590

22.3 函数calc_frac_point()的软件实现 591

22.4 函数calc_frac_point()的硬件实现 592

22.4.1 ASMD图 592

22.4.2 HDL实现 592

22.5 Mandelbrot集合分形加速器IP核开发 594

22.5.1 Avalon接口 594

22.5.2 寄存器映射 595

22.5.3 封装的Mandelbrot集合分形加速器 595

22.6 测试程序 596

22.6.1 分形图形用户接口 596

22.6.2 分形硬件加速器引擎控制程序 598

22.6.3 分形绘图程序 598

22.6.4 文本区显示程序 599

22.6.5 鼠标处理程序 601

22.6.6 主程序 603

22.7 讨论 603

22.8 文献注释 604

22.9 推荐实验 604

22.9.1 含一个乘法器的硬件加速器 604

22.9.2 逃逸条件修改的硬件加速器 604

22.9.3 使用Q4.1 2格式的硬件加速器 604

22.9.4 多个分形引擎的硬件加速器 604

22.9.5 “Burning-ship”分形 605

22.9.6 改进的测试程序 605

22.10 推荐工程 605

22.10.1 浮点硬件加速器 605

22.10.2 通用画分形图平台 605

22.11 完整程序清单 605

第23章 直接数字频率合成 616

23.1 引言 616

23.2 设计和实现 616

23.2.1 数字波形的直接合成 616

23.2.2 未调制的模拟波形的直接合成 617

23.2.3 调制的模拟波形的直接合成 618

23.2.4 HDL实现 618

23.3 DDFS IP核开发 621

23.3.1 Avalon接口 621

23.3.2 寄存器映射 621

23.3.3 封装的DDFS电路 622

23.3.4 编解码器的DAC集成 623

23.4 DDFS驱动 623

23.4.1 配置程序 624

23.4.2 初始化程序 625

23.5 测试 625

23.5.1 音符的概括和合成 625

23.5.2 测试程序 626

23.6 文献注释 630

23.7 推荐实验 630

23.7.1 正交相位载波生成 630

23.7.2 缩减的相位—幅度查找表 631

23.7.3 合成音乐播放器 631

23.7.4 键盘钢琴 631

23.7.5 键盘记录仪 631

23.7.6 硬件包络发生器 631

23.7.7 谐波叠加合成器 631

23.7.8 采样合成器 631

23.8 推荐工程 632

23.8.1 声音发生器 632

23.8.2 函数发生器 632

23.8.3 完整的电子合成器 632

23.9 完整程序清单 632

参考文献 640

返回顶部