当前位置:首页 >> 信息与通信 >>

Nios嵌入式系统


第1章





嵌入式系统是嵌入到对象体系中的专用计算机系统,包括硬件和软件两大部分。硬件 包括处理器、存储器、输入输出接口和外部设备等,软件包括系统软件和应用软件,嵌入 式系统的系统软件和应用软件紧密结合。 嵌入式处理器是嵌入式系统的核心,有硬核和软核之分。常用的嵌入式处理器硬核有 ARM、MIPS、PowerP

C、Intel x86 和 Motorola 68000 等;Altera 公司开发的 Nios 是 16/32 位嵌入式处理器软核。和硬核相比,软核的使用灵活方便。 Nios 嵌入式处理器是可配置的通用 RISC 处理器,可以很容易地与用户逻辑相结合, 集成到 Altera FPGA 器件中。Nios 具有 16 位指令系统,用户可选择 16 位或 32 位数据宽度 和可灵活配置的标准外围设备及软件库。Nios 系统将处理器、存储器、输入输出接口和其 他 IP 核灵活地集成到 SOPC 设计中。

1.1 嵌入式系统简介
嵌入式系统(Embedded System)是当今最热门的概念之一,但这个概念并非新近才出 现。从 20 世纪 70 年代单片机的出现到今天各式各样嵌入式处理器的大规模应用,嵌入式 系统已经有了近 30 年的发展历史。 嵌入式系统最初的应用是单片机系统。20 世纪 70 年代出现的单片机使汽车、家电、 工业机器、 通信装置及其他成千上万种产品可以通过内嵌电子装置来获得更佳的使用性能、 更容易使用,更快和更便宜,这些装置已经初步具备了嵌入式的应用特点。 嵌入式系统应用广泛,嵌入式处理器的使用数量已经远远超过了通用微处理器。个人 计算机的外部设备中就有多个嵌入式处理器。制造、控制、通信、测量、汽车、船舶、航 空、航天、军事设备和消费类产品等都是嵌入式系统发挥重要作用的领域。 嵌入式系统是以应用为中心,以计算机技术为基础,硬件和软件可裁剪,适应应用系 统对功能、可靠性、成本、体积和功耗等严格要求的专用计算机系统。 可以从以下几个方面来理解嵌入式系统的含义: 嵌入式系统面向用户、面向产品和面向应用,必须与具体应用相结合才会具有生 命力,才更具有优势。嵌入式系统与应用紧密结合,具有很强的专用性。 嵌入式系统将先进的半导体技术、计算机技术和电子技术以及各个行业的具体应 用相结合,是一个技术密集、资金密集、高度分散和不断创新的知识集成系统。 嵌入式系统必须根据应用需求对硬件和软件进行裁剪,以满足应用系统的功能、 可靠性、成本、体积和功耗等要求。比较好的发展模式是:首先建立相对通用的 硬件和软件基础,然后开发出适应各种需要的嵌入式系统。

-2-

嵌入式处理器原理及应用——Nios 系统设计和 C 语言编程

同时还应该看到,嵌入式系统是一个外延极广的概念。凡是与产品结合在一起的具有 嵌入式特点的系统都可以称为嵌入式系统。 一般而言,嵌入式系统和通用计算机系统类似,由处理器、存储器、输入输出接口和 设备以及软件等部分组成。但作为专用计算机系统的嵌入式系统与通用计算机系统相比, 具有以下几个重要特征。 系统简练。由于嵌入式系统一般应用于小型电子装置,系统资源相对有限,所以 系统内核与传统的系统相比要小得多。嵌入式系统一般没有系统软件和应用软件 的明显区分,不要求功能设计和实现的过于复杂,这既有利于控制系统成本,同 时也有利于实现系统安全。 专用性强。嵌入式系统的个性化很强,软件和硬件的结合非常紧密,一般要针对 硬件进行软件的设计,即使在同一品牌、同一系列的产品中也需要根据硬件的变 化和增减对软件不断进行修改。同时针对不同的任务,往往需要对系统进行较大 更改,程序的编译下载也要同系统相结合。 实时操作系统支持。 嵌入式系统的应用程序可以不需要操作系统的支持直接运行, 但为了合理地调度多任务,充分利用系统资源,用户必须自行选配实时操作系统 (Real-Time Operating System,RTOS)开发平台,这样才能保证程序执行的实时 性和可靠性,减少开发时间,保障软件质量。 专门开发工具支持。嵌入式系统本身不具备自主开发能力,即使在设计完成以后 用户通常也不能对程序功能进行修改, 必须有一套开发工具和环境才能进行开发。 开发工具和环境一般基于通用计算机的软硬件设备、 逻辑分析仪和信号示波器等。 在嵌入式系统的软件开发过程中,采用 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 要比早

