Stap 5: Bouwen van een 6 x klok vermenigvuldiger
Het ding heet "Klok multiplier met vertraging lijn". Het is soort van eenvoudig. Het oorspronkelijke kloksignaal vertragen door 1/6e periode en doen een beetje van de logica met de resultaten van deze vertraagde signalen in een nieuwe klok 6 keer zo snel als het origineel.
Probleem: Het vinden van een goed gedefinieerde vertraging-lijn.
Oplossing: Trial and error! Ik vond de 40098 CMOS-omvormers hebben ronde ongeveer 150 ns propagatie vertraging. Dit is vrij dicht bij de gewenste 708ns/6-118ns (44100 monsters met 16-bits en 2 kanalen -> 44100 * 16 * 2 1.4112 MHz SCLK thats een ~ 708ns klok periode)
Een beetje meer of minder vertraging krijgt nog steeds dezelfde frequentie gewoon niet zo glad, de ups en downs zal hebben verschillende lengte.
Simulatie
Uit eerdere projecten weet ik de Xilinx ISE instrumenten, die zijn vrij beschikbaar om FPGA en CPLD programmering te doen. Ze kunnen doen logica simulatie met behulp van schema, VHDL of Verilog ontwerp-post. Schema misschien wel goed voor beginners, maar het is heel pijnlijk om dingen in het te veranderen. Een hardwarebeschrijvingstaal is veel flexibeler maar natuurlijk meer te leren.
Anyways, de simulatie is alleen voor mij om te zien of het idee werkt, en te controleren wat logica zou doen de truc. Indien u interesse hebt, kunt u vinden de simulatie project bijgevoegd, unzip het en open het "ClockMult.xise" met ISE. Zodra u het hebt gemaakt tot nu toe u kan branden in een CPLD, geenszins, gewenste vintage plezier! :)
Het resultaat kan worden gezien in de beelden. De klok gaat t/m de 40098 5 keer (6e omvormer ongebruikte), bij elke uitgang zie je de vorige input ondersteboven en vertraagd. de signalen heten clk_Xp en clk_Xn voor positieve en negatieve (een beetje irritant dat hier omdat alle uitgangen van de 40098 heten p Hoewel ze schakelen... Elke uitgang en de originele klok lopen door een tweede (snel) omvormer die een 74hc04 is zodat elke vertraagde signaal beschikbaar is als positief (niet omgekeerde) en negative(inverted).
Na de inversie kies ik twee signalen die kunnen worden AND'ed om te vormen van een enkele puls met de duur van 1/6e van de klok.
De pulsen zijn dan OR'ed samen geven de laatste 6 x klok.
De en het zijn eigenlijk NAND omdat ik kreeg 74hc00 ICs (dat is een en met output omgekeerd) waardoor de pols negatief. Om hetzelfde resultaat dit moet (N) AND'ed in plaats van OR'ed. NAND of en maakt niet uit want kan me niet over de definitieve klokken polariteit schelen, of op laest ik gewoon het weer met de 74hc00 of 74hc04 omkeren kan.
OK, werkt dit echt, in theorie ;-)
Als u wilt gebruik maken van de nieuwe 8.4672 MHz klok van de Kenwood PCB moeten een beetje worden gewijzigd. De SM5807 loopt met 16.9344 MHz, oftewel tweemaal zoveel als de 6xCLK, maar de data sheet zegt het ook loopt met de 8.4..MHz als pin 3 (CKSL) is aangesloten op 'L' in plaats van 'H'. Natuurlijk moet het oorspronkelijke kloksignaal van pins 1 worden verwijderd. Onze mooie nieuwe klok wordt vervolgens ingevoerd in deze pin.
Laten we de PCB weer uitstappen en GND pin 3 van de SM5807 wijzigen en toevoegen van een pinheader voor de klok.
Van de DP3010 service handleiding het lijkt het beste te verwijderen van het 16.9344 kristal en de pin header toevoegen in plaats daarvan (de pin geconfronteerd met pin 5 van de 7402) dan de klok zal eens te meer worden omgekeerd maakt niet uit, net wijziging vereenvoudigt. Pin 2 en 3 van de SM5807 lijken los, dus ik voeg gewoon een brug van pin 3 op grond. Dat moet doen. Vrij eenvoudig.
sluit, sluit...
En?
YYYYYYYYYYYYEEEEEEEEEESSSSSSSSSSSSS!!!
Werken, geen kliks meer, cool.
Dat was leuk :-)
Geen nadelen?
Nou het breadboard is niet de meest betrouwbare stuk van tech, touch hier en daar maakt het hele ding gek. Misschien de CPLD op een eenvoudige gesoldeerd PCB is niet zulk een slechte idee na alle.