Site Home   Archive Home   FAQ Home   How to search the Archive   How to Navigate the Archive   
Compare FPGA features and resources   

Threads starting:
1994JulAugSepOctNovDec1994
1995JanFebMarAprMayJunJulAugSepOctNovDec1995
1996JanFebMarAprMayJunJulAugSepOctNovDec1996
1997JanFebMarAprMayJunJulAugSepOctNovDec1997
1998JanFebMarAprMayJunJulAugSepOctNovDec1998
1999JanFebMarAprMayJunJulAugSepOctNovDec1999
2000JanFebMarAprMayJunJulAugSepOctNovDec2000
2001JanFebMarAprMayJunJulAugSepOctNovDec2001
2002JanFebMarAprMayJunJulAugSepOctNovDec2002
2003JanFebMarAprMayJunJulAugSepOctNovDec2003
2004JanFebMarAprMayJunJulAugSepOctNovDec2004
2005JanFebMarAprMayJunJulAugSepOctNovDec2005
2006JanFebMarAprMayJunJulAugSepOctNovDec2006
2007JanFebMarAprMayJunJulAugSepOctNovDec2007
2008JanFebMarAprMayJunJulAugSepOctNovDec2008
2009JanFebMarAprMayJunJulAugSepOctNovDec2009
2010JanFebMarAprMayJunJulAugSepOctNovDec2010
2011JanFebMarAprMayJunJulAugSepOctNovDec2011
2012JanFebMarAprMayJunJulAugSepOctNovDec2012
2013JanFebMarAprMayJunJulAugSepOctNovDec2013
2014JanFebMarAprMayJunJulAugSepOctNovDec2014
2015JanFebMarAprMayJunJulAugSepOctNovDec2015
2016JanFebMarAprMayJunJulAugSepOctNovDec2016
2017JanFebMarAprMayJunJulAugSepOctNovDec2017
2018JanFebMarAprMayJunJulAugSepOctNovDec2018
2019JanFebMarAprMayJunJulAugSepOctNovDec2019
2020JanFebMarAprMay2020

Authors:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Custom Search

Messages from 35150

Article: 35150
Subject: Re: comp.arch.fpga : Unusual clock divider ckt
From: Peter Alfke <peter.alfke@xilinx.com>
Date: Mon, 24 Sep 2001 08:58:23 -0700
Links: << >>  << T >>  << A >>
What you are trying to do can only be done with a phase-locked-loop, or by dividing down from a very high frequency.
Digital circuits do not work in the frequency domain, they work in the time domain. If you look at the 16 different period you want to generate, you see that they do not share edges.
Why do you want to do this? Thre may be a simpler way to achieve you goal...

Peter Alfke

Ted Moreno wrote:

> I want to design unusual clock dividers in a Virtex FPGA. I have a
> slow clock (in couple of Hz) and I want to make 16  clock dividers <br>   with equal increments. For example if the input clock in 4Hz, I want to have clock dividers from 0.25Hz, 0.5Hz, 0.75Hz, 1Hz, 1.25Hz ..........3.25Hz, 3.5Hz, 3.75Hz.
>
> I can use binary counter 16 for 0.25, 0.5, 1, 2 Hz clocks. What would be the best way for other freq.?
>
> It would be easy if I can get 50% duty cycle, but if not what are the other ways of doing this?
> Any advice would be greatly appreciated
>
> -Ted


Article: 35151
Subject: Re: comp.arch.fpga : Unusual clock divider ckt
From: Falk Brunner <Falk.Brunner@gmx.de>
Date: Mon, 24 Sep 2001 18:00:27 +0200
Links: << >>  << T >>  << A >>
Ted Moreno schrieb:
> 
> I want to design unusual clock dividers in a Virtex FPGA. I have a
> slow clock (in couple of Hz) and I want to make 16  clock dividers <br>   with equal increments. For example if the input clock in 4Hz, I want to have clock dividers from 0.25Hz, 0.5Hz, 0.75Hz, 1Hz, 1.25Hz ..........3.25Hz, 3.5Hz, 3.75Hz.
> 
> I can use binary counter 16 for 0.25, 0.5, 1, 2 Hz clocks. What would be the best way for other freq.?
> 
> It would be easy if I can get 50% duty cycle, but if not what are the other ways of doing this?
> Any advice would be greatly appreciated

Use a "high speed clock", lets say 1 MHz. Count the number of pulses
between the rising edges of your super-low-speed clock. Now you can
easyly calculate how much high-speed cycles it takes to create the 0.25,
0.75 .... Hz.

-- 
MFG
Falk



Article: 35152
Subject: Re: Synplicity logic replication
From: husby_d@yahoo.com (Don Husby)
Date: 24 Sep 2001 09:08:44 -0700
Links: << >>  << T >>  << A >>
hamish@cloud.net.au wrote
> Don Husby <husby_d@yahoo.com> wrote:
> > For the following code, synplify will merge the two instances
> > of Shift into the same net:
>  
> >  wire  [1:0] Shift                            /* synthesis syn_keep=1 */;
> >  assign Shift[0]= Sending & !Stall | !Ready;  // 
> >  assign Shift[1]= Sending & !Stall | !Ready;  // Replicated
> 
> Use syn_preserve on the signal. syn_keep won't do it, I think.
> I don't know what the syntax for that is in Verilog.

Unfortunately, with Synplicity this only works for registers.
With Exemplar, the "preserve" attribute works on wires.  Which
is a good thing, because Exemplar takes way more of this kind
of mapping control to make optimal designs.

