FPGA Central - World's 1st FPGA / CPLD Portal

FPGA Central

World's 1st FPGA Portal

 

Go Back   FPGA Groups > NewsGroup > FPGA

FPGA comp.arch.fpga newsgroup (usenet)

Reply
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 09-15-2007, 01:36 AM
RL
Guest
 
Posts: n/a
Default Beginner Advice (Languages, tools etc.)

Hi,

Please excuse me for sounding like I don't have a clue what I'm talking
about. I am here because I want to learn.

I have a project I have been working on that requires physical hardware.
I will be getting someone to assist with building the hardware, but it
will be up to me to programme it. Originally I was going to use a
microcontroller, as I have C programming experience. After further
investigation, I thought it would be a better idea to use an FPGA and do
it all in hardware. The functionality is mainly I/O related, so hardware
seems like a sensible choice.

Why I am here is to seek some advise on which language to use, what
software I will require, and how far I can get using open source or free
software, before we actually need to build the hardware to test with.

I am open minded about learning SystemC, VHDL, or Verilog in order to
get this done. Which of these would allow me to get further, bearing in
mind I need to write code, debug it, and eventually get it on to an
FPGA, using (I assume) vendor-specific tools?

SystemC seems like the obvious choice given it is based on C++, but
there doesn't seem to be any clear description on how to get from
SystemC code to an FPGA.

Thanks,

RL.
Reply With Quote
  #2 (permalink)  
Old 09-15-2007, 02:04 AM
Mike Treseler
Guest
 
Posts: n/a
Default Re: Beginner Advice (Languages, tools etc.)

RL wrote:

> I have a project I have been working on that requires physical hardware.
> I will be getting someone to assist with building the hardware, but it
> will be up to me to programme it. Originally I was going to use a
> microcontroller, as I have C programming experience. After further
> investigation, I thought it would be a better idea to use an FPGA and do
> it all in hardware. The functionality is mainly I/O related, so hardware
> seems like a sensible choice.


You could bit-bang the IO from a microcontroller
parallel port. There is no reason to use an
FPGA unless the CPU is too slow.

> Why I am here is to seek some advise on which language to use, what
> software I will require, and how far I can get using open source or free
> software, before we actually need to build the hardware to test with.


If you have six months or less to finish this
consider deferring the HDL/FPGA learning process.
You can get a CPU board the uses GNU tools.

> I am open minded about learning SystemC, VHDL, or Verilog in order to
> get this done. Which of these would allow me to get further, bearing in
> mind I need to write code, debug it, and eventually get it on to an
> FPGA, using (I assume) vendor-specific tools?


If you go the FPGA route, use vhdl or verilog.

> SystemC seems like the obvious choice given it is based on C++, but
> there doesn't seem to be any clear description on how to get from
> SystemC code to an FPGA.


Add a year to your schedule and lots of $ to your budget for this.

-- Mike Treseler
Reply With Quote
  #3 (permalink)  
Old 09-15-2007, 03:27 AM
Jeff Cunningham
Guest
 
Posts: n/a
Default Re: Beginner Advice (Languages, tools etc.)

RL wrote:
> Hi,
>
> Please excuse me for sounding like I don't have a clue what I'm talking
> about. I am here because I want to learn.
>
> I have a project I have been working on that requires physical hardware.
> I will be getting someone to assist with building the hardware, but it
> will be up to me to programme it. Originally I was going to use a
> microcontroller, as I have C programming experience. After further
> investigation, I thought it would be a better idea to use an FPGA and do
> it all in hardware. The functionality is mainly I/O related, so hardware
> seems like a sensible choice.
>
> Why I am here is to seek some advise on which language to use, what
> software I will require, and how far I can get using open source or free
> software, before we actually need to build the hardware to test with.


Xilinx and Altera both provide free-as-in-beer toolchains, though you
will have to buy or build a jtag cable dongle to connect to actual
hardware. Also, there are development boards of all different sizes that
might allow you to avoid or postpone building you own hardware. See the
FAQ for comprehensive lists of these.

