嵌入式设计手册(中文版)

1. 前言

嵌入式设计手册是Intel嵌入式系统开发工具的基本文档。本书阐述了如何有效使用这些工具,并推荐利用Intel提供的这些工具来开发、调试和优化嵌入式系统的设计风格和实践。本书为Intel嵌入式解决方案提供入门概念介绍,并帮助有经验的开发者提升设计效率。

2. 新手设计指南

新手设计指南旨在为新手提供一个Intel嵌入式开发工程和工具的基本概述。本章将介绍设计流程和开发工具、交互,并描述Nios II处理器和一个典型离散控制器之间设计流程的差异。
这个指南并不能替代新手入门的基本参考资料。它参考了其他的文档,这些文档提供了特定工具和流程的详细信息。它包含了一些资源和章节,来帮助那些首次使用Intel嵌入式开发工具来进行硬件和软件设计的开发者。要想获得更多信息,请参考链接文章。
参考链接:

  • Nios II经典处理器参考指南
  • Nios II Gen2 处理器指南
  • Nios II 经典软件开发手册
  • Nios II Gen2 软件开发手册
  • 嵌入式外设IP用户指南
  • Nios II Flash编程用户指南

2.1 FPGAs和软核处理器

FPGAs能够完成提供很多灵活选择的完成微控制器的逻辑功能。
离散微控制器与FPGAs之间的一个主要不同点在于,FPGA在上电后不包含任何逻辑。如果你想在一个基于Nios II系统中运行软件,你必须首先配置一个包含Nios II处理器的硬件设计。通过特性的逻辑设计来对FPGA进行电子编程来实现FPGA的配置。Nios II处理器实际上是一个软核处理器:它能够被放置在FPGA中的任何位置,这取决于你的设计需求。该处理器的两个版本都适用于Nios II Gen2,每个都具有如下特征:
基于FPGA的嵌入式系统只有包含如下几条特征,才能表现出基于离散式微控制器系统的特征:

  • 用于FPGA配置、硬件和软件调试的JTAG接口
  • FPGA上电配置机制

如果你的系统具备上述功能,你可以通过这些功能来改善已经通过测试并加载到FPGA中的硬件设计。使用FPGA使你能够快速修改问题或者加入新的功能。你可以使用JTAG接口,通过重新配置FPGA来测试新的硬件设计。
JTAG接口支持硬件和软件开发。使用JTAG接口,可以完成以下任务:

  • 配置FPGA
  • 下载和调试软件
  • 通过类似UART接口技术与FPGA通信(JTAG UART)
  • 调试硬件(使用嵌入式逻辑分析仪:SignalTap II)
  • 编程闪存

2.2 嵌入式系统设计

无论你是硬件设计人员还是软件设计人员,都应该通过阅读“Nios II Hardware Development Tutorial”这本教程来开始学习在Intel FPGA中进行嵌入式系统设计。“Nios II 系统开发流程”对帮助你了解如何使用Intel嵌入式硬件和软件开发工具来进行系统设计非常有益。官方建议在开始设计第一个项目之前应该阅读此教程。该教材介绍了开发Nios II处理器系统基本的硬件和软件流程。
使用FPGA进行设计,使你能够很灵活地在离散系统组件中实现某些功能,这些组件有些事基于软件的,有些是基于FPGA硬件的。这些灵活性使得设计变得更加复杂,一些设计工具被设计来处理这些复杂过程。即使你设计了一个并不满足应用需求的软核处理器,平台设计器也能够通过外设拓展和处理器分流机制来在你系统中起到关键作用。
下图描述了整个Nios II系统设计的流程图,包括硬件和软件开发。这种描述是被简化之后的,还用大量方法来使用Intel工具进行Nios II系统设计。

嵌入式设计手册(中文版)_第1张图片
图1 Nios II系统设计流程图

2.3 嵌入式设计资源

本节包含了一系列资源来为你在设计过程中提供帮助。这些资源包括传统的Intel官方支持,如在线文档、培训以及我的支持。此外网页论坛和维基百科也是不错的资源。这些资源种类繁多,你要按照设计需求以及所处设计阶段进行选择。

