Are any of you guys into FPGA development? What are
the main applications do you use it for? I will be
entering into FPGA once I have cleared my other
development, counting 2 major PIC projects.
Regards,
John
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
On 5/16/06, kravnus wolf <spam_OUTkravnusTakeThisOuTyahoo.com> wrote:
> Are any of you guys into FPGA development? What are
> the main applications do you use it for? I will be
you generally use whatever tools are provided by the FPGA vendor..
each vendor has their own proprietary tools.. alternatively, you can
buy some 3rd party tools (if you've got extra money lying around) but
they don't come cheap..
you would also need to buy a small FPGA board to do your prototyping..
> entering into FPGA once I have cleared my other
> development, counting 2 major PIC projects.
you should start by familiarising yourself with the FPGA design flow
and one of either vhdl or verilog (languages).. start with something
similar to a 'hello world' project to familiarise yourself with the
tools and flow..
At 03:10 AM 5/16/2006 -0700, you wrote:
>Are any of you guys into FPGA development? What are
>the main applications do you use it for? I will be
>entering into FPGA once I have cleared my other
>development, counting 2 major PIC projects.
>
>Regards,
>John
Using Xilinx 200k gate devices and VHDL. Are you going to use Verilog or
VHDL (or schematic)?
>
>
> Are any of you guys into FPGA development? What are
> the main applications do you use it for? I will be
> entering into FPGA once I have cleared my other
> development, counting 2 major PIC projects.
>
> Regards,
> John
>
All my recent experience has been with Xilinx and Quartus so I'm
limiting responses to what they offer. Other companies like Lattice,
Atmel and so forth also have tool chains.
The tools available from the major vendors are pretty good. Xilinx ISE
and Altera Quartus are pretty good. Both come with simulators, but of
somewhat limited ability. A good gate level simulator is pretty
expensive.
Both companies offer reasonably inexpensive development boards as do
LOTS of third parties.
You have your choice of schematic capture, VHDL or Verilog. Or you can
combine them. Other development "languages" such as Handel-C are
available but generally not free. Abel and Abel-like languages are also
available free.
I typically use VHDL but I know a lot of people who prefer Verilog. In
theory, anything you can do in one language you can do in the other. If
properly constructed, both should reduce down to the same gate level
implementation.
Both Xilinx and Altera have lots of extra tools for optimizing, pin
selection, I/O drive etc. You can use these tools or just create the
configuration files yourself with a text editor and run from a command
line instead of the company's idea of a good IDE.
Start small, and see if you decide to go with VHDL, the best book I have
found is Essential VHDL RTL Synthesis Done Right by Sundar Rajan. VHDL
is kinda funny in that you can write perfectly legal code that cannot be
synthesized. It will run in a simulator but cannot be made to run in
silicon.
On Tue, 2006-05-16 at 03:10 -0700, kravnus wolf wrote:
> Are any of you guys into FPGA development? What are
> the main applications do you use it for? I will be
> entering into FPGA once I have cleared my other
> development, counting 2 major PIC projects.
Done it both in the hobbyist space and professionally.
FPGAs are great fun, but the learning curve can be steep depending on
your level of familiarity with digital logic.
First off you'll want to decide on what language you want to use. The
main contenders are VHDL and Verilog. VHDL is the "oldie", and has the
benefit of TONS of code out there. Verilog is newer, but it is the
future. Most companies are switching to only use Verilog in new designs.
Personally I prefer Verilog. I've learned both, but my "way of thinking"
matched more closely with how Verilog structures are written. VHDL is a
more "strict" language. Since Verilog is becoming the standard I would
recommend you go with Verilog.
Notice I don't even mention "schematic" design methods. Many of the
packages out there allow you to design logic using schematic symbols,
i.e. an adder, a latch, a shift register. While very easy to learn, it's
also EXTREMELY limiting (if you don't have a schematic symbol for a
12bit multiplier, but you need one, you're out of luck), and debugging
becomes nearly impossible since you won't have any understanding on how
the gate level code works.
As for software, that really depends on which vendor you go for since
the software is usually tied to the brand of chip. There are several big
players out there. Most of my experience has been with Xilinx, ranging
from their CPLDs to their Virtex4 parts. In the case of Xilinx they
offer something called the "ISE Webpack" which is basically there "full
featured" tool limited to FPGAs below a certain size. For a hobbyist
it's perfect. The integration is very good and it's a pretty easy tool
to learn. I'm sure the other vendors offer similar packages.
As for FPGAs themselves, generally they only come in "hobbyist
unfriendly" packages, so a devel board is a good idea. Most FGPAs are
programmable through JTAG, but usually you'll still have to get the
programming tool for your brand of FPGA.
I don't know how familiar you are with FPGAs, so I'll give a few
pointers. First off the configuration in an FPGA is usually volatile
(stored in SRAM), when the power goes, so does the config. That means
you have to program the FPGA each time you power up. During development
that is fine since you'll have your programmer connected. However, to
get standalone you'll need to add "FPGA PROMs" to the board. They are
basically special EEPROMs that will program the FPGA on powerup.
There are some newer FPGAs that have internal FLASH to store the config,
but they are not yet very common.
The size of FPGA is important, but going too big is not a good idea if
speed is important. The reason is the larger the FPGA, the larger the
routing delays between pins. There are cases where the same design will
run much slower in a larger part simply because the tool has to route a
net across the whole device.
Well, that's about all I can think of right now. Hope this helped. TTYL
> At 03:10 AM 5/16/2006 -0700, you wrote:
> >Are any of you guys into FPGA development? What are
> >the main applications do you use it for? I will be
> >entering into FPGA once I have cleared my other
> >development, counting 2 major PIC projects.
> >
> >Regards,
> >John
>
> Using Xilinx 200k gate devices and VHDL. Are you
> going to use Verilog or
> VHDL (or schematic)?
>
VHDL. So far I want to dwell very closely to the
gate level. I know it is going to take much longer but
I believe it is worth playing at this .Anyone use
FPGA for work?
John
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
> >
> VHDL. So far I want to dwell very closely to the
> gate level. I know it is going to take much longer but
> I believe it is worth playing at this .Anyone use
> FPGA for work?
>
> John
>
>
>
At the gate level, it gets pretty tedious in VHDL. But also you have
certain constructs in the FPGA that are not purely gates. For example,
in Xilinx Spartans and Vertexes you have DCMs and PLLs for clock
generation. Those are addressed as black box components in VHDL.
You also have hardware multipliers which will be accessed by using the
"*" multiply symbol in an equation.
If you insist on gate level control you can do that relatively easily
with the schematic capture but the schematics rapidly become very
unwieldy.
One possiblity is to mix-and-match between schematics and a textual
description. By designing and placing contraints at the gate level with
a schematic, you can call these subdesigns from a higher level of
abstraction in VHDL or Verilog. Works the other way too, design in VHDL
and create a schematic symbol with appropriate ports and tie into a
schematic. I've used schematics for the very top level to define
sub-blocks and then write VHDL for all layers under the top. Works
pretty well but will not be 100% portable between vendors when you do
that.
> First off you'll want to decide on what language you
> want to use. The
> main contenders are VHDL and Verilog. VHDL is the
> "oldie", and has the
> benefit of TONS of code out there. Verilog is newer,
> but it is the
> future. Most companies are switching to only use
> Verilog in new designs.
>
> Personally I prefer Verilog. I've learned both, but
> my "way of thinking"
> matched more closely with how Verilog structures are
> written. VHDL is a
> more "strict" language. Since Verilog is becoming
> the standard I would
> recommend you go with Verilog.
>
I will keep an eye out for Verilog. Does Xilinx
Webpack support Verilog well? Any good book to start
on Verilog?
> Notice I don't even mention "schematic" design
> methods. Many of the
> packages out there allow you to design logic using
> schematic symbols,
> i.e. an adder, a latch, a shift register. While very
> easy to learn, it's
> also EXTREMELY limiting (if you don't have a
> schematic symbol for a
> 12bit multiplier, but you need one, you're out of
> luck), and debugging
> becomes nearly impossible since you won't have any
> understanding on how
> the gate level code works.
Schematic for a big piece can be NUTS. I will follow
the advice given, make it callable from Verilog or
VHDL.
>
> As for software, that really depends on which vendor
> you go for since
> the software is usually tied to the brand of chip.
> There are several big
> players out there. Most of my experience has been
> with Xilinx, ranging
> from their CPLDs to their Virtex4 parts. In the case
> of Xilinx they
> offer something called the "ISE Webpack" which is
> basically there "full
> featured" tool limited to FPGAs below a certain
> size. For a hobbyist
> it's perfect. The integration is very good and it's
> a pretty easy tool
> to learn. I'm sure the other vendors offer similar
> packages.
>
> As for FPGAs themselves, generally they only come in
> "hobbyist
> unfriendly" packages, so a devel board is a good
> idea. Most FGPAs are
> programmable through JTAG, but usually you'll still
> have to get the
> programming tool for your brand of FPGA.
Does the Starter Kit from Xilinx contain the JTAG
for me to use? I believe I would only use the
development board for it's hobbist friendliness and
it's smaller kit board for some projects.
> I don't know how familiar you are with FPGAs, so
> I'll give a few
> pointers. First off the configuration in an FPGA is
> usually volatile
> (stored in SRAM), when the power goes, so does the
> config. That means
> you have to program the FPGA each time you power up.
> During development
> that is fine since you'll have your programmer
> connected. However, to
> get standalone you'll need to add "FPGA PROMs" to
> the board. They are
> basically special EEPROMs that will program the FPGA
> on powerup.
I think a PIC solution would be great here. Am I
right?
Thanks,
John
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
>
> Does the Starter Kit from Xilinx contain the JTAG
> for me to use? I believe I would only use the
> development board for it's hobbist friendliness and
> it's smaller kit board for some projects.
At one time the ones made by Digelent came with a clone of the old
parallel port JTAG cable. Works if you have a parallel port but a bit
on the slow side for programming big parts. Also uses a larger header.
The USB cable or Parallel Cable IV is a good investment.
>
> > I don't know how familiar you are with FPGAs, so
> > I'll give a few
> > pointers. First off the configuration in an FPGA is
> > usually volatile
> > (stored in SRAM), when the power goes, so does the
> > config. That means
> > you have to program the FPGA each time you power up.
> > During development
> > that is fine since you'll have your programmer
> > connected. However, to
> > get standalone you'll need to add "FPGA PROMs" to
> > the board. They are
> > basically special EEPROMs that will program the FPGA
> > on powerup.
>
> I think a PIC solution would be great here. Am I
> right?
Yes you can do this but you will still need a relatively large
non-volatile storage device unless you plan on booting through some
other communication stream (RS232, USB, ethernet, etc) while connected
to a PC. Adding the serial EEPROMs for the FPGAs is not a big deal.
Cheap parts. Can be in-system programed via the above mentioned
programming cables.
I've worked on systems were we had both EEPROM and the ability to
reprogram the FPGAs from a processor (happened to be a DSP). Worked
great for field upgrades since the DSP was already talking to a monitor
port and could reprogram its FLASH.
Several app notes on Xilinx's site about microcontroller booting, using
a CPLD to boot and other fun stuff.
> >
> > Does the Starter Kit from Xilinx contain the
> JTAG
> > for me to use? I believe I would only use the
> > development board for it's hobbist friendliness
> and
> > it's smaller kit board for some projects.
>
> At one time the ones made by Digelent came with a
> clone of the old
> parallel port JTAG cable. Works if you have a
> parallel port but a bit
> on the slow side for programming big parts. Also
> uses a larger header.
> The USB cable or Parallel Cable IV is a good
> investment.
>
> >
> > > I don't know how familiar you are with FPGAs, so
> > > I'll give a few
> > > pointers. First off the configuration in an FPGA
> is
> > > usually volatile
> > > (stored in SRAM), when the power goes, so does
> the
> > > config. That means
> > > you have to program the FPGA each time you power
> up.
> > > During development
> > > that is fine since you'll have your programmer
> > > connected. However, to
> > > get standalone you'll need to add "FPGA PROMs"
> to
> > > the board. They are
> > > basically special EEPROMs that will program the
> FPGA
> > > on powerup.
> >
> > I think a PIC solution would be great here. Am I
> > right?
>
> Yes you can do this but you will still need a
> relatively large
> non-volatile storage device unless you plan on
> booting through some
> other communication stream (RS232, USB, ethernet,
> etc) while connected
> to a PC. Adding the serial EEPROMs for the FPGAs is
> not a big deal.
> Cheap parts. Can be in-system programed via the
> above mentioned
> programming cables.
>
> I've worked on systems were we had both EEPROM and
> the ability to
> reprogram the FPGAs from a processor (happened to be
> a DSP). Worked
> great for field upgrades since the DSP was already
> talking to a monitor
> port and could reprogram its FLASH.
>
> Several app notes on Xilinx's site about
> microcontroller booting, using
> a CPLD to boot and other fun stuff.
>
> Rob
On Tue, 2006-05-16 at 13:11 -0500, Robert Young wrote:
> > I think a PIC solution would be great here. Am I
> > right?
>
> Yes you can do this but you will still need a relatively large
> non-volatile storage device unless you plan on booting through some
> other communication stream (RS232, USB, ethernet, etc) while connected
> to a PC. Adding the serial EEPROMs for the FPGAs is not a big deal.
> Cheap parts. Can be in-system programed via the above mentioned
> programming cables.
>
> I've worked on systems were we had both EEPROM and the ability to
> reprogram the FPGAs from a processor (happened to be a DSP). Worked
> great for field upgrades since the DSP was already talking to a monitor
> port and could reprogram its FLASH.
>
> Several app notes on Xilinx's site about microcontroller booting, using
> a CPLD to boot and other fun stuff.
Another very cool option from Xilinx is called SystemACE. It's a chip
that reads a bitfile from a compact flash card (with FAT file system)
and programs the FPGAs.
It's especially good for cases where you'd normally end up with several
PROMs, plus it's much faster at programming the chips then through JTAG
(even during devel I use the SystemACE card instead of directly
programming the chips).
It also has a facility for storing multiple bit files, so with the
change of a switch and a reset your FPGAs are loaded with a different
config.
I have this kit, and much to my dismay I couldn't find source code for
the board demo functionality. Everything else is pretty well documented
so I think it was very intentionally not shipped. If you find it, (or
anybody else on PIClist that has one, for that matter) pls. drop me a line.
> Thanks guys. I will dive into Xilinx Starter Kit since
> it is very complete to me. Love the VGA port function!
> I smell a 6502 chip...
>
> Thanks,
> john
>
> --- Robert Young <EraseMErwyoungspam_OUTTakeThisOuTieee.org> wrote:
>
>
>>>
>>> Does the Starter Kit from Xilinx contain the
>>
>>JTAG
>>
>>>for me to use? I believe I would only use the
>>>development board for it's hobbist friendliness
>>
>>and
>>
>>>it's smaller kit board for some projects.
>>
>>At one time the ones made by Digelent came with a
>>clone of the old
>>parallel port JTAG cable. Works if you have a
>>parallel port but a bit
>>on the slow side for programming big parts. Also
>>uses a larger header.
>>The USB cable or Parallel Cable IV is a good
>>investment.
>>
>>
>>>>I don't know how familiar you are with FPGAs, so
>>>>I'll give a few
>>>>pointers. First off the configuration in an FPGA
>>
>>is
>>
>>>>usually volatile
>>>>(stored in SRAM), when the power goes, so does
>>
>>the
>>
>>>>config. That means
>>>>you have to program the FPGA each time you power
>>
>>up.
>>
>>>>During development
>>>>that is fine since you'll have your programmer
>>>>connected. However, to
>>>>get standalone you'll need to add "FPGA PROMs"
>>
>>to
>>
>>>>the board. They are
>>>>basically special EEPROMs that will program the
>>
>>FPGA
>>
>>>>on powerup.
>>>
>>> I think a PIC solution would be great here. Am I
>>>right?
>>
>>Yes you can do this but you will still need a
>>relatively large
>>non-volatile storage device unless you plan on
>>booting through some
>>other communication stream (RS232, USB, ethernet,
>>etc) while connected
>>to a PC. Adding the serial EEPROMs for the FPGAs is
>>not a big deal.
>>Cheap parts. Can be in-system programed via the
>>above mentioned
>>programming cables.
>>
>>I've worked on systems were we had both EEPROM and
>>the ability to
>>reprogram the FPGAs from a processor (happened to be
>>a DSP). Worked
>>great for field upgrades since the DSP was already
>>talking to a monitor
>>port and could reprogram its FLASH.
>>
>>Several app notes on Xilinx's site about
>>microcontroller booting, using
>>a CPLD to boot and other fun stuff.
>>
>>Rob
>
> Thanks guys. I will dive into Xilinx Starter Kit since
> it is very complete to me. Love the VGA port function!
> I smell a 6502 chip...
>
> Thanks,
> john
Xilinx has the PicoBlaze which is a nifty little microcontroller core,
they have a larger pay-for microcontroller core. Altera has a free one
too but the name escapes me. There are also "commercial" IP cores for
just about anything you want, 8051, PIC, PCI-bus, Ethernet, CDMA and on
and on and on.
> >
> > Thanks guys. I will dive into Xilinx Starter Kit
> since
> > it is very complete to me. Love the VGA port
> function!
> > I smell a 6502 chip...
> >
> > Thanks,
> > john
>
> http://www.opencores.org/browse.cgi/by_category
>
> http://www.sprow.co.uk/fpgas/free6502.htm
>
> And MANY more.
>
> Xilinx has the PicoBlaze which is a nifty little
> microcontroller core,
> they have a larger pay-for microcontroller core.
> Altera has a free one
> too but the name escapes me. There are also
> "commercial" IP cores for
> just about anything you want, 8051, PIC, PCI-bus,
> Ethernet, CDMA and on
> and on and on.
>
> Have fun.
>
> Rob
On Thu, May 18, 2006 at 05:40:57PM +0800, mengtang wrote:
Heck, here is a question for you guys...
How small do FPGA's and CPLD's go? Basically I have an application with
three PWM channels and an master mode i2c interface in a tiny package,
less than 18 pins hopefully, surface mount leaded package. I'm currently
looking into using a 28 pin 16f767 PIC in a QFN package, but if there
are other possibilities I'd be interested in knowing about them.
I'm not really looking forward to trying to solder QFN's!
On Thu, 2006-05-18 at 19:28 -0400, Peter Todd wrote:
> On Thu, May 18, 2006 at 05:40:57PM +0800, mengtang wrote:
>
> Heck, here is a question for you guys...
>
> How small do FPGA's and CPLD's go? Basically I have an application with
> three PWM channels and an master mode i2c interface in a tiny package,
> less than 18 pins hopefully, surface mount leaded package. I'm currently
> looking into using a 28 pin 16f767 PIC in a QFN package, but if there
> are other possibilities I'd be interested in knowing about them.
>
> I'm not really looking forward to trying to solder QFN's!
Generally the whole point of going to an FPGA/CPLD is because you need
number of IOs. Due to this low pin count devices are quite rare.
PALs were available in I believe 16 or 18 pin packages, but they are
very limited and quite scarce.
Note there ARE hobbyist friendly CPLDs out there. The 9536 CPLD comes in
a 44 pin PLCC package, get a through hole socket and you're set!
But..But.. this is the binary file to load into the chip, right? I was
looking for VHDL / verilog source. That said it has been on a shelf for
awhile and I'm getting back to it all next week, and thanks for the
yahoo groups link!
Actually I wish the same thing, I have a project that doesn't need much
i/o but will require a bunch of logic. I think one just says "oh well"
and has 70 unused FPGA pins...
For three PWM and I2C, why not do the PWM in software? I'm doing
similar for a RGB LED driver + serial control with the PIC18LF1220, a
much smaller PIC could be used (10? 12? series, am not familiar with
them), but I want hardware serial. PWM in software is pretty easy. The
1220/1320 is available in TSSOP, SOIC and DIP. I'm using the TSSOP and
each rgb "node" is not much bigger than the chip itself.
> On Thu, May 18, 2006 at 05:40:57PM +0800, mengtang wrote:
>
> Heck, here is a question for you guys...
>
> How small do FPGA's and CPLD's go? Basically I have an application with
> three PWM channels and an master mode i2c interface in a tiny package,
> less than 18 pins hopefully, surface mount leaded package. I'm currently
> looking into using a 28 pin 16f767 PIC in a QFN package, but if there
> are other possibilities I'd be interested in knowing about them.
>
> I'm not really looking forward to trying to solder QFN's!
>
>
>>If the board mentioned is Spartan-3 Starter Kit, the files are available at
>>http://www.xilinx.com/products/boards/DO-SPAR3-DK/reference_designs.htm.
>>There's also a unofficial group http://groups.yahoo.com/group/s3_kit/ and
>>also numerous designs based on the board if you do a web search.
>
>
On Thu, May 18, 2006 at 11:01:29PM -0400, Jesse Lackey wrote:
> Actually I wish the same thing, I have a project that doesn't need much
> i/o but will require a bunch of logic. I think one just says "oh well"
> and has 70 unused FPGA pins...
Yeah, think of it as as one very mechanically secure chip. :)
I've noticed a lot of BGA packages now have heaps of unused balls on
them, connected to ground or left floating. Heck, often they use groups
of four balls her pin!
> For three PWM and I2C, why not do the PWM in software? I'm doing
> similar for a RGB LED driver + serial control with the PIC18LF1220, a
> much smaller PIC could be used (10? 12? series, am not familiar with
> them), but I want hardware serial. PWM in software is pretty easy. The
> 1220/1320 is available in TSSOP, SOIC and DIP. I'm using the TSSOP and
> each rgb "node" is not much bigger than the chip itself.
Well given a 8mhz PIC, the fastest speed the internal oscillators work
at, you get...
2,000,000 instructions per second / 256 PWM steps / 256 hz = 30.5
instructions per cycle..
Marginal really. I've done stuff like that before, one project I did was
a three color LED in PWM on a 12f chip, when all was said and done I had
left something like 10 instructions per cycle for the non-pwm code...
That was at 120hz. But it changed the colors over the course of hours so
it worked just fine.
For this project I'm not sure I can fit software PWM and communication
with a RTC and debounced button presses in at once. Seems very tight but
I can't think of a better way to do software PWM.
On Thu, May 18, 2006 at 08:24:25PM -0400, Herbert Graf wrote:
> Generally the whole point of going to an FPGA/CPLD is because you need
> number of IOs. Due to this low pin count devices are quite rare.
>
> PALs were available in I believe 16 or 18 pin packages, but they are
> very limited and quite scarce.
>
> Note there ARE hobbyist friendly CPLDs out there. The 9536 CPLD comes in
> a 44 pin PLCC package, get a through hole socket and you're set!
>
> My logan project used one of those devices:
> http://repatch.dyndns.org:8383/pic_stuff/logan
Thanks! That's a really neat project. Xilinx looks quite nice,
especially that WebPACK has a Linux version. I'll have to add it to my
ever-growing TODO list for the summer...
>Well given a 8mhz PIC, the fastest speed the internal oscillators work
>at, you get...
>
>2,000,000 instructions per second / 256 PWM steps / 256 hz = 30.5
>instructions per cycle..
>
>
They tell me some of those pesky AVRs have an internal 8Mhz oscillators
with no pesky divide by 4...
On Fri, May 19, 2006 at 11:34:37AM -0400, Aaron wrote:
>
>
> Peter Todd wrote:
>
> >Well given a 8mhz PIC, the fastest speed the internal oscillators work
> >at, you get...
> >
> >2,000,000 instructions per second / 256 PWM steps / 256 hz = 30.5
> >instructions per cycle..
> >
> >
> They tell me some of those pesky AVRs have an internal 8Mhz oscillators
> with no pesky divide by 4...
Good idea! It gets better too, turns out Atmel has 8 pin chips with 4
PWM channels built into them! They also have i2c on board. I'll have to
do some more research of course, but this looks very promising.