Article: 35153
Subject: Re: comp.arch.fpga : Unusual clock divider ckt
From: NotMe <not-given@invalid.com>
Date: Mon, 24 Sep 2001 16:17:17 GMT
Links: << >>  << T >>  << A >>
Like Peter says, you need a PLL or an input frequency that is a higher 
multiple of the 4Hz you were looking at.  What exactly is the 
application for the outputs, there may be a better way to come at it?

You can readily generate any integer multiple of the input clock period 
though, for example you could count three input clocks keeping the 
output high then two more keeping the output low to get input input/5... 
would that be good enough?
--
Posted using Nographer - News in your Browser
http://www.nographer.com - free, open source, and smart


Article: 35154
Subject: Re: Forcing a LUT logic function (was Synplicity logic replication)
From: husby_d@yahoo.com (Don Husby)
Date: 24 Sep 2001 09:19:30 -0700
Links: << >>  << T >>  << A >>
"Tim" <tim@rockylogic.com.nospam.com> wrote :
> "Don Husby" <husby_d@yahoo.com> wrote
> It seems that what we really want is something like:
> 
>   signal a,b,c,d,x : std_logic;
>   x <= LUT((a and b) xor ( c and (not d)));

And this would be so simple for a synthesizer to implement.


> but that is beyond the language.  The nearest I have managed is:
> 
>    LU1: VLut4 generic map ( ExprStr => "((I0*I1)@(I2*~I3))" )
>               port map (I0=>a, I1=>b, I2=>c, I3=>d, O=>x );

I wish I could use VHDL.  In addition to this, it's a lot more
friendly for algorithmic instantiation of components and attributes.

Article: 35155
Subject: Please help in Cossap and VHDL ..FPGA sintesys
From: "Luke" <lukecc@tin.it>
Date: Mon, 24 Sep 2001 17:00:00 GMT
Links: << >>  << T >>  << A >>
My question is simple and rather important for me ..if i have written some
Custom Primitive Model (in Generic C) that i'm using in cossap ....is it
possibile to translate them directly to VHDL or Verilog using Cossap? (eg.
to export them to Xilinx Foundation)
or i have to write down the translation of every single Model (from generic
C to v_arc file ) and then the VCG is able to mix them into a VHDL project?

If not there's any tool that can help me to do this translation ??
Really Really thanks in advance

Luca
lukecc@tin.it



Article: 35156
Subject: Re: comp.arch.fpga : Unusual clock divider ckt
From: Peter Alfke <peter.alfke@xilinx.com>
Date: Mon, 24 Sep 2001 12:04:16 -0700
Links: << >>  << T >>  << A >>
A brute-force solution starts with a frequency of 90 090 Hz ( i.e. 90.090 kHz)
to generate by division all frequencies from 0.25 Hz, 0.50 Hz...3.50 Hz, 3.75 Hz.
So, it can be done...

Peter Alfke
===========
Ted Moreno wrote:

> I want to design unusual clock dividers in a Virtex FPGA. I have a
> slow clock (in couple of Hz) and I want to make 16  clock dividers <br>   with equal increments. For example if the input clock in 4Hz, I want to have clock dividers from 0.25Hz, 0.5Hz, 0.75Hz, 1Hz, 1.25Hz ..........3.25Hz, 3.5Hz, 3.75Hz.
>
> I can use binary counter 16 for 0.25, 0.5, 1, 2 Hz clocks. What would be the best way for other freq.?
>
> It would be easy if I can get 50% duty cycle, but if not what are the other ways of doing this?
> Any advice would be greatly appreciated
>
> -Ted


Article: 35157
Subject: Re: comp.arch.fpga : Unusual clock divider ckt
From: Ted <>
Date: Mon, 24 Sep 2001 12:25:50 -0700
Links: << >>  << T >>  << A >>
Peter,

Thanks for the prompt response but how did get the number 90 0090 Hz? I can have a clock with this freq (90.0090 khz) but how would I generate  0.25 Hz, 0.5 Hz....3.75 Hz clocks? Can you please elaborate?

-Ted

Article: 35158
Subject: Re: comp.arch.fpga : Unusual clock divider ckt
From: Ray Andraka <ray@andraka.com>
Date: Mon, 24 Sep 2001 19:42:41 GMT
Links: << >>  << T >>  << A >>
Either I misread this, or you guys misunderstood his question.   I think he wants to be able to generate various output frequencies lower than his input at frequencies in 0.25 Hz steps.  He can use direct digital synthesis for frequencies less
than half his input.  A DDS is simply an accumulator that is incremented on each clock cycle.  It can be visualized as a phase accumulator with the msb weighted pi, so adding phase increments on each clock brings you part of the way around the
phase circle.  Using just the MSB as an output you get a square wave, although it will have jitter on is for output frequencies that are not a submultiple of the input clock.  THe jitter can be reduced by increasing the input clock.

The output frequency is Fo=Fc * n/(2^k) where n is the increment value and k is the number of bits in the accumulator.  For example, say he has a 4Hz input and wants 1.25 Hz out.  A 4 bit accumulator will give him 0.25 resolution on the set
frequency.  1.25 is 5x 0.25, so increment it by 5.  The accumulator and corresponding outputs over 16 input clock cycles will be:

0000    0
0101    0
1010    1
1111    1
0100    0
1001    1
1110    1
0011    0
1000    1
1101    1
0010    0
0111    0
1100    1
0001    0
0110    0
1011    1
0000    0

