Driver to drive?

ItsASecretDummy wrote:
On Thu, 11 Jun 2009 06:50:54 -0700, "JosephKK"<quiettechblue@yahoo.com
wrote:

On Tue, 09 Jun 2009 09:29:22 -0700, Joerg
notthisjoergsch@removethispacbell.net> wrote:

Jim Thompson wrote:
On Tue, 09 Jun 2009 08:31:37 -0700, Joerg
notthisjoergsch@removethispacbell.net> wrote:

Rich Webb wrote:
On Mon, 08 Jun 2009 17:44:12 -0700, Joerg
notthisjoergsch@removethispacbell.net> wrote:

news-support@sbcglobal.net wrote:
Please note that on or around July 15, 2009, AT&T will no longer be
offering access to the Usenet netnews service. If you wish to continue
reading Usenet newsgroups, access is available through third-party
vendors.

Posted only internally to AT&T Usenet Servers.

Just got this little message. The "world delivered" as they say in their
ads, yeah right. Since this affects a large chunk of folks here and some
may miss that little message I thought I better post it. They did not
send it via email, just a small blurb in the NG. Hurumph!

So, where will y'all go now? Guess it's shopping time.
Started from a different ISP (Verizon) but I jumped to APN (from Forte')
a while ago to be able to get usenet access -- and my own files and
filters -- when not logged in through Verizon.

APN is currently reselling EasyNews with a slightly different cost
structure. Been with them a couple of years now, pretty cheap, no
complaints, good retention, lots o' groups.

Thanks, looks like it's this service:

http://www.forteinc.com/main/homepage.php

$3/mo is ok, as long as they don't require the use of Agent. It's
supposedly a good newsreader but I don't want to change more than
needed, using Thunderbird right now. Works fine, gets rid of the Google
spam.
Caution: APN recently went _very_ erratic. APN staff fluffed me off
with, "It's EasyNews' problem", so I dropped them. I'm back to Cox.
Let me know when they get back to stable, and I'll renew ;-)

(I liked them because of full headers, though I have work-arounds now
;-)

Dang! And here I thought I had a solution. Back to square one :-(
I think a lot of news providers are going to be a little unstable for
a while. That is a lot of accounts.

If only as you all find new news provisions, you also chose another
access provider, they would get the message pretty quick.

In many non-city areas that is easier said than done. Here it boils down
to these choices:

A. AT&T, no Usenet starting next month, $25/mo

B. Comcast, Web plus Cable TV (which I do not want), $70/mo, no Usenet
since last years as far as I know.

That's it.

--
Regards, Joerg

http://www.analogconsultants.com/

"gmail" domain blocked because of excessive spam.
Use another domain or send PM.
 
On Thu, 07 May 2009 08:59:02 +0100, Eeyore
<rabbitsfriendsandrelations@hotmail.com> wrote:

lynchaj wrote:

Hi! I don't know if there are any S-100 enthusiasts who are on SED
but on the chance you are here...

Are you serious ? S-100 went out with the ark.

The S-100 bus, IEEE696-1983 (withdrawn), was an early computer bus
designed in 1974
http://en.wikipedia.org/wiki/S-100_bus
Hey, I've got a KIM-1, a KIMSI, and an 8K S100 memory board all in
a box somewhere. I'll pull 'em out someday.

But right now I'm interested in getting this SX-42 going. It'll be
nice when it runs right, but I really want an NC-300, and shudda
bought the one I saw at the hamfest last Saturday.

 
Joerg wrote:
Rich Grise wrote:
On Mon, 15 Jun 2009 15:27:59 -0700, Joerg wrote:
Phil Hobbs wrote:
John Larkin wrote:
Any ideas or recommended references?
Back in the day, you used to be able to get specific crystal
frequencies reasonably inexpensively in small quantities--can you
still?
Yes. Best to ask a ham radio operator who still builds stuff (before
they are extinct ...) for some good hints where to buy.

Decades ago, I read an article on lapping your own crystals, but they
were the ones in the box that you could open and just lift the crystal
out (keeping track of the springs and electrodes, of course. ;-) ).


I still have some of those. Brown bakelite, Philips screws, metal lid.
And yeah, I did lap many crystals back when I was a kid. Never had much
luck with the pencil trick though, didn't hold for long. I found one
could not reliably "unlap" the crystal. Regular crystals were totally
out of budget range.

Somewhere in S.F. there ought to be a shop that can still make custom
crystals. Unless they taxed them all out of the city already.

The outfit we used to deal with was C. R. Snelgrove in Toronto. It cost
about $12 to get a crystal polished to any frequency you liked.

Cheers

Phil Hobbs

--
Dr Philip C D Hobbs
Principal
ElectroOptical Innovations
55 Orchard Rd
Briarcliff Manor NY 10510
845-480-2058
hobbs at electrooptical dot net
http://electrooptical.net
 
On Mon, 15 Jun 2009 19:50:13 -0500, "Tim Williams"
<tmoranwms@charter.net> wrote:

"Jim Thompson" <To-Email-Use-The-Envelope-Icon@My-Web-Site.com> wrote in
message news:vsmd355qall4n9354apdu4vgj9deiravmu@4ax.com...

define trunc(x) { auto s, t; s=scale; scale=0; t=x*1/1; scale=s; return
t;}
t=h=12.2167958;m=0;n=1;c=1;d=0;for (i=0;i<15;++i){
k=trunc(t); if(k>10^10)break;
v=m;m=n;n=v+k*n; v=c;c=d;d=v+k*d;
print n,"/",d,"\t",n/d-h,"\n"; t=1/(t-k);}

For us non-programmers, can you reduce that to understandable
algorithmic steps?

Reduce? Understandable? I thought even obfuscated C was "self commenting"?

Wait, what? That isn't even C. It has to be #define; I don't know what
auto is; none of the variables are initialized to a type; and "print" is
completely undefined (printf???)!

Tim
I thought it was Greek ;-)