2.3.1 Intel嵌入式支持

Intel官方建议如下步骤寻找所需技术支持:

  1. 在Intel文档页面寻找相关文献,特别是在Nios II处理器文档页面。
  2. Intel FPGA设计库中的相关设计例子作为参考。
  3. 在以下任何一个社区中进行咨询:
  • Nios II论坛,在Altera论坛网站上提供
  • Altera维基百科网站
  • Rocketboards for Linux Support
    注意:Intel对Nios II论坛和Altera维基百科网站上的内容不负有责任,这些内容由Intel之外的广大作者和专家维护。
  1. 通过Intel网站上的myAltera页面来联系技术支持能够获得直接来之Intel的技术支持。
  2. 联系当地Intel供应商、销售代表或者应用工程师。
    相关链接:
  • Intel官方文档
  • myAltera
  • Altera论坛
  • Altera Wiki
  • 文档:Nios II处理器
  • Rocketboards
  • Inter FPGA Design Store

2.3.2 Intel嵌入式培训

Intel FPGA网站上提供了关于几个嵌入式培训的教程供选择。这些培训需要注册并在线观看,能够使你了解嵌入式开发工具如何协同使用。
在Intel FPGA网站上访问嵌入式软件设计课程(Embedded SW Designer Curriculum)页面能够获得可用课程和位置的详细信息。这个页面包含了关于在线培训教材的信息。
相关链接:

  • Intel FPGA培训
  • 嵌入式软件设计教程

2.3.3 Intel嵌入式文档

你可以从Nios II EDS安装目录下获得Nios II处理器和嵌入式设计的文档,该目录在\documents\index.htm下。在Windows平台下,可以在开始菜单中点击All Programs.在All Programs菜单下->Intel 子菜单->Nios II EDS<版本号>子菜单->点击Nios II<版本号>文档。这个页面包含最新的Nios II文档链接。
Intel网站的Nios II处理器页面包含了可用文档的列表和链接。页面的地步,你可以找到各种产品的链接,包含Nios II处理器在线实例和嵌入式设计信息。
本书的其他章节介绍大量关于嵌入式硬件和软件设计、验证和调试的信息。每个章节都会包含相关文档链接。
相关链接:

  • 文档:Nios II处理器

2.3.4 第三方IP(知识产权)

很多第三方通过Intel DSN 程序,使用Intel FPGA,加入到了嵌入式设计开发解决方案的研究中。可以通过访问Intel网站上的Nios II处理器页面,选择系统选项卡,来获得可用的Nios II处理器第三方解决方案的最新信息;或者也可以在直接搜索知识产权页面来寻找所需的IP。
还有一些社区论坛可以利用。这些论坛并不由Intel管理。Intel FPGA论坛中提供了第三方嵌入式系统相关的硬核和软核。论坛中同样包含了一些有用的案例设计但是不受官方支持的项目资源库。欢迎大家在这些论坛中贡献自己的一份力量。
对于Linux用户可以参考Rocketboards。
通过支持中心或者当地应用工程师同样可以获得一些额外的支持。通过访问Intel FPGA论坛或者浏览Intel FPGA维基百科上的信息,可以获得更多支持。很多有经验的开发人员,会经常在维基百科上贡献内容以及在Nios论坛上回答问题,这些都是可以参考的资源。
相关链接:

  • 嵌入式处理网页
  • Altera论坛
  • Altera维基
  • 知识产权:寻找IP
  • Rocketboards

2.4 Intel 嵌入式术语