Note that in 16 clocks, the accumulator goes through 5 cycles, so the  output frequency is 5/16 * 4 = 1.25 Hz.  Also note that there is jitter of +/-1 cycle of the input (4Hz) clock.  The increment value can only go up to half the input
frequency, beyond that the step becomes a negative phase angle, so you step the other direction through the sequence.  Increasing the master clock will provide less jitter, while extending the length of the accumulator provides more frequency
resolution for the frequency selection.  You'll need at least a 2x clock to get the steps higher than 2 Hz.  You could use Peter's clock doubler circuit to get that 2x clock if you can't supply a 2x or greater clock.  It won't help the jitter
much, but it will give you the top half of your frequency list.


Peter Alfke wrote:

> A brute-force solution starts with a frequency of 90 090 Hz ( i.e. 90.090 kHz)
> to generate by division all frequencies from 0.25 Hz, 0.50 Hz...3.50 Hz, 3.75 Hz.
> So, it can be done...
>
> Peter Alfke
> ===========
> Ted Moreno wrote:
>
> > I want to design unusual clock dividers in a Virtex FPGA. I have a
> > slow clock (in couple of Hz) and I want to make 16  clock dividers <br>   with equal increments. For example if the input clock in 4Hz, I want to have clock dividers from 0.25Hz, 0.5Hz, 0.75Hz, 1Hz, 1.25Hz ..........3.25Hz, 3.5Hz, 3.75Hz.
> >
> > I can use binary counter 16 for 0.25, 0.5, 1, 2 Hz clocks. What would be the best way for other freq.?
> >
> > It would be easy if I can get 50% duty cycle, but if not what are the other ways of doing this?
> > Any advice would be greatly appreciated
> >
> > -Ted

--
--Ray Andraka, P.E.
President, the Andraka Consulting Group, Inc.
401/884-7930     Fax 401/884-7950
email ray@andraka.com
http://www.andraka.com

 "They that give up essential liberty to obtain a little
  temporary safety deserve neither liberty nor safety."
                                          -Benjamin Franklin, 1759



Article: 35159
Subject: Re: Synplicity logic replication
From: Ray Andraka <ray@andraka.com>
Date: Mon, 24 Sep 2001 19:47:41 GMT
Links: << >>  << T >>  << A >>
In synplicity you can force separate luts by copying one of the inputs to the LUT
to a vector and putting syn_keep on the vector.  In VHDL this would be done as:

signal lut_out: std_logic_vector(3 downto 0);
signal signal_vector : std_logic_vector(3 downto 0);
attribute syn_keep of signal_vector:signal is true;

begin
signal_vector<=(others=> lut_in_a);
for i in 0 to 3 generate

    lut_out<=<lut function(lut_in_a(i),...)>;



Don Husby wrote:

> hamish@cloud.net.au wrote
> > Don Husby <husby_d@yahoo.com> wrote:
> > > For the following code, synplify will merge the two instances
> > > of Shift into the same net:
> >
> > >  wire  [1:0] Shift                            /* synthesis syn_keep=1 */;
> > >  assign Shift[0]= Sending & !Stall | !Ready;  //
> > >  assign Shift[1]= Sending & !Stall | !Ready;  // Replicated
> >
> > Use syn_preserve on the signal. syn_keep won't do it, I think.
> > I don't know what the syntax for that is in Verilog.
>
> Unfortunately, with Synplicity this only works for registers.
> With Exemplar, the "preserve" attribute works on wires.  Which
> is a good thing, because Exemplar takes way more of this kind
> of mapping control to make optimal designs.

--
--Ray Andraka, P.E.
President, the Andraka Consulting Group, Inc.
401/884-7930     Fax 401/884-7950
email ray@andraka.com
http://www.andraka.com

 "They that give up essential liberty to obtain a little
  temporary safety deserve neither liberty nor safety."
                                          -Benjamin Franklin, 1759



Article: 35160
Subject: Registered outputs...
From: "Noddy" <g9731642@campus.ru.ac.za>
Date: Mon, 24 Sep 2001 21:54:36 +0200
Links: << >>  << T >>  << A >>
Can someone briefly explain the benefits between registered and
non-registered outputs on a LUT (using Distributed Memory core). Right now I
am using non-registered... could I get better performance with a registered
output? The extra latency doesn't matter.

thanks
adrian




Article: 35161
Subject: Re: comp.arch.fpga : Unusual clock divider ckt
From: Peter Alfke <peter.alfke@xilinx.com>
Date: Mon, 24 Sep 2001 13:30:19 -0700
Links: << >>  << T >>  << A >>
Let me answer two questions:
Why did I suggest operation from such a high starting frequency?
Because it is the only way to generate the requested output frequencies 100% purely, without substantial jitter.
But Ray is of course right ( as usual ) that you can generate the frequency averages much more simply.

How to generate the requested frequencies from 90.090 kHz?
Just divide by the appropriate integer. Use your trusty pocket calculator to find the divide ratio.
90090 divided by 3.75 = 24,024. Therefore you have to divide by 24024 to get 3.75 Hz. Takes a 15-bit binary counter...

Peter Alfke
=============================
Ray Andraka wrote:

