网站搜索:
第4节 XPS软件的基本操作
文章出处:与非网
更新于2008-05-28 03:50:41

9.4.1 XPS的启动

XPS有两种启动方式,一种是直接点击“开始” “程序” “Xilinx Platform Studio 9.1i” “Xilinx Platform Studio PACE”即可启动;另一种是在ISE中通过双击Embedded Processor类型的源文件来打开。前者专门用于设计完备的嵌入式系统,也是本章主要讲述的方式;后者可将嵌入式设计作为ISE设计的一个子模块,在9.5.3节进行介绍。

9.4.2 利用BSB创建新工程

在了解了EDK的基本概念以及完成软件安装后,接下来介绍如何利用EDK来开发嵌入式系统。首先需要利用基本系统创建器(Base System Builder,BSB)向导来快速创建一个设计,然后再对其进行定制。BSB是帮助用户快速建立系统的软件工具。当用户希望创建一个新的系统时,XPS会自动调用BSB。在BSB中,可以创建工程文件、选择开发版、选择和配置处理器以及I/O设备,添加内部外围设备,生成系统报告等。BSB向导会自动完成以下工作:

  • 生成顶层工程文件(.xmp文件)
    Xilinx微处理器工程(Xilinx Microprocessor Project,XMP)文件是所开发嵌入式系统的顶层文件描述。所有XPS工程信息都在XMP文件中得以保存,此文件包括微处理器硬件规范(Microprocessor Hardware Specification,MHS)和微处理器软件规范(Microprocessor Software Specification,MSS)文件的存储位置等,有关MHS和MSS文件将在后面内容进行阐述。XMP文件同时也包括了XPS将进行编译的C源文件和头文件的信息,以及SDK编译的可执行文件的信息。
  • 选择/新建电路板
    这里包括两个选项:指定的目标板和用户自己设计的板。如果选择前者,则BSB允许用户选择板上的外围设备,且其FPGA端口可以自动地匹配板子,同时也创建一个可以下载到板子上运行的完整平台和测试应用;而对于后者,用户可以基于一些已有的处理器核和外围设备核,按照需要添加处理器和外围设备。
  • 选择并配置处理器
    可以选择的处理器有MicroBlaze和PowerPc。同时还可以选择:器件类型,封装,速率等级,参考时钟频率,处理器总线时钟频率等等。
  • 选择并配置多个I/O接口
    BSB可以决定用户预定义板子上,哪些外部存储和I/O设备是有效的。并且对于指定的器件还可以选择:波特率,外围设备类型,数据比特数,校验等。
  • 添加内部外围设备
    外围设备包括芯片上存储控制器和计时器等。BSB允许用户添加需要的外围设备。
  • 设定软件
    可以在BSB中对标准的输入输出器件进行说明,用户还可以选择希望XPS产生的C应用样例。每个应用程序都包括一个链接脚本。这里用户所选择的应用样例包括存储测试、外围设备测试或者两者皆有。
  • 查看创建的系统
    完成以上选择后,BSB将显示已经生成的系统。用户可以选择:产生这个工程,或者是返回到前述步骤进行设置的修改。下面以加载Xilinx Spartan_3E_RevD开发板(该开发板的配置文件存放在EDK安装目录下的“board\Xilinx\boards\Xilinx_Spartan3E_RevD\data”文件夹中)为例,详细介绍利用BSB新建工程的全部流程。

例9-1 通过BSB向导建立Xilinx Spartan_3E_RevD开发板的工程。

1)启动XPS。当双击XPS的快捷方式后,BSB向导就会自动打开,其界面如图9-24所示。选中“Base System Builder Wizard(recommended)”选项,并点击“OK”按钮。



图9-24 BSB向导的启动画面

2)选择工程路径。在弹出的提示界面的“Project File”下的输入框中填入工程存放路径,或单击“Brouse”按钮来选择合适的工程路径。在本例中,选择工程目录为“E:/work/xilinx/edk”,并将工程命名为spartan3e500e,如图9-25所示。单击“OK”按钮,在弹出的对话框中选择“I would like to create a new design”,并单击“Next”按钮。



图9-25 工程存放路径选择界面

3)在弹出的板型选择对话框中,在“Select board”选中“I would like to create a system of the following development board”,在“Board vendor”的下拉框中选择Xilinx,在“Board name”的下拉框中选择Spartan-3E starter board,在“Board revision” 的下拉框中选择D,如图9-26所示。如果使用用户自定义的开发板,则选择“I would like to create a system for a custom board”。单击“Next”。



图9-26 开发板选择界面

4)进入处理器选择界面。对于内部集成了PowerPC内核的FPGA芯片(Virtex-2 Pro以上部分型号)可以选择PowerPC或Microblaze,否则只能选择Microblaze。由于本例选用的是FPGA为Spartan-3E系列,不支持PowerPC,所以只能选择Microblaze软核,如图9-27所示。点击“Next”按钮。

5)配置处理器。配置Microblaze的参考时钟、总线处理时钟频率、处理器调试接口以及片上存储空间的大小,都使用默认值,如图9-28所示。时钟频率和参考时钟和硬件设计保持一致,定为50MHz。“On Chip H/W Debug Chain”就是利用JTAG端口进行处理器的调试。片上存储器由FPGA芯片中内嵌的块RAM组成,选定大小为8KB。然后点击“Next”按钮。MicroBlaze和PowerPC的工作时钟都是系统时钟经过DCM模块倍频后得到的,在一般情况下,建议MicroBlaze的时钟不超过100MHz,PowerPC的时钟不超过250MHz。



