FPGA VHDL in research environment

Guest
Hi,

I would like to make a number of circuits to control complex trigger
sequences in a laboratory-research project. I.e. one thing I need to
build are very flexible delays to trigger various devices.

Unfortunately I am completely new to VHDL so I am not sure what I
actually need for following:

- some outputs to send my trigger signals (i.e. square pulse 5V or
similar)
- some easy way to adjust the delays without having to reprogram the
whole device (i.e. I am working on a research project and thus working
with many unknowns.) i.e. a connection to pc would be great with GIBP
or sililar.

I am fluent in a few high level programming languages and C so VHDL
concepts are not entirely foreign to me. Though I am not entirely sure
how one passes from the high level VHDL to actually programming a FPGA.
I was looking around on the dedicated webpages but they seem to just
deal with VHDL as a language. Can anybody give me some pointers on
this? I.e. is it enough to have this "program language-like"
description of your hardware to program the chip or does one need to
also dive into the register levels or logic or even layout? How does
this work?

Thank you very much for any help!

Cheers,
Arik
 
Your FPGA will definitely be on a PCB, so if you could include a
microcontroller with an inbuilt UART, that would be one way to control
your FPGA. You will need the bus interface logic on your FPGA, and some
registers in the address map of the processor.

Knowing C may or may not help. VHDL is used to describe your hardware
so thinking "software" will be asking for trouble. You will need to
refer to a good VHDL book to get a hang of it.

To program FPGA's you need a bit file. Every FPGA manufacturer will
provide a software to convert your hardware described in VHDL/Verilog
to a bit file(ofcourse this is not a one step procedure). For example
if you are using Xilinx FPGA, then the corresponding software would be
Xilinx ISE. You will find the various steps in the process(from HDL to
bit file) in the software documentation.

-Sudhi
 
Sorry, newby: What do you mean by "you could include a
microcontroller with an inbuilt UART" in the FPGA or the breadboard?
Where do I get it from?

My question about the step from VDHL to actual FPGA chip was more: Can
I pretty much go from my VHDL algorithmic layer to programming my chip
or do I need to mess with register transfer and logic layers? I.e. how
much exactly does one need to know about digital electronics... I am
not sure whether I am up to the task or not. While I have a good
working knowledge to build everyday digital circuits I am not an
electronics expert. I am physicist and just need to use electronics.
Any comments on this?

Can anybody tell me where to start looking to select which development
set would be best suited to my needs? Are there comparisons / overviews
somewhere?

Thanks!

- Arik
 
arik.funke@gmx.de wrote:

I would like to make a number of circuits to control complex trigger
sequences in a laboratory-research project. I.e. one thing I need to
build are very flexible delays to trigger various devices.

Unfortunately I am completely new to VHDL so I am not sure what I
actually need for following:

- some outputs to send my trigger signals (i.e. square pulse 5V or
similar)
In VHDL this is nothing more than defining a signal in the VHDL entity
with type "out". At first: Don't care where this signal will be placed.
If you have a running design, then think about mapping this signal to a
pin of the FPGA.


- some easy way to adjust the delays without having to reprogram the
whole device (i.e. I am working on a research project and thus working
with many unknowns.) i.e. a connection to pc would be great with GIBP
or sililar.
A way to model a delay is to use a counter and switch something, if the
counts reaches its limit. If the limit has to be changed at run-time,
you have to think about a way to communicate with the FPGA. This means,
you have to model a component, that handles a bus protocol, like SPI,
IIC or whatever. A complete CPU may be another option.
But all these options require a certain amount of work, if you do not
have such stuff already designed and ready to use as IP-core.

If you don't have anything to communicate with, think about using
jumpers. For VHDL this means you add some more input signals.


I am fluent in a few high level programming languages and C so VHDL
concepts are not entirely foreign to me.
Well ... it would be better, to forget this for the moment. C is a
programming language while VHDL is a hardware description language. This
makes a BIG difference. Hardware has to be modeled - not programmed.
VHDL is more like a CAD program even it looks like a programming language.



Though I am not entirely sure
how one passes from the high level VHDL to actually programming a FPGA.
First read about the syntax, then get knowledge about flipflops, latches
and combinational logic. These three things you need to model hardware.
Then try to model something and _simulate_ it! I've spend a lot of time
with this without even having an FPGA or something else in my hands.
Sometimes I never get in touch with the hardware (if I model an IP-core
that is used by somebody else).