第1章





-3-

期的 CPLD 性能强大。 Altera 的 SOPC 嵌入式处理器 (Embedded Processor) 解决方案有两种: 嵌入 ARM922T 硬核的 Excalibur 器件和用于 FPGA 的可配置 Nios 嵌入式处理器软核。

1.2 Nios 嵌入式处理器
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 特 数据总线宽度/bit 算术逻辑单元(ALU)宽度/bit 内部寄存器宽度/bit 地址总线宽度/bit 指令长度/bit 逻辑单元数(LEs)(典型值) fMAX
① ①

Nios 嵌入式处理器典型配置比较 32 位 Nios CPU 32 32 32 32 16 <1500 >125MHz 16 位 Nios CPU 16 16 16 16 16 <1000 >125MHz



注:① 其具体数值与器件结构有关。

Nios 嵌入式处理器指令系统结构的设计具有以下特性: 在 Altera FPGA 中有效实现。 使用最少的逻辑单元。 使用最少的存储单元。 最大的时钟速度。 用 SOPC Builder 容易进行系统集成。 简单的存储器接口。

-4-

嵌入式处理器原理及应用——Nios 系统设计和 C 语言编程

标准的可配置外围设备库。 在 CPU、外围设备和存储器之间自动形成 Avalon 交换结构接口逻辑电路。 为编译嵌入式软件优化指令系统结构。 灵活的寻址方式。 大容量内部寄存器组的有效利用。 快速的中断处理。 硬件加速模块。 有效算法实现。 MSTEP 指令:单步乘法单元。 MUL 指令:快速整数乘法单元。 自定义指令 Nios 嵌入式处理器支持 Altera 主流 FPGA 的全部系列,器件支持如表 1-2 所示。
表 1-2 器 Stratix II Stratix GX Cyclone APEX II Mercury Excalibur APEX 20K/KE/KC FLEX 10K/KE ACEX 1K HardCopy 件 Nios 嵌入式处理器器件支持 说 明

最高的性能,最高的密度,大量的存储资源,特性丰富的平台 最高的性能结构,高速串行收发器 低成本,替代 ASIC,适用于价格敏感的应用 高密度,高性能,支持高速差分 I/O 标准 高性能,高带宽,中密度,包括时钟数据恢复(CDR)支持 高性能,处理器硬核解决方案 高性能,中到高密度 低成本,低到中密度 低成本,低到中密度 高密度,大批量 ASIC 替换器件

随着超过 1 万个 Nios 开发套件的交付使用, Nios 嵌入式处理器已经成为嵌入式处理器 软核的标准。3.0 版本的 Nios 嵌入式处理器具有更高的性能,包括: 更快地存取低成本的 SDRAM 器件。 片内指令和数据高速缓存。 支持实时调试的 JTAG 调试器。 增强的 Avalon 交换结构总线。 Nios 嵌入式处理器的系统组件、开发工具和开发平台如表 1-3 所示。
表 1-3 系 统 组 件 CPU Avalon 交换结构总线 外围设备 片内调试模块 Nios 嵌入式处理器系统组件、开发工具和开发平台 开 发 工 具 SOPC Builder Quartus II 设计软件 GNUPro 嵌入式软件开发工具 第三方工具 开 发 平 台 开发套件 软件授权

第1章





-5-

1.3 Nios 系统组件
Nios 嵌入式处理器系统包括一个或多个 Nios CPU、Avalon 交换结构总线和其他组件。 Altera 的 SOPC Builder 系统开发工具可以自动生成这些组件以及连接它们的总线。 下列组件可用于生成基于 Nios 处理器的嵌入式系统: Nios CPU。 Avalon 总线。 外围设备和存储器接口。 片内调试模块。 设计者能够使用 SOPC Builder 设计 Nios 处理器系统,如图 1-1 所示。

