第1章 总体概述1
1.1 学习平台概述1
1.1.1 软件平台1
1.1.2 硬件平台2
1.2 Nios概述2
1.2.1 第一代Nios嵌入式处理器2
1.2.2 第二代Nios嵌入式处理器3
1.2.3 Nios II处理器的特性3
第2章 Avalon总线规范5
2.1 概述5
2.1.1 术语5
2.1.2 功能7
2.2 Avalon总线信号8
2.2.1 完整的信号类型列表9
2.2.2 信号极性12
2.2.3 信号命名12
2.2.4 信号时序13
2.2.5 传输特性13
2.3 从端口传输14
2.3.1 从设备信号14
2.3.2 基本的从端口读传输16
2.3.3 基本的从端口写传输20
2.4 主端口传输23
2.4.1 主信号24
2.4.2 基本的主端口读传输25
2.4.3 基本的主端口写传输26
2.4.4 等待状态、建立时间与保持时间27
2.5 流水线读传输27
2.5.1 具有固定延时的从端口流水线读传输28
2.5.2 具有可变延时的从端口流水线读传输29
2.5.3 主端口的流水线读传输30
2.6 流传输控制31
2.6.1 从端口传输的流控制31
2.6.2具有流控制的主端口传输34
2.7 三态传输34
2.7.1 三态从端口的传输35
2.7.2 三态主端口的传输38
第3章 SOPC Builder40
3.1 SOPC Builder简介40
3.1.1 概述40
3.1.2 SOPC Builder系统结构41
3.1.3 SOPC Builder功能介绍43
3.2 SOPC Builder用户接口概述44
3.2.1 SOPC Builder的使用44
3.2.2 System Contents选项卡45
3.2.3 Nios II More “CPU” Settings选项卡49
3.2.4 Board Settings选项卡50
3.2.5 System Generation选项卡50
3.2.6 首选项53
3.3 存储器映射接口的系统互联结构54
3.3.1 概述54
3.3.2 地址译码57
3.3.3 数据的多路复用58
3.3.4 等待状态嵌入58
3.3.5 高性能的流水线59
3.3.6 流水线的管理60
3.3.7 endian转换60
3.3.8 本地地址定位及动态总线大小60
3.4 SOPC Builder组件61
3.4.1 概述61
3.4.2 组件目录的结构与内容63
3.4.3 组件目录位置64
3.5 组件编辑器65
3.5.1 HDL Files选项卡66
3.5.2 Signals选项卡67
3.5.3 Interfaces选项卡69
3.5.4 SW Files选项卡71
3.5.5 Component Wizard选项卡71
3.6 目标板描述73
3.6.1 概述73
3.6.2 创建目标板描述74
3.6.3 目标板描述编辑器的使用78
3.7 引脚映射84
3.7.1 概述84
3.7.2 设计流程85
3.7.3 引脚映射GUI86
第4章 嵌入式外围设备88
4.1 SDRAM控制器内核88
4.1.1 概述88
4.1.2 在SOPC Builder中示例内核91
4.1.3 硬件仿真93
4.1.4 时钟、PLL和时序95
4.2 CFI Flash控制器99
4.2.1 概述99
4.2.2 在SOPC Builder中综合内核100
4.2.3 软件设计模型101
4.3 EPCS器件控制器内核102
4.4 DMA控制器内核104
4.4.1 概述104
4.4.2 基本功能描述104
4.4.3 在SOPC Builder中示例内核106
4.4.4 软件设计模型107
第5章 Nios II软件设计108
5.1 Nios II概述108
5.1.1 概述108
5.1.2 开发环境108
5.1.3 第三方支持110
5.2 Nios II IDE110
5.2.1 概述110
5.2.2 Nios II IDE 工作台110
5.2.3 建立新的工程110
5.2.4 组建并编辑工程112
5.2.5 运行和调试程序114
5.2.6 编辑Flash117
5.2.7 帮助系统118
5.3 HAL系统库简介119
5.3.1 概述119
5.3.2 开始设计119
5.3.3 HAL的结构119
5.4 使用HAL进行程序开发122
5.4.1 概述122
5.4.2 Nios II IDE工程结构122
5.4.3 system.h系统说明文件123
5.4.4 数据宽度和HAL类型的定义124
5.4.5 UNIX风格的接口124
5.4.6 文件系统125
5.4.7 使用字符模式器件126
5.4.8 使用定时器127
5.4.9 使用Flash器件129
5.4.10 使用DMA器件134
5.4.11 缩减代码138
5.4.12 引导程序序列和入口140
5.4.13 存储器的使用142
5.4.14 HAL系统库文件路径145
5.5 为HAL开发硬件驱动145
5.5.1 概述145
5.5.2 创建硬件驱动的开发流程146
5.5.3 SOPC编辑器146
5.5.4 硬件访问147
5.5.5 为HAL器件创建驱动程序148
5.5.6 将器件驱动集成到HAL155
5.5.7 缩减代码量158
5.5.8 命名空间的分配159
5.5.9 越过默认器件驱动160
5.6 异常处理160
5.6.1 概述160
5.6.2 Nios II异常概述160
5.6.3 中断服务程序162
5.6.4 中断服务程序性能165
5.6.5 提升中断服务程序的性能165
5.6.6 调试中断168
5.6.7 中断编写的指导总结168
5.6.8 HAL异常控制器169
5.7 高速缓存与紧耦合存储器172
5.7.1 概述172
5.7.2 高速缓存初始化173
5.7.3 写器件驱动程序174
5.7.4 编写装载程序或者自修改代码175
5.7.5 多CPU系统的高速缓存管理176
5.7.6 紧耦合存储器177
第6章 实验板电路178
6.1 实验板特点178
6.2 存储电路179
6.3 配置电路181
6.4 按键及LED电路182
6.5 LCD Module接口电路185
6.6 E2PROM及Buzzer电路186
6.7 PS/2及VGA接口电路187
6.8 红外发射及接收电路188
6.9 RS232接口电路188
6.10 时钟及锁相环电路190
6.11 I/O分配190
6.12 电源电路191
第7章 Nios基础实验193
7.1 流水灯实验193
7.2 JTAG UART通信实验207
7.3 LCM显示实验216
7.4 按键中断实验219
7.5 计数显示实验223
7.6 建立带Flash的Nios II系统及配置方法225
7.7 定时器编程229
7.8 I2C Controller IP Core的使用233
第8章 基于Nios控制的DDS信号发生器236
8.1 设计简介236
8.1.1 设计需求236
8.1.2 DDS原理简介236
8.2 设计方案论证238
8.2.1 使用MCU + FPGA + DAC的方案238
8.2.2 FPGA+ DAC的方案239
8.2.3方案论证与选择240
8.3 系统框图及实现原理240
8.3.1 系统框图240
8.3.2 实现原理241
8.4 软硬件设计241
8.4.1 DAC 模块电路设计241
8.4.2 Nios II硬件部分设计242
8.4.3 DDS硬件部分设计243
8.4.4 C语言部分设计244
8.5 小结245
第9章 Nios II Flash编程器 246
9.1 在SOPC Builder下定制目标板246
9.2 Nios II Flash编程器的使用248
9.2.1 Nios II Flash编程器概述249
9.2.2 烧写内容到Flash252
9.2.3 在SOPC Builder系统中例化Flash255
9.3 协控制器EPM240的工作原理258
第10章 通过实例讲解IP Core 的设计过程260
10.1 概述260
10.2 SOPC设备设计流程261
10.3 设计实例一263
10.4 设计实例二270
第11 章基于Nios II控制的TFT液晶显示276
11.1 概述276
11.2 硬件部分设计277
11.2.1 硬件电路接口277
11.2.2 建立系统277
11.3 软件控制部分设计279
11.3.1 驱动设计279
11.3.2 汉字库及其显示283
11.4 小结286
参考文献287