After all that you can think about downloading the bitpattern to the FPGA.

Short: Modelling Hardware means simulation. Testing it on hardware is
"only" the final verification.


I.e. is it enough to have this "program language-like"
description of your hardware to program the chip or does one need to
also dive into the register levels or logic or even layout? How does
this work?
Synthesis is powerful. The logic level can be modelled with if-then and
similar clauses. The register level is important, because this means
modelling hardware. Pick a register, connect it to a block of
combinational logic and feed the result to another register - this is
mardware modelling.

Get famailiar with state machines, because you need them to model the
control logic at the register level.

Layout is after synthesis and has nothing in common with a HDL. It it
just mapping the cells to the target (the FPGA in your case).
Downloading the result / manufacturing the chip are the next steps.

Ralf
 
Thanks to everybody for the help and clarifications provided so far. I
have two more question though:

1. How do I find the right hardware for me. Are there overviews or does
one just browse the manufacturers pages?2

2. What should I look out for when shopping for hardware? Any tips to
avoid common begginers' mistakes?

3. Are there free implementations of common problems available? I.e. I
am probably not the first to need a USB interface. ;-) As I am not
planning to make money out of this I could use something under GPL or
similar...

4. If I decide that the whole thing takes too much time, how do I find
someone who can do the work for me? Is there a forum for VHDL / FPGA
programmers' jobs?

Thanks again.

- Arik
 
arik.funke@gmx.de wrote:

1. How do I find the right hardware for me. Are there overviews or does
one just browse the manufacturers pages?2
http://groups.google.com/groups?q=fpga+development+board

2. What should I look out for when shopping for hardware? Any tips to
avoid common begginers' mistakes?
Have a prototype design working in simulation
before buying any hardware.

3. Are there free implementations of common problems available? I.e. I
am probably not the first to need a USB interface. ;-) As I am not
planning to make money out of this I could use something under GPL or
similar...
Yes, but they don't always work:
http://www.opencores.org/browse.cgi/by_category


4. If I decide that the whole thing takes too much time, how do I find
someone who can do the work for me? Is there a forum for VHDL / FPGA
programmers' jobs?
That is a reasonable assumption.
Check with local universities or maybe
http://berlin.craigslist.org/

-- Mike Treseler
 
If you only need one or two control systems, it sounds like an
evaluation board is the way to go. That way there's no PCB layout &
assembly involved and the PC interface should either already be there
or easy to add. Most evaluation boards will have a bunch of I/Os you
can use, and maybe even a prototyping area where you can add you own
chips (like if you need to translate 3.3V to 5V).

Depending on the system requirements, maybe an FPGA is overkill, and
all that's needed is a microcontroller. Many evaluation boards for
microcontrollers also have a PC interface and prototyping areas.
Microchip is an example of a company that supplies low-cost
microcontrollers and evaluation boards, and there are many more.
Review your system requirements and desired quantities, and go from
there...
 
arik.funke@gmx.de wrote:

I would like to make a number of circuits to control complex trigger
sequences in a laboratory-research project. I.e. one thing I need to
build are very flexible delays to trigger various devices.
Unfortunately I am completely new to VHDL so I am not sure what I
actually need for following:
If you want to do this yourself, you need to learn
vhdl language, acquire and learn a vhdl simulator,
acquire and learn vhdl synthesis tools.
This will take 6 months if you take to it,
much longer if you don't.

If this is just one of many details in your
project, consider working with someone who
already uses vhdl and fpgas.

I.e. is it enough to have this "program language-like"
description of your hardware to program the chip or does one need to
also dive into the register levels or logic or even layout?
A vhdl synchronous process for synthesis
can be "program-like" in the sense of a
low-level firmware interrupt routine.
The difference is that the interrupt event
happens on every rising clock edge and the
virtual "program" runs through the process
once in zero time.

The process code has to check the relevant inputs
and internal variables (registers) and update
the appropriate variables and outputs (registers)
on *every* rising edge.

However, you still need to know enough
about gates and flops to tell if the
schematic you see in the rtl viewer
is what you expected from your code description.

-- Mike Treseler
 

Welcome to EDABoard.com

Sponsor

Back
Top