> I am open minded about learning SystemC, VHDL, or Verilog in order to
> get this done. Which of these would allow me to get further, bearing in
> mind I need to write code, debug it, and eventually get it on to an
> FPGA, using (I assume) vendor-specific tools?
>
> SystemC seems like the obvious choice given it is based on C++, but
> there doesn't seem to be any clear description on how to get from
> SystemC code to an FPGA.


The particular syntax and semantics of VHDL or Verilog will not be a
problem if you are already comfortable with software languages, though I
would avoid SystemC if only because no free tools support it AFAIK.

Knowing how the subset of the language that is synthesizable maps to
real hardware is usually more of an issue, which is where the big
learning curve is if you are new to hardware design.

-Jeff
Reply With Quote
  #4 (permalink)  
Old 09-15-2007, 10:04 AM
HT-Lab
Guest
 
Posts: n/a
Default Re: Beginner Advice (Languages, tools etc.)


"RL" <[email protected]> wrote in message
news:fcf5so$pu1$[email protected]..
> Hi,
>
> Please excuse me for sounding like I don't have a clue what I'm talking
> about. I am here because I want to learn.
>
> I have a project I have been working on that requires physical hardware. I
> will be getting someone to assist with building the hardware, but it will
> be up to me to programme it. Originally I was going to use a
> microcontroller, as I have C programming experience. After further
> investigation, I thought it would be a better idea to use an FPGA and do
> it all in hardware. The functionality is mainly I/O related, so hardware
> seems like a sensible choice.
>
> Why I am here is to seek some advise on which language to use, what
> software I will require, and how far I can get using open source or free
> software, before we actually need to build the hardware to test with.
>
> I am open minded about learning SystemC, VHDL, or Verilog in order to get
> this done. Which of these would allow me to get further, bearing in mind I
> need to write code, debug it, and eventually get it on to an FPGA, using
> (I assume) vendor-specific tools?
>
> SystemC seems like the obvious choice given it is based on C++, but there
> doesn't seem to be any clear description on how to get from SystemC code
> to an FPGA.


As adviced by others you can make your life easier and save some money by
using VHDL or Verilog. However, SystemC doesn't have to be ruled out if you
prefer to go down that route but it will require some financial investment
and a thorough evaluation. As you probably know the simulation tools are
free but synthesis is the real budget killer. Have a look at SystemCrafters
which sells a low-cost SystemC synthesis tool. I have no association with
this company but the price looks interesting :-)

http://www.systemcrafter.com/index.php

Hans
www.ht-lab.com


>
> Thanks,
>
> RL.



Reply With Quote
  #5 (permalink)  
Old 09-15-2007, 12:08 PM
Nico Coesel
Guest
 
Posts: n/a
Default Re: Beginner Advice (Languages, tools etc.)

Jeff Cunningham <[email protected]> wrote:

>RL wrote:
>> Hi,
>>
>> Please excuse me for sounding like I don't have a clue what I'm talking
>> about. I am here because I want to learn.
>>
>> I have a project I have been working on that requires physical hardware.
>> I will be getting someone to assist with building the hardware, but it
>> will be up to me to programme it. Originally I was going to use a
>> microcontroller, as I have C programming experience. After further
>> investigation, I thought it would be a better idea to use an FPGA and do
>> it all in hardware. The functionality is mainly I/O related, so hardware
>> seems like a sensible choice.
>>
>> Why I am here is to seek some advise on which language to use, what
>> software I will require, and how far I can get using open source or free
>> software, before we actually need to build the hardware to test with.

>
>Xilinx and Altera both provide free-as-in-beer toolchains, though you
>will have to buy or build a jtag cable dongle to connect to actual
>hardware. Also, there are development boards of all different sizes that


That is not entirely true. It is very easy to use a microcontroller to
load the FPGA contents either parallel or serial (SPI).

--
Reply to nico@nctdevpuntnl (punt=.)
Bedrijven en winkels vindt U op www.adresboekje.nl
Reply With Quote
  #6 (permalink)  
Old 09-15-2007, 12:34 PM
James Harris
Guest
 
Posts: n/a
Default Re: Beginner Advice (Languages, tools etc.)

On 15 Sep, 00:36, RL <r...@null.void.test> wrote:
....
> Why I am here is to seek some advise on which language to use, what
> software I will require, and how far I can get using open source or free
> software, before we actually need to build the hardware to test with.