> Either I misread this, or you guys misunderstood his question.   I think he wants to be able to generate various output frequencies lower than his input at frequencies in 0.25 Hz steps.  He can use direct digital synthesis for frequencies less
> than half his input.  A DDS is simply an accumulator that is incremented on each clock cycle.  It can be visualized as a phase accumulator with the msb weighted pi, so adding phase increments on each clock brings you part of the way around the
> phase circle.  Using just the MSB as an output you get a square wave, although it will have jitter on is for output frequencies that are not a submultiple of the input clock.  THe jitter can be reduced by increasing the input clock.
>
> The output frequency is Fo=Fc * n/(2^k) where n is the increment value and k is the number of bits in the accumulator.  For example, say he has a 4Hz input and wants 1.25 Hz out.  A 4 bit accumulator will give him 0.25 resolution on the set
> frequency.  1.25 is 5x 0.25, so increment it by 5.  The accumulator and corresponding outputs over 16 input clock cycles will be:
>
> 0000    0
> 0101    0
> 1010    1
> 1111    1
> 0100    0
> 1001    1
> 1110    1
> 0011    0
> 1000    1
> 1101    1
> 0010    0
> 0111    0
> 1100    1
> 0001    0
> 0110    0
> 1011    1
> 0000    0
>
> Note that in 16 clocks, the accumulator goes through 5 cycles, so the  output frequency is 5/16 * 4 = 1.25 Hz.  Also note that there is jitter of +/-1 cycle of the input (4Hz) clock.  The increment value can only go up to half the input
> frequency, beyond that the step becomes a negative phase angle, so you step the other direction through the sequence.  Increasing the master clock will provide less jitter, while extending the length of the accumulator provides more frequency
> resolution for the frequency selection.  You'll need at least a 2x clock to get the steps higher than 2 Hz.  You could use Peter's clock doubler circuit to get that 2x clock if you can't supply a 2x or greater clock.  It won't help the jitter
> much, but it will give you the top half of your frequency list.
>
> Peter Alfke wrote:
>
> > A brute-force solution starts with a frequency of 90 090 Hz ( i.e. 90.090 kHz)
> > to generate by division all frequencies from 0.25 Hz, 0.50 Hz...3.50 Hz, 3.75 Hz.
> > So, it can be done...
> >
> > Peter Alfke
> > ===========
> > Ted Moreno wrote:
> >
> > > I want to design unusual clock dividers in a Virtex FPGA. I have a
> > > slow clock (in couple of Hz) and I want to make 16  clock dividers <br>   with equal increments. For example if the input clock in 4Hz, I want to have clock dividers from 0.25Hz, 0.5Hz, 0.75Hz, 1Hz, 1.25Hz ..........3.25Hz, 3.5Hz, 3.75Hz.
> > >
> > > I can use binary counter 16 for 0.25, 0.5, 1, 2 Hz clocks. What would be the best way for other freq.?
> > >
> > > It would be easy if I can get 50% duty cycle, but if not what are the other ways of doing this?
> > > Any advice would be greatly appreciated
> > >
> > > -Ted
>
> --
> --Ray Andraka, P.E.
> President, the Andraka Consulting Group, Inc.
> 401/884-7930     Fax 401/884-7950
> email ray@andraka.com
> http://www.andraka.com
>
>  "They that give up essential liberty to obtain a little
>   temporary safety deserve neither liberty nor safety."
>                                           -Benjamin Franklin, 1759


Article: 35162
Subject: Re: Registered outputs...
From: Peter Alfke <peter.alfke@xilinx.com>
Date: Mon, 24 Sep 2001 13:35:02 -0700
Links: << >>  << T >>  << A >>
If you build a synchronous, clocked design, you will implement combinatorial
logic between registers. The longer the combinatorial delay, the lower the clock
frequency. So, for highest throughput, you want to keep the LUT delay as short
as possible, and use "pipeline" registers generously. High performance, but
longer latency.
If you don't use the CLB register, you have to add the longest series of LUT
delays to figure out the max clock rate.

Peter Alfke
================================
Noddy wrote:

> Can someone briefly explain the benefits between registered and
> non-registered outputs on a LUT (using Distributed Memory core). Right now I
> am using non-registered... could I get better performance with a registered
> output? The extra latency doesn't matter.
>
> thanks
> adrian


Article: 35163
(removed)


Article: 35164
Subject: Re: comp.arch.fpga : Unusual clock divider ckt
From: Eric Smith <eric-no-spam-for-me@brouhaha.com>
Date: 24 Sep 2001 15:53:28 -0700
Links: << >>  << T >>  << A >>
Peter Alfke <peter.alfke@xilinx.com> writes:
> How to generate the requested frequencies from 90.090 kHz?  Just
> divide by the appropriate integer. Use your trusty pocket calculator
> to find the divide ratio.  90090 divided by 3.75 = 24,024. Therefore
> you have to divide by 24024 to get 3.75 Hz. Takes a 15-bit binary
> counter...

I think the question was more a matter of "how did you pick the
value 90.090 kHz from the numbers in the original problem".

Without thinking too hard about it or getting out my calculator,
I suspect that you computed the least common multiple of the
desired output frequencies.
 

Article: 35165
Subject: Re: comp.arch.fpga : Unusual clock divider ckt
From: Peter Alfke <peter.alfke@xilinx.com>
Date: Mon, 24 Sep 2001 16:29:27 -0700
Links: << >>  << T >>  << A >>


Eric Smith wrote:

> I think the question was more a matter of "how did you pick the
> value 90.090 kHz from the numbers in the original problem".
>
> Without thinking too hard about it or getting out my calculator,
> I suspect that you computed the least common multiple of the
> desired output frequencies.

Yes.
Seems like those high-school hours were not entirely worthless.
Peter

>
>


Article: 35166
Subject: WebPack ISE 4.1 is out
From: Eric Smith <eric-no-spam-for-me@brouhaha.com>
Date: 24 Sep 2001 19:48:10 -0700
Links: << >>  << T >>  << A >>
... and as usual Xilinx' attempt at super-fancy Javascript works poorly
in my browser.  Fortunately it is possible to download it without
using their download manager.  From Linux, this command will download
everything:

