Reply by David Hawkins October 22, 20112011-10-22
> With many FPGAs having some kind of dual-port BlockRAM, it is quite
> easy to have FIFOs to smooth out the processing. Still, trying to
> clock data into BlockRAM at 20 MHz takes a pretty fast FPGA.

The low-end Altera Cyclone series of devices, and Xilinx Spartan
devices all work fine at 100MHz or more. You just have to use the
RAM in synchronous (pipelined) mode (which is pretty much all
the newer devices support anyway).

Cheers,
Dave

An Engineer's Guide to the LPC2100 Series

Reply by rtstofer October 22, 20112011-10-22
--- In l..., "richas" wrote:
>
> Thanks Paul, Olivier, and Dave. Hi again Dave ;-)
>
> I have, as Dave knows, already started pursuing the FPGA route. I think my posting here is just a lean back into my comfort zone and I need to continue with the FPGA. The FPGA + micro is intriguing, if it makes sense. It may speed the design to have an external micro which could be later incorporated into the FPGA.
>
> That packets out to the wifi would be a much slower rate than the adc sample rate.
>
> I think, given that I am out of mental bandwidth, that I cannot deal with lack of processing power. I just wanted a sanity check.
>
> Thanks guys.
>
> Rich
>

I haven't thought very much about the processing power requirement (I don't know anything about the app) but the Analog Devices Blackfin uC runs at 500 MHz and has DSP capabilities. The Sharc device is even faster and it, too, has DSP.

http://www.analog.com/en/processors-dsp/blackfin/products/index.html
http://www.analog.com/en/processors-dsp/sharc/processors/index.html

For the FPGA approach, there are a number of small CPU cores available at opencores.org. The T80 core (a full Z80) is one of my favorites. I added a Compact Flash gadget to the bus and have CP/M 2.2 running with a full complement of 16 logical drives of 8MB each. That's HUGE in Z80 terms. It also provides a decent platform for readily available Z80 assemblers and C compilers. Or Fortran and PL/I...

I suppose everyone else would want to use the MIPS core.

With many FPGAs having some kind of dual-port BlockRAM, it is quite easy to have FIFOs to smooth out the processing. Still, trying to clock data into BlockRAM at 20 MHz takes a pretty fast FPGA.

Richard

Reply by Olivier Gautherot October 21, 20112011-10-21
Hi Rich,

On Fri, Oct 21, 2011 at 6:49 PM, richas wrote:

> **
> > How much slower, and what do you do with the data you don't want from
> > the ADC? If you have to process the ADC data, then that processing
> > may determine how 'much' of an FPGA you need.
> > The two channels of analog data are IQ data and become a bit stream
> through, yet to be determined, processing. So it will take many ADC samples
> to produce one bit.
One quick note about the bandwidth (from the User's Guide):
"12-bit conversion rate of 200 kHz"
Cheers
--
Olivier Gautherot
o...@gautherot.net
http://www.linkedin.com/in/ogautherot


Reply by David Smead October 21, 20112011-10-21
It can be done with an LPCxxxx processor.

DaveS

On Fri, Oct 21, 2011 at 1:37 PM, richas wrote:

> **
> I have a project that requires two 12-bit ADCs with parallel output and a
> sample rate of ~20-30 Msps. The micro will be processing the data into a bit
> stream, formatting that into a data packet and sending it out via a canned
> wifi solution.
>
> I could use an FPGA instead of a micro but it would add a lot of cost and
> time to the project.
>
> I could just try it with an LPC1769, 120MHz, FIQ, for example but I assume
> there are methods to calculate the burden on the processor.
>
> What kind of pre-hardware analysis can be done to determine how much CPU
> time is required just to keep up with the parallel ADC inputs?
>
> Thanks
>
> Rich
>
>
>


Reply by richas October 21, 20112011-10-21
> How much slower, and what do you do with the data you don't want from
> the ADC? If you have to process the ADC data, then that processing
> may determine how 'much' of an FPGA you need.
>

The two channels of analog data are IQ data and become a bit stream through, yet to be determined, processing. So it will take many ADC samples to produce one bit.

> There's plenty of mental bandwidth on these lists, but you need to
> specify the requirements well enough for others to offer their
> insight or experience.

Yes, but you are right, I have more work to do before, I try to tap the minds here...

Thanks again

Rich

Reply by David Hawkins October 21, 20112011-10-21
Hi Rich,

> That packets out to the wifi would be a much slower rate than the adc sample rate.

How much slower, and what do you do with the data you don't want from
the ADC? If you have to process the ADC data, then that processing
may determine how 'much' of an FPGA you need.

If you only require bursts of samples, then use a FIFO, and the micro
can control the burst data capture.

> I think, given that I am out of mental bandwidth

There's plenty of mental bandwidth on these lists, but you need to
specify the requirements well enough for others to offer their
insight or experience.

Cheers,
Dave

Reply by richas October 21, 20112011-10-21
Thanks Paul, Olivier, and Dave. Hi again Dave ;-)

I have, as Dave knows, already started pursuing the FPGA route. I think my posting here is just a lean back into my comfort zone and I need to continue with the FPGA. The FPGA + micro is intriguing, if it makes sense. It may speed the design to have an external micro which could be later incorporated into the FPGA.

