This seems to be the main site for the Xylo
http://www.fpga4fun.com/board_Xylo.html. I'm looking for other info and
related hardware, but am just getting started myself and about the same
shape as you.
There is enough information there to tell you the main parts on the
board. You then should go to the manufacturer's website and download
the data sheets and related materials regarding the specific part (the
FPGA, for example) as well as the related information (Cyclone family
manuals and app notes, the Quartus software and manuals, etc.). Work
though any tutorials or examples you find on the software. Quartus is a
very powerful tool, but it isn't just "push button" software. In the en
d, if you are doing anything other than downloading and using the work
someone else did, you will have to spend some time learning the tool.
The same thing applies to the Cypress USB interface microcontroller.
When learning to work with FPGAs, there are a number of general things
to be aware of.
If your background is using discrete logic chips, like 7400 or 4000
series (yes, that dates you as well as me) you'll quickly discover that
different approaches are required. FPGAs typically have very limited
"global clock" resources and logic should usually be designed to be
synchronous to the the clocks. Asynchronous logic approaches can work,
but they are much more difficult. You can't stick a capacitor or an RC
network to suppress a 2 nsec wide glitch, for example, and the FPGA
internal logic is fast enough to care about that glitch. With the
limited clocking, it is much harder to have various counters and shift
registers working at different clock rates; you have to build clock
qualification circuits to enable effective division.
If you dealt with early C compilers, you recall that you often had to
examine the assembly language output and look for errors, optimizations
that deleted code you really needed to run, and so forth.
The FPGA equivalent is to do a syntax check and correct any errors
there, then run a simulation of the input (if using VHDL or Verilog) to
ensure the logic design seems to be OK.
You then compile it, and then run the simulation on the output of the
compiler, because it will sometimes (usually?) infer things from your
statements that you did not intend.
After place and route, you back-annotate and simulate again. Then you
download into the logic, and see if it works! Then you try and
understand why it didn't!!!
Also, note that different FPGAs from different manufacturers have
different resources. Sometimes there are preferred ways to write the
VHDL or Verilog to perform a specific type of function. Pay attention
to any tips or hints or coding style information particular to the FPGA
and compiler you are using. Just like writing lean software versus
bloatware, you can write a logic function in different ways and the
difference in results can be *huge*. Sort of like nested if-then-else
versus a case statement. Sometimes one is better than the other based
on the underlying architecture.
For debugging any but the most trivial designs, a logic analyzer is
almost indispensable. Quartus allows you to embed one in your design,
called SignalTap, if you are willing to let Quartus report back to
Altera what sort of designs you are doing and all sorts of other
"statistics." If you find this intrusive, you have the option to turn
off SignalTap. I am nor sure if the Xylo USB interface supports
SignalTap back to Quartus or not.
Otherwise, you have to write your own logic analyze rand insert it into
the design, bringing signals out to pins you can probe with external
test equipment. Or maybe your logic design is already pushing the limits
of the FPGA and there is no room inside for SignalTap or your own logic
analyzer module.
I recently purchased a low cost logic analyzer to supplement my higher
end analyzer, and find it useful for FPGA projects. YMMV, no financial
interest, etc. <http://www.pctestinstruments.com/>
FPGAs are powerful, and flexible. They are the hardware equivalent of a
CPU. And like a CPU, learning to tame them, feed them, and train them
to do what you want is an experience that can be exhilarating as well as
extremely frustrating. Persevere!
73,
Lyle KK7P