Sie sind auf Seite 1von 10

17/6/2014

Creating a Mojo Project - Glenn Sweeney

Glenn Sweeney
Home

Projects

Tutorials

Photography

Searc h t his sit e

Contact

Tutorials
>
Mojo FPGA Tutorials
>

Creating a Mojo Project


This tutorial is also available in a brief form, if all you are looking for is a few quick steps written
out!
Note: This tutorial was made for the Mojo v3 board using Xilinx ISE 14.6 on W indows 7.
Important: Before following this tutorial, make sure you have your development environment set up
properly. The guys at Embedded Micro do a much better job describing this process than I could. See
their tutorials at:
Installing ISE
Installing Mojo Loader
Updating the Mojo
Also: All screenshots in this tutorial are clickable links to the full resolution captures!

Contents
1 Introduction
2 Creating the Project
3 Adding a Source File
4 Modifying the Code
5 Assigning the Pins
6 Configuring ISE
7 Programming the Mojo

Introduction
The tutorials on Embedded Micro do a very good job with setting up the development environment, but
ex pect you to use a pre-designed ISE project. This document will teach you how to make your own
project from scratch, without relying on the Mojo-Base file that ships with the device.

http://www.glennsweeney.com/tutorials/mojo-fpga-tutorials/creating-a-mojo-project

1/10

17/6/2014

Creating a Mojo Project - Glenn Sweeney

The resulting project from this tutorial is not a replacement for the full-featured Mojo-Base project.
However, once you have learned to configure your own project, you will be able to include the parts of
the Mojo-Base code that you would like without problem! Because of this, I still highly recommend
following through the Embedded Micro tutorials. Their tutorials will show you how to use some of the
unique features of this development board, such as the interface to the onboard microcontroller.

Creating the Project


First, open the ISE Design Suite on your machine.
Then, to create a new project, go to [File --> New Project...]. This will automatically close any open
project, and open the creation wizard.
Go ahead and give your project a name, and a location.
The "W orking Directory" field can be left as the same path as the "Location" field. However, if this is the
case, all of the project build files will be dumped in your project directory. This is no good! I put my
project files in the "syn" (synthesis) directory within my project.
Type out a description if you wish.

W hen you're ready, go ahead and press Nex t.


In this window, you need to enter the specifications of the hardware device the project is targeting. In
http://www.glennsweeney.com/tutorials/mojo-fpga-tutorials/creating-a-mojo-project

2/10

17/6/2014

Creating a Mojo Project - Glenn Sweeney

this case, the Mojo board has a Spartan6-XC6SLX9 onboard. The package used is a TQG144, and the
speed grade is "-2".
You can also choose between Verilog and VHDL in this menu, in the "Preferred Language" field. - this
tutorial uses Verilog.

Once this is all set, go ahead and click Nex t, then Finish.

Adding a Source File


Now that we have the project made, we have to add a source file to this. W e do this by selecting [Project
--> New Source...] from the top menubar.
Since we are working in Verilog, we want to create a new Verilog module. A module is simply a
description of hardware functionality. Sort of like a function in procedural programming, a module
encapsulates and abstracts some logic in a "black box ", with ports that allow input and output.
You can give the module any name that you would like. However, there are some reserved characters
that the wizard will accept, but do not compile! I learned the hard way that '-' (dash) is an invalid
module name.
I put my module file at the top directory of my project. However, if you Traducir
wanted to keep things all
organized and stuff, you're welcome to put it in a "src" subdirectory (or any other name you choose).
http://www.glennsweeney.com/tutorials/mojo-fpga-tutorials/creating-a-mojo-project

3/10

17/6/2014

Creating a Mojo Project - Glenn Sweeney

Make sure that the "Add to project" box is checked, and then click Nex t.
In the nex t window, you can define ports. These are the inputs and outputs of your module. For this
ex ample, we are going to create a port for the reset button, and a port for a single LED on the board. To
do so, we will create a port named RESET_N (the _N is to indicate that the port is inverted - that is, the
reset button produces a HIGH signal when unpressed, and a LOW signal when pressed). Make sure this
port's direction is an input.
Then, make another port named LED, and mark it as an output.

http://www.glennsweeney.com/tutorials/mojo-fpga-tutorials/creating-a-mojo-project

4/10

17/6/2014

Creating a Mojo Project - Glenn Sweeney

To complete the module, click Nex t, and then Finish.

Modifying the Code