>From one beginner to another I found http://www.digilentinc.com/ a

good place to start. As well as selling development boards they link
to comprehensive development environment software from Xilinx. The
Xilinx software and a Xilinx version of the Modelsim simulator are
both free.

Digilent also have downloadable videos on how to use the Xilinx-
provided software. This is a boon to show which options to use as the
software itself has many features. You need to know which ones to use
to get started. The current software interface is slightly different
from that shown in the videos but it is possible to work out with a
bit of patience.

> I am open minded about learning SystemC, VHDL, or Verilog in order to
> get this done. Which of these would allow me to get further, bearing in
> mind I need to write code, debug it, and eventually get it on to an
> FPGA, using (I assume) vendor-specific tools?
>
> SystemC seems like the obvious choice given it is based on C++, but
> there doesn't seem to be any clear description on how to get from
> SystemC code to an FPGA.


You probably know Verilog has C syntax. Using the above software you
can test either VHDL or Verilog without programming the FPGA.
Digilent's Basys board will program by USB so is a doddle. The board
can also be powered by USB or by an external single volt supply.

There may be other good suppliers. I don't know. I found Digilent
first and they had what I wanted. YMMV. I have no connection with
them.

--
James


Reply With Quote
  #7 (permalink)  
Old 09-15-2007, 07:01 PM
Bob Perlman
Guest
 
Posts: n/a
Default Re: Beginner Advice (Languages, tools etc.)

Hi -

On Sat, 15 Sep 2007 11:36:35 +1200, RL <[email protected]> wrote:

>Hi,
>
>Please excuse me for sounding like I don't have a clue what I'm talking
>about. I am here because I want to learn.
>
>I have a project I have been working on that requires physical hardware.
>I will be getting someone to assist with building the hardware, but it
>will be up to me to programme it. Originally I was going to use a
>microcontroller, as I have C programming experience. After further
>investigation, I thought it would be a better idea to use an FPGA and do
>it all in hardware. The functionality is mainly I/O related, so hardware
>seems like a sensible choice.
>
>Why I am here is to seek some advise on which language to use, what
>software I will require, and how far I can get using open source or free
>software, before we actually need to build the hardware to test with.
>
>I am open minded about learning SystemC, VHDL, or Verilog in order to
>get this done. Which of these would allow me to get further, bearing in
>mind I need to write code, debug it, and eventually get it on to an
>FPGA, using (I assume) vendor-specific tools?
>
>SystemC seems like the obvious choice given it is based on C++, but
>there doesn't seem to be any clear description on how to get from
>SystemC code to an FPGA.


Mike Treseler has already addressed the issue of whether a
microcontroller solution might not be more suitable (I suspect it is),
so I'll set that aside.

There's one issue that's more important than languages, tools, and the
like, to wit:

Do you know how to do digital design? In particular,

- Do you know the principles of synchronous logic design?
- Do you know how to reliably initialize a digital circuit?
- Do you know how to analyze a timing path?
- Do you know how to move signals between mutually asynchronous clock
domains?
- Do you know how to handle digital signals at the FPGA I/O? Do you
understand the fundamentals of different digital interface standards?
(I'm talking about the simple stuff, like what qualifies as a valid
HIGH or LOW for a 3.3V logic signal, or how to interface a 5V domain
to a 3.3V domain). Do you know how to use signal terminations to
guarantee good signal quality?

And I'm just scratching the surface.

You are embarking on a hardware design, not a programming exercise.
Hardware design skills are essential, no matter what the SystemC
brochure says.

Maybe this is coming across as unduly harsh; that's not my intent. All
of us hardware designers were newcomers at one point, so folks
starting out in hardware design today deserve our support. But I'd
really, really like to drive a stake in the heart of the "designing
FPGAs is programming" meme.

Bob Perlman
Cambrian Design Works
http://www.cambriandesign.com


Reply With Quote
  #8 (permalink)  
Old 09-15-2007, 10:04 PM
RL
Guest
 
Posts: n/a
Default Re: Beginner Advice (Languages, tools etc.)

Hi,

