勇敢的芯伴你玩转NiosII

勇敢的芯伴你玩转NiosII"

作者:吴厚航
ISBN:9787302437840
定价:¥45
字数:千字
页数:
出版时间:2016.08.01
开本:
版次:1-5
装帧:
出版社:清华大学出版社
简介

本书使用Altera公司的Cyclone Ⅳ FPGA器件,由浅入深地引领读者从嵌入式系统设计的大处着手,玩转软核处理器Nios Ⅱ。基于特定的FPGA实验平台,既有足够的理论知识深度作支撑,也有丰富的例程进行实践学习,并且穿插着笔者多年FPGA学习和开发过程中的各种经验和技巧。

对于希望快速入手嵌入式系统软硬件开发的初学者,以及希望从系统层面提升嵌入式开发能力的学习者,本书都是很好的选择。

前言

Foreword

2015年底的智能硬件展上,和FPGA原厂的两位大学计划经理闲聊的当儿,被问及对于诸如Xilinx Microblaze与Altera Nios Ⅱ这样的FPGA内嵌软核处理器的看法时,笔者的第一反应便是“它的实用价值可能并不大,但是非常具有教学价值”。此话一出,大家也一定很好奇,且听笔者娓娓道来。

笔者以为,软核处理器哪怕是在今天的Zynq或SoC FPGA(内嵌多个硬核ARM CortexA9处理器的FPGA器件)还未面世之时,它的实用性其实就一直颇具争议。硬核处理器经过优化设计,已经流片成型,用户拿到手以后,一般也无法再更改处理器本身的性能参数,其使用量通常也非常大,可靠性、稳定性都会做得很好; 而反观FPGA中内嵌的软核处理器,其本身就不是针对任何一个特定器件型号的FPGA定制的,而是FPGA器件的一个“通用”软核,因此,它在FPGA器件上跑起来势必在性能上也会大打折扣,与此对应的,其可靠性、稳定性恐怕也欠佳。当然,并不是说在FPGA器件上跑起来的软核处理器就一定差强人意,笔者并没有一棍子打死的意思,并不排除某些发烧级FPGA设计者能够从时序设计和底层布局布线上将软核处理器的性能发挥到极致的情况,只是一般比较来看,硬核处理器确实在性能、成本、可靠性等方面相对于软核处理器都有更明显的优势。因此,放眼望去,很难找到有多少电子产品中用上了软核处理器,但与此相反的是硬核处理器则无处不在。

话说回来,FPGA器件中内嵌的软核处理器也并非一无是处,否则它就没有存在的意义了,话说“存在即是合理”。一点不假,FPGA器件中的软核处理器是可定制的,它的性能水平通常有多个可选项供设计者“编程”设定,并且其周边的外设也可以完全“定制化”,从这点来看它比硬核处理器要灵活很多。某些特别需要这种“灵活定制”的场合通过软核处理器还真是“门当户对”了,只是要玩转这样一个灵活的嵌入式处理器系统也并非易事,它涉及纯粹的软、硬件设计以及FPGA等多方面的知识,一个能真正玩转软核处理器“灵活性”的FPGA设计者,一定对处理器及其外设架构了然于心。换句话说,如果大家都还记得当年大学里面那门纯理论的“微机原理”课程,那么玩转软核处理器的过程就是“活生生”的实践版“微机原理”课程的再现。

说到这,或许读者有些明白了,没有错,之所以说FPGA器件的软核处理器具有很高的教学价值,就是基于它的实践过程中能够帮助读者对整个处理器的架构有更清楚的了解和认知。比如笔者在学习Nios Ⅱ处理器的过程中,需要将处理器的数据总线、指令总线和外设进行连接; 需要分配地址; 需要连接中断; 需要自己编写外设连接到总线上; 需要揣摩外设的寻址方式、读和写时序,甚至一些常见通信接口的时序……的确,掌握了这些东西,很大程度上就能帮助学习者对嵌入式系统的整个架构有了一个更全面的认知,这些体验是传统理论书本给不了的。除此以外,它也是很多正式产品开发调试过程中的好帮手,例如在很多产品的原型开发或测试验证阶段,恰巧需要一个简单的CPU干点活,这时软核处理器也就派上用场了。