图9-27 处理器参数配置界面                                                             图9-28 处理器选择界面

6)添加I/O接口。开发板配置文件选择了RS_232_DCE、RS_232_DTE、LED_8bits、DIP_Switches_4bits、Buttons_4bits、Flash_16M*8、DDR_SDRAM_32M*16以及Ethernet_MAC等I/O接口,如图9-29~9-31所示。各个I/O接口将在后文详细介绍。如果是用户自定义电路板,操作界面如图9-30所示,用户点击右上角的“Add Device”按钮,然后在弹出的对话框的“IO Interface Type”的下拉框中选择所需的I/O接口模块,再点击“OK”按钮,该过程每次只能添加一种I/O接口,如有多个需要反复操作



图9-29 可配置IO端口列表(1)



图9-30 可配置IO端口列表(2)                                                图9-31 可配置IO端口列表(3)

7)添加内部外围设备。如果开发板的部分外设在XPS中并没有提供,那么就需要通过用户通过HDL语言实现自定制底层接口逻辑,再将其作为外设导入到XPS中。由于Spartan3E Starter开发板上的设备在XPS库中都能找到,因此可以跳过这一步骤。9.4.6节将详细介绍如何实现定制外设的底层接口逻辑以及如何添加到XPS中。

8)软件建立。如图9-32所示,该步骤需要完成下列几个工作:选择STDIN/OUT器件,这里注意RS232_Uart外围设备为所选之一;Boot存储器为plb_bram_if_cntlr_1;存储器和外围设备的测试都使用默认的应用测试。软件测试为所选外围设备发送或接收信息。微处理器得到外围设备的状况后,通过STDIN/STDOUT设备发出报告。



图9-32 软件建立向导

9)配置存储器和外围设备的测试应用。在这个工程中,将指令、数据和栈/堆的存储位置设置为plb_bram_if_cntlr_1。这样,利用BRAM控制器“_if_cntlr_1”,程序代码在FPGA“plb_bram”里的块RAM之外运行。



图9-33 配置存储器和外围设备的测试应用

10)创建系统。在选择并配置系统各个部分后,用户就可以对BSB给出的系统进行检查。用户可以返回到之前的任何一步进行修改。检查后,点击“Generate”产生系统。BSB给出的系统信息如图9-34所示,通过比较可以看出,其和开发板硬件是匹配的。



图9-34 BSP给出的系统信息

11)设计生成。在生成上述设计后,系统的目录结构同时也得以创建。HDL和其它文件根据用户的选择而生成,处理器,总线和外围设备以及其它逻辑实例间的连接也得到了处理。点击“Finish”,XPS即与所创建的系统相关联。至此,就完成了一个新系统工程的创建过程。

9.4.3 XPS的用户界面

利用BSB建立了工程后,就可以利用XPS对此工程进行必要的修改。XPS为创建硬件和软件流的MHS(Microprocessor Hardware Specification)和MSS(Microprocessor Software Specification)文件提供了一个图形用户界面(GUI),如图9-35所示,为文件编辑器功能和方案过程管理功能提供了源文件编辑器,用于管理整个工具流,包括硬件和软件执行流。XPS的用户界面可以分为标题栏、菜单栏、工具栏和主窗口,其中主窗口又可分为三个部分:工程信息面板,系统组建面板和控制面板。虽然菜单栏和工具栏操作的功能等效于在主窗口的操作,但在实际中将近80%的操作是在主窗口完成的,因此本节着重对其主窗口进行介绍。



图9-35 XPS图形用户界面

1.工程信息面板

工程信息面板主要对工程进行控制,包括工程(Project)、应用(Application)和IP目录(IP Catalog)3个页面。

1)工程页面

工程页面列出了与工程有关的文件,分为三个部分:工程文件,工程选项以及参考文件,如图9-36所示。其中,Project Files的信息是从BSB向导中获取的,双击某文件即可修改,也可以进行编辑。.opt文件和.ut文件分别是加速编译的配置文件和生成比特流的配置文件,对于初学者,不建议修改。Project Options的信息从XMD文件中获取的,包括FPGA芯片的型号、网表信息、实现工具、HDL语言种类以及仿真模型等信息。每一项都可以打开属性窗口进行设置。参考文件包括日志log文件和报告srp文件,前者记录了用户的操作,后者则记录每个执行过程所产生的报告,帮助用户了解设计结果,这两个文件是XPS自动生成的,不需要修改。



图9-36 工程信息区域:工程标签



图9-37 工程信息区域:应用标签

2)应用页面