wget http://username:password@www.xilinx.com/webpack/41wp0/{WebPACK,MXE}_41wp00_full_install.exe

Obviously you'll have to register and put your own username and password in the
command.

Too bad they still don't have a version that runs on Linux.  These days
Xilinx software is the only thing keeping me from abandoning Windows
entirely.  Maybe Microsoft is giving them a kickback?  :-)

Article: 35167
Subject: Spartan-IIE?
From: Eric Smith <eric-no-spam-for-me@brouhaha.com>
Date: 24 Sep 2001 19:49:43 -0700
Links: << >>  << T >>  << A >>
WebPACK 4.1 supports the Spartan-IIE family up to XC2S300E.  I'd
never heard of Spartan-IIE.  Is it just a cheaper Virtex-E,
as Spartan-II is a cheaper Virtex?

Article: 35168
Subject: way to test foundation express version in fe_shell?
From: "Andrew Dyer" <adyer@enteract.com>
Date: Tue, 25 Sep 2001 03:20:25 GMT
Links: << >>  << T >>  << A >>
I need to do some version specific stuff with fe_shell, and I'd like to
maintain only one version of our synthesis script and do conditional
execution via Tcl based on the version of foundation express I'm using at
runtime.

I couldn't find a variable I could get this from , and the lack of good docs
from Xilinx on fe_shell is really annoying.  Do any of you wiser souls know
the tcl magic for this?



Article: 35169
Subject: Re: Coefficient scaling question
From: "Kevin Neilson" <kevin_neilson@removethis-yahoo.com>
Date: Tue, 25 Sep 2001 05:19:30 GMT
Links: << >>  << T >>  << A >>
As for the scaling:
If you want absolutely no overflow you can scale the coefficients so that
their magnitude sum is one.  For interpolating filters, you would scale so
that largest sum of the coefficients of one phase is 1.  That is, you
multiply all the coefficients by the inverse of the largest sum of the
magnitude of the coefficients from one phase of the polyphase filter.  Then
the magnitude of the filter output can be no larger than 1.  This case would
occur when each positive coefficient is multiplied by a sample of 1.0 and
each negative coefficient is multiplied by a sample of -1.0.  This gets you
the best dynamic range without overflowing.

Since this case happens rarely, usually you can, with little reduction in
quality, scale the coefficients again by some constant like 1/sqrt(2).  In
this case, there will be an occasional overflow, so you will need a
"clipper" which clips the filter output to 1 (actually slightly less than 1)
or -1 if the filter overflows.  This gives you more dynamic range at the
expense of occasional clipping.  This also gives you a better
peak-to-average ratio, which allows you to operate more within the linear
range of a linear filter.  So sometimes it's a wash:  the clipping adds
noise, but allows you to work more within the linear range of the filter,
reducing noise.

The clipper might be a pain to implement because you have to check each
adder in the FIR for overflow (the sign bit of the adder output is not the
same as the sign of either input).  I think there are also soft clippers,
which squash the larger samples like a voice compander, reducing noise a
bit.  If you clip too hard you can get spurs and exceed your mask.


-Kevin

"Antonio" <dottavio@ised.it> wrote in message
news:fb35ea96.0109232317.5650b3b6@posting.google.com...
> Good Morning
> I'm developing a QPSK passband modulator for my thesis, on it I use a
> 37 taps polyphase SRRC filter for each branch of the transmission
>
> delay              = 3              ;
> roll_off           = 0.35           ;
> input_rate_SRRC    = 27.5e6     ;
> output_rate_SRRC   = 165e6          ;
> num_fir = rcosine( input_rate_SRRC , output_rate_SRRC, 'fir/sqrt',
> roll_off, delay);
> data_out_SRRC_tx_I = rcosflt(data_in_SRRC_tx_I, input_rate_SRRC ,
> output_rate_SRRC , 'filter' , num_fir);
> data_out_SRRC_tx_Q = rcosflt(data_in_SRRC_tx_Q, input_rate_SRRC ,
> output_rate_SRRC , 'filter' , num_fir);
>
>
> on the receiving pat I use the same 37 taps SRRC filter but without
> interpolate nor decimate, simply
> data_out_SRRC_rx_I = filter(num_fir, 1 , data_in_SRRC_rx_I);
> data_out_SRRC_rx_Q = filter(num_fir, 1 , data_in_SRRC_rx_Q);
>
>
> My problem is that when I compare the simbol transmitted to the symbol
> received, the first symbols are not good,
> this is due to the answers of the filters, looking at the two sequence
> I can see that the shift between them is
> of 10 bits so 5 symbols for a QPSK modulator but how I can determine
> this in a not empirical way ??
>
>
>
> By the way another question, with this code matlab produce a 37 taps
> filter that is not well suited for an FPGA
> implementation of the polyphase filter, it is better to have 36 for an
> SRRC that have to interpolate 6 otherwise
> I've to put inside other coefficients of value zero until I arrive to
> a total number of taps that is multiple of 6.
> How I can do it with Matlab ??
>
> I also try to use systolix to design this filter and it seems OK, the
> only problem is that the coefficients are
> between about -0.2 and +0.2 , in my design I use 2's complement, 1 bit
> for the sign and 11 bits for the fractional part,
> no bit for the integer part, to better use this range can I scale the
> coefficients ?? This could give me some problem ??
>
>
>
> Thanks in any case ...
>
> Antonio D'Ottavio