Thanks to everyone who responded. I'm still undecided on which path to
take for this particular project, but I've spent about two hours so far
going through a VHDL tutorial. It is starting to make sense, so at least
I will have a better idea of what is going on in the rest of the hardware.

A few comments for Bob below...

> Mike Treseler has already addressed the issue of whether a
> microcontroller solution might not be more suitable (I suspect it is),
> so I'll set that aside.


I should have mentioned, I am driving this development, and from my
point of view spending six months refining my VHDL skills wouldn't be a
major issue if the end result is going to justify this.

> There's one issue that's more important than languages, tools, and the
> like, to wit:
>
> Do you know how to do digital design? In particular,
>
> - Do you know the principles of synchronous logic design?
> - Do you know how to reliably initialize a digital circuit?
> - Do you know how to analyze a timing path?
> - Do you know how to move signals between mutually asynchronous clock
> domains?
> - Do you know how to handle digital signals at the FPGA I/O? Do you
> understand the fundamentals of different digital interface standards?
> (I'm talking about the simple stuff, like what qualifies as a valid
> HIGH or LOW for a 3.3V logic signal, or how to interface a 5V domain
> to a 3.3V domain). Do you know how to use signal terminations to
> guarantee good signal quality?
>
> And I'm just scratching the surface.
>
> You are embarking on a hardware design, not a programming exercise.
> Hardware design skills are essential, no matter what the SystemC
> brochure says.


I may be completely wrong about this, so feel free to comment.

My intention is to only work on what is going on internally within the
FPGA (or CPU), and only the core logic to make it do what it has to do.
The actual interfacing to other electronic components will be handled by
someone with more knowledge than myself. I will be mainly concerned with
the internal logic of what happens when external events occur (in this
case, button presses, serial communications, and one clock).

Any electronics knowledge I once had was a decade ago, so I'm starting
out with very little. From a point of view of interpreting the input and
getting the output I want, dealing only with 0s and 1s, I don't think
I'm taking on too much.

If I use a CPU, I need to read and write binary values that the
supporting electronics has to handle. If I used VHDL, I need to design
hardware to do certain things when values change, and set output
accordingly. The approaches are different, but taking the black box
approach, inputting and outputting binary values, both should work
equally well.

I can see some major advantages doing this in VHDL. Yes, I have more to
learn, but I wouldn't have to worry about interrupts and race
conditions. In theory, and again I may be wrong, I should be able to be
more confident that the FPGA does what I expect, when I expect it to.

> Maybe this is coming across as unduly harsh; that's not my intent. All
> of us hardware designers were newcomers at one point, so folks
> starting out in hardware design today deserve our support. But I'd
> really, really like to drive a stake in the heart of the "designing
> FPGAs is programming" meme.


This is actually part of the reasoning behind selecting VHDL in
preference to SystemC. With SystemC, I could see there would be a
tendency to fall back to the familiar style of programming used for
software development. Hardware is a completely different concept and
should be treated as such.

Thanks again for your comments and suggestions.

RL
Reply With Quote
  #9 (permalink)  
Old 09-16-2007, 02:03 AM
Andrew FPGA
Guest
 
Posts: n/a
Default Re: Beginner Advice (Languages, tools etc.)

Hi RL,

>Hardware is a completely different concept and
> should be treated as such.

I agree with you there.
But then you go on to say:

>The approaches are different, but taking the black box
> approach, inputting and outputting binary values, both should work
> equally well.

Which I agree with in the sense that both the cpu and fpga can
probably do what you want assuming we are not talking about high speed
IO or very heaving processing. But I disagree in the sense that in
general, when developing for a cpu one is describing your design in C/C
++, whereas for FPGA its VHDL and its digital logic design. C/C++ is
at a higher level of abstraction than VHDL/digital design. For this
type of "control" problem, the average engineer familiar with both the
C and VHDL toolsets will be able to complete the C design in much less
time than the VHDL one. Maybe a factor of 10 or more depending on the
complexity of the control problem. With VHDL you are working at a much
lower level. I suppose its even lower than assembly code if you wanted
a comparison.

Since you havn't done electronics for a while, I would recommend the C/
cpu approach and leave the FPGA until a more appropriate project comes
up?