应用页面的信息都是和应用软件相关的。在嵌入式系统中,软件的作用是十分重要的,硬件系统提供运行的平台,需要实现的全部功能都是通过软件系统来完成的。在XPS中,应用软件分为两种:一种是系统自动生成的boot,由XPS自动生成,用户无法修改;另一种是用户编写的应用软件。应用所有组件见图9-37所示,分为处理器属性、编译器属性、源代码以及库文件。右击用户定义的应用,可完成以下操作:

  • Mark to Initialize BRAMs:将软件应用打包到初始化块RAM中,添加.bit配置文件,形成最终的比特文件,可直接配置到FPGA芯片中;
  • Build Project:将软件应用编译成可下载执行的.elf文件;
  • Make Project Inactive:将当前工程从初始化块RAM中剔除,使其失效;
  • Generate Linker Script:自动生成连接脚本;
  • Set Compiler Options:设置编译属性,点击后可弹出编译属性子窗口,可设置连接脚本、堆、栈的大小以及程序的起始位置;代码优化级别和软件调试模块;第三方库以及编译器的绝对路径以及高级用户的定制编译指令。

3) IP目录页面

IP目录页面列出所有EDK IP核和用户生成的IP核,如图9-38所示。由于Xilinx提供的IP核种类繁多,因此在XPS中按照功能进行分类,涉及到模拟接口、系统总线、存储器控制器、通信接口以及调试接口等十多个类别,指明了每个IP的版本、类别、名称以及使用的处理器型号。选中并拖拽至系统组件面板,即可将其添加到系统中;同时在IP Core上单击右键,用户便可阅读其数据手册中的相应功能和使用方法。需要注意的是,有加锁标志的IP Core,不是免费的,用户需要购买相应的License才能使用。



图9-38 工程信息面板的IP分类示意图

例9-2 在本例中,给出一些操作来指导读者认识工程信息面板中的内容。

  • 点击“Project”页面标签。用户可以查看工程文件以及对应选项。
  • 点击“Application”标签。展开“Project: TestApp_Peripheral”,可以看到应用对应的处理器信息、可执行文件存放路径、编译选项、源代码以及头文件等信息。
  • 在“Processor: ppc405_0”中的“xparameters.h”文件包括了系统的地址映射,是BSP的一个部分。
  • 在“Compiler Options”和“Sources”中,连接脚本和测试应用源已由BSB向导自动生成。点击“IP Catalog””标签,展开“Communication Low-Speed IP”目录,右键点击“OPB_UART(Lite)”外围设备查看选项。这里可以选择直接视图或分层视图。点击图9-38中所标注圆圈内的图标可在这两种视图中进行切换。

2.系统组件(assembly)面板

系统组件面板是XPS软件使用频率最高的区域,几乎所有的操作都集中在这里。该窗口是可视化配置系统硬件结构的主要手段,其界面如图9-39所示,分为连接区域和显示区域。此外,代码编辑也集中在显示区域,用户以文本形式打开的所有可编辑文件都显示在该区域,并具备一般文件编辑器的功能,可完成编辑功能。



图9-39 系统组件面板

1)XPS连接区域

XPS的连接面板,提供了总线接口、端口和地址选项,用户可以方便地编辑硬件平台。如果选择总线接口选项,将出现连接面板,它给出了硬件平台互连图,其中的不同颜色和形状线条具有不同的物理意义:

  • 竖直线表示总线,水平线表示到IP核的总线接口
  • 如果总线和设备相连,则在总线和IP核总线接口的交叉处会出现一个连接点
  • 线和连接器以不同的颜色标出
  • 不同形状的连接符号表示IP核总线接口的不同身份。
  • 中空的连接器表示用户可以进行连接,而实心的连接器表示已经有连接。用户可以点击连接器符号来创建或删除连接。

2)显示区域

如前所示,显示区域可分为系统组件页面和代码编辑页面,本节只介绍系统组件页面。XPS系统组件页面可分为分为总线接口(Bus Interface)、端口(Ports)以及地址(Address)三个子窗口,通过点击“Filters”栏下面的选项进行切换。在系统组件页面所有的操作都会引起硬件配置的变化,并反映到MHS文件中。

(1)Bus Interface子窗口

该窗口给出了各个硬件单元和总线的连接关系,连接到某总线的硬件单元将和该总线的颜色一致,如图9-39所示。在硬件单元上单击右键,可配置其参数、阅读相应的数据手册以及查看底层代码。

(2)Ports子窗口

该窗口用于配置端口参数,包括顶层模块和各个子模块的端口,并可对其重命名。单击相应信号行Net列的下拉框,可选择连接的网表名,如图9-40所示。



图9-40 Ports子窗口示意图

(3)Address子窗口

该窗口描述了各硬件单元的绝对地址和大小,可单击任意行的Base Address列和Size列设置不同的数值,设置完成后,High Address列的数值会自动作出调整,如图9-41所示。此外,用户还可设置指令缓存(ICache)和数据缓存(DCache)的位置。
系统组件面板给出了两种视图选项:分层视图和直接视图,用户可以更容易地进行信息分类和设计。系统组件面板默认分层视图,此时设计信息基于硬件平台的IP核实例,并以可扩展树的结构进行组织。而在直接方式中,有关信息以字母的顺序显示。点击目录结构图标时,端口以分层方式或直接方式显示。



图9-41 Address子窗口示意图

例9-3 在本例中,给出一些操作来指导用户认识系统组件面板中的内容。