FPGA Nios 数据缓存 CPU 指令缓存 片内调试模块

数据 存储器 程序 存储器 Avalon 交换 结构 总线 SDRAM 控制器 PIO UART 10M/100 M 以太网 以太网 DRAM

JTAG 接口

DMA 控制器

图 1-1

Nios 处理器系统

Nios 处理器系统包含带指令和数据高速缓存的 Nios CPU、片内调试模块、直接存储器 存取(DMA)控制器、常用外围设备(PIO、UART、以太网端口和存储器接口等)和并 行多控制器 Avalon 交换结构总线。

1.3.1

Nios CPU 结构

Nios CPU 是 16 位和 32 位结构可配置并包含五级流水线的通用 RISC 微处理器。16 位 和 32 位 Nios CPU 都使用 16 位指令格式以减少程序代码长度和指令存储宽度。Nios CPU 指令系统针对 SOPC 和编译嵌入式应用进行优化。 Nios CPU 结构包括: 指令系统。 寄存器组。

-6-

嵌入式处理器原理及应用——Nios 系统设计和 C 语言编程

高速缓存。 中断处理。 硬件加速。 Nios 嵌入式处理器采用改进的哈佛存储器结构, CPU 带有分离的数据和程序存储器总 线控制。 SOPC Builder 系统开发工具允许用户容易地指定系统中 Avalon 控制器和从属设备 之间的连接,这些从属设备可以是存储器或外围设备。 Nios 指令总线是 16 位,用于从存储器中读取指令。Nios 数据总线宽度是 16 位或 32 位,分别用于 Nios CPU 的 16 位或 32 位配置。 (1)指令系统 Nios 指令系统支持 C 和 C++程序编译,包括算术和逻辑运算、位操作、字节读、数据 传送、流程控制和条件转移等指令。指令系统包含丰富的寻址方式以减少代码长度和提高 处理器性能。 (2)寄存器组 Nios CPU 有一个大容量的窗口化的通用寄存器组、8 个控制寄存器、一个程序计数器 和一个用于指令前缀的 K 寄存器。 通用寄存器在 16 位 Nios CPU 中是 16 位,在 32 位 Nios CPU 中是 32 位。寄存器组可 配置为包含 128、256 或 512 个寄存器。软件可以通过包含 32 个寄存器的滑动窗口存取这 些寄存器,滑动窗口的移动间隔是 16 个寄存器。滑动窗口允许快速地进行寄存器切换,加 速子程序的调用和返回。 (3)高速缓存 可配置的 Nios CPU 可以有选择地包含指令和数据高速缓存。 高速缓存通常通过提供局 部存储系统提高 CPU 的性能,这个局部存储系统可以快速地响应 CPU 产生的总线事件。 Nios 高速缓存的实现是采用简单的直接映射的连续写入结构,这种结构设计能够用最少的 器件资源消耗获得最大的性能。 (4)中断处理 Nios 处理器允许多达 64 个矢量中断。中断源有三类:外部硬件中断、内部中断和软 件中断。Nios 中断处理模式能够准确地处理所有内部中断。 用户可以有选择地禁止 TRAP 指令软件中断、硬件中断和内部中断。这项选择能够减 少 Nios 系统的大小,但只用于处理器不运行复杂软件的系统。 (5)硬件加速 Nios 指令系统可以利用硬件提高系统性能。特殊的周期密集型软件操作可以用硬件显 著地提高系统性能。这项特性通过修改指令系统提供。 Nios 处理器有两种指令系统修改方法:自定义指令和标准 CPU 选项。 ① 自定义指令 开发者可以通过向 Nios 处理器指令系统中添加自定义指令加快时间要求严格的软件 算法。开发者也可以用自定义指令在单周期和多周期操作中执行复杂的处理任务。另外, 用户添加的自定义指令逻辑电路可以访问 Nios 系统外的存储器和逻辑电路。 复杂的操作序列可以在硬件中简化为单指令的执行。这项特性允许开发者为数字信号

第1章





-7-

