Searching \ for '[EE]: Getting started with FPGA' in subject line. ()
Make payments with PayPal - it's fast, free and secure! Help us get a faster server
FAQ page: www.piclist.com/techref/index.htm?key=getting+started
Search entire site for: 'Getting started with FPGA'.

Exact match. Not showing close matches.
PICList Thread
'[EE]: Getting started with FPGA'
2007\10\29@100110 by James Nick Sears

flavicon
face
More and more I'm finding questions in my work that seem to be  
leading me to FPGA-based solutions.  I have a lot of experience with  
PICs, circuit design, software development, etc, but absolutely ZERO  
with FPGA.  What would you recommend as a starter platform and dev  
kit that is relatively powerful and easy to learn and integrate into  
a larger design (i.e. no FPGAs that are only available in BGA - fine  
pitch SMD is of course no problem), and not terribly expensive (It  
would be nice to spend around $250 or less for a complete solution,  
programmer and all, but if there's a good reason to spend more I want  
to hear about it)?

Any insight would be greatly appreciated.

Thanks,
-n.

2007\10\29@104025 by alan smith

picon face
I'd go with either Altera or Xilinx...both offer free tools on the web for smallish developments.  However, unless you use Altera that offers a schematic based design entry, your going to have to learn either Verilog (my preference) or VHDL.  There are several good tutorials out on the web for both.  Now and then I've seen classes offered by both Avnet and Arrow (Avnet for Xilinx...check out the speedway classes and Arrow is Altera).  NuHorizons has also offered classes in the past.  
 
 There are low cost dev kits (also check Ebay) for both products.  Altera's programmer is something you can build..or used to be able to..if you have a parallel port on the PC.  For Xilinx I dont recall ever seeing one that is available to build, but could be wrong. Again, check on Ebay for programmers.  Many of the dev boards include a USB interface for programming, just make sure that it doesn't require an external programmer.
 
 And of course, if your in good terms with the local FAE or distributor...they sometimes just give those away in order to gain or win design sockets.  
 
 Best of luck

James Nick Sears <spam_OUTlistsTakeThisOuTspamjamesnsears.com> wrote:
 More and more I'm finding questions in my work that seem to be
leading me to FPGA-based solutions. I have a lot of experience with
PICs, circuit design, software development, etc, but absolutely ZERO
with FPGA. What would you recommend as a starter platform and dev
kit that is relatively powerful and easy to learn and integrate into
a larger design (i.e. no FPGAs that are only available in BGA - fine
pitch SMD is of course no problem), and not terribly expensive (It
would be nice to spend around $250 or less for a complete solution,
programmer and all, but if there's a good reason to spend more I want
to hear about it)?

Any insight would be greatly appreciated.

Thanks,
-n.

2007\10\29@105212 by David VanHorn

picon face
Oddly enough, I find myself in the same situation.

2007\10\29@112913 by Harold Hallikainen

face
flavicon
face
I'm also just getting started with fpgas. The company here is using
Altera, so that's what I'm now using. I looked at both vhdl and verilog
and am finding verilog much easier to use. A consultant showed me a pretty
easy way to write verilog code. It works for my hardware oriented mind.
You set up a bunch of registers (or flip flops) like this:

 // Define Registers
 reg [7:0] TxDataD;
 reg [7:0] TxDataQ;                // Data we latched from the processor and are
sending to fpga
 reg FpgaClockD;
 reg FpgaClockQ;                        // This will toggle to clock data into external fpgas
 reg [2:0] ClocksPerByteD;
 reg [2:0] ClocksPerByteQ;        // how many clocks per byte. Do 1 for normal,
4 for compressed/encrypted
 reg [2:0] ClockCounterD;
 reg [2:0] ClockCounterQ;        // count down counter that counts clocks
 reg [1:0] StateD;
 reg [1:0] StateQ;                        // state counter


For each, a D and Q is defined (like a D flip flop).

Then, reset and clock are dealt with. Reset clears everything. Clock
transfers D to Q on everything.

// Handle reset and clock
 always @(posedge clk or negedge resetn) begin
   if(~resetn) begin                // we got a negative edge on resetn, so reset
everything
     TxDataQ=8'b00000000;        // outputs in some defined state
     FpgaClockQ=1'b0;                // set clock low
     ClocksPerByteQ=3'b001;// default to one clock per byte
     $display("Resetting %d", ClocksPerByteQ);
     ClockCounterQ=3'b001;        // assume we are going to send one clock
     StateQ=2'b00;                        // nothing to send yet.
   end else begin                        // not in reset, we must be on posedge clk, so