切换到在系统组件面板中后,

  • 点击“Ports”按钮,展开“External Ports”目录查看FPGA器件外的信号,注意与“RS232_Uart”有关的信号。
  • 用户可以查看RS232_Uart外围设备信号以及与之相连的FPGA内部模块端口信号线名称。UART RX和TX信号线的名字与外部端口相对应,它们之间的对应关系在UCF文件中进行指定。
  • 双击RS232_Uart外围设备图标打开“RS232_Uart: opb_uartlite_v1_00_b”参数对话框。用户可以使用此参数对话框为IP调整不同的设置。
  • 点击目录图标,在分层视图和直接视图间进行切换。

3.控制面板

控制面板给出运行时给出的日志反馈信息,分为三个标签:

  • Output:输出系统所有信息;
  • Warnings:仅显示系统的警告信息;
  • Errors:仅显示系统的错误信息。
    通过这些信息可快速定位系统设计的问题,并找出相关原因。

9.4.4 XPS的目录结构与硬件平台

1.目录结构

启动BSB后,XPS会自动生成工程目录结构,并创建一个完整的工程。其所创建的目录结构如图9-42所示。



图9-42 运行BSB向导创建的文件

下面对BSB自动生成的四个主要文件夹进行介绍:

  • _ _xps文件夹:包括XPS和内部工程管理的其它工具产生的中间文件;
  • data文件夹:包括用户约束文件(UCF)。
  • etc文件夹:此目录包括的文件给出了那些用来运行不同工具的选项。
  • pcores文件夹:包括了用户定制的硬件外围设备。

另外,在主工程目录下还有其它的一些文件。如:

  • system.xmp:这是EDK的顶层工程设计文件。XPS读取此文件,并在用户界面上给出此文件内容。
  • system.mhs:系统微处理器硬件规范(或MHS文件),给出系统元素、对应的参数以及连接。MHS文件是项目的硬件基础。此外,UCF文件也是和硬件结构对应的。
  • system.mss:系统微处理器软件规范(或MSS文件),给出设计的软件部分,描述了系统元素以及外围设备的不同软件参数。MSS文件是项目的软件基础。

2.硬件平台

嵌入式硬件平台包括一到多个处理器,以及多个外围设备和存储块。这些IP块利用之间的互连网络进行通信。每个处理器或外围设备核都可以由用户设计。其中通过设计参数,可以控制不同的可选参数。

1)Xilinx平台工作室的硬件平台开发

XPS提供了一个交互式的开发环境,允许用户对硬件平台各个方面进行设置。其中,XPS在高层对硬件平台描述进行维护,此高层形式即为微处理器硬件规范(MHS)文件。MHS作为一个可以编辑的文本文件,是表示用户嵌入式系统硬件部分的主要源文件。XPS将MHS源文件综合到硬件描述语言(HDL)网表中,后者用于FPGA的布局布线。

MHS文件的内容和格式已在9.3.3节进行了说明。读者可从project标签中找到MHS文件,可在该文件中查看外围设备和端口的配置。
例9-4 在本例中,指导用户查看XPS工程的MHS文件。

  • 选择工程信息区的“Project”标签,可双击“MHS File: system.mhs”打开此文件,如图9-43所示。



图9-43 MHS文件

  • 在文件“system.mhs”中的“opb_uartlite”处,可以看到MHS文件里配置的外围设备、端口和它们的参数;
  • 另外,还可以查看其它的IP核;查看后,关闭“system.mhs”文件。

2)系统组件面板的硬件平台

XPS的系统组件面板以展开式的树和表形式显示了所有的硬件平台IP实例,因此用户可以方便地查看自己的嵌入式设计。在此面板中,对IP元素、端口、属性以及参数进行的配置会直接写入到MHS文件中。即XPS会自动地将系统修改写入到MHS文件中的硬件数据库。因此用户要编辑MHS文件时,Xilinx推荐使用系统组件面板这一功能。

为产生硬件平台,用户必须告知XPS产生网表,并产生比特流。

(1)在产生网表时,XPS调用平台创建工具Platgen来进行一系列的工作:包括读取MHS文件,产生MHS文件对应的HDL,利用Xilinx综合技术来综合设计,最后产生网表文件。

(2)在产生比特流时,Platgen先检查是否存在更新后的网表。ISE实现工具读取建立的网表文件,并连同用户约束文件(UCF)来产生包含硬件设计的BIT文件。

9.4.5 在XPS加入IP Core

XPS提供了数目众多的IP Core,包括:外设(块RAM接口控制器、中央DMA控制器、模数转换器、数模转换器、外设控制器、以太网MAC控制器、GPIO控制器、I2C总线接口、中断控制器、多通道外部存储器控制器、串行外设接口、SystemACE接口控制器、定时器、串口通信接口以及USB接口等)和基础设施(数据端的片上存储器总线、快速单工链路总线、单精度浮点计算内核、LMB块RAM接口控制器、微处理器调试模块、处理器系统复位模块以及内部总线各种桥接模块)两大类。每个IP Core可直接实现用户所需的所有功能,能与MicroBlaze软处理器核和PowerPC处理器协同工作,从而减少了为外部设备编写驱动程序的工作。下面在例9-1的基础上,通过添加通用输入、输出I/O(GPIO)模式来介绍如何在工程中添加XPS提供的IP Core。

例9-5 在例9-1的基础上添加一个8位的GPIO模块。

(1)添加GPIO模块。在“Project Information Area”区域中选择“IP Catalog”选项,并在“OPB General Purpose IO”上单击右键,然后在弹出的对话框中选择“Add IP”命令,可将该IP Core加入工程;或者选中“OPB General Purpose IO”,直接将其拖到系统组件区,也能添加该IP Core。