处理(DSP)、分组标题处理和计算密集操作优化自己的软件。 Altera 的 SOPC Builder 软件提供一个图形用户界面(GUI),开发者利用这个图形用 户界面可以向 Nios 嵌入式处理器中添加多达 5 个自定义指令。 ② 标准 CPU 选项 Altera 提供单独的预定义指令来提高软件性能。MUL 和 MSTEP 指令就是两个与其他 的硬件一起实现的预定义指令。当用户在 SOPC Builder 中选择这些 CPU 选项时,相关逻 辑被增加到算术逻辑运算单元(ALU)。例如,如果用户选择执行 MUL 指令,整数乘法 器被自动地添加到 CPU 的 ALU 中,并在两个时钟周期内完成 16 位与 16 位的乘法操作。 相同的操作用循环的软件程序实现需要 80 个时钟周期。 硬件加速乘法器的资源利用和时钟周期如表 1-4 所示。
表 1-4 乘法器选项 无(软件) MSTEP MUL 0 125 370


硬件加速乘法器的资源使用和时钟周期 时钟周期 16×16=>32 80 18 2


逻 辑 单 元

时钟周期 32×32=>32 250 80 20



注:① 两个无符号的 16 位数整乘产生一个无符号的 32 位结果。两个有符号的 16 位数整乘产生一个有符号的 32 位结果。 ② 两个无符号的 32 位数整乘产生一个无符号的 32 位结果。两个有符号的 32 位数整乘产生一个有符号的 32 位结果。 ③ 当使用 Stratix 器件时,MUL 在 DSP 模块中实现,不使用额外的逻辑单元。

另外, Nios CPU 包括一个内部移位单元用于实现逻辑和算术移位指令。 CPU 使用固定 的桶状移位逻辑在两个时钟周期内完成全部的移位操作。 硬件加速操作对可编程逻辑器件(PLD)中的处理器软核非常有利。Nios 开发者可以 在速度和面积间选择,增加了 SOPC 设计的灵活性。

1.3.2

Avalon 交换结构总线

Avalon 交换结构总线是 Altera 开发的用于 Nios 嵌入式处理器的参数化接口总线, 由一 组预定义的信号组成, 用户用这些信号可以连接一个或多个 IP 模块。 Altera 的 SOPC Builder 系统开发工具自动地产生 Avalon 交换结构总线逻辑。 Avalon 交换结构总线需要极小的 FPGA 资源, 提供完全的同步操作, 它的重要特性有: 简单的基于向导的配置。 并行的多控制器。 多达 4GB 的地址空间。 同步接口。 嵌入的地址译码。 带延迟的读写操作。 数据流处理。 动态的外围设备接口大小。

-8-

嵌入式处理器原理及应用——Nios 系统设计和 C 语言编程

(1)简单的基于向导的配置 Altera 的 SOPC Builder 系统开发工具中易于使用的图形用户界面引导用户进行增加外 围设备、指定控制器和从属设备关系以及定义存储地址等操作。Avalon 交换结构总线按照 用户从向导界面的输入自动形成。 (2)并行的多控制器 Nios 开发者可以按照自己的特殊操作需要创建自定义的系统总线结构,优化自己的系 统数据流。Avalon 交换结构总线支持所有总线控制器的并行事务处理,并自动地为共享外 围设备和存储器接口进行仲裁。另外,直接存储器存取(DMA)设备能被用于与其从属设 备一起提供总线控制能力。 在传统的总线中,单个仲裁器控制一个或多个总线控制器跟总线从属设备进行通信, 由于每次只能有一个控制器可以存取系统总线而形成带宽瓶颈,如图 1-2 所示。
控制器 1 (系统 CPU) 仲裁器 瓶颈 系统总线 程序 存储器 数据 存储器 控制器 2 (DMA 控制器)

控制器

从属设备

UART

PIO

图 1-2

传统总线结构

Avalon 交换结构总线使用从属设备侧仲裁技术,使并行多控制器操作最大限度地提高 系统性能。如果多个控制器同时存取从属设备,则由从属设备侧仲裁决定哪一个控制器得 到从属设备的存取权,如图 1-3 所示。
控制器 1 (系统 CPU) 控制器 2 (DMA 控制器)

控制器

