一、概述
SOPC(System On Programmable Chip,可编程的片上系统)是 Altera 公司提出来的一种灵活、高效的 SOC 解决方案。它将处理器、存储器、I/O 口、LVDS、CDR 等系统设计需要的功能模块集成到一个可编程器件上,构成一个可编程的片上系统。
1.1 SOPC 及其威廉希尔官方网站
现今,可将 SOPC 视为是基于 FPGA 解决方案的 SOC。与 ASIC 的 SOC 解决方案相比,SOPC 系统及其开发威廉希尔官方网站
具有更多的特色,也有多种途径可构成 SOPC 方案。
1.1.1 基于 FPGA 嵌入 IP 硬核的 SOPC 系统
基于 FPGA 嵌入 IP 硬核的 SOPC 系统是指在 FPGA 中预先植入处理器。目前最常用的嵌入式处理器大多是采用含有 ARM32 位知识产权处理器核的器件。为了达到通用性, 必须为常规的嵌入式处理器集成诸多通用和专用的接口,但这样无疑会增加芯片的成本和功耗。 如果将 ARM 或其他处理器核以硬核方式植入 FPGA 中,利用 FPGA 的可编程逻辑资源,按照系统功能需求来添加接口功能模块,既能实现目标系统功能,又能降低系统的成本和功耗。 这样就使得 FPGA 灵活的硬件设计与处理器的强大软件功能有机地结合在一起,高效地实现 SOPC 系统。
1.1.2 基于 FPGA 嵌入 IP 软核的 SOPC 系统
将 IP 硬核直接植入 FPGA 的解决方案存在以下不足:
(1)由于此类硬核多来自第三方公司,FPGA 厂商通常无法直接控制其知识产权费用,从而导致 FPGA 器件价格相对偏高。
(2)由于硬核是预先植入的,设计者无法根据实际需要改变处理器的结构,如总线规模、 接口方式、指令形式,更不可能将 FPGA 逻辑资源构成的硬件模块以指令的形式嵌入硬件加速模块(如 DSP)。
(3)无法根据实际设计需要在同一 FPGA 中集成多个处理器。
(4)无法根据需要裁剪处理器硬件资源以降低 FPGA 成本。
(5)只能在特定的 FGPA 中使用硬核嵌入式处理器。如果利用软核处理器,就能有效地弥补上述不足。
目前最有代表性的软核处理器分别是 Altera 公司的 Nios II 核,以及 Xilinx 公司的 Mi-croBlaze 核。特别是 Nios II 核,能很好的解决上述五方面问题。Altera 的 Nios II 核是用户可随意配置和构建的 32 位嵌入式处理器 IP 核,釆用 Avalon 总线结构通信接口;包含由 First Silicon Solution(FS2)开发的基于 JTAG 的片内设备(OCI) 内核(这为开发者提供了强大的调试功能)。在把 Nios II 植入 FPGA 前,用户可以根据设计要求,利用 Quartus II 和 Qsys,对 Nios II 及其外围设备进行构建,使该嵌入式系统在硬件结构、功能特点、资源占用等方面全面满足用户系统设计的要求。Nios II 核在同一FPGA 中的植入数量没有限制,只要 FPGA 资源足够即可。
另外,在开发工具的完备性方面,Nios II 具有很大的优势。Altera 不仅提供了强大的HAL 系统库支持,还提供了嵌入式操作系统和 TCP/IP 协议栈的支持。就成本而言,由于 Nios II 是由 Altera 公司直接提供而非第三方厂商产品,故用户通常无须支付知识产权费用,Nios II 的使用费用仅仅是其占用的 FPGA 逻辑资源的费用。因此,用户选用的 FPGA 越便宜,则 Nios II 的使用费就越低。
特别值得一提的是,通过 Matlab 和 DSP Builder,用户可以为 Nios II 处理器设计各类硬件数字处理器,并以指令的形式加入 Nios II 的指令集。例如,用户可以根据设计项目的具体要求,随心所欲地构建自己的 DSP 处理器系统,而不必拘泥于其他 DSP 公司已上市的有限款式的 DSP 处理器。

1.2 NiosII 软核处理器
1.2.1 Nios II 软核处理器简介
继第一代可配置嵌入式软核处理器 Nios 之后,2004 年 6 月,Altera 公司又推出了性能更好的 Nios II 嵌入式软核处理器。它与 2000 年上市的原产品 Nios 相比,最大处理性能提髙了 3 倍,而 CPU 内核部分的面积最大可缩小 1/2。在 2013 年底,Altera 公司又推出了 NIOS II 嵌入式软核处理器 GEN2 版本,并将之前的 NIOS II 嵌入式软核处理器更名为 NIOS II Classic。GEN2 版本与 Classic 相比,有相似的尺寸和性能,用户只需要做很小的改动,就能够把 Classic 版本上的软件移植到 GEN2 版本上来。
Nios II 系列 32 位 RISC 嵌入式处理器具有超过 200 DMIP 的性能,在低成本 FPGA 中实现成本只有 35 美分。由于处理器是软核形式,具有很大的灵活性,可以在多种系统设置组合中进行选择,满足成本和功能要求。采用 Nios II 处理器进行设计,可以帮助用户将产品迅速推向市场,延长产品生命周期,防止出现处理器逐渐过时的情况。
Nios II 开发包含有一套通用外设和接口库,部分 IP 和接口如下表