(2)完成GPIO模块的总线接口配置。在工程区单击“opb_gpio_0”前面的“+”号,展开树形结构,然后单击中“SOPB”左侧对应的OPB节点,将其从空心节点变成实心节点,完成和OPB总线连接,如图9-44所示。



图9-44 GPIO模块和OPB总线连接示意图

(3)完成GPIO模块的参数配置。在opb_gpio_0上单击右键,并选择“Configure IP”,或选中opb_gpio_0,在除“Name”列以外的地方双击,即可进入IP core的配置页面,在其中,将GPIO的位宽设为8,其余保持默认值,点击“OK”完成参数配置,如图9-45所示。如想查看该核的说明文档,可以点击“Datasheet”的图标,。



图9-45 GPIO模块的参数配置示意图

(4)完成GPIO模块的端口配置。在工程区选择“Port”选项,单击opb_gpio_0的“+”号,展开树形结构。在“Net”列的下拉菜单内选择相应的连接。如果该端口要和外部设备通信,则需要选择“Make external”,将其作为外部接口;否则选择内部连接即可。例如GPIO_in,选择了OPB_gpio0_GPIO_in,就将其作为内部连接。同样配置IP2INTC_Irpt、GPIO_IO、GPIO_d_out、GPIO_t_out,其余端口采用默认值,如图9-46所示。



图9-46 GPIO模块的端口配置示意图

(5)完成GPIO模块的地址配置。在工程区,选择“Address”选项,然后点击“Generate Address”按钮,由XPS自动完成地址配置分配,如图9-47所示。



图9-47 GPIO模块的地址配置示意图

至此,已成功向工程中添加了GPIO模块的IP Core,其它IP Core的接法也是类似的。

9.4.6 在XPS中定制用户设备的IP

上文提到的嵌入式系统的开发基本是由XPS自动完成的,本节介绍如何在XPS中添加用户定义设备的操作。用户只有掌握该操作,才能推广XPS的应用领域。虽然外部设备种类繁多、总线接口也不尽相同,XPS仍给出了相应的向导来简化此过程。首先,定制自定义设备的IP Core,然后再通过9.4.5节的方法将其加入工程。本节介绍如何使用XPS定制IP,并添加到XPS工程中。

1.用户定制IP的要求

前面已提到在系统组件面板中的总线接口给出了总线、处理器和IP间的互连关系。注意用户创建的任何IP都必须适应已生成的系统,为满足这一条件,必须:

1)确定IP所需要的接口

对于用户定制的外围设备,必须指出它们所连接的总线,如:
处理器本地总线PLB或片上外围总线OPB。PLB在处理器和高性能的外围设备间提供了高速接口;OPB允许处理器接到低速、低性能的系统资源。

2)实现和验证定制的功能

(1)IP必须导入到EDK。用户的外围设备要拷贝到EDK中正确的目录下,同时必须创建平台规范格式(Platform Specification Format,PSF)接口文件(MPD和PAO),这样其它EDK工具才可以识别出用户的外围设备。

(2)必须将外围设备加入到在XPS创建的处理器系统中。

2.IP接口介绍

IP接口(IP interface,IPIF)是个已经被验证、最优化的并且参数可调的接口,同时它还提供了一系列的简单总线协议,即IP互连(IPIC)。用户利用IPIF模块,使其参数匹配自己的需求,这就可以极大地减少设计和测试的工作量。图9-48给出总线、IPIF、IPIC和用户逻辑之间的关系。



图9-48 用户定制外围设备的IPIF模块

EDK利用IPIF库在不同的处理器外围设备间执行相同的功能。在总线接口和IPIF服务面板上,CIP向导要求用户定义目标总线以及IP所需要的服务。CIP向导创建两个模板文件以协作IP连接。假设顶层文件名为test_ip;而用户定制逻辑连接到第二个文件user_logic.vhd。用户可打开工程目录下的pcores文件夹,查看向导所创建的有关目录结构和文件,就会发现向导创建了两个VHDL模板文件:test_ip.vhd和user_logic.vhd。后者通过在test_ip.vhd里配置的IPIF核建立连接到OPB总线上。User_logic.vhd文件相当于用户定制功能块,而test_ip.vhd文件相当于IPIF块。对IPIF,在例9-6中会有更详细的说明。

3.利用XPS完成IP定制

XPS提供的创建和导入外围设备向导(Create and Import Peripheral,CIP),可以协作用户完成IP的创建过程。此向导可以为用户建立多种模版用于不同的逻辑;除了创建HDL模板,CIP向导还创建外围核(pcore)验证工程用于总线功能模型(Bus Functional Model,BFM)验证。模板和BFM工程的创建有利于IP的开发,并保证所创建IP和系统的兼容性。

使用CIP来简化用户定制外围设备的创建过程如下:

1)确定设备类别

自定义设备必须和CoreConnect兼容。CIP利用预先定义IPIF库,可以创建和CoreConnect兼容的四种类型外围设备:OPB从属外围设备、OPB主从结合的外围设备、PLB从属外围设备和PLB主从结合的外围设备。