...Jim Thompson
--
| James E.Thompson, P.E. | mens |
| Analog Innovations, Inc. | et |
| Analog/Mixed-Signal ASIC's and Discrete Systems | manus |
| Phoenix, Arizona 85048 Skype: Contacts Only | |
| Voice:(480)460-2350 Fax: Available upon request | Brass Rat |
| E-mail Icon at http://www.analog-innovations.com | 1962 |

I love to cook with wine Sometimes I even put it in the food
 
On Mon, 15 Jun 2009 21:27:42 -0400, the renowned Phil Hobbs
<pcdhSpamMeSenseless@electrooptical.net> wrote:

Joerg wrote:
Rich Grise wrote:
On Mon, 15 Jun 2009 15:27:59 -0700, Joerg wrote:
Phil Hobbs wrote:
John Larkin wrote:
Any ideas or recommended references?
Back in the day, you used to be able to get specific crystal
frequencies reasonably inexpensively in small quantities--can you
still?
Yes. Best to ask a ham radio operator who still builds stuff (before
they are extinct ...) for some good hints where to buy.

Decades ago, I read an article on lapping your own crystals, but they
were the ones in the box that you could open and just lift the crystal
out (keeping track of the springs and electrodes, of course. ;-) ).


I still have some of those. Brown bakelite, Philips screws, metal lid.
And yeah, I did lap many crystals back when I was a kid. Never had much
luck with the pencil trick though, didn't hold for long. I found one
could not reliably "unlap" the crystal. Regular crystals were totally
out of budget range.

Somewhere in S.F. there ought to be a shop that can still make custom
crystals. Unless they taxed them all out of the city already.

The outfit we used to deal with was C. R. Snelgrove in Toronto. It cost
about $12 to get a crystal polished to any frequency you liked.

Cheers

Phil Hobbs
They still around? I went to an auction of a crystal manufacturer
somewhere in the GTA around 11 years ago-- can't remember the name.
They had a big lapping machine about the size of a high school
"birdbath" as well as hard vac deposition equipment.


Best regards,
Spehro Pefhany
--
"it's the network..." "The Journey is the reward"
speff@interlog.com Info for manufacturers: http://www.trexon.com
Embedded software/hardware/analog Info for designers: http://www.speff.com
 
On Mon, 15 Jun 2009 10:58:23 -0700 (PDT), Leon
<leon355@btinternet.com> wrote:

On 15 June, 17:03, John Larkin
jjlar...@highNOTlandTHIStechnologyPART.com> wrote:
Suppose I really want a crystal oscillator at, say, 122.167958 MHz.
And I'd like to have the option of phase locking it to some standard
reference, 5 or 10 MHz maybe. And I'd like cheap ones for low-end
products, and TCXO or OCXO stability for better versions.

I can have custom XOs and TCXOs and OCXOs made at great expense. Or I
can lock a VCO to a standard, stock 10 MHz rock.

So what's a good way to do the frequency shift? If we start with a VCO
that's in the 122... ballpark, we could build a DDS that generates 10
MHz from it, sinewave lookup, dac, lowpass filter, and phase detect
the nominal 10 MHz result against the reference 10M and close that
loop. That should work, but is a bit of a hassle.

If we sart to leave out parts, I assume phase noise and such will pile
up.

Any ideas or recommended references?

John

Have a look at the Si570.

Leon
The Si550 looks cool. It's a VCXO that can be factory-set to (they are
a bit vague) some sliver of a PPM of any target frequency.

If we run open-loop, we can just FPGA-fake a delta-sigma dac into the
VCO pin and set it close. When the customer gives us an external 10
MHz reference, we can DDS a local 10 MHz, based on the 122... MHz
clock, phase-detect the two 10 MHz things, and close the loop into the
VCO input. Turns out that doing that *exactly* hits our target
frequency. As in "duh!"

It looks like we can just use the MSB of the 10 MHz DDS phase
accumulator as one PLL input... no sine lookups/dacs/filters. It
jitters about 8 ns p-p, but because the pull range of the VCXO is so
small, we can loop-filter the heck out of it to keep the phase noise
down. We wouldn't have gotten away with that using a regular VCO that
had a much bigger Kvco factor.

John
 
Spehro Pefhany wrote:
On Mon, 15 Jun 2009 21:27:42 -0400, the renowned Phil Hobbs
pcdhSpamMeSenseless@electrooptical.net> wrote:

Joerg wrote:
Rich Grise wrote:
On Mon, 15 Jun 2009 15:27:59 -0700, Joerg wrote:
Phil Hobbs wrote:
John Larkin wrote:
Any ideas or recommended references?
Back in the day, you used to be able to get specific crystal
frequencies reasonably inexpensively in small quantities--can you
still?
Yes. Best to ask a ham radio operator who still builds stuff (before
they are extinct ...) for some good hints where to buy.

Decades ago, I read an article on lapping your own crystals, but they
were the ones in the box that you could open and just lift the crystal
out (keeping track of the springs and electrodes, of course. ;-) ).

I still have some of those. Brown bakelite, Philips screws, metal lid.
And yeah, I did lap many crystals back when I was a kid. Never had much
luck with the pencil trick though, didn't hold for long. I found one
could not reliably "unlap" the crystal. Regular crystals were totally
out of budget range.

