第1章嵌入式系统概述
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1章 嵌入式系统概述
嵌入式系统是一种特殊的计算机系统。
本章分析讨论嵌入式系统的基本特性,重点分析它与通用计算机系统的区别,介绍基于FPGA的“高端”嵌入式系统的概念和开发流程,这也是本书的重点。
1.1 引言
1.1.1 嵌入式系统定义
嵌入式系统(或嵌入式计算机系统)可以简单地定义为一个计算机系统,其设计是用于完成一个或多个特定任务。
这一计算机系统不是一个最终产品,而是在一个庞大系统中的专用嵌入部分,这个庞大系统通常还包括其他电子和机械部分。
相对而言,一个通用计算机系统,例如一台PC(个人计算机),是一种通用的计算平台,其本身就是一种最终产品。
它被设计为灵活的,并且能够支持终端用户的各种需求。
各种应用程序就是基于通用计算机系统的可用资源而开发的。
因为一个嵌入式系统专用于特定任务,所以其设计可以优化以降低成本。
一个好的设计应该包含刚好够用的硬件资源,以满足应用所需的功能。
另一方面,通用计算机系统需要支持各种各样的需求,所以一个应用程序可以使用大量的硬件资源。
从这一点来看,嵌入式系统可以看成一种有严格资源约束的计算机系统。
术语“嵌入式系统”和“通用计算机系统”没有严格的界定,因为大部分系统都有一些可扩展性和可编程性的元素。
例如,手机可以看成是嵌入式系统,因为它主要用于无线通信。
然而高端手机也能下载其他应用程序,如简单的视频游戏,这却是通用计算机系统的特性。
在本书中,通用计算机系统被称为“台式系统”,因为台式计算机是最常用的通用计算机系统。
1.1.2 示例系统
嵌入式系统在很多应用中被广泛使用,每个应用都有其特殊的要求。
本节通过以下三个例子阐述嵌入式应用的基本特性。
z微波炉
z数码相机
z车辆电子稳定控制系统
微波炉微波炉利用其内部的磁控管产生的微波辐射来烹调或者加热食物。
微波炉通常有一个面板,用于选择烹调时间和功率,还有一个LCD或LED显示屏,用于显示微波炉工作状态和时间。
微波炉内有一个嵌入式计算机,用于处理面板的输入、跟踪计时、产生显示符和控制磁控管单元。
微波炉操作不需要大量的计算,也不涉及高速的数据传输。
利用简单的8位处理器(即内部数据宽度是8位的处理器)和一个小容量的只读程序存储器就可以实现这些任务。
整个
基于Nios II的嵌入式SoPC系统设计与Verilog开发实例
2
嵌入式系统可以利用一个微控制器实现,它通常是一个含有8位内核处理器、小内存和简单I/O外设的单个IC芯片。
微波炉是一种典型的“低端”嵌入式系统。
数码相机 数码相机照相是利用图像传感器通过电子方式记录图像,并将数字化的图像存储在闪存卡中。
这个图像传感器包含数以百万计的像素传感器。
像素传感器将光信号转换成电信号,其输出被数字化,并储存为图像文件。
典型的数码相机有一系列用于控制和调节相机操作的按钮和旋钮,以及用于预览存储的图像的小型LCD显示屏。
相机中的嵌入式系统执行两个主要任务。
第一个任务涉及一般“家务管理”I/O操作,包括处理按钮和旋钮的操作,在LCD显示屏上产生图像,将图像文件写入存储设备中。
这些操作比微波炉中的操作更频繁,所以系统需要一个更高级的16位或者32位的处理器和一个独立的存储芯片。
第二个任务是处理图像并进行数据压缩以减小文件大小。
由于像素高且压缩算法复杂,因此需要大量的计算。
嵌入式处理器一般没有能力处理这种计算密集型操作,因此可以设计自定义数字电路来执行这个特殊任务,以减轻处理器的负担,这类电路就称为硬件加速器。
数码相机是一种典型的“高端”嵌入式系统。
车辆电子稳定控制系统 车辆的ESC(电子稳定控制)系统通过检测和最小化打滑来提高车辆的机动性(可操作性)。
驾驶中,ESC系统不断比较司机驾驶方向与车辆实际方向。
当检测到失控操纵(例如由于路面潮湿或者结冰引起的)时,ESC系统就会自动干预,对个别车轮进行制动,引导车辆回到驾驶方向上。
嵌入式系统根据方向盘角度获取车辆的驾驶方向,根据车辆的侧向加速度和个别车轮的旋转速率获取车辆的实际方向,从而判断是否发生打滑及其性质,然后计算制动力并对个别车轮制动,来补偿打滑条件。
ESC嵌入式系统有两个特殊性质。
其一,ESC系统满足实时性条件,即从触发事件(如出现打滑条件)到系统响应(如制动力的使用)的一个操作期限。
如果在规定的时间内刹车没有启动,系统就无法工作了。
其二,由于驾驶控制涉及司机的安全,因此嵌入式系统是至关重要的,系统必须具有鲁棒性和可靠性。
1.2 系统设计需求
在设计计算机系统时,必须考虑各种各样的因素,包括
z成本
z通用计算速度
z特殊计算需求
z实时性
z可靠性
z功耗
“特殊计算需求”一般指诸如数据压缩、加密、模式识别等某一特定计算任务,这些任务是用通用处理器无法完成的。
一般情况下,希望每个计算机系统都是便宜、快速、可靠且低功耗的。
然而,这些因素之间常常是相互矛盾的。
例如,处理器速度越快,价格越昂贵并且功耗也越大。
嵌入式系统应用广泛,每个系统都有其独一无二的需求。
对于每一个嵌入式系统,需要区分其关键要求,
第1章嵌入式系统概述 3
以权衡利弊。
说明这些要求的一个好方法是利用“雷达图”,如图1.1所示。
图中有六个轴线,每个轴线表示其相应的因素的重要性。
坐标轴中的一点从中心向外移动时,其对应因素的重要性也从“不重要”提升到“极其重要”。
图1.1 各种系统的雷达图
台式计算机是通用的,因此不会特别注重某一因素。
它的雷达图是“面面俱到的”,如图1.1(a)所示。
微波炉可以看成是一种商品,它的利润率并不是很高。
因此成本对于它来说就非常重要。
微波炉的嵌入式系统很简单,降低成本是它最重要的要求,因此其雷达图如图 1.1(b)所示。
数码相机需要特殊的图像处理和数据压缩技术,由于它是由电池供电的手持设备,所以降低功耗就显得很重要。
因此,相机的嵌入式系统的两个重要要求就是功耗和特殊的计算需求,其雷达图如图1.1(c)所示。
车辆的ESC系统要求有严格的操作时限,而且是至关重要的系统,所以它的主要要求就是实时性和可靠性,其雷达图如图1.1(d)所示。
从需求的角度出发,可以把嵌入式系统看成具有特殊设计要求的计算机系统。
1.3 嵌入式SOPC系统
本书的重点是与数码相机类似的“高端”嵌入式系统,这类系统通常包含一个处理器和简单的I/O外设,它们用作通用的用户接口,并实现内部管理任务。
系统还包括特定的硬件加速器,用于处理计算密集型操作。
这些组件能集成到一个集成电路中,就是通常所说的SoC (system on a chip,片上系统)。
随着FPGA(field-programmable gate array,现场可编程门阵列)器件集成度的不断提高,这种设计方案可以在一个FPGA芯片上实现,也就是常说的SoPC (system on a programmable chip,可编程片上系统)或者PSoC(programmable system on a chip,片上可编程系统)。
本书中使用SoPC这个术语。
利用传统的嵌入式处理器设计系统时,先要详细了解所需的功能,然后选择一款处理器、外接的I/O设备和ASSP(专用标准产品)器件,从而构建硬件平台。
由于处理器的大小固定,ASSP器件的选择有限,印制电路板的成本昂贵,所以硬件配置就相当“死板”,所需系统功能只能通过自定义的软件实现。
基于Nios II的嵌入式SoPC系统设计与Verilog开发实例
4
一个FPGA芯片包括逻辑单元和互连,通过配置(即“编程”)逻辑单元和互连可以实现特定的功能。
所需的硬件功能通常是使用HDL(硬件描述语言)代码描述的,这些代码综合后由逻辑单元来实现。
由于FPGA器件的可编程性,自定义的硬件也可以并入到嵌入式系统中。
我们可以裁剪处理器,只选择需要的I/O外设,创建用户I/O接口,并为计算密集型任务开发特定的硬件加速器。
基于SoPC的嵌入式系统提供了新的灵活性选择,因为其软件和硬件都可自定义实现特定需求。
嵌入式SoPC系统开发包括以下几个部分:
z将任务划分为软件和硬件加速器;
z开发硬件,包括硬件加速器和I/O外设,并与处理器整合在一起;
z开发软件;
z软、硬件实现与测试。
由于本书中的设计实例都是使用Altera的原型开发板,所以本书中的讨论也都基于Altera 的开发平台和它的Nios II处理器。
注意,Nios II是软核处理器,这就意味着这种处理器是用硬件描述语言代码进行描述,然后利用FPGA的通用逻辑单元进行综合。
基于Nios II的基本开发流程如图1.2所示,下面将详细说明其中的四个基本部分。
软件—硬件划分 第1步(图中标记为1)确定软、硬件分工。
一个嵌入式应用通常都执行一组任务。
在基于SoPC的设计中,一个任务可以用硬件实现,也可以用软件实现,还可以用软、硬件来实现。
基于性能要求、复杂性和硬件核的可用性,可以选择合适的实现类型。
硬件开发流程 图1.2左边的分支代表硬件设计流程。
第2步导出基本的硬件总体结构。
自定义硬件可以分为三类。
z Nios II处理器和标准的I/O外设 (框图中标记为“Nios配置”)Altera提供了处理器的软核和大量常用I/O外设。
第三方供应商也提供了其他的I/O核。
可以选择所需的I/O外设,并配置基本的Nios II系统。
z用户I/O外设和硬件加速器 (框图中标记为“用户I/O & HA”)对于某些专用I/O 函数或计算密集型任务,可能没有预先设计好的核,或者现有的核无法满足性能要求。
因此必须重新开始设计系统的硬件,再整合到Nios II系统中,作为自定义I/O 外设。
z用户逻辑 硬件的某些部分可能独立于Nios II系统,既不附加在Nios互连结构上,也不直接与处理器交互。
第3步,从自定义的Nios II系统生成HDL代码是利用Altera的SOPC Builder工具软件完成的。
在该软件中,可以配置处理器,选择所需的标准I/O核,并合并用户设计的I/O外设。
然后SOPC Builder产生自定义Nios II系统的HDL代码,并产生一个.sopcinfo文件,该文件中包含了系统的配置信息。
可以将产生的HDL代码同其他用户逻辑代码合并,形成最终的顶层HDL描述。
顶层HDL代码包含完整的硬件描述。
第4步进行综合、配置和布线,最终产生FPGA 配置文件(即.sof文件)。
软件开发流程图1.2右侧的分支表示软件设计流程。
第6步导出基本的软件结构。
Altera 提供了软件库,该库被集成在Altera的HAL(硬件抽取层)平台中,它包括I/O设备驱动,
第1章嵌入式系统概述 5
用于访问I/O外设的底层程序,还包括大量API(应用可编程接口)的高级函数。
从软、硬件接口来看,可以将软件代码分为三类:
z API函数 这些是来自于Altera的 HAL平台的函数;
z用户I/O驱动 在设计自定义的I/O外设或硬件加速器时,也需要开发软件I/O程序,用于控制其操作并与处理器之间进行数据交换;
z用户函数 用于实现嵌入式应用所需的功能。
图1.2 Nios II系统开发流程
基于Nios II的嵌入式SoPC系统设计与Verilog开发实例
6
可利用上述函数和驱动程序构建应用程序。
当一个Nios II系统创建完成后,处理器和I/O的配置信息就会被记录在.sopcinfo文件中。
在第7步中,BSP Editor的工具软件查看此文件,从HAL库中抽取所需的器件驱动程序,并建立一个用于支持系统的BSP(board support package,板级支持包)库。
第8步进行编译并链接软件程序和BSP库,并建立最终的软件映像文件(即.elf文件)。
物理实现和测试 系统的物理实现包括两步。
首先像第5步那样将FPGA配置文件下载到FPGA芯片(“编程”芯片),然后如第9步那样加载软件映像文件到Nios II存储器。
最后如第10步所示测试整个物理系统。
一个基于SoPC的嵌入式系统独一无二的特点是自定义的I/O外设和硬件加速器可以并入到系统中。
这一主任务涉及自定义硬件和一个软件驱动的开发,如图1.2中虚线框所示,这也是本书的重点。
1.4 本书结构
本书剩余内容分为四部分。
第1部分介绍基本的HDL结构和综合过程,并讨论了自定义数字电路的开发。
第2部分概述基于Nios II的系统和嵌入式软件开发,着重介绍底层I/O的访问和驱动。
通过一个简单的闪烁LED系统设计来讲解核心概念。
第3部分应用第1部分和第2部分的知识,在Altera的DE1原型开发板上设计一些复杂的I/O外设模块,包括PS2键盘和鼠标控制器、图形视频控制器、音频编解码控制器和SD(安全数码)卡控制器。
第4部分给出了三个硬件加速器整合的案例研究,包括自定义 GCD(最大公约数)电路、Mandelbrot 集合分形电路和基于DDFS(直接数字频率合成)方法的音频合成器。
1.5 文献注释
本书中,每章结尾有一个简短的文献章节,提供进一步学习所需的相关参考文献,更全面的参考目录列在本书末尾。
嵌入式系统包含大量的设计题目。
F. Vahid 和T. D. Givargis编著的Embedded System Design:A Unified Hardware/Software Introduction及W. Wolf 编著的Computers as Components: Principles of Embedded Computing System Design, 2nd edition进行了更全面的讨论。
大部分面向处理器的嵌入式系统书籍都是围绕特定的低端微控制器进行讨论。
L. Di Jasio编著的Programming 32-bit Microcontrollers in C: Exploring the PIC32是基于32位的PIC处理器,并且涵盖了更高级的设计实例。
软硬件协同设计是一个新兴的研究领域。
P. R. Schaumont编著的Practical Introduction to Hardware/Software Co-design一书介绍了基本概念以及将软、硬件合成为一个单一系统设计进程的课题。