2)选择菜单Hardware中的Create or Import Peripheral命令,建立新的外围设备或者是导入已存在的外围设备。

下面通过一个实例详细给出创建用户自定义外围设备的详细步骤。

例9-6 在XPS中定制8比特的LED的驱动外设。

(1)选择菜单Hardware的“Create or Import Peripherall”命令,进入创建与输入外设(CIP)向导,如图9-49所示。从中可以看出,创建定制IP Core有三个步骤:创建模版、实现验证以及导入XPS。在“Select Flow”选择“Create templates for a new peripheral”选项,单击“Next”按钮进入下一页。



图9-49 XPS CIP向导界面

(2)选择定制外设的存放位置。选择“To an EDK user repository”,可将其存放到EDK安装路径外的任何目录;选择“To an XPS project”,将其添加到XPS工程中。默认选择为存放到当前工程。本例采用默认值,如图9-50所示,单击“Next”按钮进入下一页。

(3)定义定制IP的名字和版本。本例输入my_led8以及版本号为1.00.a,如图9-51所示。这里IP名称需要小写,单击“Next”按钮进入下一页。需要注意的是:良好的版本管理对于IP Core设计是至关重要的。



图9-50 定制IP存放目录示意图



图9-51 定制IP的名称和版本

(4)选择定制IP所连接的总线。可选项有OPB、PLB以及FSL,需要根据设备的速度以及设计人员的熟悉程度决定,因为IP的功能就是实现相应总线时序到用户设备时序的转化。本例选择OPB总线,如图9-52所示。单击“Next”按钮进入下一页。



图9-52 选择IP的总线连接方式

(5)选择IPIF服务。在IPIF中,可选择所有的基本服务,以及高级服务中的FIFO;IPIF为用户提供一些基本的接口和服务,如从设备连接、地址译码等,还有一些可选择的服务,如中断、DAM等。在FIFO服务和中断服务中,使用默认值;此步骤需要设定由用户逻辑产生的中断的数量,以及中断的捕捉模式。本例选用默认值,即ft245bm的定制IP Core没有FIFO、DMA以及中断信号,如图9-53所示。点击“Next”按钮进入下一页。



图9-53 IPIF服务模式选择

下面对可用的IPIF接口机制进行简单说明:

① 基本的从设备支持和服务

S/W reset and MIR:该选项会生成RST和MIR这两个寄存器,其中RST为只写寄存器,软件通过写RST寄存器实现对用户逻辑(User Logic)的复位;MIR为只读寄存器,软件通过读MIR寄存器获取外设信息。
User Logic Interrupt Support:该选项可支持用户逻辑通过总线发出中断请求。
User Logic S/W Register Support:该选项可使用户逻辑具备软件可寻址、访问的寄存器。
以上三项对于每种外设都是默认选中的,是任何外设应该所具备的功能,建议用户采用默认值。

② 高级的从设备支持和服务

高级的从设备支持和服务一般应用于需要数据缓冲以及多存储器、地址访问的应用场合,可有效提高总线对外设的数据传输效率,特别适合于有连续、高速数据交互的应用场合。
Burst transaction support:该选项可使能突发传送和缓存线支持。其中突发传送是一种高速的外设访问方式,可完成用户逻辑和处理器之间的高速数据交互;缓存线使用片外的存储器(支持各类SRAM以及DRAM)作为处理器核缓存的高速通路。需要注意的是:缓存线只能外挂到PLB总线上。
FIFO:该选项可使能IPIF内建的FIFO通路,以实现高速的数据访问。
User LogicAddress Range Support:该选项可使用户逻辑具备逻辑地址范围的支持,为每段用户地址生成一个使能信号。

③ 主设备的支持和服务

主设备的支持,能够带给用户逻辑更大的灵活性和实用性。
DMA:该选项将允许用户逻辑和总线以DMA的方式来交互数据,能提高CPU的工作效率。
User Logic Master Support:该选项可使用户逻辑具备主设备访问的功能。

(6)选择中断支持

IPIF提供了中断响应服务,并可根据一定的优先级对各个中断信号进行优先级排序。因此,需要为每个用户外设指定中断的个数和等级,以便CPU能更好地调度。这里采用默认值即可,如图9-54所示,单击“Next”按键,进入下一页。



图9-54 用户逻辑的中断参数设置界面

(7)软件寄存器设置

软件寄存器个数、位宽选择界面如图9-55所示,采用默认值:1个寄存器、位宽为8比特;寄存器写模式设置为“Enable posted write behavior”,点击“Next”按键进入下一页。



图9-55 软件寄存器设置界面

寄存器的具有三种写模式,具体包括:

Enable posted write behavior:
Disable posted write behavior for normal acknowledged write behavior:
Allow dynamic posted/acknowledged write behavior controlled by user logic:

(8)选择寄存器和IP互连(IPIC)

在这个窗口,可选择IPIF模块和用户逻辑之间的接口信号,应用这些连接可从硬件外设的寄存器输入/输出数据。XPS会默认选择一些信号线,是IPIC所必须的,不能取消,其余的信号线则可以根据需要添加。当选中某一信号时,会在窗口右边显示相关的功能说明,帮助用户选择。本例选用默认的接口信号,如图9-56所示,点击“Next”按键进入下一页。



图9-56 IPIC的选择界面

(9)选择定制IP的仿真支持