Somewhere in S.F. there ought to be a shop that can still make custom
crystals. Unless they taxed them all out of the city already.

The outfit we used to deal with was C. R. Snelgrove in Toronto. It cost
about $12 to get a crystal polished to any frequency you liked.

Cheers

Phil Hobbs

They still around? I went to an auction of a crystal manufacturer
somewhere in the GTA around 11 years ago-- can't remember the name.
They had a big lapping machine about the size of a high school
"birdbath" as well as hard vac deposition equipment.
I searched for them this evening, and couldn't find them. Pity--they
were a really great outfit. I used to get 5 ppm crystals in the 100 MHz
range from them when I was a satcom designer (about 1982).

Cheers,

Phil Hobbs
 
On Mon, 15 Jun 2009 16:40:30 -0700, Jim Thompson
<To-Email-Use-The-Envelope-Icon@My-Web-Site.com> wrote:

On Mon, 15 Jun 2009 15:17:23 -0500, James Waldby <no@no.no> wrote:

On Mon, 15 Jun 2009 13:56:50 -0400, Phil Hobbs wrote:
Tim Wescott wrote:
On Mon, 15 Jun 2009 13:05:24 -0400, Phil Hobbs wrote:
Tim Wescott wrote:
...
4: Find some pair of integers whose ratio is close enough to
12.2167958 to be well within your tolerance budget, and use them for
your two dividers. You can usually get astonishingly close with just
the right pair of integers -- for example, 88303 / 7228 gets you to
less than 1PPB error with a 1kHz reference -- and you aren't going to
achieve 1PPB with your 10MHz reference unless it's way more expensive
than a VXCO.
That's a good trick--like the approximation pi ~ 355/113.

Anytime you need to approximate some precise number it's a good trick.
I don't know of any way to find a "good" pair of numbers other than an
exhaustive search, but with today's tools that search is pretty easy.

Yes, one would be unlikely to want to go beyond, say, 10**5, and it's
only a 1-D search. Even searching up to 10**10 would probably be faster
than coding a more efficient algorithm.

88303 / 7228 is the 9th continued-fraction rational approximation to
12.2167958, much as 355/113 is the 4th such for pi. Continued-fraction
rational approximations take a few microseconds to compute. See eg
http://en.wikipedia.org/wiki/Continued_fraction#Best_rational_approximations

Here is some bc code that shows the first 14 c-f-r-a's of 12.2167958:
(Eg, the 6th c-f-r-a of 12.2167958 is 6255/512)

define trunc(x) { auto s, t; s=scale; scale=0; t=x*1/1; scale=s; return t;}
t=h=12.2167958;m=0;n=1;c=1;d=0;for (i=0;i<15;++i){
k=trunc(t); if(k>10^10)break;
v=m;m=n;n=v+k*n; v=c;c=d;d=v+k*d;
print n,"/",d,"\t",n/d-h,"\n"; t=1/(t-k);}

For us non-programmers, can you reduce that to understandable
algorithmic steps?
First, you may want to read this paper:

http://www.math.hmc.edu/~benjamin/papers/ccf.pdf

On the last page they define two recurrences, P(n) and Q(n), which are
mimicked in the code as 'n' and 'd'. The difference is that the above
authors permit a value other than 1 for the series b(n), while the
code assumes that b(n)=1 for all n.

The code includes two basic parts. One to calculate successive
continued fraction terms. The other is to follow the recurrences
mentioned in the above paper in order to produce a continued fraction
from the terms as they are generated in succession.

The first part is very easy to follow. Take your value, get the
integer part of it, write that down as the next entry in a list of
integers, then divide 1 by just the fractional part and replace the
current number with that. Repeat as long as you like. For example,
the value 2.45; write down 2 as the first value in the list, then
divide 1 by .45 getting 2.2222222..., then write down 2 as the second
entry in the list and divide 1 by .22222.... getting 4.5, then write
down 4 as the third entry in the list, then divide 1 by .5 getting 2.
Write down 2. That's it. The continued fraction is [2;2,4,2], which
means 2+(1/(2+1/(4+1/2))), or 2.45.

The second part of the code keeps track of P(n) and Q(n), such that at
any n the resulting fraction is P(n)/Q(n). From the cited paper, you
find that the two recurrences are P(n)=a(n)*P(n-1)+b(n)*P(n-2) and
Q(n)=a(n)*Q(n-1)+b(n)*Q(n-2), where P(0)=a(0), P(1)=a(1)*a(0)+b(1),
Q(0)=1, and Q(1)=a(1). The recurrences are the same except for the
starting point values.

In the program, b(n)=1 for all n, so keep that in mind. Also, they
don't want two starting conditions that depend on already knowing some
of the continued fraction terms (for each recurrence.) They prefer to
take one step further back and define things this way: P(-2)=0,
P(-1)=1, allowing the general recurrence of P(n)=a(n)*P(n-1)+P(n-2) to
yield the P(0)=a(0) and P(1)=a(1)*a(0)+1 that the paper discusses from
those prior values. Similarly, Q(-2)=1, Q(-1)=0, allowing then the
general recurrence of Q(n)=a(n)*Q(n-1)+Q(n-2) to yield the Q(0)=1 and
Q(1)=a(1) that the paper discusses.

The code "says:"