以下一些定义解释了藐视平台设计器以及基于Nios II处理器系统的特有术语:

  • Component——组件,即平台设计器中自定义模块,包含了获取相关硬件外设的必要硬件和软件。
  • Custom instruction——定制指令,与Nios II处理器的运算器集成的自定义硬件处理。Nios II处理器和基于平台设计器的可编程本质支持在定制硬件上进行软件算法的实现。定制指令能够加速通用操作。(Nios II处理器的浮点指令就是以定制指令形式实现的)。
  • Custom peripheral——定制外设,用硬件实现加速。不同于定制指令,定制外设并不与CPU的运算器连接。他们之间通过系统互连架构进行通信。(阅读系统互连架构)。在数据流应用中,定制外设能够从处理器中将数据进行分流传输操作。
  • ELF(Executable and Linking Format)——可执行链接格式,Nios II处理器能够使用的可执行格式。在可用的可执行格式中,这种格式是最常见的。当今主流的Linux/BSD等操作系统大部分都是用这种格式。
  • HAL(Hardware Abstraction Layer)——硬件抽象层,一个轻量级的运行时环境,为与底层硬件通信程序提供一个简单的设备驱动接口。它为newlib C库提供一个类似于POSIX的软件层和包装器。
  • Nios II Command Shell——Nios II命令窗口,是你用来访问Nios II和平台设计器的命令行工具。
    — 在Windows平台中,Nios II命令窗口是一个经过环境配置,能够访问命令行工具的Cygwin bash。
    — 在Linux平台中,要执行合适的配置bash,键入命令:
/nios2_command_shell.sh
  • Nios II Embedded Development Suite (EDS)——Nios II嵌入式开发套件,为构建和调试基于Nios II处理器的软件应用日通完整的软件环境。
  • Nios II Software Build Tools (SBT)——Nios II软件构建工具,允许你创建Nios II软件工程的平台,能够对软件构建过程进行详细控制。
  • Nios II Software Build Tools for Eclipse——基于Eclipse的Nios II软件构建工具。一个基于Eclipse的Nios II嵌入式开发环境,利用SBT进行项目穿件和软件构架过程中的详细控制。Eclipse提供了软件项目管理,构建以及调试等功能。
  • Platform Designer——平台设计器。无论是否具有处理器,都为基于FPGA子系统创建提供一个基于GUI的系统构建器和相关构建工具。
  • System interconnect fabric——系统互连架构。Nios II处理器与片上和片下外设进行通信的接口。这种结构具备便捷和高性能的特征。

2.5 文档版本历史

嵌入式设计手册(中文版)_第2张图片
表2 修订历史

3 使用Intel Quartus Prime和Platform Designer进行硬件系统设计

本章将介绍硬件系统设计流程,基于Platform Designer进行设计,以及外部处理器与FPGA交互。同时介绍Nios II处理器相关配置,时序约束和时序要求,以及定制来满足设计需求。
平台设计器系统集成工具通过自动化的互连逻辑生成来连接IP与子系统,为FPGA设计节约大量的时间和精力。下面章节将讲解如何在平台设计器中进行信号连接。

3.1 FPGA硬件设计

虽然是在平台设计器上开发基于FPGA的设计,但是你必须在其他工具上完成以下几个工作:

  • 连接FPGA设计与板级设计之间的信号线
  • 连接平台设计器系统与FPGA逻辑中其他信号之间的信号线
  • 约束设计
嵌入式设计手册(中文版)_第3张图片
图2 Nios II系统硬件设计流程
3.1.1 将FPGA设计与硬件连接

基于FPGA设计与板级设计之间连接,需要完成以下两个工作:

  • 确定FPGA设计的顶层
  • 管脚分配
3.1.2 将FPGA设计与硬件连接

必须为平台设计系统定义时钟和复位引脚。必须为适当的系统操作定义每个I/O信号。下图描述了包含一个Nios II处理器的平台设计系统的顶层模块框图。图中鼎城模块图中的大符号std_ls40代表了平台设计器系统。框图中的引脚标号代表与FPGA的连接引脚。

嵌入式设计手册(中文版)_第4张图片
图3 顶层模块框图

获取更多关于FPGA设计中引脚连接的信息,可以在Intel官网上参考Intel I/O管理、板级开发支持以及信号集成分析资源中心。

3.1.3 约束FPGA设计

