2.07k likes | 2.3k Views
可编程片上系统开发平台. 何宾 2012.02. 本章内容. 该章描述在 Xilinx 嵌入式开发套件( Xilinx Development Kit , XDK )嵌入式系统工具的结构和设计流 程。 XDK 用于开发基于 MicroBlaze 软核和 PowerPC 硬核处 理器的 SOPC 系统。该章的主要内容包括: EDK 简介、设 计流程概述、平台开发结构的工具。 Xilinx 的 EDK 工具主要包含: Xilinx Platfrom Studio ( XPS )人机界面、嵌入式系统工具套件、嵌入式处理 IP
E N D
可编程片上系统开发平台 何宾 2012.02
本章内容 该章描述在Xilinx嵌入式开发套件(Xilinx Development Kit,XDK)嵌入式系统工具的结构和设计流 程。XDK用于开发基于MicroBlaze软核和PowerPC硬核处 理器的SOPC系统。该章的主要内容包括:EDK简介、设 计流程概述、平台开发结构的工具。 Xilinx的EDK工具主要包含:Xilinx Platfrom Studio (XPS)人机界面、嵌入式系统工具套件、嵌入式处理IP 核,例如处理器和外设、 Platform Studio SDK(Software Development Kit,SDK)。SDK基于Eclipse开放源码框 架,可以选择使用SDK开发自己的嵌入式软件应用程序 (从EDK13.1开始,必须在SDK内开发软件应用程序)。
ISE 设计套件 嵌入式和系统版本 SDK软件开发工具 也包括在ISE 设计套件嵌入式和系统版本中 硬件 平台 处理器硬件开发 软件开发 验证文件生成 软件调试 软件统计分析 设计实现 芯片配置 芯片配置 图5.1 EDK嵌入式设计流程 设计流程及EDK工具-设计流程 EDK中所提供的工具用来完成嵌入式设计的整个过 程。图5.1给出了基于EDK的基本嵌入式设计流程。
设计流程及EDK工具-建立硬件平台 Xilinx的FPGA技术允许设计者在处理器子系统中定制 硬件逻辑。这种定制不可能使用标准的现成的微处理器或 控制器芯片。“硬件平台”是指设计人员根据应用的需要而 使用Xilinx的技术建立的灵活地、嵌入式处理子系统。 硬件平台是由一个或多个处理器或外设连接到处理器 总线构成的。 EDK通过微处理器硬件规范(Microprocessor Hardware Specification,MHS)文件记录硬件平台信息。
设计流程及EDK工具-软件平台建立 软件平台是软件驱动和用于建立应用程序的操作系统 (可选)组成的。所建立的软件映像文件只包含用户所 使用到的一部分Xilinx的库。 EDK通过微处理器软件规范(Microprocessor Software Spectifcation,MSS)记录软件平台信息。设计 人员可以在软件平台运行多个应用程序。
设计流程及EDK工具-使用仿真的硬件平台验证 验证硬件平台的正确功能,设计人员可以建立一个仿 真模型,并且在HDL仿真器上运行。当仿真系统时,处理 器运行可执行文件。 设计人员可以选择建立行为、结构或者精确的时序仿 真模型。
设计流程及EDK工具--使用调试的软件验证 调试嵌入式软件的基本技术是加载设计到所支持的开 发板和使用调试工具去调试处理器。 作为可选择的方式,设计人员可以使用指令集仿真器 或简化系统仿真器模型(“虚拟平台”)运行在主机上来调 试设计代码。 设计人员可以通过概要分析代码的执行来估计系统性 能。
设计流程及EDK工具-芯片配置 一旦软件和硬件平台建立完成,设计人员可以为FPGA 建立一个的配置比特文件。 对于原型设计,当连接主机和芯片时,设计者可以在 下载比特流时,将希望运行在嵌入式平台上的软件同时下 载。 对于产品,设计人员将配置比特流和软件保存在和 FPGA连接的非易失性存储器中。
图5.2 EDK工具的结构 设计流程及EDK工具-EDK工具
设计流程及EDK工具- Xilinx Platform Studio(XPS) XPS提供了集成环境为基于MicroBlaze和PowerPC处理 器的嵌入式处理器系统创建软件和硬件规范流程。 XPS也提供编辑器和项目管理接口用来创建和编辑源 代码。 XPS提供工具流程配置选项的定制和提供图形化的系 统编辑器用来连接处理器、外设和总线。 XPS可以在Windows、Solaris和Linux平台下使用。 从XPS中,设计人员可以运行所有的用于处理硬件和 软件的嵌入式系统工具。在XPS环境下可以进行系统的验 证。
设计流程及EDK工具- Xilinx Platform Studio(XPS) XPS提供下面的特性: (1) 能够添加核,编辑核参数和进行总线和信号连接,产生MHS 文件; (2) 能够产生和修改MSS文件; (3) 支持表5.1内的所有工具; (4) 能够产生和观察系统块图和设计报告; (5) 多用户软件应用支持; (6) 项目管理; (7) 过程和工具流程依赖管理; (8) 输出MHS文件到SDK工具
设计流程及EDK工具-Xilinx Software Development Kit(SDK) SDK工具是XPS的补充,SDK为应用软件提供开发环 境。SDK基于Eclipse开放源码标准。SDK主要有以下特 点: (1) 功能丰富的C/C++编辑器和编译环境; (2) 导入基于XPS生成的硬件平台定义; (3) 提供项目管理; (4)支持基于单个处理器或者多个处理器系统的软件应用程序的 开发; (5) 支持以团队环境的形式开发软件应用程序; (6)为第三方的操作系统创建和配置板级支持包BSP;
设计流程及EDK工具-Xilinx Software Development Kit,SDK (7)提供现成的简单软件工程来测试硬件和软件功能; (8)通过GUI接口为软件应用程序、编程FPGA芯片和编 程并行flash存储器产生链接脚本; (9)应用程序的建立配置和自动的MAKE文件生成; (10)错误浏览; (11)为无缝调试和概要分析目标提供了好的集成环境;
设计流程及EDK工具-The Base System Builder(BSB) Wizard BSB向导帮助设计人员快速建立一个嵌入式系统工 程。对于更复杂的工程,BSB向导提供基本的系统,通过 这个系统设计人员可以定制完成嵌入式设计。为了高效率 的建立工程,Xilinx推荐使用BSB向导。
设计流程及EDK工具-The Base System Builder(BSB) Wizard 基于设计人员选择的板子,设计人员通过BSB选择并 配置基本的元素,比如:处理器类型、调试接口、缓存配 置、存储器类型和大小、外设等。 对于BSB不支持的目标系统,设计人员可以选择定制 板选项。使用这个选项时,必须指定未来板子的硬件,并 且要给出用户约束文件UCF。 如果选择的是支持的目标板,BSB向导自动的加入 UCF文件。当退出BSB时,BSB所建立的MHS和MSS文 件自动加入到XPS工程中,设计人员能在XPS中进行更进 一步的设计。
设计流程及EDK工具- Platform Generator,Platgen 平台产生器Platgen将对嵌入式系统的高级描述编译成能 在目标FPGA芯片上实现的HDL网表。 嵌入式系统硬件平台典型的由一个或多个处理器和不同 的外设和存储器模块组成,这些模块通过处理器总线连 接。每个外设的IP核有很多的参数,通过调整这些参数来 定制行为。这些参数也用来为这些存储器和外设进行地址 映射。由于EDK提供可选择的特性,FPGA只需要实现应用 程序所要求的功能子集。 硬件平台保存了MHS文件。MHS文件是表示所设计的 嵌入式系统的硬件元件的最主要文件。MHS文件以ASCII码 形式存在。
设计流程及EDK工具- Platform Generator(Platgen) Platgen读取MHS文件作为基本的设计输入。Platform 也从EDK库和用户IP库中读取不同的处理器核硬件描述文 件(MPD,PAO)。 Platgen为嵌入式系统产生顶层HDL设计文件,该文件 包含所有参数化了的IP核。 在这个过程中,将MHS中所有高层总线连接变成连接 处理器、外设和片上存储器的真实信号。它也调用XST编 译器综合每个例化的IP核(Platgen产生的系统级网表也用 来作为FPGA实现过程的一部分)。 此外,Platgen也产生BMM(BRAM Memory Map)文 件,该文件包含所用到的片上BRAM的地址。
设计流程及EDK工具- 建立和导入IP向导 该向导帮助设计人员建立自己的外设并且将它们导入 相应的XPS工程中。 在创建模式下,创建和输入外设向导建立很多文件, 这些文件的一些是模板文件帮助设计人员实现外设,而不 需要详细的知道总线协议,命名规则和特殊接口文件的格 式。通过参考模板中的例子和使用不同的辅助设计支持文 件,设计人员可以很快的进行逻辑定制。 在导入模式下,该工具帮助设计人员建立接口文件和 目录结构。对于这种操作模式,必须遵守EDK的命名规 则。一旦导入完成,用户的定制外设在EDK外设库中可以 使用。
设计流程及EDK工具--建立和导入IP向导 当创建或输入一个外设时,自动生成MPD (Microprocessor Peripheral Defination)文件和PAO (Peripheral Analyze Order)文件。MPD文件定义了外设 的接口,PAO文件通知其它工具(Platgen,Simgen),对 外设需要编译哪个HDL文件和以什么样的顺序编译。
设计流程及EDK工具-配置协处理器向导 如果设计中包含MicroBlaze和PowerPC处理器时,可 以使用该向导。该向导添加和连接协处理器到CPU。协处 理器是一个硬件模块用来实现用户在FPGA内定义的功能 和通过FSL接口与处理器连接。FSL通道是一个专用的32 位,点对点的通信接口。
设计流程及EDK工具-库产生器(Libgen) Libgen为嵌入式处理器系统配置库,设备驱动,文件系 统和中断句柄,以及创建板级支持包BSP。嵌入式软件平台 为每个处理器定义了系统内外设的驱动(板级支持包), 可选择的库,标准的输入/输出设备,中断句柄例程和其它 相关的软件特征。SDK工程进一步定义了运行在每个处理 器上的软件,这些软件基于BSP运行。
设计流程及EDK工具-库产生器(Libgen) 来自于EDK安装的库和驱动,以及设计人员提供的定 制库和驱动,SDK将用户程序,包括库和驱动程序编译 成处理器硬件平台上可执行可链接的文件(Executable Linked Format,ELF)。 Libgen读取选择的EDK库和不同的处理器核软件描述 文件(Microprocessor Driver Defination, MDD)和驱动代 码。
设计流程及EDK工具- GNU编译工具(GCC) XPS调用GNU编译工具用于编译和链接应用程序。 1)对于MicroBlaze处理器的应用,XPS运行mb-gcc编 译器; 2)对于PowerPC处理器的应用,XPS运行powerpc-eabi- gcc编译器。 编译器能读取C代码,头文件和汇编代码。链接器将 编译的程序和选择的库连接在一起产生ELF可执行文件。 连接器也读取连接脚本(默认产生或用户产生)。
设计流程及EDK工具-Xilinx Microprocessor Debugger(XMD) 设计人员可以使用指令集仿真器或者虚拟平台调试软 件程序。XMD读ELF文件。对于调试物理的FPGA,XMD 和FPGA通讯使用和FPGA下载相同的电缆。
设计流程及EDK工具-GNU调试器(GDB) GNU调试器是个强大和灵活的工具,它为在不同的开 发周期验证MicroBlaze和PowerPC系统提供了统一的调试 和验证手段。GDB使用了XMD作为最基本的引擎和处理 器目标通讯。
设计流程及EDK工具-Simulation Model Generator(Simgen) 仿真模型产生器Simgen为硬件产生和配置不同的模 型。为产生行为模型,Simgen使用MHS文件作为基本的 输入。为产生结构或时序模型,Simgen使用综合后或布局 布线后的设计数据库作为基本的输入。 Simgen为每个处理器也读取嵌入式应用ELF文件去初 始化片上存储器;这样处理器在仿真阶段就可以执行这些 软件代码。
设计流程及EDK工具- Simulation Library Compiler(CompEDKLib) CompEDKLib使用不同仿真工具厂商提供的仿真器编译 EDK基于HDL的仿真库。这个工具可以运行在GUI和批处 理模式下。 在GUI模式下,允许设计人员使用CompXLib编译Xilinx 的库和EDK中可以使用的库。
设计流程及EDK工具- Virtual Platform Generator(VPgen) 虚拟平台是硬件系统的周期级的仿真模型。可以在主 机上用虚拟平台来调试和评估软件应用代码,而不需要得 到运行在原型板上的硬件。
设计流程及EDK工具-Bus Functional Model Compiler(BFM) 总线功能仿真简化了依附在总线上的硬件元件的验证。
设计流程及EDK工具-Bitstream Initializer(Bitinit) 比特流初始化工具使用软件信息来初始化与处理器 连接的片上BRAM存储器。 这个工具读取ISE工具产生的硬件比特流文件 (system.bit),产生一个新的输出比特流文件 (download.bit),这个比特流文件包含ELF文件。 这个工具使用BMM文件,该文件由Platgen产生,通 过使用每个BRAM块的物理的布局信息由ISE工具更新。 在内部,比特流初始化工具Bitinit使用在ISE中提供的 Data2MEM工具来更新比特流文件。
设计流程及EDK工具-System ACE File Generator(Gen ACE) 从FPGA比特流中产生 Xilinx System ACE配置文件和 ELF/数据文件。 产生的ACE文件用于配置FPGA,初始化BRAM,使 用有效的程序或数据初始化外部存储器和启动处理器。 EDK提供了工具命令语言(Tool Command Language,Tcl)脚本,genace.tcl。该脚本使用XMD命令 产生ACE文件。 使用MDM系统可以为PowerPC或MicroBlaze产生ACE 文件。
设计流程及EDK工具-Flash Memory Programmer 编程解决方案被设计成通用的,面向不同的Flash硬件 和布局。
设计流程及EDK工具-Format Revision(revup)Tool and Version Management Wizard 格式版本工具revup更新已经存在EDK工程到当前的版 本。revup工具只执行格式的变化,对设计不进行更新。 在应用revup前,备份MHS,MSS,XMP等文件。 当使用新版本的EDK工具打开老版本的工程时,就会 显示版本管理向导。 当执行revup后,调用版本管理向导。向导提供有关设 计中使用的Xilinx处理器IP核的变化信息。如果新版本的 IP核可以使用,向导将升级到新的版本。
设计流程及EDK工具-LibXil Memory File System Generator(LibXil MFS) 以文件句柄的形式提供管理程序存储器的能力。设 计人员可以建立目录,并在目录中存放不同文件。文件 系统能通过使用高级C语言进行函数调用来访问。
设计流程及EDK工具-Platform Specification Utility 平台规范工具能够自动产生建立IP核的MPD文件。通 过建立和导入外设向导的帮助,能够使用这个工具提供的 功能。
平台产生器 硬件的产生是由平台产生器(Platform Generator, Platgen)生成。 Platgen以硬件网表的形式(HDL和实现网表文件)建 立片上可编程系统。 Platgen使用MHS文件作为输入并建立硬件平台。除了 以NGC、EDIF等网表文件格式外,Platgen为下面的工具 和顶层的HDL封装提供支持文件,可以使设计者添加其它 元件并且自动的产生硬件平台。
平台产生器 当运行Platgen时,FPGA的实现工具运行完成硬件的 实现。 典型的,XPS为实现工具调用项目管理器(Project Navigator)前端,用于控制实现过程。 ISE流程结后,产生用于配置FPGA的比特流文件。这 个比特流文件包括为FPGA片上BRAM的初始化信息。 如果设计的代码或数据必须在启动时放在这些存储器 时,Data2MEM工具使用包含在可执行文件内的代码/数据 信息来更新比特流文件,这个可执行文件在软件应用程序 建立和验证流程的结束时产生。
图5.3 外设路径结构 -lp<library_path> <library_name> boards drivers pcores sw_services 平台产生器--加载路径 图5.3给出了外设IP路径的结构。Platgen使用查 找优先级机制来确定外设的位置:
平台产生器--加载路径 (1)在工程目录下,寻找pcore目录 (2)通过-lp选项寻找指定的<library_path>/<library name>/pcores位置 (3)查找XILINX_EDK/hw/<library name>/pcores 从pcores目录中,外设的名字就是根目录的名字。从根 目录中,基本的目录结构为:data、hdl和netlist。
平台产生器-输出文件 Platgen产生下面的文件和目录:hdl、implementation和 synthesis。在工程目录下,这是最基本的目录结构。 1、HDL目录 HDL目录包含下面的文件: 1)system.[vhd|v]:这是嵌入式处理器系统得HDL文件,该文件 在MHS中定义。该文件包含了IOB原语(当指定-toplevel yes 选项)。 2)system_stub.[vhd|v]:这是例化系统和IOB原语的顶层HDL文 件模版。使用这个文件作为设计者自己的顶层HDL设计文件 的开始点(当指定-toplevel no选项)。否则,system.[vhd|v] 为顶层。
平台产生器-输出文件 3)<inst>_wapper.[vhd|v]:在MHS中定义的单独的IP元件 的HDL封装文件。 2、Implementation目录 该目录包含peripheral_wrapper.ngc实现网表文件。 3、Synthesis目录 该目录包含system.[prj|scr]综合工程文件;
平台产生器-存储器的产生--BMM策略 Platgen在<Project_Name>/implementation目录下,产生 <system>.bmm和<system>_stub. Bmm。 (1)当EDK是顶层系统时,实现工具使用<system>.bmm; (2)当EDK是顶层系统的子模块时,实现工具使用 <system>_stub.bmm;
平台产生器-存储器的产生--BMM流程 EDK工具的实现工具流程采用了Data2MEM,下面给 出了其流程: 1)ngdbuild –bm <system>.bmm <system>.ngc 2)map 3)par 4)bitgen –bd <system>.elf Bitgen输出<system>_bd.bmm,包含了BRAM的物理位 置。<system>_bd.bmm和<system>.bit文件输入到 Data2MEM。Data2MEM将数据片断转换为正确的初始化 记录,这些记录用于Virtex系列的BRAM。
仿真模型产生器 仿真模型产生器(Simulation Model Generator, Simgen)为一个给定的硬件生成和配置不同的VHDL和 Verilog仿真模型。 MHS文件作为Simgen的输入,MHS文件描述了硬 件元件的例化和连接。Simgen也为指定厂商的综合工具生 成脚本。脚本编译产生的仿真模型。
仿真库 仿真网表使用低层次的Xilinx FPGA可使用的硬件原 语。Xilinx为这些原语提供了仿真模型。下面介绍了Xilinx 的仿真流程中所使用的库。HDL代码必须参考相对应的编 译库。 HDL仿真库必须将逻辑库与物理编译的库相对应。 Xilinx的库可以使用CompXLib工具进行编译。
仿真库--UNISIM库 UNISIM库是功能模型库,用于行为和结构仿真。该 库包含所有的Xilinx统一的库元件,这些库元件可以被大 部分的综合工具识别。UNISIM库也包含了那些通用的例 化元件,比如I/O和存储器单元。 设计人员在设计中例化UNISIM库,并且在行为仿真 时进行仿真。Simgen产生的结构仿真模型例化UNISIM库 元件。 在UNISIM库中的所有元件都是0延迟的。所有的同步 元件有一个单位的延迟避免竞争条件,对于同步元件的 clock-to-out延迟是100ps。
仿真库--SIMPRIM库 SIMPRIM库用于时序仿真。它包含所有的Xilinx实现 工具中使用的Xilinx的原语库元件。Simgen产生的时序仿 真模型例化SIMPRIM库元件。