# 3/2 with "virtex xcv300"

Discussion in 'VHDL' started by HB, Dec 12, 2005.

1. ### HBGuest

Hi,

I use a Virtex XCV300
I would like to do : a multi *3 and a div /2 with a clk = 32 MHz.
(I would like to obtain a freq = 48 MHz)

Can you help me !!.
Thanks and regards,

Benoit.

HB, Dec 12, 2005

2. ### Jerry CoffinGuest

HB wrote:
> Hi,
>
> I use a Virtex XCV300
> I would like to do : a multi *3 and a div /2 with a clk = 32 MHz.
> (I would like to obtain a freq = 48 MHz)

So what have you tried so far? Do you have a design that works, but is
too slow, or are you uncertain how to proceed at all? How many signal
bits do you need to work with? Do you need something semi-unusual like
working with serial input and/or output instead of simple parallel
signals?

I would ask whether it's really 32 or 48 MHz you need, but it should be
quite trivial to get this bit of logic to run at 100+ MHz, even if you
use a much cheaper Spartan part instead of a Virtex.

Assuming you're having trouble getting started, a few hints: you can
multiply by 2 by shifting a signal left a bit (e.g. intermediate(16
downto 1) := input) and you can divide by two using a right-shift (same
basic idea in reverse). If you have X and 2X, you can get 3X by adding
them together. Typical designs carry out their work on the rising edge
of a clock. Since your intermediate can be as large as input*3, you'll
want it to be two bits larger than the input. Since the output can be
as large as input*1.5, you want it to be one bit larger than the input.
That might be done as one extra signal wire, or it might be done as the
same number of signals as the input, plus a separate carry signal.

--
The universe is a figment of its own imagination.

Jerry Coffin, Dec 13, 2005

3. ### HBGuest

I need a choice between 2 solutions :

first solution:
I can use a Freq=48MHz to create a 32MHz (multi *2, and div 3).
But the signal for this freq isn't locate at a clock PIN (old card, so I
can't change the PINOUT).
This signal is locate PIN number AA4 in a Virtex XCV300-FG456).
I have some problems to use DLL and BUF.
Is someone could help me (use DLL and/or BUF without dedicated clk pin) !!.

second solution:
I can use a Freq=32MHz to create a 48MHz (multi*3, and div 2).
But it very difficult to have this multi *3 !.

I need a clk with a good precision, and if possible with around 50/50 of
duty cycle.

THANKS LOT for your help. Any suggestion will appreciate.
Regards.

Benoit.

"Jerry Coffin" <> a écrit dans le message news:
...
> HB wrote:
> > Hi,
> >
> > I use a Virtex XCV300
> > I would like to do : a multi *3 and a div /2 with a clk = 32 MHz.
> > (I would like to obtain a freq = 48 MHz)

>
> So what have you tried so far? Do you have a design that works, but is
> too slow, or are you uncertain how to proceed at all? How many signal
> bits do you need to work with? Do you need something semi-unusual like
> working with serial input and/or output instead of simple parallel
> signals?
>
> I would ask whether it's really 32 or 48 MHz you need, but it should be
> quite trivial to get this bit of logic to run at 100+ MHz, even if you
> use a much cheaper Spartan part instead of a Virtex.
>
> Assuming you're having trouble getting started, a few hints: you can
> multiply by 2 by shifting a signal left a bit (e.g. intermediate(16
> downto 1) := input) and you can divide by two using a right-shift (same
> basic idea in reverse). If you have X and 2X, you can get 3X by adding
> them together. Typical designs carry out their work on the rising edge
> of a clock. Since your intermediate can be as large as input*3, you'll
> want it to be two bits larger than the input. Since the output can be
> as large as input*1.5, you want it to be one bit larger than the input.
> That might be done as one extra signal wire, or it might be done as the
> same number of signals as the input, plus a separate carry signal.
>
> --
> The universe is a figment of its own imagination.
>

HB, Dec 13, 2005