That packets out to the wifi would be a much slower rate than the adc sample rate.

I think, given that I am out of mental bandwidth, that I cannot deal with lack of processing power. I just wanted a sanity check.

Thanks guys.

Rich

--- In l..., Paul Curtis wrote:
> On 21 Oct 2011, at 21:37, richas wrote:
>
> > I have a project that requires two 12-bit ADCs with parallel output and a sample rate of ~20-30 Msps. The micro will be processing the data into a bit stream, formatting that into a data packet and sending it out via a canned wifi solution.
> >
> > I could use an FPGA instead of a micro but it would add a lot of cost and time to the project.
> >
> > I could just try it with an LPC1769, 120MHz, FIQ, for example but I assume there are methods to calculate the burden on the processor.
> >
> > What kind of pre-hardware analysis can be done to determine how much CPU time is required just to keep up with the parallel ADC inputs?
>
> Lower bound:
>
> 20Msps x 2 x 12 = 480 Mbps. What Wifi solution would you use for this data stream? :-( That high speed USB. 802.11n is max 600mbps, and I see nowhere near that with the equipment I have in my house.
>
> Let's say you want to read this using the CPU and not using DMA (which just shifts the problem). Each dual sample is packed into a 32-bit word, you need to deal with 20M 32-bit words per second. That means each 32 bit word has a maximum of 120/20 = 6 instructions to read, process, and do something with. What are you going to pack into those four instructions in the middle, assuming that the read and write are single cycle?
>
> I would say that this minimum analysis shows that a 120MHz LPC1700 isn't going to be up to the job, if I read what you want to do correctly.
>
> Well, unless I've made a complete arse of myself with a maths error.
>
> -- Paul.
>

Reply by Paul Curtis October 21, 20112011-10-21
On 21 Oct 2011, at 21:37, richas wrote:

> I have a project that requires two 12-bit ADCs with parallel output and a sample rate of ~20-30 Msps. The micro will be processing the data into a bit stream, formatting that into a data packet and sending it out via a canned wifi solution.
>
> I could use an FPGA instead of a micro but it would add a lot of cost and time to the project.
>
> I could just try it with an LPC1769, 120MHz, FIQ, for example but I assume there are methods to calculate the burden on the processor.
>
> What kind of pre-hardware analysis can be done to determine how much CPU time is required just to keep up with the parallel ADC inputs?

Lower bound:

20Msps x 2 x 12 = 480 Mbps. What Wifi solution would you use for this data stream? :-( That high speed USB. 802.11n is max 600mbps, and I see nowhere near that with the equipment I have in my house.

Let's say you want to read this using the CPU and not using DMA (which just shifts the problem). Each dual sample is packed into a 32-bit word, you need to deal with 20M 32-bit words per second. That means each 32 bit word has a maximum of 120/20 = 6 instructions to read, process, and do something with. What are you going to pack into those four instructions in the middle, assuming that the read and write are single cycle?

I would say that this minimum analysis shows that a 120MHz LPC1700 isn't going to be up to the job, if I read what you want to do correctly.

Well, unless I've made a complete arse of myself with a maths error.

-- Paul.

Reply by Olivier Gautherot October 21, 20112011-10-21
Hi Rich,

On Fri, Oct 21, 2011 at 5:37 PM, richas wrote:

> **
>
> I have a project that requires two 12-bit ADCs with parallel output and a
> sample rate of ~20-30 Msps. The micro will be processing the data into a bit
> stream, formatting that into a data packet and sending it out via a canned
> wifi solution.
>
> I could use an FPGA instead of a micro but it would add a lot of cost and
> time to the project.
>

It sounds like a lot of data. 2 things:
- the LPC1769 won't keep up with this data rate
- what algorithm do you need to run?

If you evaluate the complexity and then multiply it by the data rate, you
will get an estimate of the MIPS that you actually need. The pure interrupts
will cause an overhead that won't keep up with your description...

FPGA/CPLD and a (very) fast converter are the way to go.

Cheers
--
Olivier Gautherot
o...@gautherot.net
http://www.linkedin.com/in/ogautherot


Reply by David Hawkins October 21, 20112011-10-21
Hi Rich

Continuing on from our discussion on the Altera forum ...
(though you have provided more info here)

> I have a project that requires two 12-bit ADCs with parallel output and a sample rate of ~20-30 Msps. The micro will be processing the data into a bit stream, formatting that into a data packet and sending it out via a canned wifi solution.
>
> I could use an FPGA instead of a micro but it would add a lot of cost and time to the project.
>
> I could just try it with an LPC1769, 120MHz, FIQ, for example but I assume there are methods to calculate the burden on the processor.
>
> What kind of pre-hardware analysis can be done to determine how much CPU time is required just to keep up with the parallel ADC inputs?

First you need to identify the specific WiFi component.

Then identify the data format required by the WiFi interface
for the data packets you are sending, eg., your ADC data will
consist of blocks of samples with header information.

I suspect your solution would need to involve both a processor
(for system initialization and header generation) and a CPLD,
or perhaps dual-port RAM between the ADC and the WiFi chip
so that you can stream data without it going through the
micro.

Cheers,
Dave