1: m=0; ' P(-2)
2: n=1; ' P(-1)
3: c=1; ' Q(-2)
4: d=0; ' Q(-1)
5: for (i=0;i<15;++i) { ' Perform a loop until useful digits expire
6: a(n) = trunc(t) ' generate a(n)
7: if (k>10^10) break;
8: v=m; ' P(n-2)= P(n-1)
9: m=n; ' P(n-1)= P(n)
10: n=v+k*n; ' P(n) = P(n-2) + a(n) * P(n-1)
11: v=c; ' Q(n-2)= Q(n-1)
12: c=d; ' Q(n-1)= Q(n)
13: d=v+k*d; ' Q(n) = Q(n-2) + a(n) * Q(n-1)
14: print n,"/",d,"\t",n/d-h,"\n";
15: t=1/(t-k) ' next iteration with t=1/(t-a(n))
16: }

Lines 6 and 15 are the two lines generating a(n) and belong to the
first part of the algorithm I described. Lines 8 to 13 belong to the
second part of the algorithm, as discussed in the paper, and depends
on the generation of successive a(n) values by the first part of the
algorithm. Obviously, line 14 is for displaying the fraction and, it
appears, an error value ('h' holds the actual number, forever.)

Good numerical methods experience should include a solid grounding in
recurrences and generating functions. I'd heartily recommend
"Concrete Mathematics" as an excellent segue.

I hadn't ever seen this application of recurrences to continued
fractions before, but seeing the code it was obvious that a recurrence
relation was being applied and it was then not difficult to find a
paper discussing it. It's application to understanding the code was
then instantly obvious.

Jon
 
On Mon, 15 Jun 2009 16:40:30 -0700, Jim Thompson wrote:
On Mon, 15 Jun 2009 15:17:23 -0500, James Waldby <no@no.no> wrote:
On Mon, 15 Jun 2009 13:56:50 -0400, Phil Hobbs wrote:
Tim Wescott wrote:
On Mon, 15 Jun 2009 13:05:24 -0400, Phil Hobbs wrote:
Tim Wescott wrote:
...
4: Find some pair of integers whose ratio is close enough to
12.2167958 to be well within your tolerance budget, and use them
for your two dividers. You can usually get astonishingly close
with just the right pair of integers -- for example, 88303 / 7228
gets you to less than 1PPB error with a 1kHz reference -- and you
aren't going to achieve 1PPB with your 10MHz reference unless it's
way more expensive than a VXCO.
That's a good trick--like the approximation pi ~ 355/113.

Anytime you need to approximate some precise number it's a good
trick. I don't know of any way to find a "good" pair of numbers other
than an exhaustive search, but with today's tools that search is
pretty easy.

Yes, one would be unlikely to want to go beyond, say, 10**5, and it's
only a 1-D search. Even searching up to 10**10 would probably be
faster than coding a more efficient algorithm.

88303 / 7228 is the 9th continued-fraction rational approximation to
12.2167958, much as 355/113 is the 4th such for pi. Continued-fraction
rational approximations take a few microseconds to compute. See eg
http://en.wikipedia.org/wiki/Continued_fraction#Best_rational_approximations

Here is some bc code that shows the first 14 c-f-r-a's of 12.2167958:
(Eg, the 6th c-f-r-a of 12.2167958 is 6255/512)

define trunc(x) { auto s, t; s=scale; scale=0; t=x*1/1; scale=s; return
t;} t=h=12.2167958;m=0;n=1;c=1;d=0;for (i=0;i<15;++i){
k=trunc(t); if(k>10^10)break;
v=m;m=n;n=v+k*n; v=c;c=d;d=v+k*d;
print n,"/",d,"\t",n/d-h,"\n"; t=1/(t-k);}

For us non-programmers, can you reduce that to understandable
algorithmic steps?
I don't know enough to be able to do so, but won't let that stop me
from giving some general-idea comments after the C procedure below.
For more precise information, see the "Calculating continued fraction
representations" and "Theorem 1" sections earlier in the wikipedia
page, and reference mentioned in Jon Kirwan's post. (If interested
in more info about the bc indefinite-precision calculator, see eg
<http://www.gnu.org/software/bc/manual/html_mono/bc.html>.) Jon's
detailed exposition of the bc program looks good! C version follows,
then my general-idea comments and an example.

// Display up to 'a' terms of continued fraction convergents of 'h'
// Doesn't check for integer overflow and its zero check is flimsy.
void showConv (double h, int a) {
int c=1, d=0, i, k, m=0, n=1, v;
double t=h;

for (i=0; i<a; ++i) {
k = floor(t);
v=m; m=n; n=v+k*n;
v=c; c=d; d=v+k*d;
t = t - k;
printf ("%9d/%-9d %3d %16.13f %16.13f\n", n, d, k, t, (d*h-n)/d);
if (t < 1e-6) break; // Easily-broken zero check
t=1/t;
}
}

Anyway, the general idea of continued-fraction rational-approximation
for some fraction h is to repeatedly find an integer that accounts
for most of the difference between h and the previous convergent.
That integer is the integer part of 1/t, where t is the fractional
part of the previous value of t. The variables c and m in the
programs are used to keep track of previous n and d values for
computing values of successive convergents, per Theorem 1 which
justifies the calculations, although it doesn't make them obvious.

Here's an example with h=3.4567, where the program's numeric output is:
n/d k t h - n/d
3/1 3 0.4567000000000 0.4567000000000
7/2 2 0.1896211955332 -0.0433000000000
38/11 5 0.2736720554273 0.0021545454545
121/35 3 0.6540084388183 -0.0004428571429
159/46 1 0.5290322580651 0.0001782608696
280/81 1 0.8902439024371 -0.0000901234568
439/127 1 0.1232876712354 0.0000070866142
3792/1097 8 0.1111111109480 -0.0000000911577
34567/10000 9 0.0000000132091 0.0000000000000