Avalon 总线 程序 存储器

仲裁器

从属设备
图 1-3

UART

PIO

数据 存储器

并行多控制器 Avalon 交换总线结构

第1章





-9-

在这样的系统中, 快速以太网等高速外围设备可以在不暂停 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 的总线大小不匹配。 例如, 位数据总线的系统可以容易地集成 8 位闪速存储器 32 器件。在这样的系统中,如果必要的话,动态的总线大小调整逻辑自动地执行多总线周期, 以便从窄的外围设备中取出宽的数据值。SOPC Builder 自动地添加完成大小调整和定位调 整所需要的专用逻辑。

1.3.3

外围设备

Nios 嵌入式处理器包括可以在 Altera 可编程逻辑中实现的标准外围设备库,Altera 提

-10-

嵌入式处理器原理及应用——Nios 系统设计和 C 语言编程

供给用户这些外围设备的 Verilog HDL 或 VHDL 源代码以及所有系统综合需要的软件程序。 设计者能够使用 SOPC Builder 系统开发工具配置自己的 Nios 处理器系统。 利用 SOPC Builder 直观的向导用户界面,设计者可以配置系统组件、映像地址、主/从关系和中断优先 顺序等。 Nios 外围设备库包括的外围设备如表 1-5 所示。
表 1-5 外 围 设 备 定时器 PIO UART SPI DMA 控制器 存储器接口 以太网接口 用户逻辑接口 Nios 外围设备库 说 明

32 位定时器,能被用作周期性脉冲发生器或系统监视定时器 1~32 位并行 I/O 接口(输入、输出和边沿捕捉) 通用串行接口,波特率、数据位、校验位和停止位可调,流量控制信号可选 3 线主/从串行外设接口 在外围设备和存储器之间有效地进行批量数据传送 连接片内 ROM 和 RAM,片外 SRAM、Flash、SDRAM 和串行配置器件 与可选的 Nios 以太网开发套件一起使用 连接片内用户逻辑或片外器件

另外,设计者也可以使用 SOPC Builder 很容易地像使用标准外围设备一样集成用户的 自定义模块。

1.3.4

片内调试模块

Altera 的合作伙伴 First Silicon Solutions(FS2)和 Accelerated Technology(Mentor Graphics 的嵌入式系统分公司)提供给 Nios 嵌入式处理器系统开发者世界级的调试工具。 Nios 开发套件支持的不同级别的调试工具如图 1-4 所示。
命令行界面 Code|lab 调试软件

Windows 动态连接库(DLL) ISA ByteBlaster II 电缆 跟踪 端口 探针接口 JTAG JTAG 控制器

跟踪存储器 OCI 核 Nios CPU

图 1-4

Nios 开发套件支持的调试工具

第1章





-11-

可配置的 Nios CPU 可选择包括 FS2 的片内调试模块 (OCI) OCI 提供包括运行控制、 。 硬件断点、监视点、片内跟踪和片外跟踪等内部电路仿真器。用户可以使用 Altera 开发套 件中的 ByteBlaster II 下载电缆或 FS2 的目标系统分析器(ISA)连接 OCI,用 Accelerated Technology 的代码调试工具或 Red Hat 的 Insight 调试程序在主程序中存取 OCI。

1.4 Nios 开发环境
Nios 嵌入式处理器系统的开发环境包括硬件和软件两部分,即 Nios 开发板和 Nios 开 发工具,两者均包含在 Nios 开发套件中。 Nios 系统设计员可以使用 Nios 开发工具创建高性能的可编程片上系统(SOPC)。有 效的 Nios 嵌入式处理器开发工具允许用户配置一个或多个 Nios CPU,从标准库中添加外 围设备, 综合处理自定义系统, Quartus II 设计软件一起编译系统, Red Hat 的 GNUPro 与 用 软件开发工具进行程序设计、连编和调试。 Nios 嵌入式系统的开发流程包括硬件开发和软件开发两大部分,如图 1-5 所示。
SOPC Builder 配置处理器 选择配置外设 生成

硬件开发 EDIF 网络表 HDL 源文件 测试平台

软件开发 C 语言头文件 自定义库文件 外设驱动

第三方软件 操作系统 调试程序

