把手课堂:FPGA 101-如何配置您的Zynq SoC裸机解决方案
2013-07-01
作者:AdamTaylor首席工程师
编者注:这是Adam Taylor规划的Zynq-7000 All Programmable SoC实际操作教程系列的第二部分。Adam经常为Xcell杂志撰稿,他撰写了第82期介绍Zynq SoC设计的封面报道,以及本期中介绍XPE和XPA的文章(见第46页)。同时他还为All Programmable Planet撰写博客。
Zynq™-7000 All Programmable SoC在单个器件上实现了ARM处理功能与FPGA逻辑独特的组合,因此需要双重的配置过程,同时需要考虑处理器系统和可编程逻辑。工程师会发现,其配置顺序与传统的赛灵思FPGA稍有差别。尽管如此,方法仍是相似的,生成引导镜像和完成配置存储器编程的难度不大。
虽然标准的FPGA配置实践一般只需要FPGAbit文件,但是如果您想最大限度地利用Zynq SoC的优势,还需要添加另一种配置文件,即软件可执行与可链接格式(ELF)文件。FPGAbit文件用于定义设计中可编程逻辑部分的行为,而ELF文件则是处理系统将要执行的软件程序。
下面让我们来看看如何在Zynq SoC上实现裸机(无操作系统)软件应用。
配置概览
在Zynq SoC中,处理系统(PS)处于主控地位,因此负责配置器件的可编程逻辑(PL)侧。(唯一例外的情况是在使用JTAG接口进行配置时。)这就是说,如果需要,您可以在可编程逻辑侧不加电的情况下给处理系统加电并使之运行,从而降低系统的总功耗。当然如果需要使用Zynq SoC的PL侧,您也需要给它加电。
软件应用程序和FPGA bit文件都存储在连接到处理系统的同一配置存储器器件中。处理系统可以通过多种非易失性存储器类型为配置提供支持,包括quad SPI flash、NANDflash、NOR flash和SD卡等。此外,您还可以和其它任何器件一样,通过JTAG配置系统。
因此,Zynq SoC按照典型的处理器启动顺序配置器件两侧。首先从不可修改的内部的boot ROM运行。该boot ROM包含用于支持非易失性存储器的驱动程序。您可通过非易失性存储器中的报头(header)对boot ROM加以配置。报头标记着配置镜像的起始点,是引导ROM首先要查找的。报头定义了boot ROM可以实现的一些启动选项,直接在flash上运行程序(execute in place)(但是并不适用于所有类型的存储器)、第一阶段引导载入程序(FSBL)偏移和加密配置等。这个报头解析和处理的目的,是确保引导ROM的工作模式与配置存储器的格式相兼容。
对于具体设计而言,用户可以选择加密或非加密的配置方法。引导ROM报头能够支持和定义这两种模式。在加密配置下,必须给器件的可编程逻辑部分加电,将其作为硬件宏AES和SHA。您需要这两个宏进行加密,而且必须把它们放置在器件的可编程逻辑侧。
在配置的下一阶段,您需要提供FSBL,用于在加载软件应用和配置可编程逻辑之前,根据Xilinx Platform Studio(XPS)的定义,配置处理器上的DDR存储器和其它外设。总体而言,FSBL负责完成四项主要任务:
l使用XPS提供的信息,初始化处理系统
l如果有提供bit文件,对Zynq SoC的可编程逻辑侧进行编程
l在使用操作系统的情况下,加载第二阶段引导载入程序(SSBL)到DDR,或加载裸机应用到DDR
l开始执行SSBL或裸机应用。
您可通过处理器配置访问端口(PCAP)为Zynq SoC的可编程逻辑(PL)侧进行配置,能够支持部分或者完全的可编程逻辑配置。这就意味着,只要处理系统启动并进入运行状态,就可以在任何时候对FPGA进行编程。此外,如果您在可能产生单事件功能中断(SEFI)的工作环境中使用器件时,PCAP还可以让您回读并检查错误。
为了给Zynq SoC创建可引导镜像,还需要至少下列功能:
1.用于控制引导BOM设置的引导ROM报头(例如,现场执行、加密、四通道SPI配置、FSBL偏移和镜像长度)
2.第一阶段引导载入程序(FSBL)
3.可编程逻辑bit文件
4.用于处理系统侧的软件应用(ELF文件)
和其它所有的赛灵思FPGA一样,Zynq SoC器件使用多个模式引脚判断存储程序的存储器类型以及其它重要的系统设置。这些模式引脚共享器件处理系统侧的多用途I/O引脚(MIO)。总体而言,映射到MIO的有7个模式引脚[8:2]。头四个用于定义引导模式。第五个用于定义PLL是否在使用,第六个和第七个用于定义加电过程中MIO bank 0和bank 1的分组电压。第一阶段引导载入程序(FSBL)可以把MIO bank 0和bank 1定义的电压标准更改为应用的正确电压标准。但是如果您是从头开始设计系统,应确保加电过程中使用的电压不会损坏连接到这些引脚的器件。