This means that the continued fraction for h= 3.4567 is
[3; 2, 5, 3, 1, 1, 1, 8, 9], (from the k column) which stands for
3 + 1/(2 + 1/(5 + 1/(3 + 1/(1 + 1/(1 + 1/(1 + 1/(8 + 1/9)))))))

The first convergent is 3, which is 0.4567 too small;
second, 3 + 1/(2) = 7/2, which is 0.0433 too big;
third, 3 + 1/(2 + 1/5) = 38/11, which is 0.00215... too small;
fourth, 3 + 1/(2 + 1/(5 + 1/(3))) = 121/35, etc, with signs
of h - n/d alternating per Theorem 3 of wikipedia page.

When the program computes 121/35 after 7/2 and 38/11, it has
m=7, n=38, c=2, d=11, and k=3. 121/35 = (7+3*38) / (2+3*11).

--
jiw
 
On Jun 16, 12:03 am, John Larkin
<jjlar...@highNOTlandTHIStechnologyPART.com> wrote:
Suppose I really want a crystal oscillator at, say, 122.167958 MHz.
And I'd like to have the option of phase locking it to some standard
reference, 5 or 10 MHz maybe. And I'd like cheap ones for low-end
products, and TCXO or OCXO stability for better versions.
Is 122.167958 the real number?

An old trick is based on dividing by two numbers and then mixing

1/N - 1/M = (M-N) / (N*M)

example:

1/7 - 1/11 = (11-7) / (11*7) = 4/77

This lets you get from one frequency to another without really taking
the trip all the way down to 1/77th the frequency.
 
Abbey Somebody wrote:
On Thu, 14 May 2009 13:01:48 -0700, Jim Thompson
To-Email-Use-The-Envelope-Icon@My-Web-Site.com> wrote:

Sent! Don't share with any untrustworthy types ;-)

...Jim Thompson

Worried about 'sharing' your filter list? What a fucking idiot!
/24.

*snicker*

--
W
. | ,. w , "Some people are alive only because
\|/ \|/ it is illegal to kill them." Perna condita delenda est
---^----^---------------------------------------------------------------
 
Joerg <notthisjoergsch@removethispacbell.net> wrote:
Phil Hobbs wrote:
John Larkin wrote:
Suppose I really want a crystal oscillator at, say, 122.167958 MHz.
And I'd like to have the option of phase locking it to some standard
reference, 5 or 10 MHz maybe. And I'd like cheap ones for low-end
products, and TCXO or OCXO stability for better versions.

I can have custom XOs and TCXOs and OCXOs made at great expense. Or I
can lock a VCO to a standard, stock 10 MHz rock.

So what's a good way to do the frequency shift? If we start with a VCO
that's in the 122... ballpark, we could build a DDS that generates 10
MHz from it, sinewave lookup, dac, lowpass filter, and phase detect
the nominal 10 MHz result against the reference 10M and close that
loop. That should work, but is a bit of a hassle.

If we sart to leave out parts, I assume phase noise and such will pile
up.

Any ideas or recommended references?

John


Back in the day, you used to be able to get specific crystal frequencies
reasonably inexpensively in small quantities--can you still?


Yes. Best to ask a ham radio operator who still builds stuff (before
they are extinct ...) for some good hints where to buy.

Well, over here in good'ol Germany, i can order custom-made crystals for
IMHO reasonable 21 to ~50€ depending on frequency and specials (short
case, 10ppm, oven stuff). So given standard specs would suffice (i.e.
20ppm, 122.167958 MHz, HC25 case) would go for 21€ plus shipping and
handling (6€ to Germany, 9,50€ international). That would be about
USD 42.50 based on todays exchange rate. Fairly reasonable for a single
custom-made crystal IMHO.
Supplier would be Germany-based company "Andy's Funkladen",
www.andyquarz.de. Unfortunately, i haven't found an english website of
them though.

HTH,
Florian
 
On Tue, 16 Jun 2009 02:25:27 +0100, Nobody wrote:

On Mon, 15 Jun 2009 19:50:13 -0500, Tim Williams wrote:

define trunc(x) { auto s, t; s=scale; scale=0; t=x*1/1; scale=s;
return t;}
t=h=12.2167958;m=0;n=1;c=1;d=0;for (i=0;i<15;++i){
k=trunc(t); if(k>10^10)break;
v=m;m=n;n=v+k*n; v=c;c=d;d=v+k*d;
print n,"/",d,"\t",n/d-h,"\n"; t=1/(t-k);}

For us non-programmers, can you reduce that to understandable
algorithmic steps?

Reduce? Understandable? I thought even obfuscated C was "self
commenting"?

Wait, what? That isn't even C. It has to be #define; I don't know
what auto is;

Er, C has "auto", although it's seldom seen in the wild (any local
variable not declared "static" is implicitly "auto", so there isn't much
point in using it explicitly).
Or 'extern'. Defining a variable's storage class as 'auto' means "do
whatever you normally do", which is pretty darn redundant.

--
www.wescottdesign.com
 
Think I'm going to do it like this. That inductor kind of bothers me
though.

http://webpages.charter.net/dawill/Images/Small_2.gif

Tim

--
Deep Friar: a very philosophical monk.
Website: http://webpages.charter.net/dawill/tmoranwms

"Tim Williams" <tmoranwms@charter.net> wrote in message
news:MBuZl.25103$IP7.5816@newsfe23.iad...
I've tried various methods over the years to drive gate drive transformers
with a positive-zero-negative-zero waveform. None of them are very
good...

