From: Steve Pope on
gretzteam <gretzteam(a)n_o_s_p_a_m.yahoo.com> wrote:

>I believe that a generic NCO is simply this B-bit modulo M counter.

Sorta. To get an exact oscillator frequency with a given master
clock frequency, you cannot always do it quite that simply.
In a more general case you want a counter that is modulo some value
for its MSB's, then binary for its LSB's. Then you can obtain
more oscillator frequencies exactly.

Steve
From: gretzteam on
>gretzteam <gretzteam(a)n_o_s_p_a_m.yahoo.com> wrote:
>
>>I believe that a generic NCO is simply this B-bit modulo M counter.
>
>Sorta. To get an exact oscillator frequency with a given master
>clock frequency, you cannot always do it quite that simply.
>In a more general case you want a counter that is modulo some value
>for its MSB's, then binary for its LSB's. Then you can obtain
>more oscillator frequencies exactly.
>
>Steve
>
Isn't this the same as clocking a normal binary counter using the
'overflow' rate of the NCO?
From: Tim Wescott on
On 05/31/2010 12:42 PM, gretzteam wrote:
>> I would love to see the OP's definition of _his_ NCO. I have seen the
>> term "NCO" to mean a lot of different things,
>> --
>> Tim Wescott
>> Control system and signal processing consulting
>> www.wescottdesign.com
>
> What I meant by NCO was a B-bit counter, modulo M, incrementing by N at
> every clock cycle.
> People use this in a DDS, where the value of the counter is usually
> truncated and used as the address to a look-up table containing one period
> of a sine wave. Usually M is set to 2^B in this application.
>
> In my application, I use it to generate clocks. The 'overflow' rate of the
> NCO can be used to clock a separate counter that generates divided clocks.
>
> I believe that a generic NCO is simply this B-bit modulo M counter. If my
> usage of NCO is incorrect, please let me know!

Not incorrect -- just in need of clarification.

The "DDS" style of NCO works well (and is by far what people usually
mean when they say "NCO"), but gains a lot from the sine lookup -- this
smooths out the inherent 'jagginess' from it's input clock, and
essentially lets it interpolate zero crossing points in an analog system.

When you just use the overflow then you have an unavoidable timing
jitter that usually approaches +/- 1/2 an input clock peak-peak, with an
RMS timing jitter that comes directly from the fact that the timing
error is a sawtooth wave -- if you can stand this in your application,
then you're home free.

--
Tim Wescott
Control system and signal processing consulting
www.wescottdesign.com
From: Tim Wescott on
On 05/31/2010 12:45 PM, Steve Pope wrote:
> Tim Wescott<tim(a)seemywebsite.now> wrote:
>
>> On 05/31/2010 12:35 PM, Steve Pope wrote:
>
>> And yes, jitter usually comes as an RMS value, although many of the
>> really good digital designers that I know want to see it specified as
>> peak-peak, because it's not usually the average error that wreaks havoc
>> in a digital circuit, it's those outliers that cause race conditions
>> that do it.
>
> Yes but... isn't there always some very tiny probability of a really
> large phase excursion? "Peak" quantities can sometimes be
> stated for real (i.e. "peak to average" of a modulated signal
> makes sense), but I'm not sure about "peak" jitter.
>
> S.
Wow. We're spinning off on a tangent, and I think I'm responsible.

Yes, there's always that possibility. If you wanted to be strict about
it you'd have some "peak excursion with so-and-so probability".

What the guys I've worked with are usually trying to guard against is
known but oddball waveforms -- i.e. if the probability density of the
jitter is known to have larger tails than a regular Gaussian, or if the
jitter is more or less deterministic and has a high crest factor, they
want to know about it and design around it.

--
Tim Wescott
Control system and signal processing consulting
www.wescottdesign.com
From: Steve Pope on
gretzteam <gretzteam(a)n_o_s_p_a_m.yahoo.com> wrote:

>>gretzteam <gretzteam(a)n_o_s_p_a_m.yahoo.com> wrote:

>>>I believe that a generic NCO is simply this B-bit modulo M counter.

>>Sorta. To get an exact oscillator frequency with a given master
>>clock frequency, you cannot always do it quite that simply.
>>In a more general case you want a counter that is modulo some value
>>for its MSB's, then binary for its LSB's. Then you can obtain
>>more oscillator frequencies exactly.

>Isn't this the same as clocking a normal binary counter using the
>'overflow' rate of the NCO?

It can be made the same. However, you might find the arithmetic
for computing (or addressing) your sinusoid function (or LUT) simpler
if the modulo counter is organized as I describe.

Or you might not. This is just a possible approach.

Steve