Article: 35170
Subject: Re: comp.arch.fpga : Unusual clock divider ckt
From: allan_herriman.hates.spam@agilent.com (Allan Herriman)
Date: Tue, 25 Sep 2001 05:26:58 GMT
Links: << >>  << T >>  << A >>
On Mon, 24 Sep 2001 19:42:41 GMT, Ray Andraka <ray@andraka.com> wrote:

>Either I misread this, or you guys misunderstood his question.   I think he wants to be able to generate various output frequencies lower than his input at frequencies in 0.25 Hz steps.  He can use direct digital synthesis for frequencies less
>than half his input.  A DDS is simply an accumulator that is incremented on each clock cycle.  It can be visualized as a phase accumulator with the msb weighted pi, so adding phase increments on each clock brings you part of the way around the
>phase circle.  Using just the MSB as an output you get a square wave, although it will have jitter on is for output frequencies that are not a submultiple of the input clock.  THe jitter can be reduced by increasing the input clock.
>
>The output frequency is Fo=Fc * n/(2^k) where n is the increment value and k is the number of bits in the accumulator.  For example, say he has a 4Hz input and wants 1.25 Hz out.  A 4 bit accumulator will give him 0.25 resolution on the set
>frequency.  1.25 is 5x 0.25, so increment it by 5.  The accumulator and corresponding outputs over 16 input clock cycles will be:
>
>0000    0
>0101    0
>1010    1
>1111    1
>0100    0
>1001    1
>1110    1
>0011    0
>1000    1
>1101    1
>0010    0
>0111    0
>1100    1
>0001    0
>0110    0
>1011    1
>0000    0
>
>Note that in 16 clocks, the accumulator goes through 5 cycles, so the  output frequency is 5/16 * 4 = 1.25 Hz.  Also note that there is jitter of +/-1 cycle of the input (4Hz) clock.  The increment value can only go up to half the input
>frequency, beyond that the step becomes a negative phase angle, so you step the other direction through the sequence.  Increasing the master clock will provide less jitter, while extending the length of the accumulator provides more frequency
>resolution for the frequency selection.  You'll need at least a 2x clock to get the steps higher than 2 Hz.  You could use Peter's clock doubler circuit to get that 2x clock if you can't supply a 2x or greater clock.  It won't help the jitter
>much, but it will give you the top half of your frequency list.

Here are the jitter figures from simulation:

For an 8Hz clock, using the standard NCO that Ray so eloquently
described:
fout	jitter
0.250	0 ms
0.500	0 ms
0.750	83.333334 ms
1.000	0 ms
1.250	100 ms
1.500	83.333333 ms
1.750	107.142858 ms
2.000	0 ms
2.250	111.111112 ms
2.500	100 ms
2.750	113.636363 ms
3.000	83.333334 ms
3.250	115.384615 ms
3.500	107.142857 ms
3.750	116.666666 ms
4.000	0 ms

Note that in no case does the jitter actually get as high as one
period of the input clock.

For a 16Hz clock, the jitter amplitude is halved:
fout	jitter
0.250	0 ms
0.500	0 ms
0.750	41.666667 ms
1.000	0 ms
1.250	50 ms
1.500	41.666666 ms
1.750	53.571429 ms
2.000	0 ms
2.250	55.555556 ms
2.500	50 ms
2.750	56.818181 ms
3.000	41.666667 ms
3.250	57.692307 ms
3.500	53.571428 ms
3.750	58.333333 ms
4.000	0 ms

A 1MHz clock would take way too long to simulate on my little laptop,
but you can be pretty sure that the jitter will be about 1us.

Regards,
Allan

>
>Peter Alfke wrote:
>
>> A brute-force solution starts with a frequency of 90 090 Hz ( i.e. 90.090 kHz)
>> to generate by division all frequencies from 0.25 Hz, 0.50 Hz...3.50 Hz, 3.75 Hz.
>> So, it can be done...
>>
>> Peter Alfke
>> ===========
>> Ted Moreno wrote:
>>
>> > I want to design unusual clock dividers in a Virtex FPGA. I have a
>> > slow clock (in couple of Hz) and I want to make 16  clock dividers <br>   with equal increments. For example if the input clock in 4Hz, I want to have clock dividers from 0.25Hz, 0.5Hz, 0.75Hz, 1Hz, 1.25Hz ..........3.25Hz, 3.5Hz, 3.75Hz.
>> >
>> > I can use binary counter 16 for 0.25, 0.5, 1, 2 Hz clocks. What would be the best way for other freq.?
>> >
>> > It would be easy if I can get 50% duty cycle, but if not what are the other ways of doing this?
>> > Any advice would be greatly appreciated
>> >
>> > -Ted
>
>--
>--Ray Andraka, P.E.
>President, the Andraka Consulting Group, Inc.
>401/884-7930     Fax 401/884-7950
>email ray@andraka.com
>http://www.andraka.com
>
> "They that give up essential liberty to obtain a little
>  temporary safety deserve neither liberty nor safety."
>                                          -Benjamin Franklin, 1759
>
>


Article: 35171
Subject: How to fix the hold time violation (clock skew>data skew) in QuartusII
From: ivor@icplus.com.tw (Ivor)
Date: 24 Sep 2001 22:57:40 -0700
Links: << >>  << T >>  << A >>
Hell all,
    I got a lot of hold time violations when I finished P&R with
QuartusII1.1 .
The major reason to cause so many timing violations is that I have too
many clocks in this design but APEX20KE series only afford 8 (4
dedicate clock and 4 global route). I've already tried hard to reduce
the number of clocks but it's impossible to reduce them less than 8. I
really need help to resolve this problem.
    