以笔者自身的经历来说,也正是通过软核处理器的“磨练”,才对软硬件的认知有了很大的提升,虽然这些年多从事偏于硬件设计方面的工作(包括一些FPGA设计工作),但是在很多的调试过程中,尤其是需要软硬件协同调试的过程中,往往能够快速地区分和定位问题是出于软件还是硬件,甚至还能够协助软件工程师解决一些具体的问题。笔者以为,软核处理器的教学意义在于,它能够帮助学习者深入了解处理器系统设计的架构。而在如今的电子产品设计中,软硬件分工越来越细,很难在实际的开发过程中跨越“鸿沟”,但是具备这样系统性设计思维的工程师,必定是“人见人爱”的。

基于以上这些考量,笔者在第一本Nios Ⅱ图书《爱上FPGA开发——特权和你一起学Nios Ⅱ》出版五年后(由于书中的平台较旧,考虑到市场因素,第一次印刷售罄后就没有复印),决定重新梳理这方面的知识,在Quartus Ⅱ的Qsys平台上大干一场,同时借助Altera Cyclone Ⅳ FPGA入门平台“勇敢的芯”(可访问淘宝网店了解该FPGA平台详情: https://myfpga.taobao.com/),和大家一起重拾玩转Nios Ⅱ嵌入式处理器的激情。

作者

2016年1月于上海

目录

Contents

第1章基于Nios Ⅱ处理器的嵌入式系统

1.1片上系统概述

1.2Nios Ⅱ的优势在哪里

1.3基于Nios Ⅱ处理器的FPGA开发流程

第2章实验平台“勇敢的芯”板级电路详解

2.1板级电路整体架构

2.2电源电路

2.3复位与时钟电路

2.3.1关于FPGA器件的时钟

2.3.2关于FPGA器件的复位

2.3.3实验平台电路解析

2.4FPGA下载配置电路

2.5SRAM接口电路

2.6ADC/DAC芯片电路

2.7UART接口电路

2.8RTC接口电路

2.94×4矩阵按键电路

2.10VGA显示接口电路

2.11蜂鸣器、数码管、流水灯、拨码开关电路

2.12超声波接口、外扩LCD接口电路

第3章Qsys系统创建

3.1Qsys系统概述

3.2Qsys总线互连

3.3Quartus Ⅱ工程创建

3.4进入Qsys系统

3.5Qsys界面简介

3.6新建Qsys系统

3.7保存Qsys系统

3.8加载Qsys系统

勇敢的芯伴你玩转Nios Ⅱ

第4章Qsys通用组件添加与互连

4.1时钟组件添加与设置

4.2Nios Ⅱ处理器添加与设置

4.3RAM组件添加与配置

4.4Nios Ⅱ处理器复位向量与异常向量地址设置

4.5System ID组件添加与配置

4.6JTAG UART组件添加与配置

4.7Timer组件添加与配置

4.8UART组件添加与配置

4.9蜂鸣器PIO组件添加与配置

4.10拨码开关PIO组件添加与配置

第5章Qsys互连总线概述

5.1嵌入式系统的总线

5.2AvalonMM总线

5.2.1AvalonMM总线写数据操作实例解析

5.2.2AvalonMM总线读数据操作实例解析

5.3AvalonST总线

第6章Qsys自定义组件设计

6.1数码管组件

6.1.1功能概述

6.1.2配置寄存器说明

6.1.3组件创建与配置

6.1.4组件添加与配置

6.1.5组件互连与引出

6.2ADC组件

6.2.1功能概述

6.2.2配置寄存器说明

6.2.3组件创建与配置

6.2.4组件添加与配置

6.2.5组件互连与引出

6.3DAC组件

6.3.1功能概述

6.3.2配置寄存器说明

6.3.3组件创建与配置

6.3.4组件添加与配置

6.3.5组件互连与引出

6.4超声波测距组件

6.4.1功能概述

6.4.2配置寄存器说明

6.4.3组件创建与配置

6.4.4组件添加与配置

6.4.5组件互连与引出

6.5RTC组件

6.5.1功能概述

6.5.2配置寄存器说明

6.5.3组件创建与配置

6.5.4组件添加与配置

6.5.5组件互连与引出

6.6矩阵按键组件

6.6.1功能概述

6.6.2配置寄存器说明

6.6.3组件创建与配置

6.6.4组件添加与配置

6.6.5组件互连与引出

第7章Qsys系统生成

7.1中断连接

7.2地址分配

7.3系统生成

7.4Qsys系统例化模板

第8章Quartus Ⅱ工程设计实现

8.1Verilog顶层文件设计

8.2语法检查

8.3引脚分配

8.4系统编译

第9章软件开发工具EDS

9.1EDS软件开启

9.2BSP工程创建

9.3开启BSP Editor

9.4BSP Editor设置

9.5BSP工程编译

9.6工程创建

9.7C代码源文件创建

9.8软件应用工程编译

9.9移除当前工程

9.10加载工程

9.11移植工程

第10章软件实验例程

10.1Nios Ⅱ实例之Hello NIOS II

10.1.1软件功能概述

10.1.2软件代码解析

10.1.3板级调试

10.2Nios Ⅱ实例之System ID与Timestamp

10.2.1软件功能概述

10.2.2软件代码解析

10.2.3板级调试

10.3Nios Ⅱ实例之蜂鸣器定时鸣叫

10.3.1软件功能概述

10.3.2软件代码解析

10.3.3板级调试

10.4Nios Ⅱ实例之拨码开关输入GIO控制

10.4.1软件功能概述

10.4.2软件代码解析

10.4.3板级调试

10.5Nios Ⅱ实例之秒定时数码管显示

10.5.1软件功能概述

10.5.2软件代码解析

10.5.3板级调试

10.6Nios Ⅱ实例之DAC递增输出

10.6.1软件功能概述

10.6.2软件代码解析

10.6.3板级调试

10.7Nios Ⅱ实例之ADC采集打印

10.7.1软件功能概述

10.7.2软件代码解析

10.7.3板级调试

10.8Nios Ⅱ实例之UART收发

10.8.1软件功能概述

10.8.2软件代码解析

10.8.3板级调试

10.9Nios Ⅱ实例之RTCUART时间打印

10.9.1软件功能概述

10.9.2软件代码解析

10.9.3板级调试

10.10Nios Ⅱ实例之RTCUART时间重置

10.10.1软件功能概述

10.10.2软件代码解析

10.10.3板级调试

10.11Nios Ⅱ实例之超声波测距

10.11.1软件功能概述

10.11.2软件代码解析

10.11.3板级调试

10.12Nios Ⅱ实例之倒车雷达

10.12.1软件功能概述

10.12.2软件代码解析

10.12.3板级调试

10.13Nios Ⅱ实例之矩阵按键值采集

10.13.1软件功能概述

10.13.2软件代码解析

10.13.3板级调试

10.14Nios Ⅱ实例之矩阵按键可调的ADC/DAC实例

10.14.1软件功能概述

10.14.2软件代码解析

10.14.3板级调试

10.15Nios Ⅱ实例之计算器

10.15.1软件功能概述

10.15.2软件代码解析

10.15.3板级调试

第11章FPGA器件的代码固化

11.1嵌入式软件HEX文件生成

11.2程序存储器初始化文件加载

11.3JIC烧录文件生成

11.4JTAG烧录配置

作者简介

编辑推荐

本书作者吴厚航(网名 特权同学)出版了多本FPGA方面的图书,深受读者的好评。本书使用Altera公司的Cyclone IV FPGA器件,采用Quartus Ⅱ的Qsys平台,由浅入深地引领读者从嵌入式系统设计的大处着手,玩转软核处理器NIOS II

配套资源丰富,提供PPT课件和源码,作者还有配套的开发板,同时可通过网站论坛和书友会与作者互动,为您的后续学习提供强有力的支持!

  

作者寄语

加入时,请写明:“学校+姓名”,并写明“加入教师群”,只限教师。 

 

电子资料

www.luweidong.cn

下一个