Quartus II 设计输入 综合和适配 编程配置
图 1-5

GNUPro (编写源程序) 编译/连接 下载调试

FPGA

Nios 嵌入式系统开发流程

硬件开发的步骤如下。用 SOPC Builder 生成 Nios 嵌入式处理器,用 Quartus II 将 Nios 嵌入式处理器和其他逻辑电路结合进行设计输入,然后进行编译(包括分析综合和布局布 线),最后通过下载电缆将硬件配置数据下载到 FPGA 中。 软件开发的步骤如下。利用 SOPC Builder 生成的软件文件,用文本编辑器编写汇编语 言或 C/C++源程序,用 GNUPro 将源程序连编(包括汇编/编译和连接)成可执行程序,并 通过下载电缆对可执行程序进行调试和运行。也可以用第三方软件进行程序调试。 可以看出:硬件开发和软件开发的步骤十分相似,两者都由 SOPC Builder 开始,最后 将设计结果下载到 FPGA,都由输入、处理和下载三大步骤组成。但两者使用的开发工具 不同:硬件开发使用 Quartus II;软件开发使用 GNUPro。所使用的语言也不同:硬件开发

-12-

嵌入式处理器原理及应用——Nios 系统设计和 C 语言编程

采用的是硬件描述语言(HDL);软件开发通常采用 C/C++。 Nios 嵌入式处理器支持下列 SOPC 设计开发工具: SOPC Builder 系统定义和集成工具。 Quartus II 开发工具。 GNUPro 嵌入式软件开发工具。 第三方嵌入式操作系统和调试工具。

1.4.1

SOPC Builder 开发工具

SOPC Builder 是一个自动化的系统开发工具,它可使创建和检验高性能的 SOPC 设计 的任务显著地简单化。SOPC Builder 通过 SOPC 开发阶段系统定义、集成和验证的自动化, 缩短产品的市场化时间。使用 SOPC Builder,设计者能够在一个工具和传统 SOC 设计的一 小部分时间内, 定义一个从硬件到软件的完整系统。 SOPC Builder 集成在 Quartus II 软件内, 是一个供 FPGA 设计者快速访问的革命性的新开发工具。 SOPC Builder 系统开发工具提供直观的向导驱动图形用户界面,允许系统开发人员创 建、配置和综合处理自己的 SOPC 设计。SOPC Builder 允许用户配置外围设备,并自动将 外围设备连接到 Nios 嵌入式处理器。使用 SOPC Builder 开发者能够配置 CPU、外围设备 和存储器接口。 对每一个 Nios 系统 SOPC Builder 创建自定义软件库, 这些软件库包含定制 的包含文件、外围设备程序和例子源代码。 SOPC Builder 让开发者选择系统外围设备配置,指定内存分配、中断优先级和 Avalon 总线内部的主从关系。SOPC Builder 自动形成等待状态、中断控制、可变的总线大小和地 址译码逻辑。 SOPC Builder 设计流程如图 1-6 所示。
选择组件

CPU

IP 系统定义和定制

OS/RTOS

定制/集成 系统自动生成 ESS 模块 验证/构造 目标代码 测试平台 VHDL 或 Verilog HDL 设计文件 头文件 软件库 外设驱动

图 1-6 SOPC Builder 设计流程

SOPC Builder 形成硬件设计文件和自定义软件开发环境,这些文件在系统配置和生成 处理完成时自动形成,并采用典型的分层结构进行管理。

第1章





-13-

Nios 处理器系统的 SOPC Builder 输出文件有: 自定义处理器设计文件(.ptf)。 Nios 系统模块网络表文件(黑盒子) 。 HDL 源文件(VHDL 或 Verilog HDL) 。 仿真测试平台文件。 自定义软件开发工具包。 头文件。 自定义软件库文件。 源代码文件。

1.4.2

Quartus II 开发工具

