The NanoBoard 3000XN used for this review included a Xilinx
Spartan-3AN FPGA (XC3S1400AN-4FGG676C). Altium also offers a NanoBoard 3000AL
with an Altera Cyclone III FPGA and a NanoBoard 3000LC with a Lattice ECP2
device. Each board gives users memory, and a wide range of devices that include
serial, Ethernet, USB, MIDI, RS232 and RS485 ports, ADCs and DACs, relays, an
LCD with touch screen, keyboard and mouse interfaces, and speakers. The plastic
end pieces provide a rigid frame that stabilizes the board on a table.
The Altium Designer suite of tools comes with the kit and they
took about 20 minutes to install. During installation you will get a license
that goes with the board, so to use the Altium Designer software, you must have
your NB3000 connected to your host PC. The Altium tools will function for 12
months, but users can buy a full perpetual license at any time. I had the Xilinx ISE 9.1i software and
libraries already on my PC, so I did not download any Xilinx software.
Altium has done an excellent job with the NB 3000, its Designer
software, and online documentation, examples, videos, and other information. I
recommend it highly to engineers interested in or already involved with
FPGA-based designs. I could spend an entire summer vacation experimenting with
this board and the Altium tools. The NanoBoard 3000 was fun to work with.
| | |
| | Click here for a larger version
|
The old Dell Win XP PC in my lab did not meet the minimum system
requirements for the Altium Designer software. But it worked well enough,
although some tasks would take less time on a newer computer.
A Difficult Climb to Start
I got off to a rocky start because I couldn't locate the NB3000
documentation or projects and started with a "Getting Started
Tutorial" for an earlier NanoBoard. Good NB3000 information exists, as
I'll explain later.
The sample project I used creates a shift-register that lights
the board's eight LEDs one at a time and then turns them off in the same
sequence. The schematic-level design
capability and ready-built functional blocks simplified the layout of the
circuit without the need for C, VHDL, or Verilog code, although you can use
those languages, if you choose. I followed the "old" instructions and
got through to the compilation step in about 30 minutes. But when I compiled
the circuit, I got an error message, "An invalid target package 'fgg676'
was given in the '-p' option value. Please consult the Xilinx Programmable
Logic Data Book to find a legal target package."
That didn't sound good because the data book runs to over 450
pages and the error message didn't offer any clues about how to correct my
design. To make a long story short: I downloaded and installed the latest
Xilinx ISE tools, version 11.4.
At this point, though, the Altium Designer displayed,
"Xilinx ISE could not be found," which gave no clue about how to
solve the problem. After several lengthy
clean-outs and re-installations of the Altium Designer and Xilinx ISE 11.4
software I recreated the simple LED example circuit from scratch and tried
again.
The error message still appeared, so I contacted the Altium
tech-support people and talked with Marty Hauff. He explained the problem might
exist in the Windows XP "environment variables," located at Control
Panel-->System-->Advanced-->Environment Variables. In the System
Variables window, no information existed for the Xilinx ISE, so I had to add: C:\Xilinx\11.1\ISE
Although the latest version of the Xilinx ISE tools is named
11.4, the tools are still basically version 11.1 with some updates, so the
above path is correct, and it worked. (Aargh, Windows!)
Note that Altium labels the Designer software with a season and a
year, for example, Altium Designer Summer 2009, the version I used for this
review. Altium uses the Winter, Spring, Summer, Fall sequence of seasons within
a calendar year, so Summer 2009 is the latest version, not Winter 2009.
| | |
| |  Click here for a larger version |
This change fixed the problems and the LED circuit went through
the download-to-FPGA steps. At last, the
LEDs lit, but they flashed at the 50-MHz clock frequency. Designers can change
the clock signal's frequency, but not to a frequency low enough to see the LEDs
flash.
Flash the LEDs at a Slower Rate
Marty explained how to add a "soft instrument" to the
design, so under his guidance I selected a Frequency Generator function and
placed it on top of the "conductor," or "net" for the clock
signal. It inserted itself in the circuit.
Now, when I loaded the project into the FPGA, I could see a
Frequency Generator block in the "Device" window. Clicking on that
block opened an instrument window that let me set the input frequency to 50 MHz
and the output frequency to 1 Hz. The instrument looks like a rack-mounted
signal generator with buttons and a digital frequency display.
You also can select other instruments such as a logic analyzer
and a frequency counter.
The NB3000 Does Have Good DocumentationI noted earlier I got off to a difficult beginning with
getting-started information because I couldn't find NB3000 info and latched
onto a project for an earlier board. When I first went to the Altium website, I
clicked on Products and then on NanoBoard 3000. The NanoBoard 3000 page
includes an introductory video and tabs at the top of the page that offer more
information. I didn't realize the images at the bottom of the page would lead
to more information. They just looked like nice photos that highlighted what I
thought of as marketing information: Training Room, 3D Explore, and Instant
Deployment.
Instead, I somehow ended up on the
Altium Wiki and went to the "Getting Started Page," and under "Basic design
tutorials" clicked on "Getting Started with FPGA Design." I used
that exercise, which still provides useful information.
Here's a better route: Go to the
Altium website, under Products,
click on NanoBoard 3000 and then mouse over the Training Room image and click.
Those steps get you to a short video introduction and a list of
"Chapters" that provide excellent getting-started information that will
take you from a simple LED experiment through using the LCD panel to control
LEDs.
Next, from the
Altium homepage, go to Community and select
TRAININGcenter where you can locate the training manuals Altium's instructors
use in courses. More than 100 short videos provide "how-to"
information on many design subjects. The company also offers online and
in-person training programs for a fee and several free online Web seminars. It
would help if the Altium NanoBoard kit information included a short URL for the
tutorials so users could find them quickly.
Move to a Higher Level of Design Abstraction
Although the basic projects and tutorials use individual logic
components such as gates, inverters, and a shift register, and LEDs and
controls on the board, developers also can use the OpenBus architecture and
move complete system-level blocks into their workspace. The OpenBus blocks
include processor cores, memory controllers, I/O devices, LCD controller, SRAM,
USB Host controllers, DMA controllers and other high-level
"components," so engineers can quickly design a processor-based
circuit. I did not have time to explore this type of design. Interested engineers can learn more by
watching the 10-minute video, "NanoBoard 3000: FPGAs were never this much
fun!"
Circuit Changes and a Project You Can Use
The board's eight LEDs can produce red, green or blue light, but
the basic counter project I worked on controlled only the eight red LEDs. I
added a demultiplexer and connected its control input to an unused DIP switch
on the board so I could select either the red or the green LEDs. Next I added a
pulse-width modulator to control the demultiplexer's enable input so the LEDs
don't shine so brightly. (Don't stare at them for long!) The latest generic
FPGA logic components includes a PWM with an 8-bit input and a prescaler
setting. Find the PWM function in the FPGA Configurable Generic.IntLib library.
The new circuit routes the 50-MHz clock to the PWM's clock input
(C), routes the PWM's output to the Enable Input (EI) on the multiplexer, and
routes the 8-bit bus from the PWM's input bus D[7..0] to an 8-input-bus-output
"bus joiner. At the joiner, I hardwired
the eight inputs to 00000100, which reduced light output.
Download the Code
You can download my project files
here. Before you use this project, ensure you have the latest version of
Altium Designer and the latest version (11.4 and higher) of the Xilinx ISE
software. This project used the NanoBoard 3000 with the Xilinx FPGA noted at
the start of the review. I have not
tried it with other FPGAs from Lattice or Altera.
On your host PC, go to
Program Files-->Altium Designer [season] [year]-->Examples. Create a new folder within the Examples
folder and name it "Basic FPGA Design Tutorial." Unzip the downloaded
zip file and place the contents in the new folder you just named. Start Altium
Designer, go to the File-->Open Project... window and navigate to the Basic
FPGA Design Tutorial folder. Locate the file: Simple_Counter.PrjFpg and click
on it to load the counter project into Altium Designer. Documentation for this
project refers to a previous NanoBoard, but uses the same development steps and
basic counter circuit. Find the document
here.
This multi-part tutorial explains how to develop the circuit from a fresh
start. Keep in mind the tutorial does not provide everything you might need to
know about the Altium Designer tool.
Hint: When you drag a component into the schematic area, or when you
select it in the schematic area, use the spacebar to rotate it.
Try to modify the design so you can program the PWM's 8-bit value
with the DIP switches when you press a pushbutton. Select the FPGA NB3000
Port-Plugin.IntLib library instead of the FPGA NB2DSK01 Port-Plugin.IntLib
described in the documentation.
Caution: If you exit Altium Designer and want to restart it, open
Windows Task Manager and monitor the shutdown of the dxp.exe
"process." If you try to relaunch Designer before this dxp.exe
completely closes, you can get error messages and run into problems. Take a
break and be patient as dxp.exe closes.
A Search Engine that Doesn't
My one quibble with Altium concerns its website. The Search
engine often does not find documents or information on the company's Website.
The important "FPGA Generic Library Guide," CR0118, provides an apt example.
This document describes the libraries of components and functions. You can use brute force to find it at: Community--> Learning guides. In the Browse Learning Guide column, find
FPGA Generic logic, click on it, and you'll find the 450+-page guide.
But use the Altium site-search to find "Generic Library
Guide" and it comes up empty handed. Without the quotes, the engine finds
29 pages of information, or about 290 "hits." A search for the
document number, CR0118 comes up empty, too. I had better luck with a Google
search.