For instance, I did this oh about 4 years ago:
http://webpages.charter.net/dawill/Images/H%20Bridge%20Transformer%20Driver%202.gif
Simple, but needs bipolar supplies.
About 2 years ago:
http://webpages.charter.net/dawill/Images/H%20Bridge%20Transformer%20Driver.gif
Good performance when the snubber's current is continuous. Tedious.
This morning:
http://webpages.charter.net/dawill/Images/H%20Bridge%20Transformer%20Driver%203.gif
(A and B are open collector outputs.) Current sources stabilize output
fairly well, but double followers make sucky offset when current reverses
(~2.4V!).

The common problem in all three is getting a TL494 or etc. to drive
MOSFETs. It'd be so much nicer if they had a complementary bipolar, or
better yet FET, output (ala SG3525 (almost) or UC3842).

What do you do to drive a GDT?

Tim

--
Deep Friar: a very philosophical monk.
Website: http://webpages.charter.net/dawill/tmoranwms
 
On Mon, 15 Jun 2009 21:11:36 -0700 (PDT), MooseFET
<kensmith@rahul.net> wrote:

On Jun 16, 12:03 am, John Larkin
jjlar...@highNOTlandTHIStechnologyPART.com> wrote:
Suppose I really want a crystal oscillator at, say, 122.167958 MHz.
And I'd like to have the option of phase locking it to some standard
reference, 5 or 10 MHz maybe. And I'd like cheap ones for low-end
products, and TCXO or OCXO stability for better versions.

Is 122.167958 the real number?
It's actually 2^40/9000.

We want to make a multi-channel DDS synthesizer that has precisely 1
mHz resolution, and a clock in the ballpark of 125 MHz.

If you do it the obvious way, phase accum lsb = 0.001 Hz, the clock
has to be 2^N/1000, candidates being 137.438... and 68.719... MHz,
neither acceptable. So some brilliant engineer observed that the phase
accum input need not be "1" at 1 mHz, it could be any small integer. A
bit of poking came up with "9", which resulted in the target
frequency.

So the problem became how to generate that weird clock without
grinding custom quartz (for, potentially, both cheap XOs and optional
OCXOs) and how to lock it *precisely* to an external 10 MHz reference.

So if we use the SiLabs VCXO, we can have a nominal osc frequency
close on-target. Then we can build a ninth DDS channel, program it to
make 10 MHz, and close a loop on that, against an external input or a
local 10 MHz OCXO. Since the extra channel is programmed to and locked
to 10 MHz, obviously (as pointed out by a different brilliant
engineer) any other channel can be programmed to make precisely 10 MHz
too, and all are settable to exactly 1 mHz resolution, namely DDS
settings that are multiples of 9.

It's one of those things that starts complicated and simplifies itself
later on. Practically everything winds up inside the FPGA where it
belongs.

John
 
On Tue, 16 Jun 2009 04:13:42 GMT, Jon Kirwan
<jonk@infinitefactors.org> wrote:

On Mon, 15 Jun 2009 16:40:30 -0700, Jim Thompson
To-Email-Use-The-Envelope-Icon@My-Web-Site.com> wrote:

On Mon, 15 Jun 2009 15:17:23 -0500, James Waldby <no@no.no> wrote:

On Mon, 15 Jun 2009 13:56:50 -0400, Phil Hobbs wrote:
Tim Wescott wrote:
On Mon, 15 Jun 2009 13:05:24 -0400, Phil Hobbs wrote:
Tim Wescott wrote:
...
4: Find some pair of integers whose ratio is close enough to
12.2167958 to be well within your tolerance budget, and use them for
your two dividers. You can usually get astonishingly close with just
the right pair of integers -- for example, 88303 / 7228 gets you to
less than 1PPB error with a 1kHz reference -- and you aren't going to
achieve 1PPB with your 10MHz reference unless it's way more expensive
than a VXCO.
That's a good trick--like the approximation pi ~ 355/113.

Anytime you need to approximate some precise number it's a good trick.
I don't know of any way to find a "good" pair of numbers other than an
exhaustive search, but with today's tools that search is pretty easy.

Yes, one would be unlikely to want to go beyond, say, 10**5, and it's
only a 1-D search. Even searching up to 10**10 would probably be faster
than coding a more efficient algorithm.

88303 / 7228 is the 9th continued-fraction rational approximation to
12.2167958, much as 355/113 is the 4th such for pi. Continued-fraction
rational approximations take a few microseconds to compute. See eg
http://en.wikipedia.org/wiki/Continued_fraction#Best_rational_approximations

Here is some bc code that shows the first 14 c-f-r-a's of 12.2167958:
(Eg, the 6th c-f-r-a of 12.2167958 is 6255/512)

define trunc(x) { auto s, t; s=scale; scale=0; t=x*1/1; scale=s; return t;}
t=h=12.2167958;m=0;n=1;c=1;d=0;for (i=0;i<15;++i){
k=trunc(t); if(k>10^10)break;
v=m;m=n;n=v+k*n; v=c;c=d;d=v+k*d;
print n,"/",d,"\t",n/d-h,"\n"; t=1/(t-k);}

For us non-programmers, can you reduce that to understandable
algorithmic steps?

First, you may want to read this paper:

http://www.math.hmc.edu/~benjamin/papers/ccf.pdf

On the last page they define two recurrences, P(n) and Q(n), which are
mimicked in the code as 'n' and 'd'. The difference is that the above
authors permit a value other than 1 for the series b(n), while the
code assumes that b(n)=1 for all n.

The code includes two basic parts. One to calculate successive
continued fraction terms. The other is to follow the recurrences
mentioned in the above paper in order to produce a continued fraction
from the terms as they are generated in succession.