Quartus II 设计软件是全面有效的 SOPC 设计环境,它将设计、综合、布局和验证以及 第三方 EDA 工具接口集成在一个无缝的环境中。包含在 Quartus II 设计软件中的 SOPC Builder 可以在 SOPC 应用中添加、参数化和连接嵌入式处理器、协处理器、外围设备、存 储器和自定义逻辑等 IP 核。 Quartus II 软件支持三种设计输入:VHDL 和 Verilog HDL 输入、图形设计输入以及两 种方法的组合, 设计者可以使用 Quartus II 模块设计编辑器用图形方式编辑顶层设计并转换 成 VHDL 或 Verilog HDL 用于综合和仿真。 Altera 的 MegaWizard 插件管理器可容易地用于参数化模块库 (LPM) 利用 Quartus II 。 软件和 Altera 或 AMPPSM 的 IP megafunctions 可以减少设计时间并提高设计性能。 Quartus II 软件包含系统的综合方案并集成来自 Mentor Graphics、 Synopsys 和 Synplicity 的第三方综合方案,使设计者能够在最短的时间内用 Altera 器件实现尽可能高的性能。 3.0 版的 Quartus II 包含的新特性,可以使 I/O 分配和验证在顶层设计或模块生成前完 成,以便尽早地开始印刷电路板(PCB)的设计。引脚分配可以在设计编译前的任何时候 改变和验证。新的分配编辑器使多信号选择和一次改变一组引脚的实现变得非常容易。 3.0 版的 Quartus II 软件包含最先进的布局布线技术,使 Quartus II 软件用户能够迅速 轻松地实现布局布线后设计更改。新的微增量设计编辑和编译技术给设计者进行布局布线 后设计更改提供最好的支持。 3.0 版的 Quartus II 软件完整地包含可以在命令行或 Quartus II 图形用户界面中独立运 行的重建综合、布局布线、延时分析和编程模块。 Quartus II 软件的 SignalTap II 嵌入式逻辑分析仪和 SignalProbe 路由特性,使设计者能 够在系统工作时分析器件的内部节点或 I/O 引脚。 SignalTap II 和 SignalProbe 可以与 Quartus II 软件综合,并同第三方综合一起协调工作,不需要对 HDL 设计文件进行任何修改。 Quartus II 软件包含一个创建项目以及完成通用设计、综合、布局和验证的初级教程, 也包含有帮助工程师快速掌握最新器件设计方法的高级教程。

-14-

嵌入式处理器原理及应用——Nios 系统设计和 C 语言编程

1.4.3

GNUPro 嵌入式软件开发工具

Red Hat 的 GNUPro 工具包给 Nios 开发者提供标准的嵌入式软件开发工具。GNUPro 编译程序和调试程序是 C/C++源代码开放的符合工业标准的软件开发工具。 它针对 Nios 嵌 入式处理器进行优化,提供设计工程师熟悉的开发环境。 GNUPro 嵌入式软件开发工具包括: GNU C 编译程序(gcc)。 GNU C++编译程序(g++)。 GNU 汇编程序(gas)。 GNU 连接程序(ld)。 GNU 源级和汇编级调试程序(gdb)。 GNU 调试程序的 Insight 图形用户界面。 GNU 编译程序既包含优化的 ANSI C 编译程序(gcc)和 C++编译程序(g++),也包 含 GNU 汇编程序(gas)和 GNU 连接程序(ld)等附加工具,以及许多 Nios 处理器特有 的二进制应用程序。 GNU 调试程序提供软件调试需要的所有工具,包括命令行调试程序(gdb)和图形用 户界面的 Insight 工具。 命令行调试程序(gdb)提供包含源级和汇编级、变量、寄存器和存储器等程序状态, 并可以处理大的复杂的程序。 Insight 工具是 gdb 调试程序的前端图形用户界面,包含源级调试程序的所有特性:能 以混合方式或拼接方式显示源级和汇编级代码、观察点和断点窗口和快速导航的图形栈。 很多供应商提供支持 Nios 嵌入式处理器的硬件和软件开发工具, 设计者能够使用这些 第三方工具加速自己的 SOPC 设计。

1.4.4

Nios 开发套件