在外围设备仿真支持中,选择外围设备仿真工具可以产生一个总线功能模型文件(BFM),借助于ModelSim,可提供将设备连接到总线后的单元以及系统级仿真和验证。此外,BFM仿真需要安装相关的仿真工具,点击该窗口的超链接可直接访问相关网页。本例选择不生成BFM文件,如图9-57所示,单击“Next”按键进入下一页,有兴趣的读者可自行完成实验。



图9-57 外设代码仿真支持的选择界面

(10)模板语言选择窗口

XPS支持VHDL和Verilog HDL这两种语言,但大多数模板和系统模块都有VHDL语言编制。如果使用VHDL编写用户逻辑,则可参考XPS中大量的实例;如果选用Verilog,则需要混合编译,且没有太多参考。不过XPS工具对混合编译有很好的支持,不会影响到用户逻辑的功能。
模板语言选择窗口有三个选项,其相应的功能如下所述:

① Generate stub ‘User_logic’ template in Verilog instead of VHDL:选择Verilog作为模板中用户逻辑的设计语言,默认值为不选,如果要用Verilog实现相关逻辑,则需手动选中该项。

② Generate ISE and XST project files to help you implement the peripheral using XST flow:选择生成ISE工程文件,帮助用户在ISE环境中完成用户逻辑设计,默认为选中。

③ Generate template driver files to help you implement software interface:选择生成软件驱动模板,帮助用户生成必要的驱动软件。本例选择如图9-58所示,点击“Next”按键,进入下一页。



图9-58 外设代码实现的选择界面

(11)完成定制IP的生成

至此,代码模板已经生成成功,XPS会列出用户逻辑的各项参数,如图9-59所示。如果确认无误,点击“Finish”按键,完成模板创建;否则点击“Back”,返回到相应页面修改参数。



图9-59 定制IP的完成界面

完成以上步骤后,已经定制了IP Core的共性部分,会生成相关的诸多文件,包括软件驱动和硬件结构代码。其中,软件驱动部分位于XPS工程文件下drivers文件夹下的my_led8_v1 _00a文件夹中;硬件结构代码位于XPS工程文件下pcores文件夹下的my_led8_v1_00a文件夹中。
(12)实现定制IP Core的用户逻辑部分

以上步骤只完成了IP Core的声明及其和OPB总线端口的连接,没有实现任何用户逻辑。因此用户需要在模板中添加用户逻辑,完成对OPB总线的响应。

① 查看向导生成的用户逻辑的模版文件

在XPS中,选择“File > Open”,在“pcores\my_led8_v1_00a\hdl\vhdl和verilog”目录中分别列出了“my_led8.vhd”和“user_logic.v”文件;打开user_logic.v文件,可以看到用户逻辑的模块声明代码,如图9-60所示。



图9-60 模板文件

由于模板创建的是CoreConnect兼容结构,因此不需要为其添加任何额外的逻辑。对于定制IP而言,所作的只是对“user_logic.v”文件的修改。

② 在“user_logic.v”文件中添加用户逻辑的端口

在user_logic.v中,注释语句“-- DO NOT EDIT BELOW THIS LINE ---------------------”和“-- DO NOT EDIT ABOVE THIS LINE ---------------------”之间的端口为总线端口,不能修改,否则需要再次按照上述步骤重新声明IP Core。用户只能在端口声明的固定位置添加,如下所示:
// -- ADD USER PORTS BELOW THIS LINE ---------------
// --USER ports added here
my_led;
// -- ADD USER PORTS ABOVE THIS LINE ---------------

并在代码段中添加位宽和方向声明,如下所示:

output [0 : C_DWIDTH-1] my_led;

③ 在“user_logic.v”文件中添加用户逻辑

assign my_led = slv_reg0;

其中slv_reg0为一个8比特的寄存器,分别驱动8个LED灯。此外,my_led8.vhd例化了IPIF模块和user_logic.v,由于修改了user_logic.v,因此也需要修改my_led8.vhd文件,添加相应的端口信号并更新user_logic.v的例化模块。

(14)修改MPD文件

每个系统外围设备都有相应的MPD(Microprocessor Peripheral Description)文件。MPD文件含有这个系统外设所有可用的端口和硬件参数。对于自定义的外设模块,需要自己定义MPD文件。外设向导会自动创建MPD文件模板,需要进一步修改才能使用。
MPD文件位于工程的“pcores\my_led8_v1_00a\data”文件夹中。在XPS软件中是不可写的,因此需要利用文本编辑器打开。在##Port行后添加下列语句:

PORT my_led = "", DIR = O, VEC = [0:7]

保存MPD文件。至此,就完成了一个用户定制外设IP Core的建立。

4.添加定制IP Core到XPS工程中

添加用户外设和创建外设的命令是一样的,都是通过菜单Hardware的“Create or Import Peripherall”命令来实现的,只是在图9-49所示的界面中,要选择选项“Import existing peripheral”。下面通过添加已创建的LED外设的实例来详细说明其操作过程。

例9-7 将例9-6创建的LED外设添加到XPS工程中。

(1)点击Hardware菜单的“Create or Import Peripherall”命令,在图9-61所示页面中选择“Import existing peripheral”,点击“Next”按键进入一下页。
(2)选择将创建的外设my_led8加入XPS工程,点击“Next”按键进下一页。
(3)在源文件类型选择窗口的“HDL Source files”栏,点击“Next”按键进下一页。