为了确保设计满足时序和其他要求,必须使用Quartus Prime软件或者第三方EDA工具,对设计进行约束,以满足设计要求。Intel Quartus Prime软件在编译过程中,对约束信息进行分析,从而实现Intel可能的最好结果。
Intel第三方EDA合作者以及他们所提供的工具都在Intel官网的Intel合作者解决方案页面中列出。

3.2 使用平台设计器进行系统设计

平台设计器使得在FPGA找那个构建复杂硬件系统的任务变得简单。它使得设计者能够使用GUI来描述系统拓扑,然后生成系统的硬件描述语言(HDL)。Intel Quartus Prime软件编译HDL文件,最终生成一个SRAM 目标文件(.sof(SRAM Object FIle))。关于平台设计器的其他信息,请参考Intel Quartus Prime Handbook。
平台设计器允许设计者选择处理器内核类型以及每个Nios处理器的缓存、调试和定制功能的等级。在设计中可以使用片上资源,如内存、PLLs、DSP以及高速收发器。使用平台设计器能够为你的设计构建最佳的处理器。
在你使用平台设计器构建自己的系统之后,并且为你的顶层设计添加了所需的定制逻辑,然后你必须在Quartus Prime软件中进行引脚分配。FPGA外部引脚具有灵活的功能,可以连接时钟、控制信号以及I/O信号。
更多关于引脚分配的问题,参考Intel Quartus Prime帮助以及卷2中的I/O管理章节:Intel Quartus Prime手册中设计实现及优化。
官方建议设计者可以从一个经过测试的小工程开始,然后一步步建立。官网上有许多设计案例,是通过平台设计器来实现的,以及Nios II硬件开发教程中的一些设计案例,这些都可以用来练习。
平台设计器允许你使用组件编辑器来创建定制外设。在组件编辑器中,你可以导入自己的源文件,给信号分配不同的接口以及设置组件属性和参数。
在开始设计一个定制组件前,你需要熟悉平台设计器中可用的接口和信号类型。
在所有的新组件中,你应该为从机接口使用动态寻址。动态寻址从机端口包括字节使能,决定在读写周期中哪个字节通道能够被访问。动态可寻址从机接口具有额外的好处,那就是它能够被任何数据宽度的主机所访问,并且这些数据宽度没有被截断和副作用。
参考Avalon接口规范,你能够了解到平台设计器中可用的接口和信号类型。在Intel Quartus Prime手册中组件编辑器章节中,可以学到关于如何使用组件编辑器。
当你将硬件组件添加到系统中后,使用软件对它进行测试。如果你不知道如何使用软件进行新的硬件组件测试,Intel建议你与软件工程师共同合作进行组件测试。
Nios II嵌入式开发套件包含几个软件例程,位于Nios II EDS安装目录下:\examples\software。在你运行一个简单软件设计之后——比如最简单的Hello World Small——基于这个设计来构建自己的系统,对系统要求的额外接口和定制选择进行测试。Intel建议开始设计得简单系统要包含JTAG调试模块、片上存储组件、JTAG UART组件。并且为每个未测试的组件创建一个新的系统,而不是在一个新的未测试组件中进行添加。
当你对每个硬件组件进行了单独的测试之后,你可以在平台设计器中将这些组件合并在一个系统中。平台设计器很好地支持这种设计模式,并且允许用户轻松添加组件和重构工程。
关于如何实现推荐的设计过程更为详细的信息,请参考嵌入式设计手册中验证和Board Bring-Up章节。
相关链接:

  • Quartus Prime标准用户手册卷1:设计与综合
  • 设计案例
  • Nios II硬件开发教程
  • Avalon接口规范
  • 408页的设计与Board Bring-Up
3.2.1 Intel片上可编程系统(平台设计器)方案

