Citat:
Ursprungligen inskrivet av Danlin
Mycket, mycket intressant läsning MBY!
Om MBY varit lärare inom elektronik på högskola/universitet hade jag lätt kunna tänka mig att läsa el!
Tyvärr är jag inte ens elev...
...
Ulvenstein har givit mig värdefull återkoppling om artikeln, som jag tänkte utveckla här. Min beskrivning stämmer nämligen inte med nyare moderkort som använder DDR.
Jag skrev:
Citat:
...frekvens till [12 (isa)], 33 (pci), 48 (usb), 266 (enligt exempel) MHz. Processorns pll multiplicerar slutligen 266 MHz med säg 10, och får 2,660 GHz. När man ”fsb-klockar”, ökar man räknaren med ett steg, det vill säga 1 MHz. Jag har inte överklockat purfärska datorer, så jag vet inte med vilken frekvens som bussen kan inkrementeras. ”Halvmultiplar” är möjliga därför att bussklockan halveras innan cpu:ns pll tar vid. En multipel på 12,5 är därför i verkligheten en heltalmultipel (25) av halva bussens hastighet.
Edit: fet stil på relevant text...
Exemplet är illa valt. Jag borde använt 133 MHz som exempel i stället. Nämligen är det ju så att en frekvens om 266 MHz inte är något som i egentlig mening genereras (och därmed ej behöver delas), utan det är bara resultatet av två 133 MHz-klocksignaler, där den ena är fasförskjuten jämte den andra.
Normalt, i klockade system, för man över data på en buss med hjälp av klockans ena flank (ibland använder man nivåtriggning i stället för flankdito), och det sker en överföring per klockpuls. Med "flank" menas övergången mellan de båda logiska nivåerna, hög/låg, 1/0, etc.
För moderkort med DDR sker i stället två överföringar per klockcykel genom att ha två sinsemellan fasförskjutna klocksignaler. Så har då ett system med en "FSB" på 266 MHz egentligen en klockfrekvens på 133 MHz, trots att överföringen sker med 266 MHz (tänk på att Hz är moment per sekund. Vad momenten består i är mindre viktigt). Rent praktiskt kan man använda klockans båda flanker (eller nivåer. Nivåtriggning är dock mer sällan använt).
Detta kan vi applicera på resonemanget om "halvmultiplar". Jag skrev att klocksignalen delas i två, och sedan multipliceras med 2 * multipeln, eller att 12,5 * 266 MHz egentligen är 25 * 133. Riktigt. Däremot ska man inte tro att någon frekvens på 266 MHz behöver delas för att åstadkomma 133 MHz. I själva verket är det ju tvärt om; 133 MHz finns där från början, och 266 MHz är bara en skenbar klockfrekvens.
Så, från PLL-kretsen på moderkortet kommer 133 MHz. Fast med två "utgångar", med olika fas. Den ena av dessa multipliceras i processorns egna PLL med 25, men presenteras (i BIOS, etc) utefter DDR-frekvensen som en multipel på 12,5. Vilken siffra som är relevant är lite av en smaksak. Processorns arbetstakt är 12,5 gånger bussens, medan frekvensen är 25 gånger så hög.
I äldre system fungerar dock halvmultiplar som jag skrev förut; man multiplicerar - med ett dubbelt så stor tal - en frekvens som är hälften av processorbussens dito. Chansen är god att denna halvering inte explicit behöver göras eftersom halva bussfrekvensen antagligen redan är tillgänglig (t.ex. PCI-klockan om 33 MHz).
Assar: En PLL-labb är säkert en bra idé. Jag nämner lite i förbifarten en krets, 4046, som är en PLL i vanlig DIL-kapsel. Den är enkel att använda och har två olika fasdetektorer. En annan är 74XX297 som är lite mer underlig. Det är en heldigital PLL som i stället för VCO helt sonika plockar bort eller lägger till klockpulser allt efter behag. Den är dock lite svårare att använda och jag överdriver nog inte om jag säger att den är 74XX-seriens mest komplicerade krets. Jag får iaf mer huvudvärk än klockpulser av den!
Edit: Puh, hoppas det blir rätt nu...