图9-61 模板文件

(4)在外设源代码属性窗口中选择实现语言类型。由于外设是由VHDL和Verilog两种语言实现的,因此要选择实现语言为Mixed类型,其余配置如图9-62所示。其中mpd文件和XST工程的选择是不可缺少的,点击“Next”按键进下一页。



图9-62 源代码属性设置窗口

(5)在源代码分析窗口9-63中,XPS通过pao文件读取相应语句,完成语法分析,如果该步出现语法错误,相关错误会在XPS的控制台窗口输出,并中断导入过程。同样,如果用户发现列举的库文件有遗漏,也可在此添加,点击“Next”按键进下一页。



图9-63 源代码分析窗口

(6)总线接口窗口列出了IP和所使用的总线以及相关信号。由于在创建时,将LED挂在OPB总线上,因此图9-64中选中了OPB总线。这一步一般用户进行核查即可,无需修改,点击“Next”按键进下一页。



图9-64 总线接口窗口

(7)SOPB接口窗口如图9-65所示,列出了所有的IP和OPB总线相关信号的连接线以及相应命名。该步是由XPS自动完成的,无需修改,点击“Next”按键进下一页。



图9-65 SPOB总线端口窗口

(8)SOPB总线参数接口如图9-66所示,可设置IP核寄存器和用户寄存器的地址空间。由于LED模块没有存储空间,因此只用设置寄存器空间,点击“Next”按键进下一页。



图9-66 SPOB总线参数窗口

(9)中断配置窗口如图9-67所示。可指定哪个信号作为中断信号,支持多信号中断,有4类中断方式:下降沿(Falling edge sentitive)、上升沿(Rising edge sentitive)、高电平(High level sentitive)以及低电平(Low level sentitive),点击“Next”按键进下一页。



图9-67 中断支持配置窗口

(10)IP核参数配置窗口如图9-68所示。可在“List User Parameters only”下拉框中选择不同的参数,显示不同级别的参数。当选中某个参数时,在“Attributes”栏会列出这个参数的特征,可更改其默认值。修改完后,点击“Next”按键进下一页。



图9-68 IP核参数配置窗口

(11)用户接口参数如图9-69所示。可在“List User Ports only”下拉框中选择不同的参数,显示不同级别的端口。对于非用户窗口,一般不建议修改。选中端口后,将在“Attributes”栏列出相关信息,不同类型的端口具有不同的属性配置。在该窗口中完成的任何操作,都会以文本的形式保存在mpd文件中,也可以直接通过修改mpd文件来达到相同的功能。修改完后,点击“Next”按键进下一页。

常见的端口属性如下所列:

Port Name:表明该端口在IP核中的端口方向,不能更改;
Direction Mode:端口的输入、输出方向,由MPD文件定义,不能修改;
Default Connection:默认连接,标明端口的网表名。
Vector Dimension:向量维数,表明总线信号的位宽。



图9-69 IP核端口配置窗口

(12) 最后一页是IP Core小结,用户可查阅相关配置参数,如果确认无误,则点击“Finish”按键,完成整个核的生成;如果有误,则需要重新定制IP,再次导入。



图9-70 IP核参数小结示意图

9.4.7 XPS中IP core API函数的查阅和使用方法

XPS中自带的IP Core包含底层设备驱动以及各类API函数,类似于Windows编程的API函数,功能强大,降低了设计人员的开发难度,但XPS并没有提供类似于MSDN的API函数查询库,给设计造成了一定的麻烦。本节介绍如何查阅IP Core的API函数,以及其常用的数据类型。
1.XPS中的常用数据类型

和Windows程序开发一样,为了便于记忆和管理数据类型,XPS也对基本的数据类型进行了重定义,常见的数据类型如表9-10所列。

表9-10 EDK开发中常用的数据类型


注意:所有的数据类型可在工程文件夹的“microblaze_0\include”目录下的“xbasic_type.h”以及“xstatus.h”文件查询。和硬件以及外设相关的参数可在“xparameters.h”的头文件中查询。

2.在XPS中查阅API函数

XPS中IP core的风格是统一的,下面以GPIO的IP Core为例来介绍如何查阅API函数,并对其常用函数进行简要说明。
1)将GPIO的IP Core加入到工程中,然后在总线接口界面中,选中GPIO并点击右键,选择“Driver View API Documentation”,如图9-71所示。


图9-71 查阅GPIO API函数

2)在弹出的浏览页面中,点击gpio gpio.h的超链接,进入gpio.h的浏览页面,可以发现两个结构体XGpio和XGpio_Config,以及16个API成员函数,如图9-72所示。在gpio.h文件中,可直接查阅API函数文档,也可通过“File List”超链接查阅与GPIO有关的所有.h和.c文件的说明文档。本书已在9.2.3节中给出了GPIO模块常用函数的说明,这里就不再重复。

图9-72 gpio.h中的数据和函数列表

 

<<上一节    下一节>>



关于OpenHW | OpenHW使用说明 | FAQ | 相关法律 | 版权声明 | 网站地图
联系邮件:xiaoquan@eefocus.com  联系电话: 010-58859035-8012
Powered by eefocus.com