The first part is very easy to follow. Take your value, get the
integer part of it, write that down as the next entry in a list of
integers, then divide 1 by just the fractional part and replace the
current number with that. Repeat as long as you like. For example,
the value 2.45; write down 2 as the first value in the list, then
divide 1 by .45 getting 2.2222222..., then write down 2 as the second
entry in the list and divide 1 by .22222.... getting 4.5, then write
down 4 as the third entry in the list, then divide 1 by .5 getting 2.
Write down 2. That's it. The continued fraction is [2;2,4,2], which
means 2+(1/(2+1/(4+1/2))), or 2.45.

The second part of the code keeps track of P(n) and Q(n), such that at
any n the resulting fraction is P(n)/Q(n). From the cited paper, you
find that the two recurrences are P(n)=a(n)*P(n-1)+b(n)*P(n-2) and
Q(n)=a(n)*Q(n-1)+b(n)*Q(n-2), where P(0)=a(0), P(1)=a(1)*a(0)+b(1),
Q(0)=1, and Q(1)=a(1). The recurrences are the same except for the
starting point values.

In the program, b(n)=1 for all n, so keep that in mind. Also, they
don't want two starting conditions that depend on already knowing some
of the continued fraction terms (for each recurrence.) They prefer to
take one step further back and define things this way: P(-2)=0,
P(-1)=1, allowing the general recurrence of P(n)=a(n)*P(n-1)+P(n-2) to
yield the P(0)=a(0) and P(1)=a(1)*a(0)+1 that the paper discusses from
those prior values. Similarly, Q(-2)=1, Q(-1)=0, allowing then the
general recurrence of Q(n)=a(n)*Q(n-1)+Q(n-2) to yield the Q(0)=1 and
Q(1)=a(1) that the paper discusses.

The code "says:"

1: m=0; ' P(-2)
2: n=1; ' P(-1)
3: c=1; ' Q(-2)
4: d=0; ' Q(-1)
5: for (i=0;i<15;++i) { ' Perform a loop until useful digits expire
6: a(n) = trunc(t) ' generate a(n)
7: if (k>10^10) break;
8: v=m; ' P(n-2)= P(n-1)
9: m=n; ' P(n-1)= P(n)
10: n=v+k*n; ' P(n) = P(n-2) + a(n) * P(n-1)
11: v=c; ' Q(n-2)= Q(n-1)
12: c=d; ' Q(n-1)= Q(n)
13: d=v+k*d; ' Q(n) = Q(n-2) + a(n) * Q(n-1)
14: print n,"/",d,"\t",n/d-h,"\n";
15: t=1/(t-k) ' next iteration with t=1/(t-a(n))
16: }

Lines 6 and 15 are the two lines generating a(n) and belong to the
first part of the algorithm I described. Lines 8 to 13 belong to the
second part of the algorithm, as discussed in the paper, and depends
on the generation of successive a(n) values by the first part of the
algorithm. Obviously, line 14 is for displaying the fraction and, it
appears, an error value ('h' holds the actual number, forever.)

Good numerical methods experience should include a solid grounding in
recurrences and generating functions. I'd heartily recommend
"Concrete Mathematics" as an excellent segue.

I hadn't ever seen this application of recurrences to continued
fractions before, but seeing the code it was obvious that a recurrence
relation was being applied and it was then not difficult to find a
paper discussing it. It's application to understanding the code was
then instantly obvious.

Jon
Cool, but sometimes it's easier to write a brute-force Basic program
with a few intelligent constraints, and run it for a few minutes or
hours. Most real problems won't have to run for days or centuries.

John
 
On Tue, 16 Jun 2009 08:38:49 -0700, John Larkin wrote:

On Mon, 15 Jun 2009 21:11:36 -0700 (PDT), MooseFET <kensmith@rahul.net
wrote:

On Jun 16, 12:03 am, John Larkin
jjlar...@highNOTlandTHIStechnologyPART.com> wrote:
Suppose I really want a crystal oscillator at, say, 122.167958 MHz.
And I'd like to have the option of phase locking it to some standard
reference, 5 or 10 MHz maybe. And I'd like cheap ones for low-end
products, and TCXO or OCXO stability for better versions.

Is 122.167958 the real number?

It's actually 2^40/9000.

We want to make a multi-channel DDS synthesizer that has precisely 1 mHz
resolution, and a clock in the ballpark of 125 MHz.

If you do it the obvious way, phase accum lsb = 0.001 Hz, the clock has
to be 2^N/1000, candidates being 137.438... and 68.719... MHz, neither
acceptable. So some brilliant engineer observed that the phase accum
input need not be "1" at 1 mHz, it could be any small integer. A bit of
poking came up with "9", which resulted in the target frequency.

So the problem became how to generate that weird clock without grinding
custom quartz (for, potentially, both cheap XOs and optional OCXOs) and
how to lock it *precisely* to an external 10 MHz reference.

So if we use the SiLabs VCXO, we can have a nominal osc frequency close
on-target. Then we can build a ninth DDS channel, program it to make 10
MHz, and close a loop on that, against an external input or a local 10
MHz OCXO. Since the extra channel is programmed to and locked to 10 MHz,
obviously (as pointed out by a different brilliant engineer) any other
channel can be programmed to make precisely 10 MHz too, and all are
settable to exactly 1 mHz resolution, namely DDS settings that are
multiples of 9.

It's one of those things that starts complicated and simplifies itself
later on. Practically everything winds up inside the FPGA where it
belongs.

John
Why didn't you _say_ so?

If you use a 128MHz time base, and implement each adder as a mod 5^9
stage (or nine mod 5 stages) followed by a mod 2^18 stage, then you'll
have plenty of binary bits to feed your lookup table, and you'll be able
to divide the clock down with nice even numbers of mHz.