Cheers
Andrew





On Sep 16, 8:04 am, RL <r...@null.void.test> wrote:
> Hi,
>
> Thanks to everyone who responded. I'm still undecided on which path to
> take for this particular project, but I've spent about two hours so far
> going through a VHDL tutorial. It is starting to make sense, so at least
> I will have a better idea of what is going on in the rest of the hardware.
>
> A few comments for Bob below...
>
> > Mike Treseler has already addressed the issue of whether a
> > microcontroller solution might not be more suitable (I suspect it is),
> > so I'll set that aside.

>
> I should have mentioned, I am driving this development, and from my
> point of view spending six months refining my VHDL skills wouldn't be a
> major issue if the end result is going to justify this.
>
>
>
> > There's one issue that's more important than languages, tools, and the
> > like, to wit:

>
> > Do you know how to do digital design? In particular,

>
> > - Do you know the principles of synchronous logic design?
> > - Do you know how to reliably initialize a digital circuit?
> > - Do you know how to analyze a timing path?
> > - Do you know how to move signals between mutually asynchronous clock
> > domains?
> > - Do you know how to handle digital signals at the FPGA I/O? Do you
> > understand the fundamentals of different digital interface standards?
> > (I'm talking about the simple stuff, like what qualifies as a valid
> > HIGH or LOW for a 3.3V logic signal, or how to interface a 5V domain
> > to a 3.3V domain). Do you know how to use signal terminations to
> > guarantee good signal quality?

>
> > And I'm just scratching the surface.

>
> > You are embarking on a hardware design, not a programming exercise.
> > Hardware design skills are essential, no matter what the SystemC
> > brochure says.

>
> I may be completely wrong about this, so feel free to comment.
>
> My intention is to only work on what is going on internally within the
> FPGA (or CPU), and only the core logic to make it do what it has to do.
> The actual interfacing to other electronic components will be handled by
> someone with more knowledge than myself. I will be mainly concerned with
> the internal logic of what happens when external events occur (in this
> case, button presses, serial communications, and one clock).
>
> Any electronics knowledge I once had was a decade ago, so I'm starting
> out with very little. From a point of view of interpreting the input and
> getting the output I want, dealing only with 0s and 1s, I don't think
> I'm taking on too much.
>
> If I use a CPU, I need to read and write binary values that the
> supporting electronics has to handle. If I used VHDL, I need to design
> hardware to do certain things when values change, and set output
> accordingly. The approaches are different, but taking the black box
> approach, inputting and outputting binary values, both should work
> equally well.
>
> I can see some major advantages doing this in VHDL. Yes, I have more to
> learn, but I wouldn't have to worry about interrupts and race
> conditions. In theory, and again I may be wrong, I should be able to be
> more confident that the FPGA does what I expect, when I expect it to.
>
> > Maybe this is coming across as unduly harsh; that's not my intent. All
> > of us hardware designers were newcomers at one point, so folks
> > starting out in hardware design today deserve our support. But I'd
> > really, really like to drive a stake in the heart of the "designing
> > FPGAs is programming" meme.

>
> This is actually part of the reasoning behind selecting VHDL in
> preference to SystemC. With SystemC, I could see there would be a
> tendency to fall back to the familiar style of programming used for
> software development. Hardware is a completely different concept and
> should be treated as such.
>
> Thanks again for your comments and suggestions.
>
> RL



Reply With Quote
  #10 (permalink)  
Old 09-16-2007, 06:26 AM
Jeff Cunningham
Guest
 
Posts: n/a
Default Re: Beginner Advice (Languages, tools etc.)

Andrew FPGA wrote:
> IO or very heaving processing. But I disagree in the sense that in
> general, when developing for a cpu one is describing your design in C/C
> ++, whereas for FPGA its VHDL and its digital logic design. C/C++ is
> at a higher level of abstraction than VHDL/digital design. For this


I think this point is often missed by people coming from the software
side. HDL synthesis is more like a macro assembler for hardware than a
high level language. As such, you really need to know basic hardware
design to get good results.

-Jeff
Reply With Quote
  #11 (permalink)  
Old 09-16-2007, 06:27 AM
Jeff Cunningham
Guest
 