In the righthand frame of the IDE, there should now be a blank module created with the ports that you
described. W e have the freedom to use these ports however we like inside the module. For this
tutorial, we are just going to connect them together such that pressing the reset button turns the LED
on. W e just need to add a single line of code before the EndModule line. The code to do this is as
follows:
assign LED = ~RESET_N;
This is almost the simplest line that can be written in Verilog. It simply takes the state of the RESET_N
port inverts it (~ is a bitwise NOT), and assigns it to the LED port. This means that whenever the button
is HIGH (not pressed), the LED is LOW (off), and whenever the button is LOW (pressed), the LED is
HIGH (on). Perfect!

Remember, if you want to double check that your code looks right, you can just click on the screenshot
above.

Assigning the Pins


Now, we have a problem though. ISE doesn't know what ex ternal pins the LED and button are
connected to. In order to tell it, we create a file to instruct the synthesizer how to connect our module
ports to the physical hardware. This is done in a file called the Implementation Constraints File or the
User Constraints File. These names seem to be used interchangeably.
In order to create the .UCF file, we again use [Project --> Add Source...]. This time, instead of picking
the Verilog module, we choose the Implementation Constraints File. I named mine mojo_pinout, but
again, any name is fine. Make sure it's located in the project (or a project subdirectory, if you want).

http://www.glennsweeney.com/tutorials/mojo-fpga-tutorials/creating-a-mojo-project

5/10

17/6/2014

Creating a Mojo Project - Glenn Sweeney

Again, check that Add to project is selected, and then click Nex t, and then Finish.
The .UCF file is used to describe a lot of different constraints for your project. ISE provides a variety of
tools and wizards to help you configure this automatically. However, for now, we only need two very
simple constraints, and so we are going to write them in manually.
Attaching a port (or NET, in the file syntax ) to a pin follows the following syntax :
NET "name" LOC = Pn;
where the "name" ex actly matches the port name in the module, and Pn refers to the pin number on the
part. These are labeled on the Mojo board, and additionally are documented in the pinout
specification document for the part , or the package and pinout pdf file available from Xilinx .
However, there is no information on the board or in the documentation for which pins on the FPGA are
already used on the Mojo board!
If you're looking for this pinout information, please see my Mojo pinout tutorial!
However, for this tutorial, we're going to use the switch on pin 38, and the LED on pin 123. So, the
content of the .UCF file will be:
NET "RESET_N" LOC = P38;
NET "LED"
LOC = P123;

http://www.glennsweeney.com/tutorials/mojo-fpga-tutorials/creating-a-mojo-project

6/10

17/6/2014

Creating a Mojo Project - Glenn Sweeney

After you've made your .UCF file, make sure both it and the .v file are saved.

Configuring ISE
At this point, our code is all set to go! However, we still need to configure a setting inside ISE to make
sure we generate the correct output. To do so, first make sure your module file is highlighted in the file
hierarchy in the top left of your screen.
Nex t, in the bottom left, go to the "design" tab, and right click on "Generate Programming File".

Clock on "Process Properties..."


http://www.glennsweeney.com/tutorials/mojo-fpga-tutorials/creating-a-mojo-project

7/10

17/6/2014

Creating a Mojo Project - Glenn Sweeney

In this menu, we need to tell ISE to generate a binary file. This file is what we will load into the FPGA
through the mojo_loader application.
To do this, check the box on the "-g Binary:" row under general options. This will enable output of a .bin
file during synthesis.

Select OK.

Programming the Mojo


Now, we are ready to synthesize our programming file. To do this, double-click on "Generate
Programming File", in the Design tab in the lower-left portion of your screen.

This process will take several minutes. W hen it is complete, switch to the mojo_loader application you
installed during the Mojo setup process.
http://www.glennsweeney.com/tutorials/mojo-fpga-tutorials/creating-a-mojo-project

8/10

17/6/2014

Creating a Mojo Project - Glenn Sweeney

In this application, select the serial port your Mojo is plugged into. Unless you have multiple USB-serial
devices plugged in, there will probably be only one option in this menu.
Then, click "Open Bin File", and navigate to the project working directory folder.

Find the .bin file, and open it.

W ith "Store to Flash" and "Verify Flash" checked, click Load, and wait for Done to appear in the bar.
Now, when you press the button on your Mojo, the LED closest to the button should light!
Thank you for following this tutorial. If you have any questions about it, or something didn't work
right, don't hesitate to reach out to me from the Contact page!

Comentarios
No tienes permiso para aadir comentarios.

http://www.glennsweeney.com/tutorials/mojo-fpga-tutorials/creating-a-mojo-project

9/10

17/6/2014

Creating a Mojo Project - Glenn Sweeney

Glenn Sweeney 2012. All Rights Reserv ed.


Informar de uso inadec uado | Con la tecnologa de Google Sit es

http://www.glennsweeney.com/tutorials/mojo-fpga-tutorials/creating-a-mojo-project

10/10

Das könnte Ihnen auch gefallen