Two methods in ASIC flow will fix hold time violation, but I don't
know if FPGA tools support these functions.
1. Under the ASIC design flow, when there is a hold violation, we can
add some "delay cells" in the data path to balance the data skew and
data path delay. Does QuartusII support this function? ( Automatic add
delay cells in the data path which cause hold time violations. )
 
2. Another method in ASIC design flow to avoid hold time violations is
to set clock uncertainty. Are there any FPGA synthesis tools support
this feature?
(Set the clock uncertainty so that the synthesis tool will add delay
cells in the data path to avoid possible hold time violations)

Any help is greatly appreciated.

Ivor

Article: 35172
Subject: RAW 2002 Call for Papers
From: Oliver Diessel <odiessel@cse.unsw.edu.au>
Date: Tue, 25 Sep 2001 16:00:31 +1000
Links: << >>  << T >>  << A >>
_______________________________________________________________________

                               Call For Papers

           The 9th Reconfigurable Architectures Workshop (RAW 2002)
                 Fort Lauderdale, Florida, April 15, 2002

            Workshop Web Page: http://www.ee.lsu.edu/vaidy/raw02/
_______________________________________________________________________

The 9th Reconfigurable Architectures Workshop (RAW 2002) is associated
with the 16th Annual International Parallel & Distributed Processing
Symposium (IPDPS 2002) and is sponsored by the IEEE  Computers Society's

Technical Committee on Parallel Processing. It will be held at the
Marriot Marina, Fort Lauderdale, Florida, on April 15, 2002. RAW 2002 is

one of the major meetings for researchers to present ideas, results, and

on-going research on both theoretical and industrial/practical advances
in
Reconfigurable Computing.

Main Focus of the Workshop:

          Run-Time Reconfiguration: Foundations, Algorithms, Tools

Reconfiguration of circuitry at runtime, also called run-time
reconfiguration (RTR), is a new dimension in computing that blurs
traditional boundaries between hardware and software components.  As a
consequence, neither the systems architectures nor the hardware/software

design methodologies and tools that are available today can fully reveal
or
exploit the possibilities created by this new computing paradigm.
Algorithms
and systems designers alike are challenged to harness the potential of
innovative devices for the design and application of effective
reconfiguration strategies.  This goal requires design tools based on
robust, formal descriptions of the concepts underlying reconfiguration
in
order to gain independence from the frequently changing properties of
commercially available devices.  An appropriate combination of knowledge

about the foundations of dynamic reconfiguration, the various models of
reconfigurable computing, efficient algorithms, and the tools to support
the
design and implementation of run-time reconfigurable systems is
required.
RAW 2002 aims to provide a forum for creative and productive interaction

between these disciplines.

Topics of Interest:

Authors are invited to submit manuscripts of original unpublished
research
in all areas of run-time reconfiguration (foundations, devices, systems,

algorithms, software tools, and applications). The topics of interest
include, but are not limited to:


Reconfigurable Computing    Systems & Applications   Tools

 * Models (R-Mesh,                * Devices and                      *
High level design
    Optical models,
reconfiguration                    methods
    etc.)
techniques                       * Compilation
 * RTR architectures               * Dynamic instruction
techniques
 * Algorithmic                               set
architectures              * Virtual machine
    techniques                              * Adaptive
and                        support
 * Bounds and                               evolvable hardware       *
Methodologies and
    complexity issues                 * Wireless
and                         tools
 * Mapping parallel                     distributed systems
    algorithms                              * Mobile circuitry
 * Fault tolerance                     * Systems support
 * Configurable
    resource management



Submission Guidelines:

Authors should submit an electronic version of their work for review to
Oliver Diessel, University of New South Wales, Australia,
(odiessel@cse.unsw.edu.au).

All manuscripts will be reviewed by at least three members of the
program
committee. Submissions should be a complete manuscript (not to exceed 8
pages of single spaced text, including figures and tables) or, in
special
cases, may be a summary of relevant work. Submissions should be in
Postscript (level 2) format. Authors should make sure that the
submission
can be viewed using ghostscript and will print on a Postscript printer
that
uses standard letter size paper (8.5" x 11"). Submissions must be
received
by October 19, 2001.

IEEE CS Press will publish the IPDPS symposium and workshop abstracts as
a
printed volume. The complete symposium and workshop proceedings will
also be
published by IEEE CS Press as a CD-ROM disk.



Important Dates:

   * Manuscript due                             October 19, 2001
   * Notification of acceptance/rejection       December 5, 2001
   * Final version due                          January 18, 2002

Organization:

Workshop Chair:  Gordon Brebner, University of Edinburgh (UK)
                     gordon@dcs.ed.ac.uk
Steering Chair:  Viktor K. Prasanna, University of Southern California
(USA)
                     prasanna@ganges.usc.edu
Program Chair:   Oliver Diessel, University of New South Wales
(Australia)
                     odiessel@cse.unsw.edu.au
Publicity Chair: Ramachandran Vaidyanathan, Louisiana State University
(USA)
                     vaidy@ee.lsu.edu


