Return to BSD News archive
Xref: sserve comp.sys.ibm.pc.hardware:34292 comp.unix.bsd:7042 Newsgroups: comp.sys.ibm.pc.hardware,comp.unix.bsd Path: sserve!manuel.anu.edu.au!munnari.oz.au!spool.mu.edu!sol.ctr.columbia.edu!ira.uka.de!math.fu-berlin.de!informatik.tu-muenchen.de!roell From: roell@informatik.tu-muenchen.de (Thomas Roell) Subject: Re: Question on Diamond Clock Synthesizer In-Reply-To: kenny@osf.org's message of Mon, 19 Oct 1992 15:14:09 GMT References: <1b7tmgINNi06@agate.berkeley.edu> <1992Oct19.082420.16353@Informatik.TU-Muenchen.DE> <1992Oct19.151409.24581@osf.org> Sender: news@Informatik.TU-Muenchen.DE (USENET Newssystem) Organization: Inst. fuer Informatik, Technische Univ. Muenchen, Germany Date: Sat, 24 Oct 1992 18:18:37 GMT Message-ID: <1992Oct24.181837.19994@Informatik.TU-Muenchen.DE> Lines: 182 Ok, folks here are again my basic thoughts. Maybe some people have misread them, or I was simply miswording them: 1) I don not appreaciate in any way that Diamond keeps this thing about the clock propreterian. On the other hand I do respect Diamonds decision to not give the details away to the public. 2) I am opposed to the talk going on about Diamond beeing the bad guys, and everybody else beeing good. I truely believe that STB is giving away the info about the PLL only cause Diamond isn't. Kind of little childs behaviour. But's that's my personal opinion, which might be wrong. I also cannot understand the talk about not buying diamon products. That's rediculus. Just because they didn't give you ALL the details ? Some examples here: - ATI doesn't give you infos about the NON 8514/A registers on their boards, without letting you sign an agreenment. - The i486 has some chiptesting opcodes which you only get under a strict NDA. So what ? Not buying an ATI Ultra cause they didn't pass you every detail ? Gitting rid of your 486 box ? You would say no, and that's just the point. As long as you get all details you have to know for your application, you do not worry about this. In the Diamond case they simply were wrong in assuming nobody would like to know how to programm the pll. Due to that the Diamond products are useless for a certain class of applications. Bad luck. Go and buy the piece of hardware that works for you. But don't start bitching about them and start a campain. That's childish and not appropriate for todays people. 3) I can understand (and do respect Diamonds) descision. Just because the discussion was that one direction, I tried to give you some possible reason that might have lead them to this behaviour: - Technical advantage over competitors - Possible fears of misusing the information, so that HW is damaged due to wrong use. There is a problem of liability. - Frequent changes of the PLL, which is easy for them to handle if they keep the number of people that do have to programm the PLL without BIOS small. I'm not sure whether all these points are justified in the future, since the same PLL is used by other peoples (with a different name) which don't think that this is a tradsecret. 4) I'm no EE person, so I have to believe what engeers are telling me about overheating. I also didn't look that closely at the stuff that Batman wrote (actually it is very discusting that people are posting something without their name). From what I saw, I do believe that these values are wrong, and programm the PLL into an illegal damaging way. Again, I might be wrong, but do you really trust somebody who doesn't even sign his letter ? To clarify some things about this new generation of clock chips here a few points made by some people: - a programmable PLL is just a divider - a programmable PLL just has more clock select signals - all programmable PLLs have builtin features to avoid overheating. I would say most of them are wrong (and due to my experiance I can tell you the last point is certainly wrong). To give people an idea what really happens here, I will give an example, that of the SC11410 (Sierra Semiconductors). Here a short cut from the spec: The oscillator and the VCO output is divided ny M and N integer numbers in the range of 1 and 127. The divided outputs are phase-locked to each other by the PLL circut. The VCO output is divided by the post scaler modulo 'P. The VCO output frequency (CLKOUT) can be calculated by using the following equation: CLKOUT = (N / MP) * Fosc, where: Fosc = Osciallor frequency (normally 14.318MHz) P = 1,2,4,8 M,N = 1 to 127 The cips itself is programmed via a 18bit shift register. I have here some code for you to make it more clearly how to programm that beast. Basically I have there a function that computes the 18bit value and one that deals with downloading the value. Note that this code is actually from the SGCS X386 1.3 server (which by the way does support the Diamond boards) and hence copywrited. So, please competitors, don't use this stuff or even look at it ... /* * SC11410ShiftRegister -- * * Compute the value for the shift register of the SC11410 for a given * oscillator frequency and a desiged output frequency. The values for * n, m, p are so computed that they are relatively prime to each other. */ unsigned long SC11410ShiftRegister(fout, fosc) unsigned long fout; unsigned long fosc; { unsigned int n, m, nout, mout, pout; unsigned long diff, diffout, ftmp; fout /= 1000; fosc /= 1000; nout = n = 2; mout = m = 2; ftmp = (fosc * n) / m; diffout = (fout - ftmp) * (fout - ftmp); while ((n < 128) && (m < 128)) { ftmp = (fosc * n) / m; /* * Only accept new values, if n is no multiple of m and if the new * pair is nearer to the desired frequency than the old pair (this * prevents us implecitely from accepting a new pair which is only * a multiple of the old pair). */ if ((n % m) && (diff = (fout - ftmp) * (fout - ftmp)) < diffout) { nout = n; mout = m; diffout = diff; } if (ftmp > fout) m++; else n++; /* move on into the new direction */ } /* * At least try to make use of the postscaler to optimize for low jitter */ pout = 0; if (fout < 40000) { if (!(mout & 7)) { pout = 3; mout >>= 3; } else if (!(mout & 3)) { pout = 2; mout >>= 2; } else if (!(mout & 1)) { pout = 1; mout >>= 1; } } return (mout << 11) | (nout << 4) | (pout << 1); } And some final things. This SC11410 is not used by Diamond. I used this as an example, cause the principles show up here more clearly. he Diamond PLL is much more complicated to deal with. And there are at least two revs of this chip, which are somewhat different to programm. But I hope that the principles of what we are dealing with are more clearly. And never forget, you could programm 1818 MHZ (!!!!) with that baby. Maybe you'll see some smoke, maybe not. - Thomas -- ------------------------------------------------------------------------------- Das Reh springt hoch, e-mail: roell@sgcs.com das Reh springt weit, #include <sys/pizza.h> was soll es tun, es hat ja Zeit ...