Altera 及其第三方伙伴提供 Nios 嵌入式处理器的开发套件。Altera 的开发套件有如下 一些类型: Nios 开发套件(Cyclone 版)。系 Cyclone 器件的嵌入式系统开发环境。其标准套 件包括开发板、工具、参考设计和 SOPC 开发文档。 Nios 开发套件(Stratix 版)。系 Stratix 器件的嵌入式系统开发环境。其标准套件 包括开发板、工具、参考设计和 SOPC 开发文档。 Nios 开发套件(Stratix 专业版)。系 Stratix 器件的嵌入式系统开发环境。专业版 开发套件包含 Stratix EP1S40 开发板、工具、参考设计和 SOPC 设计文档。 Nios 开发套件(APEX 版)。系原始的 APEX 器件的嵌入式系统开发环境。 Nios 以太网开发套件。套件添加了连接到 Nios 嵌入式处理器系统的以太网接口。 支持 Nios 开发套件的调试工具如表 1-6 所示。

第1章 表 1-6 供 应 商 产 品 名 称 Nios 开发套件 Cyclone 版 Nios 开发套件 Stratix 版





-15-

支持 Nios 开发套件的调试工具 硬 件 软 调试程序 FS2 命令行界面 Red Hat Insight 调试程序 FS2 命令行界面 件 主 要 特 性 JTAG 目标连接 运行控制 4 个软件断点 无限个软件断点 4 个硬件断点 复合触发 JTAG 或 Mictor 目标连接 复合触发 片内和片外跟踪 Red Hat Insight

Altera

ByteBlaster II 下载电缆 ByteBlaster II 下载电缆

Altera

Nios 开发套件 Stratix 专业版

First Silicon Solutions

系统分析器

系统分析器

code|lab 开发套件


相关文章:
嵌入式系统设计入门
组建嵌入式应用 编译单个的源文件 重建整个应用系统 调试嵌入式应用 设置断点 ...TSK52x、 TSK80x、 TSK165x、 PowerPC、 TSK3000、 MicroBlaze、Nios II 和 ...
Nios嵌入式系统实验
Nios嵌入式系统实验_计算机软件及应用_IT/计算机_专业资料。Nios 嵌入式系统实验新建 SOPC 设计项目 首先,需要在 QuartusII 中建立一个设计项目,选择 File\New Proj...
嵌入式系统设计指导
嵌入式系统设计指导 9.0 北方工业大学信息工程学院 通信工程系、 通信工程系、...nios32.sopc:SOPC 系统配置文件 系统配置 配置文件 :■ nios32.ptf:SOPC 系统...
Nios嵌入式系统
Nios 嵌入式处理器是可配置的通用 RISC 处理器,可以很容易地与用户逻辑相结合, 集成到 Altera FPGA 器件中。Nios 具有 16 位指令系统,用户可选择 16 位或 32...
嵌入式设计入门
嵌入式系统设计入门概要 本指南展示如何在 Altium Designer 里面创建一个嵌入式...TSK52x、 TSK80x、 TSK165x、PowerPC、TSK3000、MicroBlaze、Nios II 和 ARM...
嵌入式期刊
嵌入式期刊_信息与通信_工程科技_专业资料。嵌入式 基于SOPC 的嵌入式系统董浩 (湖南涉外经济学院电信 1202 班) 摘要:利用 SOPC Builder 可以在短时间内把 Nios ...
全国计算机三级嵌入式系统开发技术真题题库
全国计算机等级考试 三级嵌入式系统开发技术题库第 1 套一、选择题 1:嵌入式...(可能是几千字节)的硬件栈区 36:Nios II软核处理器的硬件抽象层(HAL)系统库...
嵌入式系统作业
嵌入式系统作业_计算机硬件及网络_IT/计算机_专业资料。期末作业考核 《嵌入式系统...在 2000 年, Altera 发布了 Nios 处理器,这是 Altera Excalibur 嵌入处理器...
嵌入式系统试验
研究生专业实验教学 实验报告书 实验课程名称: 实验指导教师: 学院: 嵌入式系统...Nios II IDE 的基本操作; 2、初步了解 SOPC 的开发流程,基本掌握 Nios II ...
嵌入式系统题库
系统提供了TCP/IP协议栈 D:系统初始化,在main()函数之前完成软核处理器Nios和运行库环境的初始化任务 37:苹果公司的嵌入式移动电子产品风靡全球,iOS操作系统也...
更多相关标签:
nios ii | nios ii 教程 | nios dma | nios fifo | nios ii根本没有人用 | nios ii eclipse 教程 | nios2 | nios ii那些事儿 |