嵌入式系统是嵌入到对象体系中的专用计算机系统,包括硬件和软件两大部分。硬件包括处理器、存储器、输入输出接口和外部设备等,软件包括系统软件和应用软件,嵌入式系统的系统软件和应用软件紧密结合。
嵌入式处理器是嵌入式系统的核心,有硬核和软核之分。常用的嵌入式处理器硬核有ARM、MIPS、PowerPC、Intel x86和Motorola 68000等;其中以ARM公司开发的ARM嵌入式内核现在使用的最为普遍,而且是一款相当成熟的硬核,性能比较稳定。Altera公司开发的Nios是16/32位嵌入式处理器软核。和硬核相比,软核的使用灵活方便,但是从使用过程中来看,NIOS嵌入式也暴露出了一些问题,例如性能不稳定,可支持的技术文档相对较少等,但是从目前嵌入式的发展状况来看,以ARM为代表的硬核和以NIOS为代表的软核必将是嵌入式发展的两个重要方向。
ARM是Advanced RISC Machines的缩写,是微处理行业的一家知名的企业。该企业设计了大量高性能,廉价,低功耗的RISC处理器,相关技术及软件。ARM是精简指令集计算机(RISC),其设计实现了外部非常小但是性能很高的结构。ARM处理器结构的简单使ARM的内核非常小,这样使器件的功耗也非常低。ARM7TDMI-S是基于ARM内核目前最低端的处理器,具有32位ARM指令集和16位Thumb指令集。
Nios嵌入式处理器是可配置的通用RISC处理器,可以很容易地与用户逻辑相结合,集成到Altera FPGA器件中。Nios具有16位指令系统,用户可选择16位或32位数据宽度和可灵活配置的标准外围设备及软件库。Nios系统将处理器、存储器、输入输出接口和其他IP核灵活地集成到SOPC设计中。
嵌入式系统是以应用为中心,以计算机技术为基础,硬件和软件可裁剪,适应应用系统对功能、可靠性、成本、体积和功耗等严格要求的专用计算机系统。
可以从以下几个方面来理解嵌入式系统的含义:
l 嵌入式系统面向用户、面向产品和面向应用,必须与具体应用相结合才会具有生命力,才更具有优势。嵌入式系统与应用紧密结合,具有很强的专用性。
l 嵌入式系统将先进的半导体技术、计算机技术和电子技术以及各个行业的具体应用相结合,是一个技术密集、资金密集和不断创新的知识集成系统。
l 嵌入式系统必须根据应用需求对硬件和软件进行裁剪,以满足应用系统的功能、可靠性、成本、体积和功耗等要求。比较好的发展模式是:首先建立相对通用的硬件和软件基础,然后开发出适应各种需要的嵌入式系统。
同时还应该看到,嵌入式系统是一个外延极广的概念。凡是与产品结合在一起的具有嵌入式特点的系统都可以称为嵌入式系统。
一般而言,嵌入式系统和通用计算机系统类似,由处理器、存储器、输入输出接口和设备以及软件等部分组成。但作为专用计算机系统的嵌入式系统与通用计算机系统相比,具有以下几个重要特征。
l 系统简练。由于嵌入式系统一般应用于小型电子装置,系统资源相对有限,所以系统内核与传统的系统相比要小得多。嵌入式系统一般没有系统软件和应用软件的明显区分,不要求功能的设计和实现过于复杂,这既有利于控制系统成本,同时也有利于保障系统安全。
l 专用性强。嵌入式系统的个性化很强,软件和硬件的结合非常紧密,一般要针对硬件进行软件的设计,即使在同一品牌、同一系列的产品中也需要根据硬件的变化和增减对软件不断进行修改。同时针对不同的任务,往往需要对系统进行较大更改,程序的编译下载也要同系统相结合。
l 实时操作系统支持。嵌入式系统的应用程序可以不需要操作系统的支持直接运行,但为了合理地调度多任务,充分利用系统资源,用户必须自行选配实时操作系统(Real-Time Operating System,RTOS)开发平台,这样才能保证程序执行的实时性和可靠性,减少开发时间,保障软件质量。
l 专门开发工具支持。嵌入式系统本身不具备自主开发能力,即使在设计完成以后用户通常也不能对程序功能进行修改,必须有一套开发工具和环境才能进行开发。开发工具和环境一般基于通用计算机的软硬件设备、逻辑分析仪和示波器等。
在嵌入式系统的软件开发过程中,采用C语言将是最佳的选择。由于汇编语言是非结构化的语言,不能胜任大型的结构化程序设计,必须采用更高级的C语言进行设计。
随着半导体技术的不断发展,片上系统(System on a Chip,SOC)成为嵌入式应用领域的热门方向之一。SOC最大的特点是成功实现了软硬件的无缝结合,直接在处理器芯片内嵌入操作系统的代码模块。此外,SOC有极高的综合性,在一个芯片内部运用VHDL等硬件描述语言可以实现复杂的系统。
用户使用SOC,不需要再像传统的系统设计一样绘制庞大复杂的电路板,而只需要使用相应的开发工具,将处理器、存储器和接口逻辑集成在一起,并开发相应的软件,编译仿真之后就可以直接交付芯片厂商进行生产。
SOC通常是专用集成电路(ASIC),所以不为用户所熟知,而且其开发周期长,生产成本高,产品不能进行修改。随着可编程逻辑器件(Programmable Logic Device,PLD)的广泛应用,可编程片上系统(System on a Programmable Chip,SOPC)越来越多地受到人们的关注。
SOPC是在PLD上实现SOC,PLD的可编程性使SOPC的设计和实现非常方便。用户可以灵活地进行系统硬件和软件设计,还可以在现场进行系统修改。PLD性能的不断提高,也使SOPC的性能越来越高。
Altera是PLD的大型生产商,生产的PLD有CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)和FPGA(Field Programmable Gate Array,现场可编程门阵列)两大系列。CPLD和FPGA的结构有所不同,但功能差别不大,作为新产品的FPGA要比早期的CPLD性能强大。
Altera的SOPC嵌入式处理器(Embedded Processor)解决方案有两种:嵌入ARM922T硬核的Excalibur器件和用于FPGA的可配置Nios嵌入式处理器软核。
1.2 ARM嵌入式处理器
1.2.1 ARM嵌入式处理器的特性
ARM公司开发了很多系列的ARM处理器内核,目前最新的系列已经是ARM11了,而ARM6核及更早的系列早已绝迹了,ARM7以后的内核也不是都获得了广泛的应用。目前应用的比较多的有ARM7系列,ARM9系列,ARM9E系列,ARM10系列,SeciurCore和Intel的StrongARM,XScale系列,因为在这个开发实验系统中用到的是基于ARM7内核的ARM7TDMI(-S)系列,所以重点介绍一下:
ARM7TDMI是目前使用最广泛的32位嵌入式RISC处理器,具有每瓦产生690MIPS的高性能低功耗能力,它将ARM7指令集同Thumb扩展组合在一起,可以减少内存容量和系统成本。同时,它还利用嵌入式ICE调试技术来简化系统设计,并用一个DSP增强扩展来改进性能。ARM7TDMI的4个功能模块T,D,M,I的基本含义如下:T:支持16位的压缩指令集Thumb; D:支持片上Debug;M:内嵌硬件乘法器;I:嵌入式ICE,支持片上断点和调试点,ARM7TDMI(-S)是ARM7TDMI的可综合(Synthesizable)版本(软核),如果芯片制造厂商没有对ARM7TDMI(-S)进行裁剪,则ARM7TDMI(-S) 与ARM7TDMI没有太大的区别,其编程模型与ARM7TDMI相同。在下文中将两者等同看待。在这套开发的实验系统中采用飞利浦公司的LPC2292芯片,它有如下的特性:
·16/32 位ARM7TDMI-S 微控制器,LQFP144 封装。
·16 kB 片内静态RAM 和256kB 片内Flash 程序存储器。
·128 位宽接口/加速器可实现高达60MHz 的工作频率。
·通过片内引导装载程序软件实现在系统编程/在应用编程(ISP/IAP)。
·单个flash 扇区或整片擦除时间为400ms 以及256 字节的编程时间为1ms。
·嵌入式ICE-RT 和嵌入式跟踪接口使用片内RealMonitor 软件对任务进行实时调试并且支持对执行代码进行高速实时跟踪。
·2/4(LPC2292/LPC2294)个互连的CAN 接口,带有先进的验收滤波器。
·多个串行接口,包括2 个UART(16C550)、高速I2C接口(400 kbit/s)和2 个SPI 接口。
·8 路10 位A/D 转换器,转换时间低至2.44μs。
·2 个32 位定时器(带4 路捕获和4 路比较通道)、PWM 单元(6 路输出)、实时时钟(RTC)和看门狗。
·向量中断控制器(VIC)。
·可配置优先级和向量地址。
·通过外部存储器接口可将存储器配置成4 组,每组的容量高达16MB,数据宽度为8/16/32 位。
·多达112 个通用I/O 口(可承受5V 电压)。
·多达9 个边沿或电平触发的外部中断引脚。
·通过片内PLL 可实现最大为60MHz 的 CPU 操作频率,设置时间为100us。
·片内晶振频率范围:1MHz~30 MHz
·2 个低功耗模式:空闲和掉电
·通过外部中断将处理器从掉电模式中唤醒
·可通过个别使能/禁止外部功能来优化功耗。
·双电源
·CPU 操作电压范围:1.65V~1.95 V(1.8 V± 0.15 V)
·I/O 操作电压范围:3.0V~3.6 V(3.3 V± 10%),可承受5V 电压。
1.2.2 ARM嵌入式处理器系统组件
下图以图1-1简单地介绍一下LPC2292芯片的内部结构和功能管脚:
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
图1-1 结构框图
1.结构概述:
LPC2119/2129/2194/2292/2294 包含一个支持仿真的ARM7TDMI-S CPU、与片内存储器控制器接口ARM7 局部总线、与中断控制器接口的 AMBA 高性能总线(AHB)和连接片内外设功能的 VLSI 外设总线(VPB,ARM AMBA 总线的兼容超集)。LPC2119/2129/2194/2292/2294 将 ARM7TDMI-S 配置为小端(little-endian)字节顺序。AHB 外设分配了 2M字节的地址范围,它位于 4G字节 ARM 存储器空间的最顶端。每个 AHB 外设都分配了 16k 字节的地址空间。LPC2119/2129/2194/2292/2294 的外设功能(中断控制器除外)都连接到 VPB总线。AHB 到 VPB 的桥将 VPB 总线与 AHB 总线相连。VPB 外设也分配了 2M字节的地址范围,从 3.5GB地址点开始。每个 VPB 外设在 VPB 地址空间内都分配了 16k 字节地址空间。片内外设与器件管脚的连接由管脚连接模块控制。该模块必须由软件进行控制以符合外设功能与管脚在特定应用中的需求。
2.片内 FLASH 程序存储器:
LPC2119 集成了一个 128K,而 LPC2129/2194/2292/2294 集成了 256K 的 FLASH 存储器系统。该存储器可用作代码和数据的存储。对 FLASH 存储器的编程可通过几种方法来实现:通过内置的串行 JTAG 接口,通过串口进行在系统编程(ISP)和 UART0,或通过在应用编程(IAP)。使用在应用编程的应用程序也可以在应用程序运行时对 FLAH 进行擦除和/或编程,这样就为数据存储和现场固件的升级都带来了极大的灵活性。
3.片内静态 RAM:
LPC2119/2129/2194/2292/2294 分别具有 16K/32K/64K 字节静态 RAM,SRAM 可用作代码和/或数据的存储。SRAM 支持 8 位、16 位和 32 位访问。SRAM 控制器包含一个回写缓冲区,它用于防止 CPU 在连续的写操作时停止运行。回写缓冲区总是保存着软件发送到 SRAM 的最后一个字节。该数据只有在软件请求下一次写操作时才写入 SRAM(数据只有在软件执行另外一次写操作时被写入 SRAM)。如果发生芯片复位,实际的 SRAM 内容将不会反映最近一次的写请求(即:在一次“热”芯片复位后,SRAM 不会反映最后一次写入的内容)。任何在复位后检查SRAM 内容的程序都必须注意这一点。通过对一个单元执行两次相同的写操作可保证复位后数据的写入。或者,也可通过在进入空闲或掉电模式前执行虚写(dummy write)操作来保证最后的数据在复位后被真正写入到 SRAM。
1.2.3 ARM嵌入式的寄存器简介
在ARM7TDMI处理器内部有37个用户可见的寄存器:
·31个通用的32位寄存器,6个状态寄存器;
·在不同的状态和工作模式下,程序员可以访问的寄存器也不同;
图1-2 ARM状态各模式下的寄存器
图1-3 Thumb状态各模式下的寄存器
Nios嵌入式处理器是用户可配置的通用RISC嵌入式处理器,它是一个非常灵活和强大的处理器。Nios处理器的易用和灵活已经使它成为世界上最流行的嵌入式处理器。
嵌入式设计者利用SOPC Builder系统开发工具能够很容易地创建自己的处理器系统。SOPC Builder可用于集成一个或多个可配置的带有许多标准外围设备的Nios CPU,并利用自动形成的Avalon交换结构总线将这些系统连接在一起。
可配置Nios CPU是Nios处理器系统的核心,它能够被灵活配置而适用于各种各样的应用。例如一个16位Nios CPU,在片内ROM中运行一个小程序,可以制作成一个实际的序列发生器或控制器,并且能够代替固定编码的状态机。又如一个32位Nios CPU,与外围设备、硬件加速单位和自定义指令一起,构成一个功能强大的32位嵌入式处理器系统。
Nios嵌入式处理器的独特性(例如自定义指令和并行的多控制器Avalon交换结构总线)使它不同于市场上其他的处理器软核。这些特性允许Nios用户通过用简单的而非传统的方法加速和优化自己的设计。
32位和16位Nios嵌入式处理器典型配置的比较如表1-1所示。
表1-1 Nios嵌入式处理器典型配置比较
特 性 | 32位Nios CPU | 16位Nios CPU |
数据总线宽度/bit | 32 | 16 |
算术逻辑单元(ALU)宽度/bit | 32 | 16 |
内部寄存器宽度/bit | 32 | 16 |
地址总线宽度/bit | 32 | 16 |
指令长度/bit | 16 | 16 |
逻辑单元数(LEs)(典型值)① | <1500 | <1000 |
>125MHz | >125MHz |
注: 其具体数值与器件结构有关
Nios嵌入式处理器指令系统结构的设计具有以下特性:
(1) 在Altera FPGA中有效实现。
l 使用最少的逻辑单元。
l 使用最少的存储单元。
l 最大的时钟速度。
(2) 用SOPC Builder容易进行系统集成。
l 简单的存储器接口。
l 标准的可配置外围设备库。
l 在CPU、外围设备和存储器之间自动形成Avalon交换结构接口逻辑电路。
(3) 为编译嵌入式软件优化指令系统结构。
l 灵活的寻址方式。
l 大容量内部寄存器组的有效利用。
l 快速的中断处理。
(4) 硬件加速模块。
l 有效算法实现。
l MSTEP指令:单步乘法单元。
l MUL指令:快速整数乘法单元。
Nios嵌入式处理器支持Altera主流FPGA的全部系列,器件支持如表1-2所示。
表1-2 Nios嵌入式处理器器件支持
器 件 | 说 明 |
Stratix II | 最高的性能,最高的密度,大量的存储资源,特性丰富的平台 |
Stratix GX | 最高的性能结构,高速串行收发器 |
Cyclone | 低成本,替代ASIC,适用于价格敏感的应用 |
APEX II | 高密度,高性能,支持高速差分I/O标准 |
Mercury | 高性能,高带宽,中密度,包括时钟数据恢复支持 |
Excalibur | 高性能,处理器硬核解决方案 |
APEX 20K/KE/KC | 高性能,中到高密度 |
FLEX 10K/KE | 低成本,低到中密度 |
ACEX 1K | 低成本,低到中密度 |
HardCopy | 高密度,大批量ASIC替换器件 |
随着超过1万个Nios开发套件的交付使用,Nios嵌入式处理器已经成为嵌入式处理器软核的标准。
Nios嵌入式处理器的系统组件、开发工具和开发平台如表1-3所示。
表1-3 Nios嵌入式处理器系统组件、开发工具和开发平台
系 统 组 件 | 开 发 工 具 | 开 发 平 台 |
CPU | SOPC Builder | 开发套件 |
Avalon交换结构总线 | Quartus II设计软件 | 软件授权 |
外围设备 | GNUPro嵌入式软件开发工具 |
|
片内调试模块 | 第三方工具 |
|
Nios嵌入式处理器系统包括一个或多个Nios CPU、Avalon交换结构总线和其他组件。Altera的SOPC Builder系统开发工具可以自动生成这些组件以及连接它们的总线。
下列组件可用于生成基于Nios处理器的嵌入式系统:
l Nios CPU。
l Avalon总线。
l 外围设备和存储器接口。
l 片内调试模块。
设计者能够使用SOPC Builder设计Nios处理器系统,如图1-4所示。
图1-4 Nios处理器系统
Nios处理器系统包含带指令和数据高速缓存的Nios CPU、片内调试模块、直接存储器存取(DMA)控制器、常用外围设备(PIO、UART、以太网端口和存储器接口等)和并行多控制器Avalon交换结构总线。
Avalon交换结构总线是Altera开发的用于Nios嵌入式处理器的参数化接口总线,由一组预定义的信号组成,用户用这些信号可以连接一个或多个IP模块。Altera的SOPC Builder系统开发工具自动地产生Avalon交换结构总线逻辑。
Avalon交换结构总线需要极小的FPGA资源,提供完全的同步操作,它的重要特性有:
l 简单的基于向导的配置。
l 并行的多控制器。
l 多达4GB的地址空间。
l 同步接口。
l 嵌入的地址译码。
l 带延迟的读写操作。
l 数据流处理。
l 动态的外围设备接口大小。
(1)简单的基于向导的配置
Altera的SOPC Builder系统开发工具中易于使用的图形用户界面引导用户进行增加外围设备、指定控制器和从属设备关系以及定义存储地址等操作。Avalon交换结构总线按照用户从向导界面的输入自动形成。
(2)并行的多控制器
Nios开发者可以按照自己的特殊操作需要创建自定义的系统总线结构,优化自己的系统数据流。Avalon交换结构总线支持所有总线控制器的并行事务处理,并自动地为共享外围设备和存储器接口进行仲裁。另外,直接存储器存取(DMA)设备能被用于与其从属设备一起提供总线控制能力。
在传统的总线中,单个仲裁器控制一个或多个总线控制器跟总线从属设备进行通信,由于每次只能有一个控制器可以存取系统总线而形成带宽瓶颈,如图1-5所示。
图1-5 传统总线结构
Avalon交换结构总线使用从属设备侧仲裁技术,使并行多控制器操作最大限度地提高系统性能。如果多个控制器同时存取从属设备,则由从属设备侧仲裁决定哪一个控制器得到从属设备的存取权,如图1-6所示。
图1-6 并行多控制器Avalon交换总线结构
在这样的系统中,快速以太网等高速外围设备可以在不暂停CPU的情况下直接存取数据存储器。
通过允许独立于CPU的存储器存取,Avalon交换结构总线优化了数据处理过程,提高了系统吞吐量。
(3)多达4GB的地址空间
存储器和外围设备可以映射到32位地址空间的任何地方。换句话说,CPU(或其他的总线控制器)有多达4GB的可寻址存储器范围。
(4)同步接口
所有的Avalon信号和Avalon总线时钟同步,这使相应的Avalon交换结构总线时间性能简单化,便于高速外围设备的集成。
(5)嵌入的地址译码
SOPC Builder创建的Avalon交换结构总线自动地为所有外围设备(甚至用户自定义外围设备)形成片选信号,这可极大地简化基于Nios处理器系统的设计。
分离的地址和数据通路为片内用户逻辑提供了一个极其容易的连接,用户自定义外围设备不需要数据和地址总线周期译码。
(6)带延迟的读写传输
Avalon交换结构总线可以完成带延迟的读写操作,这种延迟传输是很有用的。这是因为,控制器可以先发出读写请求,在执行一个无关的任务后接收数据。这项特性对发送多个读写请求到一个已知延迟的从属设备也非常有用。
例如,这对在连续的地址内同时进行取指令操作和DMA传输非常有好处。在这种情况下,CPU或DMA控制器可以预取预定的数据,以减少同步存储器的平均存取延迟。
(7)数据流处理
带Avalon交换矩阵的数据流处理在数据流控制器和数据流从属设备之间建立一个开放的通道,以完成连续的数据传送。这些通道允许数据在控制器和从属设备对之间流动。控制器不必连续地读取从属设备中的状态寄存器来决定从属设备是否可以发送或接收数据。
数据流处理在控制器和从属设备对之间获得最大的数据吞吐量,并避免在从属设备上出现数据溢出。这对DMA传输尤其有用。
(8)动态的外围设备接口大小
动态的总线大小允许Nios开发者使用低成本的窄的存储器件,这些存储器件可以和Nios CPU的总线大小不匹配。例如,32位数据总线的系统可以容易地集成8位闪速存储器器件。在这样的系统中,如果必要的话,动态的总线大小调整逻辑自动地执行多总线周期,以便从窄的外围设备中取出宽的数据值。SOPC Builder自动地添加完成大小调整和定位调整所需要的专用逻辑。
用户174360 2007-8-24 09:59
大家好 我是新手 !
感谢上面大虾的资料!
用户1053025 2006-9-20 10:49
用户1318081 2006-9-19 08:32