Posts: n/a
Default Re: Beginner Advice (Languages, tools etc.)

Nico Coesel wrote:
> Jeff Cunningham <[email protected]> wrote:
>
>> Xilinx and Altera both provide free-as-in-beer toolchains, though you
>> will have to buy or build a jtag cable dongle to connect to actual
>> hardware. Also, there are development boards of all different sizes that

>
> That is not entirely true. It is very easy to use a microcontroller to
> load the FPGA contents either parallel or serial (SPI).


fair enough. how would you load the microcontroller?

-Jeff
Reply With Quote
  #12 (permalink)  
Old 09-16-2007, 10:47 AM
HT-Lab
Guest
 
Posts: n/a
Default Re: Beginner Advice (Languages, tools etc.)


"RL" <[email protected]> wrote in message
news:fchdql$2nq$[email protected]..
> Hi,
>

... snip
>
> This is actually part of the reasoning behind selecting VHDL in preference
> to SystemC. With SystemC, I could see there would be a tendency to fall
> back to the familiar style of programming used for software development.
> Hardware is a completely different concept and should be treated as such.


I don't want to turn into a SystemC evangelist but SystemC supports the same
low-level RTL constructs as Verilog or VHDL. The language supports
processes, sensitivity lists, wait statements, resolved/unresolved signals,
variables, delta cycles, positional/named instantiations, 'X'/'Z' values,
hierarchy, IO ports etc. Obviously the language is not intended to be used
at the synthesisable RTL level but if you want to use it at this level you
can.

Good luck with your project, sound like fun,

Hans
www.ht-lab.com


>
> Thanks again for your comments and suggestions.
>
> RL



Reply With Quote
  #13 (permalink)  
Old 09-16-2007, 09:40 PM
Jim Granville
Guest
 
Posts: n/a
Default Re: Beginner Advice (Languages, tools etc.)

RL wrote:
> Hi,
>
> Please excuse me for sounding like I don't have a clue what I'm talking
> about. I am here because I want to learn.
>
> I have a project I have been working on that requires physical hardware.
> I will be getting someone to assist with building the hardware, but it
> will be up to me to programme it. Originally I was going to use a
> microcontroller, as I have C programming experience. After further
> investigation, I thought it would be a better idea to use an FPGA and do
> it all in hardware. The functionality is mainly I/O related, so hardware
> seems like a sensible choice.


What sort of IO ? - Microcontrollers are also designed for I/O related
tasks, and have many hardware peripherals for the common tasks.

Only when you hit a limit on a uC, should you look at FPGA.
Examples where a FPGA/CPLD is nessary might be if you need simultaneous
changes on 80 IO lines, or a special 50MHz serial link, or
high bandwidth memory access.

Another approach is to start with a uC, and refine the design in uC/SW,
and then move whatever portion of the design needs HW to speed up.

For specialist uC look at devices like these
http://www.parallax.com/propeller/index.asp
http://www.innovasic.com/fido.htm

-jg

Reply With Quote
  #14 (permalink)  
Old 09-17-2007, 07:10 PM
Bob Perlman
Guest
 
Posts: n/a
Default Re: Beginner Advice (Languages, tools etc.)

Hi -

On Sun, 16 Sep 2007 08:04:18 +1200, RL <[email protected]> wrote:

>Hi,
>
>Thanks to everyone who responded. I'm still undecided on which path to
>take for this particular project, but I've spent about two hours so far
>going through a VHDL tutorial. It is starting to make sense, so at least
>I will have a better idea of what is going on in the rest of the hardware.
>
>A few comments for Bob below...
>
>> Mike Treseler has already addressed the issue of whether a
>> microcontroller solution might not be more suitable (I suspect it is),
>> so I'll set that aside.