(not to mention a fun job building the adder so that it meets timing --
that's left as an exercise to the reader).

Figuring the increment will be odd, but that's what software is for.

If you're only going to use nine bits into your look up table, you can
have 9 digits of BCD with nine bits of straight binary on top, which
might make the adder easier.

--
www.wescottdesign.com
 
On Tue, 16 Jun 2009 11:28:58 -0500, Tim Wescott <tim@seemywebsite.com>
wrote:

On Tue, 16 Jun 2009 08:38:49 -0700, John Larkin wrote:

On Mon, 15 Jun 2009 21:11:36 -0700 (PDT), MooseFET <kensmith@rahul.net
wrote:

On Jun 16, 12:03 am, John Larkin
jjlar...@highNOTlandTHIStechnologyPART.com> wrote:
Suppose I really want a crystal oscillator at, say, 122.167958 MHz.
And I'd like to have the option of phase locking it to some standard
reference, 5 or 10 MHz maybe. And I'd like cheap ones for low-end
products, and TCXO or OCXO stability for better versions.

Is 122.167958 the real number?

It's actually 2^40/9000.

We want to make a multi-channel DDS synthesizer that has precisely 1 mHz
resolution, and a clock in the ballpark of 125 MHz.

If you do it the obvious way, phase accum lsb = 0.001 Hz, the clock has
to be 2^N/1000, candidates being 137.438... and 68.719... MHz, neither
acceptable. So some brilliant engineer observed that the phase accum
input need not be "1" at 1 mHz, it could be any small integer. A bit of
poking came up with "9", which resulted in the target frequency.

So the problem became how to generate that weird clock without grinding
custom quartz (for, potentially, both cheap XOs and optional OCXOs) and
how to lock it *precisely* to an external 10 MHz reference.

So if we use the SiLabs VCXO, we can have a nominal osc frequency close
on-target. Then we can build a ninth DDS channel, program it to make 10
MHz, and close a loop on that, against an external input or a local 10
MHz OCXO. Since the extra channel is programmed to and locked to 10 MHz,
obviously (as pointed out by a different brilliant engineer) any other
channel can be programmed to make precisely 10 MHz too, and all are
settable to exactly 1 mHz resolution, namely DDS settings that are
multiples of 9.

It's one of those things that starts complicated and simplifies itself
later on. Practically everything winds up inside the FPGA where it
belongs.

John

Why didn't you _say_ so?

If you use a 128MHz time base, and implement each adder as a mod 5^9
stage (or nine mod 5 stages) followed by a mod 2^18 stage, then you'll
have plenty of binary bits to feed your lookup table, and you'll be able
to divide the clock down with nice even numbers of mHz.

(not to mention a fun job building the adder so that it meets timing --
that's left as an exercise to the reader).
We already have a pipelined bidirectional 40-bit DDS design, and it's
really tempting to leave it alone.


Figuring the increment will be odd, but that's what software is for.
But I don't like being assaulted by FPGA designers who are younger and
bigger than I am.

If you're only going to use nine bits into your look up table, you can
have 9 digits of BCD with nine bits of straight binary on top, which
might make the adder easier.
You're talking torches and pitchforks now.

John
 
Florian Teply wrote:
Joerg <notthisjoergsch@removethispacbell.net> wrote:
Phil Hobbs wrote:
John Larkin wrote:
Suppose I really want a crystal oscillator at, say, 122.167958 MHz.
And I'd like to have the option of phase locking it to some standard
reference, 5 or 10 MHz maybe. And I'd like cheap ones for low-end
products, and TCXO or OCXO stability for better versions.

I can have custom XOs and TCXOs and OCXOs made at great expense. Or I
can lock a VCO to a standard, stock 10 MHz rock.

So what's a good way to do the frequency shift? If we start with a VCO
that's in the 122... ballpark, we could build a DDS that generates 10
MHz from it, sinewave lookup, dac, lowpass filter, and phase detect
the nominal 10 MHz result against the reference 10M and close that
loop. That should work, but is a bit of a hassle.

If we sart to leave out parts, I assume phase noise and such will pile
up.

Any ideas or recommended references?

John

Back in the day, you used to be able to get specific crystal frequencies
reasonably inexpensively in small quantities--can you still?

Yes. Best to ask a ham radio operator who still builds stuff (before
they are extinct ...) for some good hints where to buy.

Well, over here in good'ol Germany, i can order custom-made crystals for
IMHO reasonable 21 to ~50€ depending on frequency and specials (short
case, 10ppm, oven stuff). So given standard specs would suffice (i.e.
20ppm, 122.167958 MHz, HC25 case) would go for 21€ plus shipping and
handling (6€ to Germany, 9,50€ international). That would be about
USD 42.50 based on todays exchange rate. Fairly reasonable for a single
custom-made crystal IMHO.
Supplier would be Germany-based company "Andy's Funkladen",
www.andyquarz.de. Unfortunately, i haven't found an english website of
them though.
Back in Germany I've used another outfit that had better pricing. I
believe it was located in the little village of Daun (Eifel Region). But
that was very long ago, always under 20 Deutschmarks. Then some outfits
in the Netherlands with sometimes even better prices, well under 20
Dutch Guilders back then. 1980's.

For super top notch crystals where price was not an objective we used
KVG (Neckarbischoffsheim?).

--
Regards, Joerg

http://www.analogconsultants.com/

"gmail" domain blocked because of excessive spam.
Use another domain or send PM.
 

Welcome to EDABoard.com

Sponsor

Back
Top