transfer all Ds to Q.
     TxDataQ=TxDataD;
     FpgaClockQ=FpgaClockD;
     ClocksPerByteQ=ClocksPerByteD;
     ClockCounterQ=ClockCounterD;
     StateQ=StateD;
   end                                                // end else
 end                                                // end always


Then the combinational logic defines the D inputs.

// Combinatorial logic. Drive register D inputs
 always @(*) begin
   TxDataD=TxDataQ;                        // Default action - loop q back to d to hold values
unless changed below
   FpgaClockD=FpgaClockQ;
   ClocksPerByteD=ClocksPerByteQ;
   ClockCounterD=ClockCounterQ;
   StateD=StateQ;
   case(StateQ)                                // state machine
     2'b00: begin                                // waiting for csn and wrn strobe
          if(~CSn) begin
            if(~wrn) begin
              if(RegSel) begin
                ClocksPerByteD=DataIn[2:0];        // regsel=1, capture
ClocksPerByte
                StateD=2'b11;                                // go wait for write to go false
              end else begin
                TxDataD=DataIn;                        // RegSel low, capture data
                ClockCounterD=ClocksPerByteQ; // Init the clock counter
                StateD=2'b01;                // on to next state and go on to next state
              end
            end                                        // end if(~wrn)
          end                                                // end if(~csn)
        end                                                // end case 0
     2'b01: begin
          FpgaClockD=1'b1;                        // drive clock high
          StateD=2'b10;                        // on to next state
          ClockCounterD=ClockCounterQ-3'b001; // count down the clocks as
we send them
        end
     2'b10: begin

<snip/>

So, I've had a lot more luck with verilog instead of vhdl. Just the way my
brain works, or not.

For hardware, I'm using the Altera CycloneII FPGA Starter Board which has
a lot of I/O I'm not using, but also has some headers with I/O I can drive
my devices with.

So far, so good!

Harold




--
FCC Rules Updated Daily at http://www.hallikainen.com - Advertising
opportunities available!

2007\10\29@133914 by Martin

face
flavicon
face
James Nick Sears wrote:
> More and more I'm finding questions in my work that seem to be  
> leading me to FPGA-based solutions.  I have a lot of experience with  
> PICs, circuit design, software development, etc, but absolutely ZERO  
>  
...


I like the boards from digilentinc.com
They have ones for under $100 I believe, now. Don't worry about getting
anything fancy you won't be doing much with it just to start out. They
use a parallel JTAG cable, but they have a USB JTAG cable available.

The software that you will use is Xilinx WebPack (basically ISE)
You start by:
1. creating a project
2. writing modules
3. writing a "top" module (the module that instantiates your sub-modules)
4. assign physical pins to your top module
5. synthesize the module
6. program the FPGA and/or FLASH chip

Of course the unwritten first step is really to plan your project.

I think the latest WebPack even has a simulator. In that case you should
simulate what you can to make sure it theoretically works first. If you
need help, post questions to the list and I can probably help you.

-
Martin K

2007\10\29@180011 by Zik Saleeba

face picon face
sparkfun has an entry-level Spartan 3E development board:

www.sparkfun.com/commerce/product_info.php?products_id=8458
http://www.sparkfun.com/commerce/product_info.php?products_id=8460

Cheers,
Zik

On 10/30/07, Martin <.....martinKILLspamspam@spam@nnytech.net> wrote:
{Quote hidden}

> -

2007\10\29@201420 by Hector Martin

flavicon
face
I have a Spartan-3E Starter Board from digilentinc.com

For the price ($150), it's absolutely great. You get all sorts of toys
to play around with: 64MB DDR DRAM, 16MB NOR Flash, SPI and one-wire
smaller flashes, an LCD display (HD44780 style, of course), an
assortment of LEDs and buttons/switches, an Ethernet interface, two
serial ports, a PS/2 mouse/keyboard port, ADCs and DACs, PlatformFlash
for the FPGA config, a three-bit VGA port, and a 500k gate Spartan-3E
FPGA, plus a lot of I/O and a built-in programmer. The version used in
the dev board is BGA, but that doesn't matter since the same FPGA line
is available in leaded packages which you could use to build your own board.

--
Hector Martin (hectorspamKILLspammarcansoft.com)
Public Key: http://www.marcansoft.com/marcan.asc

2007\10\29@225507 by John Chung

picon face
The main question is what do you intend to do with
your FPGA project? It will determine the type of
development board for your purpose.


John


--- Martin <.....martinKILLspamspam.....nnytech.net> wrote:

{Quote hidden}

> --

More... (looser matching)
- Last day of these posts
- In 2007 , 2008 only
- Today
- New search...