>
>I should have mentioned, I am driving this development, and from my
>point of view spending six months refining my VHDL skills wouldn't be a
>major issue if the end result is going to justify this.
>
>> There's one issue that's more important than languages, tools, and the
>> like, to wit:
>>
>> Do you know how to do digital design? In particular,
>>
>> - Do you know the principles of synchronous logic design?
>> - Do you know how to reliably initialize a digital circuit?
>> - Do you know how to analyze a timing path?
>> - Do you know how to move signals between mutually asynchronous clock
>> domains?
>> - Do you know how to handle digital signals at the FPGA I/O? Do you
>> understand the fundamentals of different digital interface standards?
>> (I'm talking about the simple stuff, like what qualifies as a valid
>> HIGH or LOW for a 3.3V logic signal, or how to interface a 5V domain
>> to a 3.3V domain). Do you know how to use signal terminations to
>> guarantee good signal quality?
>>
>> And I'm just scratching the surface.
>>
>> You are embarking on a hardware design, not a programming exercise.
>> Hardware design skills are essential, no matter what the SystemC
>> brochure says.

>
>I may be completely wrong about this, so feel free to comment.
>
>My intention is to only work on what is going on internally within the
>FPGA (or CPU), and only the core logic to make it do what it has to do.
>The actual interfacing to other electronic components will be handled by
>someone with more knowledge than myself. I will be mainly concerned with
>the internal logic of what happens when external events occur (in this
>case, button presses, serial communications, and one clock).


Do you plan to review this person's design? If so, you'll need to be
conversant with the I/O-related issues I mentioned above.

>Any electronics knowledge I once had was a decade ago, so I'm starting
>out with very little. From a point of view of interpreting the input and
>getting the output I want, dealing only with 0s and 1s, I don't think
>I'm taking on too much.
>
>If I use a CPU, I need to read and write binary values that the
>supporting electronics has to handle. If I used VHDL, I need to design
>hardware to do certain things when values change, and set output
>accordingly. The approaches are different, but taking the black box
>approach, inputting and outputting binary values, both should work
>equally well.
>
>I can see some major advantages doing this in VHDL. Yes, I have more to
>learn, but I wouldn't have to worry about interrupts and race
>conditions. In theory, and again I may be wrong, I should be able to be
>more confident that the FPGA does what I expect, when I expect it to.


The fact that you'll be working within the confines of an FPGA does
simplify things somewhat, but it's by no means a get-out-of-jail-free
card. It's like being at the beach: you have a lot of sand, and you
can build a beautiful castle, or something that looks like you just
filled up a pail and overturned it.

Here's one example of the problems you'll have to deal with. You have
a single clock, some button inputs, and a serial link or links. The
serial links are probably asynchronous to the clock, and the button
pushes most certainly are. How do you take these asynchronous signals
and synchronize them to your clock domain safely and reliably? The
FPGA gives you the raw materials with which to craft a good circuit,
but it's not automatic: you have to design a solution.

>> Maybe this is coming across as unduly harsh; that's not my intent. All
>> of us hardware designers were newcomers at one point, so folks
>> starting out in hardware design today deserve our support. But I'd
>> really, really like to drive a stake in the heart of the "designing
>> FPGAs is programming" meme.

>
>This is actually part of the reasoning behind selecting VHDL in
>preference to SystemC. With SystemC, I could see there would be a
>tendency to fall back to the familiar style of programming used for
>software development. Hardware is a completely different concept and
>should be treated as such.


VHDL is nothing more than a means of describing your logic design.
Yes, the synthesizer will do some of the low-level scut work, like
reducing Booleans expressions. But when all is said and done, you
still have to do the design.

If you decide to proceed with the FPGA design, Eric Crabill's SJSU
course is an excellent introduction. You can find the presentations
here:

http://www.engr.sjsu.edu/crabill/

Good luck,
Bob Perlman
Cambrian Design Works
http://www.cambriandesign.com
Reply With Quote
Reply

Bookmarks

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Beginner needs help... Olaf Kaluza Verilog 4 06-19-2008 12:57 AM
Functional Languages in Hardware shidan FPGA 8 10-12-2006 10:41 PM
high level languages for synthesis Sanka Piyaratna FPGA 31 08-30-2006 04:32 PM
C-based FPGA programming/mixed languages The Other Guy FPGA 9 03-29-2006 09:57 AM
Advice for a Beginner? Extrarius FPGA 5 10-11-2004 11:15 PM


All times are GMT +1. The time now is 01:58 AM.


Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright 2008 @ FPGA Central. All rights reserved