利用 Qsys 软件中的用户逻辑接口向导,用户还可以生成自己的定制外设,并将其集成在 Nios II 处理器系统中。使用 Qsys,用户可以在 Altera FPGA 中,组合实现现有处理器无法达到的嵌入式处理器配置,得到用户所需的结果。
Nios II 系列嵌入式处理器使用 32 位的指令集结构(ISA),建立在第一代 16 位 Nios 处理器的基础上,定位于广泛的嵌入式应用。Nios II Classic 处理器系列包括 3 种内核: 快速的(Nios II/f)、经济的(Nios/e)和标准的(Nios II/s)内核。更新版的 Nios II GEN2 处理器系列则取消了标准型内核,保留了经济型和快速型。每一型号都针对价格和性能进行了优化。 使用 Altera 的 Quartus II 软件、Qsys 工具以及 Nios II 集成开发环境(IDE), 用户可以轻松地完成基于 Nios II 处理器的嵌入式系统开发。
Nios II 系统的 3 种内核及特性如下表格:

Nios II 处理器的特性如下表格

1.2.2 可配置嵌入式软核处理器的优势
嵌入式处理器开发人员面对的一个最大挑战就是如何选择一个满足其应用要求的处理器。现在已有数百种嵌入式处理器,每种处理器都具备一组不同的外设、存储器、接口和性能特性,用户很难做出一个合理的选择:要么为了匹配实际应用所需的外设和接口要求而不得不选择在某些性能上多余的处理器;要么为了保持成本的需求而达不到原先预计的理想方案。
采用 Nios II 处理器,用户将不会局限于预先制造的处理器威廉希尔官方网站
,而是根据自己的要求定制处理器,按照需要选择合适的外设、存储器和接口。此外,用户还可以轻松集成自己专有的功能(如 DSP,用户逻辑),创建一款“完美”的处理器,如下图所示,使用户的设计具有独特的竞争优势。

用户所需要的处理器,应该能够满足当前和今后的设计性能需求。由于今后发展具有不确定性,因此,设计人员必须能够更改其设计,加入多个 CPU,定制指令集及硬件加速器,以达到新的性能目标,而 Nios II 处理器能满足以上要求。
采用 Nios II 处理器,用户可以根据需要设置功能,在低成本Altera 器件中实现。在单个 FPGA 中实现处理器、外设、存储器和 I/O 接口功能,可以降低用户的系统总体成本。无论是外设、存储器接口、性能特性,还是成本。这些优势的体现都借助于在 Altera的 FPGA 上创建一个定制的片上系统,或者更精确地说,创建一个可编程单芯片系统。
1.提供合理的性能组合
使用 Altera Nios 处理器和 FPGA,用户可以创建一个在处理器、外设、存储器和 1/0接口方面的完美方案。选择如下:
■ 3 种处理器内核——Nios II 开发人员可以选择一种或以下任意 3 种内核的组合: 具备髙性能的快速的内核(Nios II/f),具备低成本的经济的内核(Nios II/e),性能和尺寸折中的标准的内核(NiosII/s)。
■ 超过 60 种 Qsys 配备的内核——用户可以创建一组适合自己应用的外设、存储器和 I/O 接口。
■ 无限制的 DMA 通道组合——直接存储器存取(DMA)可以连接到任何外设,从而提高系统的性能。
■ 可配置的硬件及软件调试特性——软件开发人员具有多个调试选择,包括基本的 JTAG 的运行控制(运行、停止、单步、存储器等)、硬件断点、数据触发、片内和片外跟踪、嵌入式逻辑分析仪。这些强大的工具可以在开发阶段使用, 一旦调试通过后就可以去掉。
2.提升系统的性能
在嵌入式开发中,设计人员通常都会选择一个比实际所需的性能要高的处理器(意味着更髙的成本),从而为设计保留一个性能上的安全余量。Nios II 系统的性能是可以根据应用来裁剪的,相比固定的处理器,在较低的时钟速率下,具备更高的性能。Nios II 的特性可以在以下几个方面来提升系统的性能:
■ 多 CPU 内核一 Nios II 开发者可以选择最快的内核(Nios II/f)以获得高性能,还可以通过添加多个处理器来获得所需的系统性能。
■ FPGA 系列—Nios II 处理器可以工作在 Altera 推出的所有 Cyclone 系列、MAX10 系列、Arria 系列和 Stratix 系列的 FPGA 上。尤其是在 Stratix V 器件上,Nios II/f 内核超过 350 DMIPS 的性能,仅占用 1800 个逻辑单元(LE)。可以说用户几乎是免费得到一个 200 DMIPS 性能的处理器。
■ 多处理器系统——开发人员可以在 FPGA 内部实现多个处理器内核。通过将多个 Nios II/f 内核集成到单个器件内,可以获得极高的性能而不用重新设计印刷电路板。Nios II 的 IDE 支持这种多处理器在单一 FPGA 上的开发,或多个 FPGA 共享一条 JTAG 链。
■ 定制指令—定制指令是一种扩展处理器指令的方法,最多可以定制 256 个用户指令 (见下图)。定制指令是处理器处理复杂的算术运算和加速逻辑的最佳途径。例如, 将一个在 64K 字的缓冲区实现的循环冗余码校验(CRC)的逻辑块作为一个定制的指令,要比用软件实现快 27 倍。
■ 硬件加速—通过将专用的硬件加速器添加到 FPGA 中作为 CPU 的协处理器,CPU就可以并发地处理大块的数据。例如上面提到的 CRC 例子,通过硬件加速器处理一个 64K 字的缓冲区,比用软件快 530 倍。Qsys 设计工具中包含一个向导,用户可以用此向导来将加速逻辑和 DMA 通道添加到系统中。

