Re: Lab4


[ Follow Ups ] [ Post Followup ] [ ECE 532 Discussion Area ] [ FAQ ]

Posted by Vaughn Betz on March 17, 1998 at 16:43:10:

In Reply to: Lab4 posted by Steve on March 16, 1998 at 13:22:45:


: Just a little confusion about lab 4:

: 1) To take the average isn't a division required?
: If so, is there such a circuit predefined in MaxPluxII?
: Or is is sufficient to use the '/' operator?

: 2) Will there be enough room for all this on the FPGA?

: Thanks

The / operator will not synthesize. So you're going to have
to implement division in some manner.

The simplest way is probably to load a ROM with the reciprocals
of the numbers from 1 to 16. Since you know you're reading at
most 16 words, you'll have to divide by at most 16. A 16 entry
ROM in some fixed-point integer format isn't very big -- if you
use the LPM_ROM construct it will be put into an embedded
array block (EAB -- a chunk of SRAM on the FPGA chip) and will
fit very efficiently. If you don't use LPM_ROM the tools may
not be smart enough to put your ROM into an EAB, which means
you'll use more of the FPGA up.

You could also perform a division in multiple clock cycles
using an iterative algorithm like SRT division. This is
considerably more complex than using a ROM, but is also
doable, and should also fit in the FPGA without problems.

The * operator also won't synthesize, so you'll either have
to design your own multiplier or use the LPM_MULT construct.
I believe the LPM_MULTs are designed to produce one result
per clock. If they're too big to fit in the FPGA with the
precision you need, you'll have to design your own multiplier
using a slower (multi-cycle) algorithm like shift and add
that takes less area.

Vaughn



Follow Ups:


Post a Followup

Name:
E-Mail:

Subject:

Comments:

Optional Link URL:
Link Title:
Optional Image URL:


[ Follow Ups ] [ Post Followup ] [ ECE 532 Discussion Area ] [ FAQ ]