[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [oc] complex division in Hardware



> I am implementing complex division in hardware. Is
> there any easy method to do that? 

Do you need this to be done in a single (very long) cycle, or is
multi-cycle operation OK?

> As you know complex division can be done like this: 
> a+bi      a+bi      c-di      (a+bi) * (c-di) 
> ------ = ------- * ------- = -------------------- 
> c+di      c+di      c-di          c^2 + d^2 

Equivalent to the following (unless I made some mistake):
tmp00 = c * c
tmp01 = d * d
tmp00 = tmp00 + tmp01 
tmp00 = 1 / tmp00
tmp01 = a * c
tmp02 = b * d
tmp01 = tmp01 + tmp02
real = tmp01 * tmp00
tmp01 = a * d
tmp02 = b * c
tmp01 = tmp02 - tmp01
imag = tmp01 * tmp00 

Possibly the output registers could be reused as temporaries too.

> But it takes lot of hardware if we directly implement

Obviously, both the multiplications and the division can be implemented
using an adder/subtractor if the capability to shift values is added.

That is, you can make do with a single adder/subtractor, a couple of
registers, a couple of multiplexers and a state machine.
For better performance, add a multiplier, divider, extra adder/subtractor,
etc.

-- 
  Chalmers University   | Why are these |  e-mail:   rand@cd.chalmers.se
     of Technology      |  .signatures  |            johank@omicron.se
                        | so hard to do |  WWW:      rand.thn.htu.se
   Gothenburg, Sweden   |     well?     |            (fVDI, MGIFv5, QLem)
--
To unsubscribe from cores mailing list please visit http://www.opencores.org/mailinglists.shtml