Program Committee:


   * Jeff Arnold, Adaptive Silicon Inc. (USA)
   * Peter Athanas, Virginia Tech (USA)
   * Gordon Brebner, Univ. Edinburgh (UK)
   * Carl Ebeling, Univ. Washington  (USA)
   * Hossam ElGindy, Univ. New South Wales (Australia)
   * Reiner Hartenstein, Univ. Kaiserslautern (Germany)
   * Brad Hutchings, Brigham Young Univ. (USA)
   * Mohammed Khalid, Quickturn Design Systems (USA)
   * Hyoung Joong Kim, Kangwon National Univ. (Korea)
   * Rainer Kress, Infineon Technologies (Germany)
   * Ron Lin, SUNY Geneseo (USA)
   * Wayne Luk, Imperial College  (UK)
   * Patrick Lysaght, Univ. Strathclyde (UK)
   * Margaret Marek-Sadowska, Univ. California, Santa Barbara (USA)
   * Liam Marnane, Univ. College Cork (Ireland)
   * John McHenry, National Security Agency (USA)
   * Alessandro Mei, Univ. Rome "La Sapienza" (Italy)
   * Martin Middendorf, Univ. Karlsruhe (Germany)
   * George Milne, Univ. Western Australia (Australia)
   * Koji Nakano, Japan Advanced Inst. of Science & Tech. (Japan)
   * Bernard Pottier, Univ. Bretagne Occidentale (France)
   * Hartmut Schmeck, Univ. Karlsruhe (Germany)
   * Juergen Teich, Univ. Paderborn (Germany)
   * Jerry Trahan, Louisiana State Univ. (USA)
   * Ramachandran Vaidyanathan, Louisiana State Univ. (USA)
   * Peixin Zhong, Lucent (USA)



            Workshop Web Page: http://www.ee.lsu.edu/vaidy/raw02/





Article: 35173
Subject: Virtex II current consumption
From: Jonas Weiss <jweiss@kontronmedical.ch>
Date: Tue, 25 Sep 2001 08:57:29 +0200
Links: << >>  << T >>  << A >>
Good morning everybody,
I'm developping a PC card with 2x XC2V1000 (optionally XC2V3000) on it.
I extrapolated the results of an old run of XILINXs power estimator
excel sheet which results in a rather high current for the 1.5V core
supply of roughly 16A (8Amps each).
If anybody has experience on powering these devices, could you confirm
such a high current consumption?

Thanks a lot.

Jonas


Article: 35174
Subject: Re: How to fix the hold time violation (clock skew>data skew) in QuartusII
From: "Jean-Baptiste Monnard" <jmonnard@horizon-tech.fr>
Date: Tue, 25 Sep 2001 09:03:31 +0100
Links: << >>  << T >>  << A >>

You should enable the Global Signal option for your clock signals.
You can also insert some buffers in order to add delay in your clock path.

jb

"Ivor" <ivor@icplus.com.tw> a écrit dans le message news:
b60e531a.0109242157.1d326806@posting.google.com...
> Hell all,
>     I got a lot of hold time violations when I finished P&R with
> QuartusII1.1 .
> The major reason to cause so many timing violations is that I have too
> many clocks in this design but APEX20KE series only afford 8 (4
> dedicate clock and 4 global route). I've already tried hard to reduce
> the number of clocks but it's impossible to reduce them less than 8. I
> really need help to resolve this problem.
>
>
> Two methods in ASIC flow will fix hold time violation, but I don't
> know if FPGA tools support these functions.
> 1. Under the ASIC design flow, when there is a hold violation, we can
> add some "delay cells" in the data path to balance the data skew and
> data path delay. Does QuartusII support this function? ( Automatic add
> delay cells in the data path which cause hold time violations. )
>
> 2. Another method in ASIC design flow to avoid hold time violations is
> to set clock uncertainty. Are there any FPGA synthesis tools support
> this feature?
> (Set the clock uncertainty so that the synthesis tool will add delay
> cells in the data path to avoid possible hold time violations)
>
> Any help is greatly appreciated.
>
> Ivor





Site Home   Archive Home   FAQ Home   How to search the Archive   How to Navigate the Archive   
Compare FPGA features and resources   

Threads starting:
1994JulAugSepOctNovDec1994
1995JanFebMarAprMayJunJulAugSepOctNovDec1995
1996JanFebMarAprMayJunJulAugSepOctNovDec1996
1997JanFebMarAprMayJunJulAugSepOctNovDec1997
1998JanFebMarAprMayJunJulAugSepOctNovDec1998
1999JanFebMarAprMayJunJulAugSepOctNovDec1999
2000JanFebMarAprMayJunJulAugSepOctNovDec2000
2001JanFebMarAprMayJunJulAugSepOctNovDec2001
2002JanFebMarAprMayJunJulAugSepOctNovDec2002
2003JanFebMarAprMayJunJulAugSepOctNovDec2003
2004JanFebMarAprMayJunJulAugSepOctNovDec2004
2005JanFebMarAprMayJunJulAugSepOctNovDec2005
2006JanFebMarAprMayJunJulAugSepOctNovDec2006
2007JanFebMarAprMayJunJulAugSepOctNovDec2007
2008JanFebMarAprMayJunJulAugSepOctNovDec2008
2009JanFebMarAprMayJunJulAugSepOctNovDec2009
2010JanFebMarAprMayJunJulAugSepOctNovDec2010
2011JanFebMarAprMayJunJulAugSepOctNovDec2011
2012JanFebMarAprMayJunJulAugSepOctNovDec2012
2013JanFebMarAprMayJunJulAugSepOctNovDec2013
2014JanFebMarAprMayJunJulAugSepOctNovDec2014
2015JanFebMarAprMayJunJulAugSepOctNovDec2015
2016JanFebMarAprMayJunJulAugSepOctNovDec2016
2017JanFebMarAprMayJunJulAugSepOctNovDec2017
2018JanFebMarAprMayJunJulAugSepOctNovDec2018
2019JanFebMarAprMayJunJulAugSepOctNovDec2019
2020JanFebMarAprMay2020

Authors:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Custom Search