为了能够理解Nios II软件开发过程,你必须对平台设计器系统的定义有所了解。平台设计器是一个系统开发工具,用于创建包括处理器、外设以及存储系统。利用它,你能够高效的完成一个平台的定义和生成。虽然平台设计器支持系统集成Nios II处理器,但是它并不强制要求包含Nios II 处理器。
平台设计器系统在很大程度上与传统的嵌入式系统相似;但是这两种系统不完全一样。对两者差异的深层理解是,使用平台设计器能够提升系统设计的效率。
在Intel平台设计器方案中,硬件设计是在Intel FPGA器件中实现的。Intel FPGA器件本身无法固化程序,当掉电时程序会丢失,同时它还是可编程器件。当对Intel FPGA进行编程时,内部的逻辑单元被配置以及连接,从而生成一个包含Nios II处理器、存储器、外设以及其他结构的平台设计器系统。这个系统组件通过Avalon总线接口进行连接。当FPGA被编程以实现一个Nios II处理器后,你能够再此系统中进行下载、运行以及调试系统软件。
了解下列FPGA和Nios II处理器中基本词汇对于高效开发Nios软件应用至关重要:

  • FPGA器件和平台设计器-基本属性:
    Volatility:灵活性,FPGA只有在进行配置之后才能实现功能,并且能够在任何时候进行重新配置。
    Design:设计,许多平台设计器系统都是使用平台设计器和Intel Quartus Prime软件进行设计的,并且可能包含多外设和多处理器。
    Configuration:配置,FPGA配置可以通过编程线缆实现,比如Intel FPGA下载器,这也用于Nios II软件调试操作中。
    Peripherals:外设,外设是由FPGA资源构建而成,并且能够在Avalon存储空间的任何位置出现。这些外设大部分都是内部可参数化的。
  • Nios II处理器-基本属性:
    Volatility:灵活性,Nios II处理器非常灵活,并且只能在FPGA配置后才能呈现出这种灵活性。它必须作为系统组件在FPGA中实现,并且同其他系统组件一样,只有明确实现才能在FPGA中存在。
    Parameterization:在平台设计器中,大部分Nios处理器的属性都是参数化的,包括内核类型、缓存支持以及定制指令等等。
    Processor Memory:处理器存储,Nios II处理器必须从一个内部或外部存储设备中通过代码导入进行启动。
    Debug support:调试支持,为了能够具有软件调试支持功能,必须为Nios II处理器配置一个调试内核。调试通信通过一个可编程器实现,例如Intel FPGA下载器。
    Reset vector:复位矩阵,复位矩阵地址能够被配置为任何存储位置。
    Exception vector:异常矩阵,异常矩阵地址能够被配置为任何存储地址。
3.2.2 平台设计器设计

推荐的设计流程要求维持几个小的平台设计器系统,每个小系统能够在Quartus Prime 工程和软件中用于硬件测试。平台设计器设计需要下列文件和目录:

  • Intel Quartus Prime Project File (.qpf)
  • Intel Quartus Prime Settings File (.qsf)
    此文件Intel Quartus Prime工程中所有器件、引脚、时序以及编译设置文件。
  • 顶层设计文件是下列类型中的一个:
    — Block Design File (.bdf)
    — Verilog Design File (.v)
    — VHDL Design File (.vhd)
    平台设计器能为你的系统自动生成大部分的HDL文件,所以当你在保存工程时不需要保持这些文件,仅仅将这些文件之间添加到设计中即可。
  • Platform Designer Design File (.qsys)
  • Platform Designer Information File (.sopcinfo)
    此文件包含一个对平台设计器系统的XML描述。平台设计器以及下游工具,包括Nios II Software Build Tools(SBT),都从该文件中获取系统信息。
  • 软件应用源文件
    通过将所需的文件复制到另一个路径就能够复制整个通常(包括硬件和软件)。你可以创建一个脚本来完成复制过程。复制完成后,你可以在合适的工具中进行修改来完成一个新的工程,这些工具包括:Intel Quartus Prime Software,Platform Designer,SBT for Eclipse,SBT in the command shell,或者IDE。
    关于所有文件的信息,参考* Intel Quartus Prime Handbook Volume 1: Design and Synthesis.*的"Archiving Projects" 章节。

3.3 将Intel FPGA与外部处理器连接

Markdown语法

你可能感兴趣的:(嵌入式设计手册(中文版))