introducing FPGA's

J

jdw

I hope I am not being presumptuous in seeking assistance from this
group. I have been trying to research material with respect to a
digital course I am teaching at a technical college in Edmonton,
Alberta Canada (NAIT). The course is introductory in nature and is
presently covering the usual digital topics including PLD programming
quite well, however we are still back in the CUPL/palce22v10 era,
which of course is embarrassing. I am toying with introducing Matlab
(we could use it later in other courses) since it now appears to
provide a means of creating VHDL code. Having read intensively for a
couple of weeks I now see VHDL as a workable language, but probably
excessively demanding of the students I am dealing with. Of course
there is also the issue of the hardware that would be used in this lab/
lecture course. To this moment I have been in contact with Aldec and
am considering a development kit from Xilinx.



In Alberta we have many dinosaurs, but I would prefer not to be one of
them. If you feel you could comment constructively and don't mind
taking a few minutes, I would be most appreciative. I am not that
far from retirement age, have an EE degree, and am just trying to do
my bit to improve the quality of what we are offering our students.
It is very challenging jumping into something as complex as FPGA
programming as you can no doubt understand.



Jack
 
E

EEngineer

I hope I am not being presumptuous in seeking assistance from this
group. I have been trying to research material with respect to a
digital course I am teaching at a technical college in Edmonton,
Alberta Canada (NAIT). The course is introductory in nature and is
presently covering the usual digital topics including PLD programming
quite well, however we are still back in the CUPL/palce22v10 era,
which of course is embarrassing. I am toying with introducing Matlab
(we could use it later in other courses) since it now appears to
provide a means of creating VHDL code. Having read intensively for a
couple of weeks I now see VHDL as a workable language, but probably
excessively demanding of the students I am dealing with. Of course
there is also the issue of the hardware that would be used in this lab/
lecture course. To this moment I have been in contact with Aldec and
am considering a development kit from Xilinx.

In Alberta we have many dinosaurs, but I would prefer not to be one of
them. If you feel you could comment constructively and don't mind
taking a few minutes, I would be most appreciative. I am not that
far from retirement age, have an EE degree, and am just trying to do
my bit to improve the quality of what we are offering our students.
It is very challenging jumping into something as complex as FPGA
programming as you can no doubt understand.

Jack

I used to TA the intro to digital design course at my univ. Altera's
DE2 boards are excellent educational/evaluation FPGA boards that we
used for the course. They are good for beginners but can be used for
some advanced applications too. I found Altera's boards more user
friendly than similar from Xilinx. Having years of electronics
hardware and embedded processor experience, and couple of years of
teaching undergrad/grad students, I found that introductory ECE course
is useful for students to see how simple software concepts (simple
logic in VHDL) translates into hardware functionality where you
control different things on the FPGA evaluation board (LEDs, 7-segment
digits as outputs, debounced switches and pushbuttons as inputs, or
even some external hardware on the breadboard via evaluation board's
header IOs). Inputs and outputs defined in the top level entity of the
VHDL design need to be mapped to the desired resources on the board
(this is nicelly covered in the Altera's datasheets).
The simple examples in VHDL where you implement just several logic
gates are the most useful for understanding the basics of
combinational logic implementation. Second part would be example of
sequential logic implementation - using a process with a clock that
assigns signals (those signals are inferred as flip flops during the
synthesis). This can include a counter for example. The third part can
be a simple state machine.

Hopefully this helps,
Dan
 
K

kennheinrich

Despite the obvious evidence to the contrary, I still like to think
that's what we're here for :)

however we are still back in the CUPL/palce22v10 era,
My sympathies :) Of course, that has the also clear benefit of
producing students who understand how their code relates to some
tangible piece of hardware that can watch on a 'scope.

If you think VHDL is hard for your students, then don't even think
about Matlab. It's not that Matlab is hard (it's not), but it's yet
another layer of abstraction that confuses the basics. In my opinion,
if you don't know how to design hardware to begin with, you shouldn't
be designing hardware. Period. (Yeah, OK, now who's the dinosaur :)
Using a lot of high layers of abstraction will cause you to spend more
time explaining Matlab and less on the fundamentals.

If you want your students to be useful when they graduate, and have a
limited amount of time/experience to work with, give them a background
(1) in the most common industrial environments (plain VHDL or Verilog)
along with (2) a real understanding of digital design. I would not
want to hire a hardware designer who doesn't understand that two
cascaded flops causes a two clock delay, no matter how many
functioning FFT engines he can "create" by pressing a button on a GUI.

If you get the tool infrastructure set up (how to compile a project,
map pins to the demo board, download the bitfiles, etc), you can make
the FPGA programming (i.e the design work) as easy or as hard as you
like by setting the level of the examples and excercises.

Just my two cents (.021 USD :)

- Kenn
 
M

Mike Treseler

jdw said:
It is very challenging jumping into something as complex as FPGA
programming as you can no doubt understand.

Yes.
It may be too much to cover vhdl and digital electronics
in one class.

I would either focus on basic digital topics using
quartus schematic capture and an altera demo board *or*
hdl synthesis and simulation with a digital electronics
prerequisite.

-- Mike Treseler
 
C

Chris Maryan

I'll second what someone else said about the Altera boards, there's a
lot of bang for your buck in them.

If cost is a concern, you can ditch the boards all together and do the
whole thing in simulation. Put Altera's free Quartus II web edition
software on a PC and teach from that. The waveform simulation is quite
good for instruction purposes.

For varying levels of abstraction, Quartus (and the Xilinx equivalent)
allows you to 'code' in purely graphical terms, by drawing a schematic
of gates, etc. This is very good for introducing basic logic. Then
they can move up to VHDL or Verilog.

I'm not sure about college level, but a good introductory university
level text is Brown and Vranesic. It does things in VHDL.

One thing I would stress is to make sure that your students understand
how synthesis from VHDL is done and good VHDL coding practices (i.e.
writing hardware rather than trying to write software). I TA a course
where the lab component is done in VHDL and I find the students do
much better if explicitly instructed on how VHDL synthesizes, rather
than just learning VHDL syntax and winging it. This may seem obvious
but our problem is finding time in the curriculum to do this on top of
dealing with the real course content (processor architecture).
 
M

Mike Treseler

Chris said:
If cost is a concern, you can ditch the boards all together and do the
whole thing in simulation. Put Altera's free Quartus II web edition
software on a PC and teach from that. The waveform simulation is quite
good for instruction purposes.

Exactly. To learn vhdl, all I need is
1. A simulator to prove that my code is functional, and
2. Synthesis software to verify that my code
synthesizes, fits, and makes Fmax.
Flashing the LED on the board is just icing on the cake.
For varying levels of abstraction, Quartus (and the Xilinx equivalent)
allows you to 'code' in purely graphical terms, by drawing a schematic
of gates, etc. This is very good for introducing basic logic. Then
they can move up to VHDL or Verilog.

I agree.
Schematic entry provides motivation and
the a demo of code to RTL viewer seals the deal.
One thing I would stress is to make sure that your students understand
how synthesis from VHDL is done and good VHDL coding practices (i.e.
writing hardware rather than trying to write software). I TA a course
where the lab component is done in VHDL and I find the students do
much better if explicitly instructed on how VHDL synthesizes, rather
than just learning VHDL syntax and winging it.

This can be covered by insisting on
a synchronous process. The results
can be seen in the RTL viewer.
This may seem obvious
but our problem is finding time in the curriculum to do this on top of
dealing with the real course content (processor architecture).

Why is always a candy machine or a processor? ;)

