Edk CTT
Edk CTT
and Techniques
A Hands-On
Hands-On Guide
Guideto
toEffective
Effective Embedded
Embedded
System Design
System Design
[optional]
UG683 EDK 11 [optional]
Xilinx is disclosing this user guide, manual, release note, and/or specification (the "Documentation") to you solely for use in the development
of designs to operate with Xilinx hardware devices. You may not reproduce, distribute, republish, download, display, post, or transmit the
Documentation in any form or by any means including, but not limited to, electronic, mechanical, photocopying, recording, or otherwise,
without the prior written consent of Xilinx. Xilinx expressly disclaims any liability arising out of your use of the Documentation. Xilinx reserves
the right, at its sole discretion, to change the Documentation without notice at any time. Xilinx assumes no obligation to correct any errors
contained in the Documentation, or to advise you of any corrections or updates. Xilinx expressly disclaims any liability in connection with
technical support or assistance that may be provided to you in connection with the Information.
THE DOCUMENTATION IS DISCLOSED TO YOU AS-IS WITH NO WARRANTY OF ANY KIND. XILINX MAKES NO OTHER
WARRANTIES, WHETHER EXPRESS, IMPLIED, OR STATUTORY, REGARDING THE DOCUMENTATION, INCLUDING ANY
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NONINFRINGEMENT OF THIRD-PARTY
RIGHTS. IN NO EVENT WILL XILINX BE LIABLE FOR ANY CONSEQUENTIAL, INDIRECT, EXEMPLARY, SPECIAL, OR INCIDENTAL
DAMAGES, INCLUDING ANY LOSS OF DATA OR LOST PROFITS, ARISING FROM YOUR USE OF THE DOCUMENTATION.
2009 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the
United States and other countries. All other trademarks are the property of their respective owners.
Revision History
The following table shows the revision history for this document.
Date
Version
Revision
01/01/07
9.1i
09/05/07
9.2i
11/05/07
10.1
09/18/08
10.1
05/11/09
11
06/24/09
11.2
12/02/09
11.4
www.xilinx.com
UG683 EDK 11
Chapter 1: Introduction
About This Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Additional Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Attachments to this Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
19
21
23
23
XPS Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
XPS Directory Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Directory View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Whats Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Whats Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Whats Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
www.xilinx.com
Whats Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Appendix C: Glossary
www.xilinx.com
Chapter 1
Introduction
About This Guide
The Xilinx Embedded Development Kit (EDK) is a suite of tools and Intellectual Property
(IP) that enables you to design a complete embedded processor system for implementation
in a Xilinx Field Programmable Gate Array (FPGA) device.
This guide describes the design flow for developing a custom embedded processing
system using EDK. Some background information is provided, but the main focus is on the
features of and uses for EDK.
Read this document if you:
Note: This guide is written based on Windows operating system behavior. Linux behavior or the
graphical user interface (GUI) display might vary slightly.
Additional Documentation
More detailed documentation on EDK is available on the web:
http://www.xilinx.com/ise/embedded/edk_docs.html
Documentation on the Xilinx Integrated Software Environment (ISE) is available on the
web: http://www.xilinx.com/support/software_manuals.htm.
www.xilinx.com
Chapter 1: Introduction
bus_transaction_bfl_code.txt
leds.c
pn.do file
pwm_light.vhd
user_logic.vhd
PlanAhead design analysis tool, ChipScope Pro (which is useful for debugging
FPGA designs)
For information on how to use the ISE tools for FPGA design refer to the Xilinx
documentation web page: http://www.xilinx.com/support/software_manuals.htm.
www.xilinx.com
GNU compiler and debugger for C/C++ software development targeting the
MicroBlaze and PowerPC processors
Documentation
Sample projects
The utilities provided with EDK are designed to assist in all phases of the embedded
design process.
XPS
Xilinx Platform Studio
Processor Hardware
Development
Verification File
Generation
Hardware
Platform
Software Development
ChipScope Pro
Software Debug
Design Implementation
Device Configuration
Software Profiling
Planahead
Device Configuration
X11124
Figure 1-1:
www.xilinx.com
Chapter 1: Introduction
Typically, the ISE development software is used first to create an Embedded Processor
source, which is then added to the ISE project.
You use XPS primarily for embedded processor hardware system development.
Specification of the microprocessor, peripherals, and the interconnection of these
components, along with their respective property assignments, takes place in XPS.
You use SDK for software development. Starting with this release of the Embedded
Edition of the ISE Design Suite, SDK is also available as a standalone application,
which means it is a separate executable and can be run without any other tools or
application suite.
You can verify the correct functionality of your hardware platform by running the
design through a Hardware Description Language (HDL) simulator.
XPS facilitates three types of simulation:
Behavioral
Structural
Timing-accurate
XPS sets up the verification process structure automatically, including HDL files for
simulation. You only have to enter clock timing and reset stimulus information, along
with any application code.
After completing your design in XPS, you return to ISE to generate the FPGA
configuration file used to program the target device.
Once your FPGA is configured with the bitstream containing the embedded design,
you can download and debug the Executable and Linkable Format (ELF) file from
your software project from within SDK.
For more information on the embedded design process as it relates to XPS, see the Design
Process Overview in the Embedded System Tools Reference Manual, available at
http://www.xilinx.com/ise/embedded/edk_docs.htm.
www.xilinx.com
Software Licensing
Beginning with the ISE 11.1 release, Xilinx software now uses FLEXnet licensing. When the
software is first run, it performs a license verification process. If it does not find a valid
license, the license wizard guides you through the process of obtaining a license and
ensuring that the Xilinx tools can use them. If you are just trying out the software, you can
also generate an evaluation license.
For more information about licensing Xilinx software, refer to the ISE Design Suite 11:
Installation, Licensing, and Release Notes.
A Secure-IP capable mixed language simulator (ModelSim PE/SE v6.4b or NCSim 8.1s009 or later) must be installed for the simulation steps. MXE is not supported for
embedded designs; it doesn't have mixed language or SecureIP support.
Optionally, install the CoreConnect toolkit. The CoreConnect toolkit is only
required if you intend to perform Bus Functional Model (BFM) Simulation. If you do
not intend to run BFM simulations, you may skip installation of the CoreConnect
Toolkit.
CoreConnect is a free utility provided by IBM. You can download CoreConnect from
the Xilinx website at:
http://www.xilinx.com/xlnx/xebiz/designResources/ip_product_details.jsp?key=
dr_pcentral_coreconnect.
After you make the appropriate selections on the web page to order and register, you
will have access to the download.
Simulation
Installation
Requirements
2.
If you havent already done so, compile the simulation libraries following the
procedure outlined in the EDK help system.
a.
To open the help from XPS, select Help > Help Topics. Alternately, the XPS Help
is available on the web at
http://www.xilinx.com/support/documentation/sw_manuals/xilinx11/platfor
m_studio/platform_studio_start.htm.
b.
For additional details on the installation process refer to the ISE Design Suite 11:
Installation, Licensing, and Release Notes.
www.xilinx.com
Chapter 1: Introduction
10
www.xilinx.com
Chapter 2
The Base System Builder (BSB) is a wizard in the Xilinx Platform Studio (XPS) software that
quickly and efficiently establishes a working design. You can then customize your design.
At the end of this section, you will have the opportunity to begin your first Test Drive,
using the BSB to create a project.
www.xilinx.com
11
Supported Boards
Selecting a Board
Type
If you are targeting one of the supported embedded processor development boards
available from Xilinx or from one of our partners, the BSB lets you choose from the
peripherals available on that board, automatically match the FPGA pinout to the board,
and create a completed platform and test application that is ready to download and run on
the board. Each option has functional default values that are pre-selected in Xilinx
Platform Studio (XPS). This base-level project can be further enhanced in XPS or
implemented with utilities provided by ISE.
Upon initial installation of EDK, only Xilinx board files are installed. If you want to target
a third party board, you must add the necessary board support files. The BSB Board
Selection screen contains a link that helps you find third party board support files. After
the files are installed, the BSB drop-down menus display those boards as well.
Custom Boards
If you are developing a design for a custom board, the BSB lets you select and interconnect
one of the available processor cores (MicroBlaze or PowerPC processors, depending on
your selected target FPGA device) with a variety of compatible and commonly used
peripheral cores from the IP library. This gives you a hardware system to use as a starting
point. You can add more processors and peripherals, if needed. The utilities provided in
XPS assist with this, including the creation of custom peripherals.
Baud rate
Peripheral type
Parity
For your convenience, data sheets for external memory and I/O devices can be opened
from within the BSB wizard.
12
www.xilinx.com
Setting Up Software
Standard input and output devices can be specified in the BSB, and sample C applications
are generated. The sample C applications generated by the BSB are used in the simulation
examples shown in Appendix A, Simulating in Project Navigator with ModelSim. The
Software Development Kit (SDK) is recommended for software development, and youll
have the chance to try it as you work through this guide. Sample C applications used in
software Debug Test Drives are generated in SDK.
This guide uses the Spartan-3A DSP 1800A Starter Board and targeting a MicroBlaze
processor. The options you will select are listed in Take a Test Drive! Creating a New
Embedded Project, page 14.
If, for your future project designs, you use a board that has an FPGA with a PowerPC 405
(Virtex-4 FX) or PowerPC 440 (Virtex-5 FXT) processor, either a MicroBlaze or the
appropriate PowerPC processor can be used. In almost all cases the behavior of the tools is
identical.
A Xilinx Microprocessor Project (XMP) file is the top-level file description of the embedded
system under development. All project information is saved in the XMP file.
The XMP file is created and handled in ISE like any other non-embedded source, such as
HDL code and constraints files. You'll learn all about that process in the next test drive.
www.xilinx.com
13
Wizard Screen
Create New Project
Device Properties
1.
2.
Select File > New Project to open the New Project wizard.
3.
Use the information in the table below to make your selections in the wizard screens.
System Property
Project Name
Project Location and Description
Product Category
Family
Device
Package
Speed
Synthesis Tool
Simulator
Preferred Language
All
Spartan-3A DSP
XC3SD1800A
FG676
-4
XST (VHDL/Verilog)
User-specific*
VHDL
Type system.
Accept the default location.
Leave Add to project checked.
Click Next, then Finish.
Click Next.
Click Next.
Project Summary
Click Finish.
After you complete the New Project wizard, ISE recognizes that you have an
embedded processor system and starts XPS.
14
www.xilinx.com
4.
A dialog box appears, asking if you want to create a Base System using the BSB wizard.
(This can take a few moments.) Click Yes.
Now that the BSB wizard has started, you can create a project using the settings
described in the following table.
Note: If no setting or command is indicated in the table, accept the default values.
Wizard Screens
System Property
Board Selection
Board Vendor
Board Name
Select Xilinx.
Select the Spartan-3A DSP 1800A Starter Board.
The 1800A board contains a Spartan-3A DSP device,
which means that the BSB allows you to configure one or
more MicroBlaze processors.
Board Revision
System Configuration
Type of system
Processor Configuration
Processor Type
System Clock
Frequency
Local Memory
Enable Floating
Point Unit
Peripheral Configuration
Processor 1
(MicroBlaze)
Peripherals list
Instruction/Data
caches
Cache Configuration
Application Configuration
Example Application
Options
Summary
System Summary
page
5.
www.xilinx.com
15
Whats Next?
The upcoming sections address Hardware Fundamentals.
16
In Chapter 3, Using Xilinx Platform Studio, you will use the Xilinx Platform Studio
(XPS) software.
In Chapter 4, Working with Your Embedded Platform, you will continue with the
hardware design and learn how you can view and modify your new project in XPS.
www.xilinx.com
Chapter 3
What is XPS?
XPS includes a graphical user interface that provides a set of tools to aid in project design.
This chapter describes the XPS software and some of the most commonly used tools.
www.xilinx.com
17
Figure 3-1:
Using the XPS User
Interface
The XPS main window also has labels to identify the following areas:
18
www.xilinx.com
Project Tab
The Project Tab, shown in the following figure, lists references to project-related files.
Information is grouped in the following general categories:
Project Files
Project-specific files such as the Microprocessor Hardware Specification (MHS) files,
Microprocessor Software Specification (MSS) files, User Constraints File (UCF) files,
iMPACT Command files, Implementation Option files, and Bitgen Option files.
Project Options
Project-specific options, such as Device, Netlist, Implementation, Hardware
Description Language (HDL), and Sim Model options.
Design Summary
The Design Summary is a graphical display of the state of your embedded design and
gives you easy access to system files.
Figure 3-2:
www.xilinx.com
19
Applications Tab
The Applications tab, shown in Figure 3-3, lists the software application option settings,
header files, and source files that are associated with each application project. With this tab
selected, you can:
Create and add a software application project, build the project, and load it to the
block RAM.
Note: You can create and manage software projects in XPS; however, SDK is the recommended
tool for software development.
X-Ref Target - Figure 3-3
Figure 3-3:
IP Catalog Tab
The IP catalog lists information about the IP cores, including:
Supported processors
Classification
Additional details about the IP core, including the version change history, data sheet, and
the Microprocessor Peripheral Description (MPD) file, are available when you right-click
the IP core in the IP Catalog tab. By default, the IP cores are grouped hierarchically by
function.
Note: You might have to click and drag to expand the pane to view all details of the IP.
20
www.xilinx.com
2.
Right-click any item under Project Files and select Open. In future Test Drives, you
will edit some of these files.
3.
4.
Right-click any item in the Project Options category to open the Project Options dialog
box. Alternatively, you can select Project > Project Options.
5.
6.
7.
At the top left of the IP Catalog window, note the two buttons. Click them and observe
how they change how the IP catalog displays.
8.
Right-click any item in the IP Catalog to see what options are available. Note a few of
these in particular:
9.
View IP Modifications (Change Log), which lists the revision history for the
selected IP.
10. Right-click the XPS_UART (Lite) peripheral and select View PDF Datasheet to view
the related PDF datasheet.
The Bus Interface tab displays the buses in your design. You can use this view to
modify the information and connections for each bus.
The Ports tab displays ports in your design. You can use this view to modify the
details for each port.
The Addresses tab displays the address range for each IP instance in your design. You
can automatically generate the system address map by clicking Generate Addresses.
www.xilinx.com
21
Connectivity Panel
With the Bus Interfaces tab selected, youll see the Connectivity Panel (label 4 in Figure 3-1,
page 18), which is a graphical representation of the hardware platform connections.
A vertical line represents a bus, and a horizontal line represents a bus interface to an IP
core. If a compatible connection can be made, a connector is displayed at the intersection
between the bus and IP core bus interface.
The lines and connectors are color-coded to show bus compatibility. Differently shaped
connection symbols indicate whether IP blocks are bus masters or bus slaves. A hollow
connector represents a connection that you can make, and a filled connector represents a
connection made. To create or disable a connection, click the connector symbol.
Filters Pane
XPS provides filters that you can use to change how you view the Bus Interfaces and Ports
in the System Assembly View. The filters are listed in the Filters pane (label 6 in Figure 3-1,
page 18) when the Bus Interfaces or Ports tabs are selected. Using these filters can unclutter
your connectivity panel when doing a design with a large number different buses.
View Buttons
So you can sort information and revise your design more easily, the System Assembly
View provides two buttons that change how the data is arranged (label 5 in Figure 3-1,
page 18):
The default display is called hierarchical view. The information that is displayed for
your design is based on the IP core instances in your hardware platform and
organized in an expandable tree structure.
In flat view, you can sort the information alphanumerically by any column.
2.
Expand the External Ports category to view the signals that are present outside the
FPGA device.
3.
Note the signal names in the Net column and find the signals related to the
RS232_Uart_1 port. (You might need to drag the right side of the Net column header
to see its entire contents.) These signals are referenced in the next step. Collapse this
category when finished.
4.
22
www.xilinx.com
XPS Tools
5.
6.
Observe what happens when you hold the mouse cursor over a parameter name.
b.
Note the three top tabs and buttons available for this core.
c.
Click the Change to Hierarchical/Flat View button and see how the display changes.
Console Window
The Console window (label 3 in Figure 3-1, page 18) provides feedback from the tools
invoked during runtime. Notice the three tabs: Console, Warnings, and Errors.
Start Up Page
The Start Up page has information relevant to your version of XPS, including sets of links
for release information and design flows. There is also a tab that will help you locate EDK
documentation. Take a moment to look at the contents of the Start Up page.
In the XPS main window, select the Start Up Page tab. If you dont see this tab, select
Help > View Start Up Page.
2.
On the New This Release page, click the Redesigned interface improves project
hand-off and portability between hardware and software teams link. If you have
used previous versions of XPS, you'll learn about some important new features. (Most
of the new features are covered in upcoming Test Drives.)
XPS Tools
In addition to the software interface, XPS includes the underlying tools you need to
develop the hardware and software components of an embedded processor system:
The Base System Builder (BSB) wizard, for creating new projects. You can start the
BSB from the New Project dialog box that appears when you start XPS, or you can
select File > New Project from the XPS main window.
The Hardware Platform Generation tool, Platgen, for generating the embedded
processor system. To start Platgen, click Hardware > Generate Netlist.
The Simulation Model Generation tool, Simgen, generates simulation models of your
embedded hardware system based on your original embedded hardware design
(behavioral) or finished FPGA implementation (timing-accurate).
Click Simulation > Generate Simulation HDL Files to start Simgen.
The Create and Import Peripheral wizard helps you create your own peripherals and
import them into EDK-compliant repositories or XPS projects. To start the wizard,
click Hardware > Create or Import Peripheral.
The Library Generation tool, Libgen, configures libraries, device drivers, file systems,
and interrupt handlers for the embedded processor system. Click Software >
Generate Libraries and BSPs to start Libgen.
www.xilinx.com
23
24
www.xilinx.com
Directory View
The BSB automatically creates a project directory with the name of your embedded system
source. This directory contains the subdirectories for your project in the repository search
path, shown in Figure 3-4:
__xps
blockdiagram
data
etc
pcores
TestApp_Memory_microblaze_0
TestApp_Peripheral_microblaze_1
These directories contain test application C-source code, header files, and linker scripts.
Although they are there and available for your use, you are going to use sample
applications created in SDK in this guide. These topics are covered in upcoming chapters.
In the main project directory, you will also find a few individual files. Those of interest are:
system.xmp
This is the top-level project design file. XPS reads this file
and graphically displays its contents in the XPS user
interface.
system.mhs
system.mss
The MHS and MSS files are the main products of your XPS design. Your entire hardware
and software system are represented by these two files.
www.xilinx.com
25
Using a file explorer utility, such as Window Explorer, navigate to the top-level
directory for your project.
2.
Open the various subdirectories and become familiar with the basic file set.
Whats Next?
Now that you know your way around XPS, you are ready to begin working with the
project you started. Youll continue with Chapter 4, Working with Your Embedded
Platform.
26
www.xilinx.com
Chapter 4
Select the Project tab in the Project Information Area of the XPS software.
2.
Look under the Project Files heading to find MHS File:system.mhs. Double-click
the file to open it.
3.
Search for xps_uartlite in the system.mhs file by selecting Edit > Find and using
the Find tool that appears below the main window area.
Notice how the peripherals and their ports and parameters are configured in this file.
4.
Take some time to review other IP cores in your design. When you are finished, close
the system.mhs file.
www.xilinx.com
27
More information about Platgen is provided in the Platform Generator (Platgen) chapter
of the Embedded System Tools Reference Manual, available at
http://www.xilinx.com/ise/embedded/edk_docs.htm.
28
The system.xml file has the information SDK requires for you to do software
development and debug work on the hardware platform that you designed.
www.xilinx.com
In the XPS software, select Project > Export Hardware Design to SDK.
2.
We recommend that you accept the default location. The ultimate repository search
path to the system.xml file is then /system/SDK/SDK_Export/hw/.. in your
project directory.
Note: There are other XML files used in XPS, so it is important to know the location of the XML
file that you will be using.
3.
Select Export Only. Youll run several Test Drives of SDK in upcoming chapters.
The Project Navigator software reads the netlist that was created, and in conjunction with
the User Constraints File (UCF), produces a BIT file containing the hardware design.
Compiled C code is not part of that bitstream; it is added later in SDK.
www.xilinx.com
29
1.
Review the Project Navigator main window. The Design panel on the left side should
look like this:
Figure 4-1:
You are about to run the design through to where a bitstream is generated. But before
you can do that, you need to add some information so that the ISE Place and Route
(PAR) tool has information about your design, such as the pinout and how fast it needs
to run.
Generating a
Bitstream and
Creating a UCF file
As you learned earlier, that information is included in the UCF file. When you run the
BSB, a UCF is created for you.
2.
In the Project Navigator software, select Project > Add Source, navigate from your
project search repository to system/data, and add the system.ucf file.
This step is only necessary when the XMP source is the top-level design in an ISE
project. If the XMP is instantiated in a VHDL or Verilog file, ISE manages the EDK UCF
file.
30
www.xilinx.com
Whats Next?
3.
The Adding Source Files dialog box appears to show the progress of processing the
UCF file. When the file processing completes, click OK.
Your Sources window should now look like this:
Figure 4-2:
Notice that the file system.ucf is added and is associated with the embedded system
design (system.xmp).
EDK system.bit and
BmmFile_bd.bmm
Files
4.
5.
Make a mental note of both of these files and their locations in the root of your hardware
project. These files are used in subsequent chapters.
Whats Next?
Now you can start developing the software for your project using SDK. The next two
chapters explain embedded software design fundamentals.
www.xilinx.com
31
32
www.xilinx.com
Chapter 5
About SDK
Its important to understand some of the terminology used in SDK: hardware platform,
software platform, software project, perspectives, and views.
SDK Terminology
The hardware platform is the embedded hardware design that is created in XPS and
exported in the form of an XML file. When you import the XML file into SDK, you import
the hardware platform. There can be only one hardware platform in an SDK project.
Once the hardware platform is identified and imported, you create the software platform. A
software platform is a collection of libraries and drivers that form the lowest layer of your
application software stack. Your software applications must link against or run on top of a
given software platform, using the provided Application Program Interfaces (APIs).
Therefore, before you can create and use software applications in SDK, you must create a
software platform project. SDK includes the following two software platform types:
Software Platforms
Types in SDK
Xilkernel - A simple and lightweight kernel that provides POSIX-style services such
as scheduling, threads, synchronization, message passing, and timers.
A single SDK project can contain more than one software platform. For instance, you can
have one software platform that is set up for standalone, and another set up for Xilkernel.
Software platforms contain software projects. The software project is simply your
application. A given software platform can contain multiple software projects.
Perspectives and
Views
When you start using SDK, you will notice that the software looks different depending on
what activity you are performing. When you are developing your C or C++ code, SDK
displays one set of windows. When you are debugging your code on hardware, SDK
appears differently and displays windows specific to debugging. When you are profiling
code, it has a third appearance (not covered in this book). For more information about
Profiling in EDK, see the EDK Profiling User Guide. These different displays of windows are
called perspectives, and each window in the perspective is called a view.
You will see that switching perspectives is as easy as clicking the large tab on the top left of
your workspace. And it is one of the things that gives SDK its power and flexibility.
www.xilinx.com
33
Double-click the Xilinx Software Development Kit desktop icon, or select Programs >
Xilinx ISE Design Suite 11 > EDK > Xilinx Software Development Kit from the
Windows Start menu.
2.
Identify a workspace. You can put this in any location. For now, point to the home
folder of your project, or the location where you want to do some SDK work.
Caution! Make sure the path name does not have spaces.
3.
Locate the hardware design that you exported in the previous chapter. This is an XML
file (system.xml), and it contains a representation of the embedded platform on
which your code is going to execute.
4.
The following message displays. Read it carefully before you click OK because its a
good description of SDK project structure.
Figure 5-1:
34
www.xilinx.com
About SDK
SDK opens with the C/C++ Projects tab displayed, as shown below. The
microblaze_0 item represents the MicroBlaze processor in your new hardware
platform.
X-Ref Target - Figure 5-2
Figure 5-2:
Select File > New > Project and select Software Platform.
Recall that there can be multiple software platform projects for a given embedded
design. The first one you create in this Test Drive is a standalone (as opposed to a
Xilkernel) project.
Note: If you had a hardware platform that contained more than one microprocessor, each
would be listed in the Processor drop-down list.
2.
3.
Populate the new software platform project with the following selections:
Project Location: Make sure that the Use default check box is selected
Click Finish.
www.xilinx.com
35
Figure 5-3:
You can double-click any of the files in this view, and they will appear in the SDK
Editor area.
36
www.xilinx.com
About SDK
2.
Populate the New Managed Make C Application Project with the following
selections:
Project Location: Make sure that the Use Default Location for Project check box
is selected
3.
Click Next.
4.
5.
Configuration: Leave all check boxes selected (Debug, Release, and Profile).
Click Finish.
The hello_1 sample application builds automatically, producing an ELF file suitable
for downloading onto the target hardware.
www.xilinx.com
37
The C/C++ Projects tab now contains information related to the software platform and
the software project. Take a minute to get familiar with it. The relevant project
management information is displayed in this window.
X-Ref Target - Figure 5-4
Figure 5-4:
6.
Expand the src folder in the hello_1 software project. Notice that it has the heading
hello_1 {SW_Platform_1}, indicating that its a software project built for the
SW_Platform_1 software platform.
7.
Double-click the helloworld.c file. The file opens in the SDK Editor window. You
can modify the sample code or create your own, as needed.
You can also see the hello_1.ld linker script that was generated for this project. A linker
script is required to specify where your software code is loaded in the hardware system
memory.
You now have a complete framework for editing, compiling, and building a software
project. The last step is debugging, which you will do in the next Test Drive.
38
www.xilinx.com
About SDK
Configuring the
FPGA with a
Bitstream
Connect a USB Programming cable, and an RS232 cable between the demo board
and the computer. The LED on the USB cable should be glowing green because the
demo board is turned on.
b.
2.
3.
Note: Your filenames might be different depending on how you set up your hardware project.
X-Ref Target - Figure 5-5
Figure 5-5:
www.xilinx.com
39
4.
Downloading the
FPGA Bitstream and
bootloop
Click Save and Program. SDK confirms that the FPGA was successfully programmed
with the bitstream.
At this point, you are both downloading the bitstream to the FPGA and initializing the
microprocessor with a single-instruction branch-to-itself program called
bootloop. Bootloop keeps the processor in a known state while it waits for another
program to be downloaded to run or be debugged.
For future designs, if you want to include the ELF file in the FPGAs on-chip RAM, you
can specify that ELF file in the Initialization ELF field of the Program FPGA dialog
box. For now, youll be downloading the ELF file in a separate step instead.
5.
6.
In the Debug Perspective, observe that the C code is now highlighted at the first
executable line of code, and the debug window shows that for thread[0] the
main() function is currently sitting at line28 because there is an automaticallyinserted breakpoint.
7.
8.
9.
Observe the output in the terminal window, as shown. When you are finished, close
SDK.
The Debug
Perspective
.
.
Figure 5-6:
Terminal Display
Whats Next?
This chapter showed you how to set up an SDK project, download a bitstream to a target
board, and execute some code.
In the next chapter, youll be digging deeper into SDK as you create a new software project,
use the source code management, and explore debugging.
40
www.xilinx.com
Chapter 6
More on Drivers
Before getting started with SDK, you need to know about the low-level software drivers
that Xilinx provides. These drivers are located in
<Xilinx Install>\EDK\sw\XilinxProcessorIPLib\drivers.
There is a directory for each peripheral driver, and drivers corresponding to each piece of
hardware available to you in EDK. This directory contains, at a minimum, the following
for each driver:
Before continuing, take a minute to familiarize yourself with this important information.
www.xilinx.com
41
Views in the Debug Perspective are: Disassembly, Register, Memory, and Breakpoints.
Views can be moved, dragged, and combined in any number of ways.
Types of Debug
Perspectives or
Views
Click any tab on any window in either the C/C++ or Debug Perspective and drag it to
another window. You will see that its contents are displayed in the new window. To see
what views are available for the selected perspective, select Window > Show View.
Experiment with moving windows around. The ability to easily customize your
workspace is one of the more powerful SDK features.
If you closed SDK, restart it by selecting Programs > Xilinx ISE Design Suite 11 >
EDK > Xilinx Software Development Kit from the Windows Start menu.
2.
3.
Import the same hardware platform using the same Hardware Specification File and
procedure you used in Take a Test Drive! Importing a Hardware Platform in
Chapter 5.
4.
Create a new standalone software platform in the same way as in Take a Test Drive!
Creating a Software Platform in Chapter 5. Name the software platform
editor_exercise_platform.
42
1.
2.
Create another Managed Make C Application Project. This time, use the Peripheral
Tests sample application.
www.xilinx.com
3.
Your display now looks similar to the figure below. Notice how both C Projects
(memory_tests and peripheral_tests) are built for the
editor_exercise_platform.
Figure 6-1:
C Project Comparison
Before you can run these two applications, you must download the FPGA bitstream to
the board, as you did in the previous chapter.
4.
5.
Note: Your file names might be different depending on how you set up your hardware project.
www.xilinx.com
43
Figure 6-2:
To see what the two sample programs do, youll run the memory_tests project first,
then the peripheral_tests project.
6.
b.
c.
When the Debug Perspective opens, run the program by selecting Run > Resume
from the pull-down menu. Observe the output of the program on your terminal
window.
44
www.xilinx.com
7.
Click on the C/C++ Perspective and repeat the procedure in step 6 to run the
peripheral_tests C project.
After running the memory_tests and the peripheral_tests applications, the
output in the terminal window looks like this:
Figure 6-3:
8.
Now that the two applications have run successfully, you create a third application that
calls each of the other two applications individually. In SDK, that is done by importing
existing applications. The next Test Drive shows you how to import an application.
www.xilinx.com
45
Figure 6-4:
46
2.
3.
www.xilinx.com
4.
5.
Create a new Managed Make C Application Project using the technique described in
Take a Test Drive! Setting Up the Software Environment in Chapter 5. Use the
Empty Application sample application.
6.
Select File > New > File and select top_test to create a new source file called
top_test.c.
7.
Open top_test.c and add the code shown in the following figure.
Figure 6-5:
8.
top_test.c
Save the file, and observe that SDK builds it automatically. (Automatic building can be
controlled by selecting or deselecting the Project > Build Automatically menu item.)
SDK errors out, because it cannot locate the peripheral test or memory test functions.
www.xilinx.com
47
1.
2.
Figure 6-6:
The window shown in the figure above tells SDK how to import the memory_tests
file system. In this example, you have a single C file to import in each directory, so you
dont have to import an entire hierarchy of files. If you had a more substantial project
to import, you would select the Create Complete Folder Structure option. You can
do this if you want to see how it would look in your project; it works the same way.
3.
48
www.xilinx.com
After you import the two file systems, the errors in top_test.c disappear and the SDK
workspace looks like the workspace shown in the following figure. If the errors persist,
make sure that you have imported the files that were created in step 2 of the Test Drive on
page 42.
X-Ref Target - Figure 6-7
Figure 6-7:
www.xilinx.com
49
4.
Right-click test_top and select Generate Linker Script to create a linker script for
the application.
5.
Right-click the top_test.elf file and select Debug As > Debug on Hardware to
download and run the application and confirm that it runs correctly. A display on your
terminal window shows that both the memory test and the peripheral test are
working.
Figure 6-8:
Debug Window
In the figure above, you can see that our call stack is three deep. Specifically, main(), at
address 0x000001c8, called peripheraltest_main(), at address 0x000005ac,
which then went on to call GpioInputExample() at address 0x0000085c.
In addition, the program state is currently suspended, which means a breakpoint was
encountered. Each item on the call stack also shows on what line of code the calling routine
is located.
Software execution can also be controlled from the Debug window. In the Debug
Perspective, hover your mouse over the buttons at the top of the Debug window to see a
description of what each one controls.
50
www.xilinx.com
Be sure the top_test.elf file is selected in the Projects pane. With the C/C++
Perspective open, select Run > Debug As > Debug On Hardware to download the
top_test.elf file to your target board. Once successfully downloaded, the Debug
Perspective opens automatically.
2.
If some of the views such as Disassembly or Memory are not visible, select Window >
Show View and select the view that you want to see.
If the view doesnt appear in the window that you intended, click and drag it into
place.
Figure 6-9:
Debug Perspective
As you can see in the previous figure, the processor code is positioned at the beginning
of main() and program execution is suspended at line 26.
You can correlate that with the Disassembly View, which shows the assembly level
program execution also suspended at 0x000001b8.
Open the Registers View and observe that the RPC register (the program counter)
contains 0x000001b8. If the Registers View tab isnt visible, select Window > Show
View > Registers.
3.
Double-click in the margin of the top_test.c window next to the line of code that
says peripheraltest_main(). This sets a breakpoint at
peripheraltest_main().
www.xilinx.com
51
4.
Confirm that the breakpoint is set by checking the Breakpoints View. If the Breakpoints
View tab is not visible, select Window > Show View > Breakpoints.
5.
Select Run > Resume to resume program execution and run to the breakpoint. Note
that program execution stops at the line of code, with execution stopped at
0x000001c0, as displayed in the peripheraltest_main() disassembly and the
Debug window.
6.
7.
8.
Observe the relevant text on your terminal output, indicating that both
peripheraltest_main() and memorytest_main() have run.
9.
Re-run your code several times. Experiment with single-stepping, examining memory,
breakpoints, modifying code, and adding print statements. Try adding and moving
views.
Having run the Test Drives in this chapter, you now have a C project with multiple files to
work with. You have also gained enough exposure to the debugger to experiment with and
customize SDK, so it works the way you want it to.
Whats Next?
In the next chapter, you will create your own IP. The following chapters cover the
advanced topics of creating and debugging dual processor designs.
52
www.xilinx.com
Chapter 7
Creating Your Own Intellectual Property
Creating an embedded processor system using Xilinx Platform Studio (XPS) is
straightforward because XPS automates most of the design creation. The Base System
Builder (BSB) wizard reduces the design effort to a series of mouse clicks.
Benefits of XPS and
BSB
You can use the BSB to create most of the embedded processor design. You can then further
customize your design in XPS. Design customization can be as simple as tweaking a few
parameters on existing IP cores (for example, changing the baud rate for the UARTLite), or
as complex as designing custom IP and integrating it into the existing design.
Benefits of CIP
Wizard
While you are the expert regarding the functionality of the required custom IP, you might
not fully understand CoreConnect bus protocols, the /pcores directory structure
required by XPS, or the creation of Bus Function Model simulation frameworks. This
chapter clarifies these important system distinctions and walks you through the process of
creating custom IP using the Create and Import Peripheral (CIP) wizard.
www.xilinx.com
53
Overview of IP Creation
The Bus Interface tab in the XPS System Assembly View (shown in Figure 3-1, page 18)
shows connections among buses, processors, and IP. Any piece of IP you create must be
compliant with the system you design.
To ensure compliance, you must follow these steps:
1.
Determine the interface required by your IP. The bus to which you want to attach your
custom peripheral must be identified. For example, you could select one of the
following interfaces:
Processor Local Bus (PLB) version 4.6. The PLBv.46 provides a high-speed
interface between the processor and high-performance peripherals. PLBv4.6 is
used in both the PowerPC and the MicroBlaze processor systems.
Fast Simplex Link (FSL). The FSL is a point-to-point FIFO-like interface. It can
be used in designs using MicroBlaze processors, but generally is not used with
PowerPC processor-based systems.
2.
Implement and verify your functionality. As you do, keep in mind that you can reuse
common functionality available in the EDK peripherals library.
3.
Verify your standalone core. Isolating the core ensures easier debugging in the future.
4.
5.
Besides creating HDL templates, the CIP wizard can create a pcore verification project for
Bus Functional Model (BFM) verification. The templates and the BFM project creation are
great for jump-starting your IP development as well as ensuring that your IP will comply
with the system you create. For details of BFM simulation, refer to Appendix B,
Intellectual Property Bus Functional Model Simulation.
54
www.xilinx.com
The CIP wizard supports creation of Fast Simplex Link (FSL) peripherals. You can also
enable legacy PLB v3.4 and OPB buses by selecting the Enable OPB and PLB v3.4 bus
interfaces check box in the Bus Interface page of the wizard.
Note: Support for OPB and PLBv34 IP will be removed in XPS 12.
Documentation
Before launching the CIP wizard, you should review the documentation specific to the bus
interface you intend to use. Reviewing this information can help eliminate much of the
confusion often associated to bus system interfaces. Also, review the XPS Help topics
related to the CIP wizard by selecting Help > Help Topics and navigate to Procedures for
Embedded Processor Design > Creating and Importing Peripherals. This
documentation provides you with enough background to answer many of the questions
that arise as you run the CIP wizard.
Accessing IP
Datasheets
XPS provides datasheets related to the IP in your system. To access them, open the Start Up
page by selecting Help > View Start Up Page. In the Start Up page, select the
Documentation tab, expand IP Reference and Device Drivers Documentation, and
click the Processor IP Catalog link.
If you plan to create a PLBv46 peripheral, examine one of the following datasheets,
depending on whether your custom peripheral is a slave or master, single data access, or
burst data access:
plbv46_slave_single
plbv46_master_single
plbv46_slave_burst
plbv46_master_burst
The sections discussing the IP Interconnect (IPIC) signal descriptions are useful in helping
identify the IPIF signals that interface to your custom logic.
Note: Normally the CIP wizard is launched from within XPS, as described in the next Test Drive, but
the CIP wizard can also run outside of XPS.
www.xilinx.com
55
Start the CIP Wizard and determine the location in which to store the custom
peripheral files:
a.
Open Xilinx ISE Project Navigator, load your project, select system.xmp, and
double-click the Manage Processor Design (XPS) process to launch XPS.
b.
After clicking past the initial Welcome page, the Peripheral Flow page opens, on which
you can either create a new peripheral or import an existing peripheral.
2.
Select Create templates for a new peripheral. Before continuing through the wizard,
read through the text on this page.
Note: Each CIP wizard screen is full of useful information. You can also click More Info to view
the related XPS help topic.
3.
On the Repository or Project page, specify where to store the custom peripheral files.
For this example, you will use this peripheral for a single embedded project, so select
To an XPS project.
Because you launched the CIP wizard from within XPS, the directory location is filled
in automatically.
Note: If the custom pcore will be used for multiple embedded projects, you can save the file in
an EDK repository.
56
www.xilinx.com
4.
Figure 7-1:
On this page, you will indicate the name and version of your peripheral.
5.
A version number is supplied automatically, but you can change this number to
fit your revision scheme. You can also add a description of your project.
On the Bus Interface page, select the processor bus that connects your peripheral to
your embedded design. For this example, select PLB v46.
Note: You can access related datasheets from the Bus Interface page.
www.xilinx.com
57
6.
Figure 7-2:
On this page, note that the CIP wizard automatically creates the following:
In addition to this base set of capability, you can add optional services.
Click More Info, and on the help page that opens, click the IPIF Features link. You can
read details on each of these services to help you determine whether the features are
necessary for your IP.
I
7.
Unselect all check boxes on this page. For this example, none of the services is
required.
The next page is the Slave Interface page, on which you can set up burst and cache-line
support. Although you wont use this support for this example, take a moment to
review the content about slave peripherals and data width, then move on to the next
page of the wizard.
58
www.xilinx.com
8.
Figure 7-3:
IPIC Page
On this page, review the set of IPIC signals that the CIP wizard offers for your custom
peripheral. If you dont understand what these signals do, you can go back and review
the appropriate specification. The signals selected should be adequate to connect most
custom peripherals.
In the case of this design, multiple writes to different addresses must be decoded, so
youll add Bus2IP_Addr signals to create the decode logic inside your HDL.
For future reference, you could also select the User logic memory space option on
the IPIF Services page, which opens a wizard page specific to managing user memory
space.
9.
You must have already downloaded and installed the BFM simulation package
for EDK.
www.xilinx.com
59
If youd like, you can stop here and click the BFM Package Installation Instructions
to go through the steps necessary to license, download, and install the BFMs. BFM
simulation is described in Appendix B, Intellectual Property Bus Functional Model
Simulation. If you think you might want to run a BFM simulation on this IP example,
go ahead and generate the BFM platform now.
The CIP wizard creates two HDL files that implement your pcore framework:
The pwm_lights.vhd file, which contains the PLBv46 bus interface logic.
Assuming your peripheral contains ports to the outside world, you need to
modify this file to add the appropriate port names. This file is well documented
and tells you exactly where to add the port information.
If you are a Verilog designer, dont panic, but realize that you must write the port
names using HDL syntax. For this example, you can find the source code in an
upcoming Test Drive and use that source as a template for future pcore creation.
The user_logic.vhd file, which is the template file where you add the custom
RTL that defines your peripheral. Although you can always create additional
source files, the simple design example you are use only requires the
user_logic.vhd file.
Figure 7-4:
60
www.xilinx.com
Verilog Support
The Peripheral Implementation Support page lists three options for creating optional
files for hardware and software implementation.
The CIP wizard can create the user_logic template in Verilog instead of VHDL.
To set this up, select the Generate stub user_logic template in Verilog instead
of VHDL check box.
If you intend to implement your pcore design to completion (for timing analysis
or timing simulation), you can click the Generate ISE and XST project files to
help you implement the peripheral using XST flow check box. The CIP wizard
will create the necessary ISE project files. However, if your peripheral is lowspeed or very simple, this step is not necessary.
For this example design, leave all three boxes unchecked. The final screen displays a
summary of the CIP wizard output files created and their locations.
Important Summary
Information
12. Review this information and click Finish. You can observe the file creation status in the
Console window.
The PLB slave and burst peripherals are verified, optimized, and highly parameterizable
interfaces. They also give you a set of simplified bus protocols. Your custom RTL interfaces
to the IPIC signals, which are much easier to work with when compared to operating on
the PLB or FSL bus protocols directly. Using the PLB slave and burst peripherals with
parameterization that suits your needs greatly reduces your design and test effort because
you dont have to reinvent the wheel.
www.xilinx.com
61
Figure 7-5 illustrates the relationship between the bus, a simple PLB slave peripheral, IPIC,
and your user logic.
X-Ref Target - Figure 7-5
Figure 7-5:
The following figure shows the directory structure and the key files that the CIP wizard
created. These file reside in the /pcores subdirectory of your project directory.
Note: This figure shows only a partial list of files. It does not represent the full directory listing.
X-Ref Target - Figure 7-6
Figure 7-6:
62
www.xilinx.com
Note the following points about the files generated by the CIP wizard:
The wizard created two HDL template files: pwm_lights.vhd and user_logic.vhd.
The user_logic file makes the connection to the PLB v4.6 bus using the PLB
slave/burst cores configured in pwm_lights.vhd.
The following figure illustrates the relationship between the block diagram shown in
Figure 7-5 and the generated files shown in Figure 7-6.
X-Ref Target - Figure 7-7
Figure 7-7:
To complete your design, you still need to add your proprietary logic to the two files.
www.xilinx.com
63
The custom peripheral controls the 8 LEDs on the evaluation board. To make the design
interesting, the pwm_lights circuit will:
Control the intensity of the lights using a simple PWM circuit. The intensity varies
over 16 discreet brightness values:
In addition to the hardware design, a simple software application gives you control over
the various settings and the read back status.
SDK tracks the system.xml file that is used in its workspace. Recall that you
introduced this file in Chapter 4, Working with Your Embedded Platform. If and
when that file changes for any reason, SDK flags the change. Youll see an example of
that feature in this Test Drive when you add hardware to the file.
By default, SDK maps all of your C code to block RAM. In this Test Drive, the piece of
C code you will be using is larger (in terms of memory use) than that used previously.
Consequently, the available block RAM to which SDK mapped is too small. Therefore,
you must modify the Linker script. You can see that SDK has a built in GUI that
simplifies modifying your Linker Script.
1.
2.
64
www.xilinx.com
3.
Scroll down to approximately line 160. In the code segment shown in the figure below,
the user port LEDs are displayed in the appropriate location. Add the LEDs port
declaration for the top-level entity in your file as shown here.
Figure 7-8:
4.
Scroll down to approximately line 390. In the code segment shown in the figure below,
the user port LEDs are displayed in the appropriate location. Add the LEDs port
declaration into the user_logic port mapping in your file as shown here.
6.
7.
8.
A completed user_logic.vhd file is provided in the Zip file for this guide. Replace
the contents of the currently opened user_logic.vhd file with the contents of
user_logic.vhd file and save the file.
www.xilinx.com
65
Modifying Clock
Rates
If you want to modify the design later, you can change these clock rates by modifying one
or both of the constants: PWM_tap and slow_clock_tap.
The decode process is used to decode the interface signals from the IPIC to select the
appropriate function. A write to the custom block occurs when Bus2IP_WrCE(0) is active
(high). Adding a few address signals to the decode logic implements the following
behavior:
Write to offset 0x08: LED brightness varies, using a square function drive signal
Write to offset 0x0C: LED brightness varies, using a linear function drive signal
Write to offset 0x1x: LED brightness is set to a constant value (the range is 0 to 0xFF)
The PWM process updates the drive signal based at the update rate of the slow_clock.
The first case statement updates the drive values using a square function
The second case statement updates the drive values in a linear manner
Feel free to change the drive values as part of your experimentation. As designed, 16
discrete drive values are used.
The LEDs are driven with a PWM-generated drive signal. The duty cycle of the drive
signals varies from 0% (no drive) to almost 100% (0xFF or 255).
The assignment to LEDs (0 to 7) near line 247 controls the LEDs based on the last
instruction written to the circuit.
All the code described above is simple and can be modified if you want to experiment later.
However, the interface signals starting at line 256 are required to have very explicit
behavior. Incorrect logic driving these signals will cause the custom pcore to interfere with
proper bus operation, and could result in unexpected behavior during debug.
66
www.xilinx.com
IP2Bus_Data is the bus that is read by the processor during a read operation. Correct PLB
operation requires that this bus be driven with all logic zeros except when an active read is
occurring from the custom pcore. An active read is decoded correctly when reset is inactive
and the Bus2IP_RdCE is active high. When this condition occurs, the custom circuit drives
the specified value onto the bus; otherwise, zeros are driven.
For this example design, doing a read of any address within the peripheral address map
returns a 32-bit value which looks like this:
Bits 0 to 15:
0xF0F0
Bits 16 to 23:
Bits 24 to 27:
0x0
Bits 28 to 31:
The final signals, IP2Bus_WrAck and Bus2IP_WrCE(0), are also critical. IP2Bus_WrAck
is a write acknowledge that must be returned by the custom logic. IP2Bus_WrAck must
only be driven high for a single cycle, but can be delayed if your custom logic needs to add
wait states to the response. For this example, no wait states are necessary, and connecting
IP2Bus_WrAck directly to Bus2IP_WrCE(0) provides a simple, zero wait state response.
The logic for the read acknowledge signal is identical. Again, the peripheral can add wait
states if necessary.
The pwm_lights pcore contains a C_INCLUDE_DPHASE_TIMER parameter that can be set
to a logic one, which generates an automatic bus timeout signal should the peripheral not
respond to a bus request.
As implemented, the data phase timer is not included. If you wanted to add this logic, add
the C_INCLUDE_DPHASE_TIMER parameter to the pwm_lights peripheral in the file and
set the value to 1. Doing this will guarantee that an unacknowledged bus transfer will
time-out after 128 PLB clock cycles.
Finally, the IP2Bus_Error is driven with a constant logic zero, implying that no error
condition is returned. If your custom peripheral could potentially time out based on
having to wait for other external logic, you could connect logic to drive IP2Bus_Error to
terminate the bus transfer.
The first time you ran the CIP wizard, you created the pwm_lights peripheral, set up
the bus interface, and generated the required template files.
Next you will add pwm_lights to your project, again using the CIP wizard. In the
process, pwm_lights is imported to an XPS-appropriate directory and the CIP
wizard creates the MPD and PAO files. For more information about PSF files, see the
Platform Specification Format Reference Manual, available at
http://www.xilinx.com/ise/embedded/edk_docs.htm.
www.xilinx.com
67
Open the CIP wizard and specify that you want to import an existing peripheral to an
XPS project.
2.
On the Name and Version page, select pwm_lights from the Name drop-down list. A
version is not required, but for this example click Use version and use either the
default setting or a custom version number.
3.
If the CIP wizard asks if you want to overwrite an existing peripheral with this name,
select Yes.
4.
Select HDL source files as shown in Figure 7-10. You can create pcores using RTL or
existing netlists. It is also possible that documentation exists for the custom peripheral.
Up to this point, the import flow has been easy to understand. In this procedure,
however, import flow becomes more complex, so read carefully.
The CIP wizard imports pcores that were created in a variety of ways. If you used the
CIP wizard to initially create the pcore, the most straightforward manner to properly
locate and identify source files is to use the Peripheral Analysis Order (PAO) file.
Figure 7-10:
5.
68
www.xilinx.com
6.
Browse to the PAO file. By default, the browse function opens at the top-level pcores
directory. The PAO file is located in the in the /pwm_lights/data subdirectory.
When you use the PAO file to locate the necessary source files (including lower level
libraries), it is not necessary to add any additional files or libraries.
If you are importing a complex peripheral made up of many files, take time to look
through the listing of libraries and HDL source file paths to verify that any necessary
files and libraries are being included.
Note: You might have to change the Files of Type drop-down to see and open the files.
7.
In the HDL Analysis Information page, make sure that user_logic.vhd and
pwm_lights.vhd show at the bottom of the list.
Figure 7-11:
www.xilinx.com
69
8.
The Current Logical Library dialog box might appear to indicate that the two VHDL
files that you added have not yet been compiled. Click Next to have the wizard
compile them.
9.
Select the appropriate bus interface. The pwm_lights peripheral is a PLBv46 Slave
(SPLB).
10. In the Port and Parameter pages, accept the default values.
11. In the Identify Interrupt Signals page, uncheck Select and configure interrupts.
The Identify Interrupt Signals page shows a complete listing of the PLBv46 bus signals
that are used in this design. The CIP wizard automatically deals with all these signals
and the associated bus protocols.
In most cases, there is no need to spend any time analyzing whether all the necessary
signals are there, especially if you initially used the CIP wizard to create the core.
If a core was created using another means, or if it contains a complex or custom bus
interface, this page is a useful tool for analyzing the bus signals.
The pwm_lights peripheral is mapped to a single address range, which XPS assigns,
when the pcore is included in the design. More complex peripherals might also contain
memory blocks or decode ranges that must be accessible.
The pwm_lights peripheral contains no interrupt sources.
12. In the Parameter Attributes page, you can view and control available settings.
Note that the pcore parameters were generated on an earlier page of the CIP wizard.
The bus interface parameters were automatically generated. For this simple
peripheral, no changes are required.
70
www.xilinx.com
Complex peripherals might require a large number of parameters and require careful
control of PLB bus behavior. You can use the Parameter Attributes page to view and
control available settings.
X-Ref Target - Figure 7-12
Figure 7-12:
Using the drop-down lists, you can view parameters for your custom pcore,
parameters for the selected bus interface, or a combination of the two.
Note that the pcore parameters were generated on an earlier page of the CIP wizard.
The bus interface parameters were automatically generated.
For this simple peripheral, no changes are required.
13. On the Port Attributes page, click on LEDs, then click Display Advanced Attributes
to view the full display. This gives you more control over the port attributes because
the attributes are written to the MPD file.
In the drop-down list, select List All Ports to view all ports that are used by the
interface between your custom pcore and your embedded processor subsystem. In this
case, the list of PLB signals is very long, but the CIP wizard did this part of your design
for you.
www.xilinx.com
71
14. Look around this screen, then move to the final screen. When you click Finish, the
Import function completes.
Adding the
pwm_lights Pcore to
Your Project
If you havent noticed yet, you can see your custom peripheral listed in the IP Catalog
under Project Local pcores.
Before adding pwm_lights to your design, you must make one change to the existing
design. The eight LEDs on the evaluation board are currently connected to GPIO
outputs. Now that pwm_lights is driving these LEDs, the LEDs_8Bit pcore must be
removed from the design.
15. In the System Assembly View, right-click LEDs_8Bit and select Delete Instance. The
Delete IP Instance dialog box appears:
X-Ref Target - Figure 7-13
Figure 7-13:
16. For now, accept the default setting. Youll add the external ports back into the design
manually.
17. Locate the pwm_lights pcore in the IP Catalog, right-click on the pcore, and select
Add IP.
XPS adds the IP to the System Assembly View. You can see it in the Bus Interfaces tab.
72
www.xilinx.com
18. In the Connectivity Panel, click on the PLB bus to add the bus connection.
X-Ref Target - Figure 7-14
Figure 7-14:
The pwm_lights core is now added to the embedded system. However, you must
make the external connections between pwm_lights and the LEDs on the evaluation
board.
19. Click the Ports tab, expand pwm_lights_0, and select Make External from the Net
drop-down menu.
A default name of pwm_lights_0_LEDs[0:7] was assigned as the net name. By
expanding External Ports at the top of this view, you see that
pwm_lights_0_LEDs_pin[0:7] is the port name.
20. You can change the assigned net and pin names by clicking in the drop-down box for
pwm_lights_0. Alternatively, you can manually edit the MHS file. For now, leave the
assigned names.
The next step is to generate or assign an address for the pwm_lights pcore.
21. Select the Addresses tab. If you dont see pwm_lights_0 under Unmapped
Addresses, select Project > Rescan User Repositories.
22. Under the Address tab, click Generate Addresses. The pwm_lights pcore is
assigned to an address range of 0xC4600000 0xC460FFFF.
23. Verify that the address range for the DDR2_SDRAM is 0x88000000 0x8fffffff.
If this address has changed, change it back to the original value.
If it seems strange for a simple peripheral to be assigned a 64Kbyte address space,
dont worry. A wider address space requires decoding of fewer address lines. In an
FPGA, a decoder with many inputs is implemented as a cascade of lookup tables.
The deeper the cascade, the slower the operating frequency. By assigning wide
peripheral address ranges, the resulting FPGA implementation will run faster.
24. The final step is to update the UCF constraints file to assign the LED outputs to the
proper FPGA pins.
www.xilinx.com
73
25. Select the Project tab and double-click the UCF file to open it in the XPS main window.
26. Look for fpga_0_LEDs_8Bit_GPIO_IO_O. These pin assignments were left in the
UCF file even though you earlier deleted the GPIO pcore. It is important to note that
removing a pcore does not automatically trigger an update to the UCF file.
27. Replace fpga_0_LEDs_8Bit_GPIO_IO_O_pin with pwm_lights_0_LEDs_pin in all
8 locations and save the UCF file.
Congratulations, you have created a custom pcore!
Exporting the Design
and Generating a
New Bitstream
The next steps are to export the hardware design and generate a new bitstream and then
test this new pcore in hardware.
1.
In XPS, select Project > Export Hardware Design to SDK. Accept the default
directory and click Export Only.
2.
When the export process completes, close XPS, return to ISE, and double-click
Generate Programming File.
3.
Launch SDK. It could take a few moments to start up. If it recognizes any changes to
the hardware platform, the Hardware Design Changes Detected dialog box appears:
4.
74
www.xilinx.com
The xps_gpio pcore driving the LEDs is now removed, and pwm_lights is included.
SDK recognized and displayed the changes to the hardware platform that you made in
the system.xml file.
5.
6.
7.
8.
If you used the same SDK workspace that you used in the SDK chapters, a standalone
platform already exists.
If you started SDK with a new workspace, create a new standalone Software Platform
called cip_wizard_platform.
Create a new Managed Make C Application project called LEDS using the Empty
Application sample application.
9.
Add a new source file with the name leds.c. Paste the C code from the attached
LEDs.c file, save it, and see if the file compiles correctly (it wont). The compilation
error is a result of the object code size being larger than the selected memory space.
Lets investigate.
10. Right-click leds.c in the Projects pane and select Generate Linker Script.
The Linker Script Editor opens. Notice that everything, including text, heap, and stack,
is assigned to block RAM (specifically called out as ilmb_cntlr_dlmb_cntlr in the
Linker Script Generator). You must change it to use DDR2 RAM instead, because it
provides a larger memory space.
11. In the Linker Script Generator, assign all code sections to
DDR2_SDRAM_MPMC_BASEADDR using the drop-down list. Verify that the heap and
stack sizes are set to 0x1000.
The code successfully recompiles. The ELF file generated is about 93K, much larger
than the 16K of block RAM that you have available.
12. Download the bitstream using Bootloop as the initialization file.
13. Debug leds.elf.
www.xilinx.com
75
14. Run leds.elf with a terminal window open. When the application code begins to
run, the HyperTerminal window displays the debug options:
X-Ref Target - Figure 7-16
Figure 7-16:
Whats Next?
In the next chapter you are going to create a dual processor design, then debug the design
in EDK.
76
www.xilinx.com
Chapter 8
1.
2.
When XPS starts, select the option to create a new project using the BSB wizard.
www.xilinx.com
77
3.
Accept all the defaults in the BSB except for those listed below.
Wizard Screens
4.
System Property
System Configuration
Type of system:
Select a dual-processor system.
single-processor or dualprocessor
Processor
Configuration
Peripheral
Configuration
Processor 1
Peripherals
Shared Peripherals
Processor 2
Peripherals
When you complete your design, examine your new system in the System Assembly
View in XPS.
The two embedded processor systems are completely independent, each with its own
memory map. The exception is the mailbox peripheral, which is essentially a dual-port
RAM with one port connecting to the PLBv46 bus on one processor and the other port
connecting to the PLBv46 bus on the other processor. To learn more about the mailbox
peripheral, you can right-click on it in the System Assembly View and select View PDF
Datasheet.
5.
Export the system.xml file to SDK by selecting Project > Export Hardware Design to
SDK.
6.
7.
Navigate back to ISE Project Navigator and add the UCF to your ISE Project.
Note: For information about adding a UCF to your ISE project, refer to Chapter 4, Working with
Your Embedded Platform.
8.
With your .xmp file selected in the Design panel, double-click Generate
Programming File to implement the design and generate a bitstream.
You now have a bitstream ready for downloading to the target hardware and a
system.xml file for use in SDK.
78
www.xilinx.com
Launch SDK.
When the Workspace Launcher dialog box appears, create a new workspace called
Dual_Processor_Workspace and save it to a directory of your choice.
3.
In the New Hardware Specification File dialog box, point to the system.xml file that
you exported earlier. If you used the default project locations, the file is located at <ISE
Project Name>\system\SDK\SDK_Export\hw\system.xml.
When the system.xml file is imported, the C/C++ Perspective opens. SDK recognizes
that there are two MicroBlaze processors in the embedded system, as shown below.
Figure 8-1:
4.
5.
Select File > New > Software Platform and create a new software platform project
with the following settings:
Project Location: Make sure the Use default check box is selected
Use the same procedure to create a second software platform project with the
following settings:
Project Location: Make sure the Use default check box is selected
You can now see that each MicroBlaze processor has a single associated software
platform, as shown in the following figure.
www.xilinx.com
79
Figure 8-2:
The next step is to create a Managed C Application Project for each processor. In this
example, you will create and modify a hello world project for each processor.
6.
7.
Select File > New > Managed Make C Application Project and create a new Managed
Make C application project with the following settings:
Project Location: Make sure the Use Default Location for Project check box is
selected
Use the same procedure to create a second Managed Make C application project with
the following settings:
Project Location: Make sure the Use Default Location for Project check box is
selected
You now have two sample C applications, one for each processor, as shown in the
following figure.
80
www.xilinx.com
Figure 8-3:
8.
to
print(Hello From Processor 0!\n\r);
9.
10. Save each file. SDK automatically builds the files while saving. Note the output in the
console window:
************** Determining Size of ELF File **************
mb-size hello_world_1.elf
text data bss dec hexfilename
1958 296 2090 4344 10f8hello_world_1.elf
Build complete for project hello_world_1
www.xilinx.com
81
Select Tools > Software Platform Settings to modify the settings for the
MicroBlaze_Platform_1 processor.
2.
In the OS and Libraries settings page, review the stdin and stdout settings. In this
case, the hardware on which XMD runs needs to be set to MDM. The default value is
mdm_0, so this is already correctly set.
If you run through the same exercise to view the settings for the MicroBlaze_Platform_0
processor, youll notice that stdin and stdout are set to use xps_uartlite.
2.
Select Tools > Program FPGA and select your bitstream and block memory map files
from the following locations:
Confirm that the initialization file for each processor is set to BootLoop, then click
Save and Program.
The target hardware has now been programmed with the bitstream for the dual
processor design.
The next step is to download an ELF file for each processor.
3.
82
www.xilinx.com
4.
Go back to the C/C++ Perspective, and use the same procedure to debug the
hello_world_1.elf file and to download this file to the MicroBlaze_Platform_1
processor.
The Debug Perspective opens again. Look at the contents of the Debug window and
note that there are two debugging tasks:
X-Ref Target - Figure 8-4
Figure 8-4:
5.
Before debugging these programs, connect an RS232 cable between your computer
and the target board to observe the console I/O in a terminal window.
6.
In the XMD window, type terminal to stream terminal I/O over the MDM. You can
use this window to monitor the output of MicroBlaze_Platform_1.
Note: If the XMD window isnt available, select Window > Show View > Other and select
Xilinx > XMD Console.
7.
Highlight the call stack in the Debug window for either hello_world_0 or
hello_world_1, and select Run > Resume.
www.xilinx.com
83
The processor output displays in the terminal window or XMD console, as shown in the
following figure.
X-Ref Target - Figure 8-5
Figure 8-5:
As you can see, debugging more than one processor design in SDK is similar to debugging
a single processor. This was a simple example. You can perform other software
development tasks with SDK as well, such as stepping, setting breakpoints, and examining
registers and memory.
84
www.xilinx.com
Appendix A
Simulating in Project Navigator with
ModelSim
For the majority of the Test Drive sections in this document, you used ISE Project
Navigator as the starting point for all activities. You can also simulate an embedded design
in Project Navigator.
Introducing Simulation
Youll use the same design you created in Chapter 7, Creating Your Own Intellectual
Property, in the Test Drives.
Open the ISE project you used in Chapter 7, Creating Your Own Intellectual
Property.
2.
3.
4.
5.
HDL: VHDL
Simulation Test Bench: Make sure that the Generate test bench template check
box is not selected
7.
www.xilinx.com
85
8.
In XPS, select Simulation > Compile Simulation Libraries and follow the on-screen
instructions in the wizard to compile or locate your simulation libraries. This will take
several minutes to complete.
9.
Now that the simulation model generation is set up, you create the top-level VHDL file,
which instantiates the processor subsystem.
1.
2.
Select File > Save As and save the file using the name system_top.vhd.
It is important to save this file with a different name because it is overwritten in future
instances of running the tool.
3.
4.
Open the system_top.vhd file that you just created in the system/hdl subdirectory
of your project. Associate it with All.
5.
At the top of the Design view, select Behavioral Simulation from the Sources for
drop-down list.
6.
This code is included in any VHDL design where you have block RAM that needs to be
initialized with data (in this case it is an ELF file).
7.
86
www.xilinx.com
Introducing Simulation
Copy the pn.do file (included in the Zip file for this guide) to the top-level directory of
your ISE project.
2.
In the Design view, right-click the Simulate Behavioral Model process for the
ModelSim Simulator and select Process Properties to open the ModelSim Simulation
Properties.
3.
Browse to the saved pn.do file and edit the Process Properties as shown here. Make
sure to do the following:
Figure A-1:
4.
Click OK.
5.
www.xilinx.com
87
88
www.xilinx.com
Appendix B
www.xilinx.com
89
Open the bfm_system.xmp project in XPS. The Bus Interfaces window looks like this:
Figure B-1:
2.
Select Project > Project Options and click the HDL and Simulation tab.
3.
Select the HDL format in which you would like to simulate. We will use the default,
VHDL.
4.
BFM offers Behavioral Simulation only, so leave the Simulation Model selection set to
its default.
5.
6.
Select Simulation > Generate Simulation HDL Files to run the Simulation Model
Generator (Simgen) for this test project.
Simgen creates a simulation directory structure under the /bfmsim directory. The
simulation directory contains the HDL wrapper files along with the DO script files
needed to run a behavioral simulation.
7.
Click Custom Button 1 in the XPS GUI tool bar. The CIP wizard configures this tool
bar button when it creates the BFM simulation project.
Custom Button 1 initiates the following:
90
Calls the IBM CoreConnect ToolKit Bus Functional Compiler (BFC) to operate
on a sample.bfl file using the simulation options that were previously set (see
<project name>\pcores\pwm_lights_v1_00_a\devl\bfmsim\scripts\sample.bfl for
more detail).
Invokes the simulator with the BFC output command files (INCLUDE or DO files)
depending on the simulator to execute the commands in the sample.bfl file.
www.xilinx.com
Figure B-2:
Created a set of HDL templates files, which you modified to become a working pcore
Created a test project, which isolates your pcore and allows you to verify its
functionality with the bus before hooking it to a larger system
www.xilinx.com
91
In addition to compiling the BFL, the make file executed by Custom Button 1 called the
simulator with the command files to start simulation, simplifying the simulation launch
and compilation process to a single button click.
2.
BFL Command
Information
Note: If you create a new BFL file, you must also adjust the bfm_sim_xps.make file in the
/bfmsim directory to reflect your command file. For more information about the BFL commands,
look in your $XILINX_EDK\third_party\doc directory for the PLBToolkit.pdf file.
Next, youll modify the BFM code and run an actual simulation of pwm_lights to
demonstrate the power of bus functional simulation.
The completed sample.bfl file is included in the Zip file for this guide. You can use
it for comparison once you complete this Test Drive or to replace the sample.bfl file
that you will generate. For convenient copying, the following commands that you
about to add to your sample.bfl file are saved in an attached text file named
bus_transaction_bfl_code.txt.
Adding Commands to
sample.bfl
3.
Starting with the sample.bfl template, at approximately line 175, find the line
starting with configure and change it to read:
configure(msize = 01)
92
www.xilinx.com
4.
After the start testing section near the end of the file, add the following code from
the bus_transaction_bfl_code.txt. These commands generate bus transactions.
--- Define several bus transactions for pwm_lights
-- Memory updates are 64 bits write, bus transactions are 32 bits wide.
---- Write value of 22 hex to LED register
-mem_update(addr=30000010,data=22222222_22222222)
write (addr=30000010,size=0000,be=11110000)
-- Read status register, expect to get F0F02207
read (addr=30000000,size=0000,be=11110000)
-- Write to offset 0, then read status, expect to get F0F02208
mem_update(addr=30000000,data=00000000_00000000)
write (addr=30000000,size=0000,be=11110000)
read (addr=30000000,size=0000,be=11110000)
-- Write to offset 4, then read status, expect to get F0F02200
--mem_update(addr=30000000,data=00000000_00000000)
write (addr=30000004,size=0000,be=00001111)
read (addr=30000000,size=0000,be=00001111)
-- Write to offset 8, then read status, expect to get F0F02208
mem_update(addr=30000008,data=00000000_00000000)
write (addr=30000008,size=0000,be=11110000)
read (addr=30000000,size=0000,be=11110000)
-- Write to offset C, then read status, expect to get F0F02200
--mem_update(addr=30000000,data=00000000_00000000)
write (addr=3000000C,size=0000,be=00001111)
read (addr=30000000,size=0000,be=00001111)
001111)
The mem_update is used to set the write data value at the address to which you
want to write.
The write command initiates the PLB write, and the read command initiates the
PLB read.
5.
6.
Make sure your sample.bfl file matches the attached file and then save your file.
7.
8.
In ModelSim, scroll down to the end of the signal listing in the Waveform window. The
last signals listed correspond to user_logic signals, which are the custom signals in
the pwm_logic pcore.
www.xilinx.com
93
When ip2bus_rdack is high, the ip2bus_data signal contains the value read
back from pwm_lights.
For the order of writes to the core, the simulation will show (in order) F0F02207,
F0F02208, FF002200, FF002204, and FF002205.
Verify this information for your simulation. The first value read back occurs at 450ns. This
exercise helps you understand why these specific values were read back.
In addition to the BFL file, the CIP wizard created a corresponding /pcores directory
under the /BFMSIM project that contains the template for the BFM test bench.
You can add to the template test bench as your core logic requires.
You have now seen the power of bus functional simulation, and how you might take
advantage of how XPS does all the hard work (except, of course, writing the correct
stimulus). As you create custom IP in the future, BFM simulation can both reduce your
testing time and provide assurance that your IP functions as expected.
94
www.xilinx.com
Appendix C
Glossary
B
BBD file
Black Box Definition file. The BBD file lists the netlist files used by a
peripheral.
BFL
Bus Functional Language.
BFM
Bus Functional Model.
BIT File
Xilinx Integrated Software Environment (ISE) Bitstream file.
BitInit
The Bitstream Initializer tool. It initializes the instruction memory of
processors on the FPGA and stores the instruction memory in
blockRAMs in the FPGA.
BMM file
Block Memory Map file. A BMM file is a text file that has syntactic
descriptions of how individual block RAMs constitute a contiguous
logical data space. Data2MEM uses BMM files to direct the translation
of data into the proper initialization form. Since a BMM file is a text
file, it is directly editable.
www.xilinx.com
95
BSB
Base System Builder. A wizard for creating a complete design in Xilinx
Platform Studio (XPS). BSB is also the file type used in the Base System
Builder.
BSP
See Standalone BSP.
C
CFI
Common Flash Interface
D
DCM
Digital Clock Manager
DCR
Device Control Register.
DLMB
Data-side Local Memory Bus. See also: LMB.
DMA
Direct Memory Access.
DOPB
Data-side On-chip Peripheral Bus. See also: OPB.
DRC
Design Rule Check.
DSPLB
Data-side Processor Local Bus. See also: ISPLB.
96
www.xilinx.com
E
EDIF file
Electronic Data Interchange Format file. An industry standard file
format for specifying a design netlist.
EDK
Xilinx Embedded Development Kit.
ELF file
Executable and Linkable Format file.
EMC
External Memory Controller.
EST
Embedded System Tools.
F
FATfs (XilFATfs)
LibXil FATFile System. The XilFATfs file system access library
provides read/write access to files stored on a Xilinx SystemACE
CompactFlash or IBM microdrive device.
Flat View
Flat view provides information in the Name column of the IP Catalog
and System Assembly Panel as directly visible and not organized in
expandable lists.
FPGA
Field Programmable Gate Array.
FSL
MicroBlaze Fast Simplex Link. Unidirectional point-to-point data
streaming interfaces ideal for hardware acceleration. The MicroBlaze
processor has FSL interfaces directly to the processor.
www.xilinx.com
97
G
GDB
GNU Debugger.
GPIO
General Purpose Input and Output. A 32-bit peripheral that attaches
to the on-chip peripheral bus.
H
Hardware Platform
Xilinx FPGA technology allows you to customize the hardware logic
in your processor subsystem. Such customization is not possible using
standard off-the-shelf microprocessor or controller chips. Hardware
platform is a term that describes the flexible, embedded processing
subsystem you are creating with Xilinx technology for your
application needs.
HDL
Hardware Description Language.
Hierarchical View
This is the default view for both the IP Catalog and System Assembly
panel, grouped by IP instance. The IP instance ordering is based on
classification (from top to bottom: processor, bus, bus bridge,
peripheral, and general IP). IP instances of the same classification are
ordered alphabetically by instance name. When grouped by IP, it is
easier to identify all data relevant to an IP instance. This is especially
useful when you add IP instances to your hardware platform.
I
IBA
Integrated Bus Analyzer.
IDE
Integrated Design Environment.
ILA
Integrated Logic Analyzer.
ILMB
Instruction-side Local Memory Bus. See also: LMB.
98
www.xilinx.com
IOPB
Instruction-side On-chip Peripheral Bus. See also: OPB.
IPIC
Intellectual Property Interconnect.
IPIF
Intellectual Property Interface.
ISA
Instruction Set Architecture. The ISA describes how aspects of the
processor (including the instruction set, registers, interrupts,
exceptions, and addresses) are visible to the programmer.
ISC
Interrupt Source Controller.
ISE
Xilinx ISE Project Navigator project file.
ISOCM
Instruction-side On-Chip Memory.
ISPLB
Instruction-side Peripheral Logical Bus. See also: DSPLB.
ISS
Instruction Set Simulator.
J
JTAG
Joint Test Action Group.
www.xilinx.com
99
L
Libgen
Library Generator sub-component of the Xilinx Platform Studio
technology.
LMB
Local Memory Bus. A low latency synchronous bus primarily used to
access on-chip block RAM. The MicroBlaze processor contains an
instruction LMB bus and a data LMB bus.
M
MDD File
Microprocessor Driver Description file.
MDM
Microprocessor Debug Module.
MFS File
LibXil Memory File System. The MFS provides user capability to
manage program memory in the form of file handles.
MHS file
Microprocessor Hardware Specification file. The MHS file defines the
configuration of the embedded processor system including
buses,peripherals, processors, connectivity, and address space.
MLD file
Microprocessor Library Definition file.
MVS file
Microprocessor Verification Specification file.
MOST
Media Oriented Systems Transport. A developing standard in
automotive network devices.
100
www.xilinx.com
MPD file
Microprocessor Peripheral Definition file. The MPD file contains all of
the available ports and hardware parameters for a peripheral.
MSS file
Microprocessor Software Specification file.
N
NCF file
Netlist Constraints file.
NGC file
The NGC file is a netlist file that contains both logical design data and
constraints. This file replaces both EDIF and NCF files.
NGD file
Native Generic Database file. The NGD file is a netlist file that
represents the entire design.
NGO File
A Xilinx-specific format binary file containing a logical description of
the design in terms of its original components and hierarchy.
NPI
Native Port Interface.
NPL File
Xilinx Integrated Software Environment (ISE) Project Navigator
project file.
O
OCM
On Chip Memory.
OPB
On-chip Peripheral Bus.
www.xilinx.com
101
P
PACE
Pinout and Area Constraints Editor.
PAO file
Peripheral Analyze Order file. The PAO file defines the ordered list of
HDL files needed for synthesis and simulation.
PBD file
Processor Block Diagram file.
Platgen
Hardware Platform Generator sub-component of the Platform Studio
technology.
PLB
Processor Local Bus.
PROM
Programmable ROM.
PSF
Platform Specification Format. The specification for the set of data
files that drive the EDK tools.
S
SDF file
Standard Data Format file. A data format that uses fields of fixed
length to transfer data between multiple programs.
SDK
Software Development Kit.
SDMA
Soft Direct Memory Access
Simgen
The Simulation Generator sub-component of the Platform Studio
technology.
102
www.xilinx.com
Software Platform
A software platform is a collection of software drivers and, optionally,
the operating system on which to build your application. Because of
the fluid nature of the hardware platform and the rich Xilinx and
Xilinx third-party partner support, you may create several software
platforms for each of your hardware platforms.
SPI
Serial Peripheral Interface.
Standalone BSP
Standalone Board Support Package. A set of software modules that
access processor-specific functions. The Standalone BSP is designed
for use when an application accesses board or processor features
directly (without an intervening OS layer).
SVF File
Serial Vector Format file.
U
UART
Universal Asynchronous Receiver-Transmitter.
UCF
User Constraints File.
V
VHDL
VHSIC Hardware Description Language.
X
XBD File
Xilinx Board Definition file.
XCL
Xilinx CacheLink. A high performance external memory cache
interface available on the MicroBlaze processor.
www.xilinx.com
103
Xilkernel
The Xilinx Embedded Kernel, shipped with EDK. A small, extremely
modular and configurable RTOS for the Xilinx embedded software
platform.
XMD
Xilinx Microprocessor Debugger.
XMP File
Xilinx Microprocessor Project file. This is the top-level project file for
an EDK design.
XPS
Xilinx Platform Studio. The GUI environment in which you can
develop your embedded design.
XST
Xilinx Synthesis Technology.
Z
ZBT
Zero Bus Turnaround.
104
www.xilinx.com