3.降低系统成本
嵌入式设计人员总是坚持不懈地寻找降低系统成本的方法。然而,选择一款处理器, 总是存在性能、特性与成本的冲突,最终结果总是以增加系统成本为代价。利用 Nios II 处理器可以通过以下途径来降低成本:
■ 更大规模的系统集成—将一个或更多的 Nios II 处理器组合,选择合适的一组外设、 存储器、I/O 接口,这些方法可降低电路板的成本、复杂程度以及功耗。
■ 优化 FPGA/CPU 的选择—Cyclone 系列的 FPGA 提供可行的、低成本的嵌入式方案。经济型的内核(Nios II/e)只占用不到 35 美分的 Cyclone 器件资源,仅占用600 个逻辑单元,给其他片外的器件保留了更多的逻辑资源。Nios II/e 内核定位于低成本、需要低处理性能的系统。占用很少的逻辑资源还使得在单个的 FPGA 芯片上嵌入多个处理器成为可能。
■ 更好的库存管理—嵌入式系统通常包含了来自多个生产商的多种处理器,以应付多变的系统任务。当一种器件多余而另一种短缺的时候,管理这些处理器的库存便是个问题。但是使用标准化的 Nios II 软核处理器,库存的管理将会大大简化,因为通过将处理器实现在标准的 FPGA 器件上,减少了处理器种类的需求。
4.延长产品的生命周期
开发人员希望快速将产品推向市场并保持一个较长的产品生命周期,避免更新换代。基于 Nios II 的系统在以下几个方面可以帮助用户实现此目标:
■ 缩短产品的上市时间—FPGA 可编程的特性使其具有最快的产品上市速度。许多的设计通过简单的修改都可以被快速地实现到 FPGA 设计上。Nios II 系统的灵活性和快速上市的特性源于 Altera 提供完整的开发套件、众多的参考设计、强大的硬件开发工具(Qsys)和软件开发工具(Nios II IDE)。用户可以借助 Nios II 开发套件所带的设计,在几个小时内就完成自己的设计原型。由于将 Nios II 处理器放置于 FPGA 内部就可以验证外部的存储器和 I/O 组件,电路板设计速度显著加快。
■ 建立有竞争性的优势—维持一个基于通用硬件平台的产品的竞争优势是非常困难的。而包含一个或多个 Nios II 处理器,具备硬件加速、定制指令、定制的可裁剪的外设等的 SOPC 系统,具备了竞争的优势。
■ 延长了产品的生存时间—使用 Nios II 处理器的 SOPC 产品带来的一个独特优势就是能够对硬件进行升级。即使产品已经交付给客户,仍可以定期升级。这些特性可以解决很多问题:
① 延长产品的生存时间,随着时间的增加,可以不断将新的特性添加到硬件中。
② 减小由于标准的制定和改变而带来的硬件上的风险。
③ 简化了硬件缺陷的修复和排除。
④ 避免处理器的过时。嵌入式处理器供应商通常提供一个很宽的配置选择范围以适应不同的客户群。不可避免的是,某个或多个处理器有可能会因为生产计划等原因而停止供应或很难寻找。Nios II 设计人员拥有在Altera FPGA 上使用和配置基于 Nios II 设计的永久许可。一个基于 Nios II 的设计可以容易地被重新移植到新系列的FPGA 器件中,从而保护了对应用软件的投资。
■ 在产品产量增加的情况下降低成本—旦一个 FPGA 的设计被选定,并且打算进行大批量的生产,可以选择将它移植到 Altera 的 HardCopy(—种结构化的 ASIC 系列) 中,从而降低了成本并提升性能。Altera 还可以提供 Nios II 处理器的ASIC 制造许可,用户可以将包含 Nios II 处理器、外设、Avalon 交换式总线的设计移植到基于单元的 ASIC 中。