本书主要介绍Altera公司的软核CPU Nios和采用该CPU进行嵌入式系统设计的流程与方法。并以此为着眼点,介绍Altera的片上可编程系统SOPC的设计原理与实践技术,引领读者在低投入的情况下,较快地进入片上系统SOC的殿堂。
本书以Altera公司的技术资料为蓝本,由浅入深地阐述了Nios软核处理器的CPU结构、总线传输模式以及相关外设。同时也简要说明了软件的开发过程。既可作为学习Nios处理器的入门指导书,也可作为设计参考手册。
本书附录中刊载了Altera 2003年Nios嵌入式软核心处理器设计大赛中中国大陆赛区和中国台湾赛区的全部获奖作品,这一部分是由获奖者撰写的,读者可以从中获得有益的启示。
本书附带一张光盘,包含了Altera提供的2004年新版Quartusll4.0软件和Nios处理器的开发包,读者可以藉此开始SOPC的旅程。
本书可供电子和通信等领域从事硬件设计和系统开发的工程技术人员和教师阅读参考,也可以作为相关专业研究生和高年级本科生的教材。
第1章绪论
1.1概述
1.2本书内容安排
1.3设计步骤
1.4支持NIOSCPU的FPGA型号
第2章SOPCBuilder开发环境
2.1创建QuartusⅡ工程
2.2创建NIOS系统模块
2.2.1创建新的.bdf
2.2.2开始使用SOPCBuilder
2.2.3系统主频
2.2.4加入CPU和p模块
2.2.5指定基地址
2.2.6配置NIOS系统
2.2.7生成NIOS32并把它加入到设计中
2.2.8把符号(symb01)加入到BDF文件中
2.2.9加入引脚和基本单元
2.2.10命名引脚
2.2.11进行最后连接
2.3编译(Compilation)
2.3.1创建编译器设置
2.3.2指定器件系列(DeviceFamily)与型号
2.3.3为器件引脚分配信号
2.3.4确认引脚分配
2.3.5指定设备与编程设置
2.3.6指定配置文件类型
2.3.7编译用户设计
2.4编程(Programming)
2.4.1配置PPGA.
2.4.2在NIOS系统上运行软件
第3章NIOSCPU结构
3.1NIOS处理器概述
3.1.1指令总线主端口
3.1.2数据总线主端口
3.1.3缓存
3.1.4移位单元
3.1.5乘法支持
3.1.6中断支持
3.1.7NIOS片上调试模块
3.1.8开发环境
3.2内部寄存器
3.2.1通用寄存器文件
3.2.2 K寄存器
3.2.3%r0(%g0)寄存器
3.2.4程序计数器
3.2.5控制寄存器
3.3流水线
3.4存储器组织
3.5寻址方式
3.6程序流程控制
第4章Avalon总线规范
4.1概述
4.2术语和概念
4.3 Avalon总线传输
4.3.1主端口接口与从端口接口
4.3.2Avalon总线时序
4.3.3 Avalon总线信号
4.3.4并发多主端口的Avalon总线需考虑的事项
4.4 Avalon从端口传输
4.4.1从传输的Avalon总线信号
4.4.2Avalon总线上的从端口读传输
4.4.3在Avalon总线上的从端口写传输
4.5 Avalon主端口传输
4.5.1主传输的Avalon信号
4.5.2Avalon总线上的基本主端口读传输
4.5.3Avalon总线上的基本主端口写传输
4.6高级Avalon总线传输
4.6.1带延迟的Avalon读传输
4.6.2流传输模式
4.6.3 Avalon总线控制信号
4.7片外设备与Avalon总线的接口
4.7.1从传输的Avalon三态信号
4.7.2无延迟的Avalon三态从端口读传输
4.7.3带固定延迟的Avalon三态从端口读传输
4.7.4 Avalon三态从端口写传输
4.8 Avalon总线地址对齐方式
4.8.1地址对齐概述
4.8.2为Avalon外设选择地址对齐参数
4.8.3静态地址对齐
4.8.4动态地址对齐
4.9连接到外部设备
第5章软件设计流程和方法
5.1软件开发包
5.1.1软件开发流程
5.1.2SDK树目录简介
5.1.3编译后代码结构
5.1.4 NIOS库函数
5.1.5高级C语言支持
5.2软件开发常用命令
5.2.1hexout2fiash
5.2.2nios_build
5.2.3niOS·COnSOle
5.2.4niosconvert
5.2.5niosdebug
5.2.6niOS·mn
5.2.7SreC2naSh
第6章外设的组织与使用
6.1SOPCBuilder与PTF文件
6.1.1SOPCBuilder组成
6.1.2PTF文件的两种类型
6.1.3SOPCBuilder设计流程
6.2 SOPCBuilder的外设
6.2.1定时器
6.2.2并行输入输出模块
6.2.3异步收发器(UART)
6.2.4 DMA控制器
第7章中断处理
7.1中断处理过程
7.1.1异常处理的基础知识
7.1.2NIOS中断处理基础
7.1.3NIOS异常处理步骤
7.2中断处理的例子:UART收发程序
7.2.1在NIOS系统中实现ISR
7.2.2串口通信基础
7.2.3实现NIOSUARTISR
7.2.4代码示例
第8章调试手段
8.1GERMS监控程序
8.1.1监控程序命令
8.1.2GERMS引导过程
8.1.3采用GERMS从闪存中引导系统
8.2FS2公司的SystemAnalyzer
8.2.1简介
8.2.2设置调试器
8.2.3使用调试器
8.2.4调试命令列表
8.2.5OCI调试模块相关软件子程序
第9章高级特性
9.1用户自定义指令
9.1.1用户自定义指令的概念
9.1.2硬件接口
9.1.3软件接口
9.1.4加速效果
9.1.5用户自定义指令实例
9.2并发多主设备总线结构
9.2.1传统总线结构
9.2.2并发多主设备总线结构
9.3NIOS嵌入式处理器设计的模拟
9.3.1软件配置
9.3.2模拟设置
9.3.3使用ModelSim进行模拟
9.3.4分析模拟结果
9.3.5增加或删除波形图信号
9.3.6片外存储器模拟
第10章新版NIOSII的特点
10. 1 简介
10.2处理器的实现
10.3寄存器文件
10.4算术逻辑单元
10.4.1未实现的指令
10.4.2用户自定义指令
10.5异常和中断的控制
10.5.1异常控制器
10.5.2集成的中断控制器
10.6存储器与FO组织
10.6.1指令和数据总线
10.6.2缓存
10.6.3地址映像
10.7硬件辅助调试模块
附录A 汇编指令及伪指令参考
符号说明
32位指令集
IFS牙口SKPS指令的条件代码
汇编语言伪指令与宏
附录B Altera2003年NIOS嵌入式软核心处理器设计大赛获奖单
一、中国大陆部分
二、中国台湾地区
《Altera*SOPC设计与实践》主要是由参加Altera2003年Nios嵌入式软核心处理器设计大赛并获一等奖的研究生们编译成书的。2003年4月~8月,复旦大学信息科学与工程学院的研究生周博等,在指导教师的支持下,参加了该项设计比赛。通过近4个月日夜勤奋的学习和设计实践,他们以“汽车运行信息记录仪”的设计和演示,荣获一等奖。这些研究生又在Altera公司的支持下,从该项设计中抽取出包括多种输入输出和通信接口的设计平台,并自制40套,用于2003年10月14日举行的Altera全国大学教师会议,作为培训Nios3.0&SOPC2.8的教学实验板,获广泛好评。适逢Altera公司试图将竞赛获奖成果与设计原理介绍汇集成书,Altera的Keith先生给出了英文素材目录的初稿,周博等根据学习和实践体会,又做了调整和取舍。经过多位研究生翻译,反复交换审校,对内容的删简理顺,教师审稿,最后由Altera的工程师审阅后定稿。
Altera的Max+PlusⅡ曾是应用广泛、非常受欢迎的PLD(可编程逻辑器件)设计软件,对于FPGA和CPLD这些PLD器件的应用推广、电路部件和嵌入式系统的设计,以及高校有关专业的教学实习,做出了非常重要的贡献。近年来,为适应微电子技术及其应用的飞速发展,尤其是SOC(片上系统)技术发展的需要,Altera推出了新版本的PLD设计软件QuartusⅡ。它继承了Max+PlusⅡ的所有优点,是更加完善的PLD设计工具。它包括不同的设计输入手段(原理图、VHDL或Verilog-HDL)、综合仿真工具、时限分析工具、功率评估工具、PLD布局布线工具和产品验证工具。其中的设计工具SOPCBuilder更是开创了嵌入式系统设计的新理念。
SOPC(片上可编程系统)是以PLD取代ASIC,更加灵活、高效的SOC解决方案。SOPC代表一种新的系统设计技术,也是一种初级的软硬件协同设计技术。设计师使用Altera的SOPCBuilder,在PLD器件上创建硬软件开发的基础平台,也即用SOPCBuilder创建软核CPU Nios和参数化的接口总线Avalon。在此基础上,可以很快地将硬件系统(包括处理器、存储器、外设接口和用户逻辑电路)与常规软件集成在单一可编程芯片中。SOPC是PLD和ASIC技术融合的结果,它可编程的灵活性和p设计的重用性,易于保证产品的差异性和缩短面市时间;它无需库存费用,也无需一次性投片费用,降低了投资风险。SOPC相对于SOC的这个优势,也反映了FPGA日益占有ASIC市场的趋势。不过,由于ASIC电路仍有大批量产品的低价格优势,目前已与FPGA形成共存、互补、相互渗透融合的局面,并出现了结构化ASIC芯片研发和产品市场。
由于SOPC带来的灵活性,使过去耗费、刻板的硬件设计变得像软件设计一样容易调试修改,并出现了诸如可变结构、网上传送硬件、远程升级硬件、远程维修硬件等丰富多彩的新概念、新技术。同时,由于Altera公司提供了多种廉价的FPGA器件和研发工具,并有较完善的大学支持计划,使得一般高校,甚至个人就有能力问津嵌入式系统的设计以及SOC技术领域。而在过去,我国的许多高校和研究机构,由于高昂的研究经费所限,不得不放弃包括系统结构技术在内的硬件技术研究。
嵌入式系统飞速发展,渗透于各个领域和行业。诸如宽带通信、移动通信、网络分布计算、网格计算、普适计算(PervasiveComputing)、可变结构等新概念、新技术,更使得嵌入式系统将涉足从微观的精细控制到宏观的超级计算。计算机软件的发展,也必然反映这个计算机结构变化的现实。软件公司已开始关注嵌入式软件的开发,我国许多高校的软件学院,也充分注意了嵌入式软件的研究教学,甚至直接关注嵌入式系统的设计和应用,设立了专门的实验室。这不能不说是有远见之举措。
本书适合于电子工程、计算机、自动控制专业,以及对此类专业有兴趣的高年级本科生和研究生学习和自学SOPC设计技术。如果有电子工程或者EDA软件方面的经验,学习会更轻松。本书附录中刊有Altera 2003年Nios嵌入式软核心处理器设计大赛(中国大陆赛区和中国台湾赛区)的获奖作品说明,都是一些年轻的学生在不足4个月的时间里完成的作品。如果在数年前,这些作品本身就构成一些相当规模的项目。本书的读者只要认真、勤奋地学习好书中的内容、并勇于实践,就能具备挑战SOC的实力。
本书的编译者有周博、邱卫东、陈燕、周学功、方茁等。陈泽文高级工程师审阅了全稿。彭澄廉作为指导教师,组织了编写过程,参加了最后审校工作。
在本书编译过程中,得到了Altera公司各方面的大力支持。除了提供相关软件的光盘外,Altera公司香港代表处的陈国裕经理和Keith先生为我们提供了英文素材,上海代表处的徐平波经理则在整个编译过程中给予了热心的帮助和督促。最后,Altera全球副总裁BenLee先生还在百忙之中特意为本书做序,在此一并表示致敬和谢意。
本书因是限时多人合作编译成书,时间不容编译审校者进行充分的句句斟酌。错误疏漏之处,敬请读者批评指正。
彭澄廉
2004年3月31日