-- Mike Treseler
 
M

Martin Thompson

Mike Treseler said:
Exactly. To learn vhdl, all I need is
1. A simulator to prove that my code is functional, and
2. Synthesis software to verify that my code
synthesizes, fits, and makes Fmax.
Flashing the LED on the board is just icing on the cake.

That assumes that all you want to do is flash an LED - as soon as you
have something more complex to interface to you have the problem of
getting models. Often you write your own, which means simulation
works fine (after all, I wrote both sides of the interface, it's bound
to work together). It's not until you try it on real hardware that
you discover where the holes inyour model of external devices are.

Also, there's something fulfilling (in the early days at least) of
seeing real lights flashing. I remember my first VHDL course - we
"made" a digital clock, but all in simulation - it didn't feel like
I'd achieved anything. The icing can be very tasty :)
Why is always a candy machine or a processor? ;)

I like non-framebuffer video demos - hook up a pin each to RGB, VS and
HS of a VGA monitor

* First make the sync pulses.
* Draw a box around the edge of the screen (good for catching off-by-one
errors in the counters and decode when you get a 2 pixel line down one
side :)

Work up from there -
* Make a pixel "bounce" around the screen
* Make it a circular blob
* All the way up to doing a pong game
- put scores up, read some up/down switches (or even pots),
multicolour, on-the-fly 3d-rendering (well, for the advanced
student :)
* Put in a coin slot and you could even have the coin-counting state-
machine so beloved of academia before you get to play a game :)

Cheers,
Martin
 
C

Chris Maryan

Why is always a candy machine or a processor? ;)

-- Mike Treseler

In this course, yes, a processor but it's a course about processors so
I suppose it's legit. To our credit, in an intermediate course the
students here do an image decoder/encoder. The idea being they get
close to a real world FPGA application like MPEG decoding. Video would
be too much at that level, but still image processing that involve
colour space conversion, compression, etc is a good start.

Chris
 
G

ghelbig

I hope I am not being presumptuous in seeking assistance from this
group. I have been trying to research material with respect to a
digital course I am teaching at a technical college in Edmonton,
Alberta Canada (NAIT). The course is introductory in nature and is
presently covering the usual digital topics including PLD programming
quite well, however we are still back in the CUPL/palce22v10 era,
which of course is embarrassing. I am toying with introducing Matlab
(we could use it later in other courses) since it now appears to
provide a means of creating VHDL code. Having read intensively for a
couple of weeks I now see VHDL as a workable language, but probably
excessively demanding of the students I am dealing with. Of course
there is also the issue of the hardware that would be used in this lab/
lecture course. To this moment I have been in contact with Aldec and
am considering a development kit from Xilinx.

In Alberta we have many dinosaurs, but I would prefer not to be one of
them. If you feel you could comment constructively and don't mind
taking a few minutes, I would be most appreciative. I am not that
far from retirement age, have an EE degree, and am just trying to do
my bit to improve the quality of what we are offering our students.
It is very challenging jumping into something as complex as FPGA
programming as you can no doubt understand.

Jack

In addition to the UP2, there are other options. A MAX-II board
(think of it as 200 of your 22V10's in one chip) can be had for as
little as $50. Similar boards exist for the CoolRunner.

Both Altera and Xilinx have special programs for educators. I have
taken advantage of both, and they were both very valuable.

While everything they *need* can be done with just a simulator, do not
undervalue blinking lights. Having their work manifest itself in a
"real" object makes the connection much stronger, and stimulates
learning.

Having taught a couple of VHDL classes, I can very strongly recommend
the Peter Ashenden books. The Student's Guide for beginners, and the
Designer's Guide for advanced students and instructors.

I hope this helps,
G.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,756
Messages
2,569,535
Members
45,008
Latest member
obedient dusk

Latest Threads

Top