Hallo, als Anfänger in Sachen fpga möchte ich den RISC-Prozessor von dem diesjährigen Turing-Preisträger Charles P. Thacker umsetzten und ein wenig damit spielen. Siehe hier: http://www.bottomup.co.nz/mirror/Thacker-A_Tiny_Computer-3.pdf Nur benutzt er zwei Clocks mit unterschiedlichen Phasenlängen und schreibt dazu: " The machine executes instructions in two phases (Ph0 and Ph1). This is unlike essentially all modern computers, which use pipelining to improve performance. The phases are different lengths, since during phase 0, we only need to access the IM, while..... " - weiteres hat er leider nicht dokumentiert. Hat jemand ein Idee wie ich diese Phasen umsetzen muss?
Eine Seite weiter steht doch noch mehr dazu in welche Phase was gemacht wird...
mmmmmh, ich sehe nur im verilog-code: // the Phases. They are asymmetric -- see .ucf file BUFG ph0Buf(.I(Ph0In), .O(Ph0)); //this is Xilinx - specific BUFG ph1Buf(.I(Ph1In), .O(Ph1)); einfach Pho und Ph1 im ucf-File setzen? Aber wie? Er schreibt von unterschiedlicher Phasenlänge.
Wenn's schon unbedingt mit den kranken Phasen sein muss (klingt nach 70er-Jahre Design...), mach die doch intern im FPGA aus einem schnelleren externen Takt. Beispielsweise mit einem damit laufenden 3Bit-Zähler. phi0 ist dann 1 von 0 bis 3, phi1 von 3 bis 6 oder so ähnlich.
Mit welchem FPGA arbeitest du? Xilinx hat so genannte DCMs. Diese sind in der Lage aus einem Eingangstakt einen phasenverschobenen Ausgangstakt zu liefern.
@Georg A. ich habe auch gelesen das mehrere Clocks 'böse' sind - nur, Mr. Thacker ist nicht irgendwer, schau mal in wikipedia. Das mit dem Zähler werde ich gleich mal versuchen - danke! @ich Ist ein Nexys2 mit Spartan3e, DCMs sind mir neu, schaue ich mir an.
Mehrere Clocks sind nicht böse, man muss aber halt einen sauberen Taktdomänenübergang bauen.
Hier ist es nicht ganz so schlimm, da die beiden Phasen ja synchron sind. Solange setup/hold eingehalten wird, ist das kein Problem. Aber die Nutzung von zwei Phasen ist inzwischen ziemlich ungewöhnlich, einer der letzten CPUs, die das gemacht haben, war afaik ein Ultrasparc Ende der 90er. Früher war das mehr verbreitet, weil damit normale Latches statt flankengesteuerten FFs möglich waren. Das hat dann viele Transistoren gespart...
Georg A. schrieb: > einer der letzten CPUs, die das gemacht haben, > war afaik ein Ultrasparc Ende der 90er. Das angesprochene Design stammt aus dem Jahr 2007... :-o Zum Glück schreibt er aber, das sein Design nicht wie moderne Computer funktioniert:
1 | This is unlike essentially all modern computers ... |
Da darf man sich schon fragen, warum alle anderen das anders machen... ;-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.