Hallo Besucher, der Thread wurde 850 mal aufgerufen und enthält 3 Antworten

letzter Beitrag von OlsenG am

Kann jemand MachXL oder PALASM?

  • Ich steh grad etwas auf dem Schlauch und bräuchte mal jemanden, der schonmal einen MACH211 o.ä. programmiert hat.


    Folgender Ausschnitt:

    Das Register-Pairing verstehe ich nicht so ganz. Das Reference Manual verwirrt mich noch mehr.
    Was ist an diesen Flipflops so speziell? Was bewirkt das Register-Pairing in diesem Fall?


    Würde mich sehr freuen, wenn mir da jemand kurz auf die Sprünge helfen kann. Danke schonmal!

  • Jesses, schon seit vlt. 20 Jahren nicht mehr gesehen, seit dem fast nur noch
    VHDL eingesetzt.


    Man muss bedenken, dass Sprachen bzw. Konzepte wie PALASM oder ABEL
    mit SW-Assemblern vergleichbar sind, HDL dagegen eher mit C/Pascal etc.
    Darum ist es auch wesentlich schwieriger, einen Compiler zu schreiben
    (gute Tools gab's glaube ich erst um die Jahrtausendwende). Das wird wohl
    auch der Grund sein, warum bei Chiphersteller zuerst PALASM/ABEL etc.
    eingesetzt wurde.


    Aber bei den paar Resourcen hätte ich VHDL/Verilog kaum vermisst.


    P.S. was macht denn jetzt die PAIR-Anweisung/Direktive?

  • Ja, mich erinnert das auch an Assembler. Auf einer 8bit-CPU braucht man auch mehrere Schritte um 16bit-Berechnungen zu machen. Hier ist es eher eine 1bit-CPU.


    Die PAIR-Anweisung dient (so wie ich die Beschreibung verstanden habe) dazu, dem Compiler/Synthesizer zu sagen, ob der Eingang (D) oder der Ausgang (Q) eines Flipflops an eine NODE (internes Signal) angeschlossen ist. In VHDL würde man ein internes Signal in einem geclockten Process setzen und das dann im kombinatorischen Teil einem Ausgang zuweisen. Da man einen Ausgang nicht lesen kann, muss man sich selbst merken ob man ihn auf 0 oder 1 gesetzt hat. Früher hatte man dafür eben spezielle Optimierungen in der Hardware vorgesehen um Ressourcen zu sparen.


    Kann sein, dass ich hier Stuss erzähle. Letzlich war es für meinen Fall nicht relevant. Ich hab verstanden was der Code im Ganzen tut und habe das entsprechend in VHDL umgesetzt, da waren solche Details gar nicht mehr wichtig.


    Wenn man ein Assembler-Programm nach C portiert schiebt man ja auch keine Register durch die Gegend. Man erkennt "aha, da wird x*y gerechnet" und dann schreibt man das so hin. Man übersetzt ja nicht Zeile für Zeile.