Spielzeug: "Prozessor" in Reaktor

Hier soll es ausschließlich um Arbeiten zu neuen und alten Ensembles gehen.

Moderator: herw

Spielzeug: "Prozessor" in Reaktor

Beitragvon Zippo am Dienstag 1. Dezember 2009 18:46

Hi Ho ^^

Ich bin recht neu hier im Forum, aber mit Reaktor bastel ich schon seit gut 2-3 Jahren herum.

Nun hab ich ein kleines Spielzeug gebastelt, was ich euch nicht vorenthalten möchte (vielleicht kanns ja jemand gebrauchen) :lol:
Hierbei handelt es sich um ein "Prozessor", das Teil hat eine Art Romtable und ein kleines Ram, was ihm ermöglicht selbst geschriebene Programme auszuführen und/oder Dinge zu berechnen.
Bis jetzt ist er noch nicht in die Endphase vorgedrungen, aber das Zwischenergebniss kann sich schonmal sehen lassen.
Das Teil wird im Dezimalsystem addressiert und beruht auf single Commands (also jeder Befehl benötigt bis jetzt 2 Zyklen zum berechnen).
Die Addressierung des Peripheriebus, aus dem "ROM", ist ähnlich der Z80.

Screenies:
Im Off-Zustand
Bild 1.jpg
Bild 1.jpg (180.33 KiB) 461-mal betrachtet


Beim TestProgramm
Bild 2.jpg
Bild 2.jpg (166.68 KiB) 461-mal betrachtet


Technische Daten:
-1 Hilfsregister (Accu)
-3 Internerne Register (X,Y,Z)
-2 Busregister umexterne Eingaben abzufragen
-Copy Commands für die Register untereinander
-SprungCommando
-Vergleichs und Verzweigungscommando
-FPU die leider noch recht umständlich addressiert werden muss
-Einen externen Taktgeber um die Befehle auszuführen
-Geschwindigkeit ist variabel im Programm steuerbar (von 1HZ bis x)

Der Download:
ProzziTest.ens.zip
(237.07 KiB) 17-mal heruntergeladen


Das wars erstmal fürs erste...

LG GiR-Zippo
Zippo
preset user
 
Beiträge: 9
Registriert: Sonntag 29. November 2009 22:37

Re: Spielzeug: "Prozessor" in Reaktor

Beitragvon herw am Dienstag 1. Dezember 2009 23:30

Hallo Zippo,
:willkommen:
ein witziges Projekt. Wie programmiert man denn das ganze?

ciao herw

PS: ich habe übrigens Deine Bilddateien und Dein Ensemble direkt in Deine Post eingebunden, damit sie nicht verloren gehen, wenn Du die Originallinks löschst. Ich hoffe, das ist ok.

Du scheinst ja einen riesigen Monitor zu besitzen. Ich habe die Bilddateien von den unnötigen breiten weißen Rändern befreit. Durch das direkte Einbinden hier in Deine Post, kann man die Bilder auch scrollen und dadurch in ihrer Gesamtheit sehen.
Benutzeravatar
herw
moderator
 
Beiträge: 1990
Registriert: Montag 13. März 2006 19:28
Wohnort: Dortmund

Re: Spielzeug: "Prozessor" in Reaktor

Beitragvon Zippo am Mittwoch 2. Dezember 2009 2:02

Thanks for welcome.

Keine Angst, die Sourcen lösche ich nicht so schnell, liegen zzt auf dem Root von der netten Community, wo ich grad RootAdmin bin :mrgreen:

Der Bildschirm ist nen standart LappyMonitor (1440x900) nur Paint mag Screenies nicht so ::(::
Hier die Commandreferenz:
Code: Alles auswählen
1   FPA      Schreibt Register A der FPU
2   FPB      Schreibt Re
3   FPC      Schreibt Register C der FPU
4   FPD      Schreibt Register D der FPU
5   RechenOperationen   
   FDAD    1   Addiere A-D
   FPS    2   Subtrahiere A-D
   FPM    3   Multipliziere A-D
   FPDV    4   Dividiere A/B
6   LDX      Schreibe X Register
7   LDY      Schreibe Y Register
8   LDZ      Schreibe Z Register
9   LDBI      Schreibe BusI Register
10   LDBII      Schreibe BusII Register
11   LDA      Schreibe Accumulator
12   CPX      Copy X Register nach
0      1   Y
0      2   Z
0      3   BI
0      4   BII
0      5   Accu
13   CPY      Copy Y Register nach:
0      1   X
0      2   Y
0      3   Z
0      4   BI
0      5   Accu
14   CPZ      Copy Z Register nach:
0      1   X
0      2   
0      3   Z
0      4   BI
0      5   Accu
15   CPBI      Copy BusRegister I nach:
0      1   X
0      2   Y
0      3   Z
0      4   BII
0      5   Accu
16   CPBII      Copy BusII nach:
0      1   X
0      2   Y
0      3   Z
0      4   BI
0      5   Accu
17         Copy Accu nach:
0      1   X
0      2   Y
0      3   Z
0      4   BI
0      5   BII
18   CFPU      Copy FPU nach:
0      1   X
0      2   Y
0      3   Z
0      4   BI
0      5   BII
0      6   Accu
19   JMP      Springe nach Speicherstelle
20   BNEX      Vergleiche Accu+X-Register und springe
21   BNEY      
22   BNEY      Vergleiche Accu+Z-Register und springe
23   BNEBI      Vergleiche Accu+BI-Register und springe
24   BNEBII      Vergleiche Accu+BII-Register und springe
25   ADAC      Erhöhe Accu um 1
26   CAD      Schreibe Accu auf Datenbus

Das anschalten des Prozzis:
Ja das ist ein kleines leidiges Thema was mir am Anfang böses Hinzermartern gekostet hat wie man alles Syncon starten kann (Prozzi, Peripherie), doch die Lösung ist einfach:
Einfach Rektor aus- und anschalten (der Powerbutton im Reaktorpanel), nun hat er seinen Reset, dann einfach den rechten Button im Prozzipanel anklicken und schon arbeitet er :roll:
Im Testprogramm was im Speicher ist, macht er nen CLS des Bildschirms, anschliessend ein paar RND-Bilder und anschliessend zauber er ein Hallo auf dieses.

Programmiert wird er so:
Das ROM ist in der Corecell "MMU" drinnen. Dort befindet sich auch eine Corecell mit dem Namen "ROM". Da drinnen ist ein Table und der ist quasi das "Rom" xD
Dieses gibbed sowohl im Prozzi selber und auch im Grafik_Prozessor (wobei der noch von mir überarbeitet wird, so das man ihn nur noch per Software vom Hauptprogramm ansteuern kann/muss. Doch dazu brauch ich entweder noch ne Steuerleitung oder einfach nen RAM was er nach seinem ROM liest um Befehle zu schaufeln).

Der kleine hat 2 Takte standartmäßig auf 1Hz als Vorlauf um seine eigendlich Frequenz einzulesen, diese muss auch unverzüglich am Anfang des Programms stehen.
Nehmen wir an, wir haben einen Takt von 200kHz dann schreiben wir einfach am Anfang:
Code: Alles auswählen
255
200000

Und schon steht er mit einer Taktung von 200KHZ betriebsbereit da, um seine Befehle abzuarbeiten die dannach kommen.

--- Wird fortgesetzt ---


Leider hat er einen kleinen Fehler im Aufbau...
Die FPU versteht sich als eigene Einheit und muss leider auch so programmiert werden.
z.b. 100+200 mit Copy ins X-Register sieht so aus:
Code: Alles auswählen
255
200000
1
100
2
200
5
1
18
1
255
0

Ich hab noch keine Möglichkeit eingebunden um Register in die FPU-Reister zu schreiben, nur umgekehrt -.-

LG GiR-Zippo

PS.:
Hab noch schnell ne A+ Funktion hinzugefügt (dient einfach zum Addieren des Accus +1 je Zyklus) und ne kleine Funktion um die Accuwerte den Datenbus einer bestimmten Addresse weiterzugeben (wird für nen kleinen "fading" Effekt missbraucht werden).
Zuletzt geändert von Zippo am Mittwoch 2. Dezember 2009 10:06, insgesamt 2-mal geändert.
Zippo
preset user
 
Beiträge: 9
Registriert: Sonntag 29. November 2009 22:37

Re: Spielzeug: "Prozessor" in Reaktor

Beitragvon herw am Mittwoch 2. Dezember 2009 8:29

stark! ::kaffee::
Benutzeravatar
herw
moderator
 
Beiträge: 1990
Registriert: Montag 13. März 2006 19:28
Wohnort: Dortmund

Re: Spielzeug: "Prozessor" in Reaktor

Beitragvon Zippo am Freitag 15. Januar 2010 16:54

Endlich bin ich mal wieder dazu gekommen den Prozzi unter die Lupe zu nehmen.
(Bin grad zusehr mit C++ und Clustern von WoW-EMu-Cores beschäftigt -.- )
Im Prozzi hab ich nen bösen Designfehler entdeckt:
Er ist in sich stabil, was schlecht für Register ist, die geflushed werden müssen.
Deswegen hat der Accu nicht richtig gezählt, das ganze wurde dann mit mit einem Gate an der Clock und nen Adder im Accumulator gelöst.
Nun zählt er richtig :)

Hier das ENS:
http://188.40.108.8/MyOwn/Processor/ProzziTest.ens
Werd mich mal die Tage drann machen und Memmory commands einbauen (diese werden wichtig werden für den GrafikProzzi um Zeichensätze in den Ram zu legen und dort zu lesen).
Zuletzt geändert von Zippo am Mittwoch 7. Juli 2010 0:09, insgesamt 1-mal geändert.
Zippo
preset user
 
Beiträge: 9
Registriert: Sonntag 29. November 2009 22:37

Re: Spielzeug: "Prozessor" in Reaktor

Beitragvon Snafic am Freitag 15. Januar 2010 17:07

Kannst du dazu noch passende Einsteigerlektüre empfehlen oder Links? Jetzt speziell auf dein Prozessording natürlich.
Interessiert mich sehr, probiere das noch aus aber vermutlich ist mir das zu hoch.
Benutzeravatar
Snafic
user
 
Beiträge: 30
Registriert: Mittwoch 10. Mai 2006 17:54
Wohnort: Bodensee

Re: Spielzeug: "Prozessor" in Reaktor

Beitragvon Zippo am Freitag 15. Januar 2010 20:25

Eine direkte Lektüre gibt es leider nicht, weil das Teil ne komplette Eigenentwicklung ist.
Aber ich kann versuchen zu erklären wie es funktioniert und wie man ihn Programmiert.

Fangen wir gleich mal mit dem Grundaufbau an :)
Zur Funktionsweise:
Der Prozzi und auch der Grafik-Prozzi sind beide in sich stabile Prozessoren.
Sie haben nicht wie Prozzessoren im PC einen Ozillator um den Stromkreis zu unterbrechen sondern hier dient der Ozillator dazu, um ihn dazu zu überreden dass er sich immer den nächsten Address- und Daten-Befehl aus dem Speicher holt, der ja leider sequenziell ist.


Das ganze geht dann so:
Als erstes hat der Prozzi 2 Takte auf 1hz Vorlauf, das ist wichtig, damit er seine Arbeitsgeschwindigkeit bekommt, welche wir immer am Anfang des Programmes setzen müssen.

Steht der Ozillator auf 1 gibts eine Adresse, steht er auf 0 kommen die Daten.
Die Taktleitung hier heisst MainClock, sie steuert alles Syncron.
Die RamClock wird gebraucht um ein Read zu erzeugen, ob es nun gebraucht wird oder nicht.
Sie muss IMMER etwas höher als die MainClock stehen, sonst liest er nüx.


Der Prozzi teilt das intern dann mit einem FlipFlop und einem kleinen Speicher auf (deswegen auch insich stabil, weil er die Daten und Addressen bis zum nächsten überschreiben nicht verliert).
In einer AddressMatrix werden die ankommenden Daten dann fein säuberlich auf die jeweiligen Addressen zugeteilt.
Mehr ist dort nicht drinnen xD


Zur Programmierung:
Der Prozessor verarbeitet pro Zyklus einen Befehl, welcher auch nur einen Zyklus braucht um verarbeitet zu werden (nicht wie bei einem PC, der je nachdem 1-4 Zyklen pro Command braucht).
Programmiert wird er mit dem ROM-Table, was in der MMU zu finden ist und hat in der default Einstellung ein Länge 1kB (Kann größer gemacht werden).

Die Art der Programmierung allerdings ist etwas verzwickter als ein normaler PC, aber auch nicht unverständlicher :)
Das erste was geschehen muss ist erstmal dem Prozessor seine Startgeschwindigkeit zu geben, was wir dann so bewerkstelligen:
Code: Alles auswählen
255 (Die Addy für Speed setzen)
100 (Sind 100hz zum arbeiten, wobei alles auch schneller gemacht werden kann)

Wenn man das eingibt, hat man aber nur die GEschwindigkeit auf 100Herz gestetzt, aber ohne Programm ist das ganze recht witzlos, also schreiben wir uns eine kleine Routine um einen DrehRegler auszulesen.

Nur was brauchen wir alles dazu (abgesehen vom Drehregler)?

Einen Anschluss am Prozessor, einen Speicher wo die Werte rein sollen und achja ein Programm... und etwas, was damit auch ausgelöst werden soll :)

Da trifft sich hier sehr, das der Prozzi einen kleinen Vorrat an sog. Registern hat, wo er Werte zwischenspeichern kann.
Die nennen sich:
Accumuluator = Dieses ist ein Sonderfall und hat kleine Möglichkeiten zur Manipulation und wird als Hilfregister benutzt. Also nur mit vorsicht setzen.
X = Das Typische X Register, kann man für verschiedenes nutzen
Y = Wie das X
Z = Das gleiche wie X
BI = Dieses ist ein sog. Busregister, was direkt von aussen gesteuert werden kann, an sonsten kann man es auch wie das X-Regi nutzen.
BII = Gleiches wie BI

Dann wollen wir mal mit dem Grundaufbau beginnen, wir nehmen unseren Prozzi, und klemmen alles wie hier auf dem Bild an:


Nun das Proggy:
Code: Alles auswählen
255
5
11
12
23
8
19
4
10
15
19
8
19
8


Zum laufen bringen wir es über den PowerKnopf in der Reaktor Menüleiste, der muss OFF und wieder ON geschaltet werden um einen Reset zu erzeugen.
Anschliessend bitte den Rechten Butten im ProzziPanel anklicken und schon sollte alles laufen.

Was macht das ganze hier nun?
Einfach erklärt:
255 (ProzziSpeed setzen)
5 (5hz)
11 (Schreibe in den Accu...)
12 (...Die Ziffer 12)
23 (Vergleiche BI mit dem Accu-Inhalt)
8 (Und springe zu stelle 8 wenn BI eine 12 beinhaltet)
19 (Springe)
4 (zu Stelle 4, um eine Schleife zu erzeugen, damit er den Vergleich solange macht, bis er eintritt)
10 (Schreibe in BII)
15 (eine 15)
19 (Sprung)
8 (Auf 8)
19
8 (Brauchen wir noch wegen einem kleinen Fehler, den ich noch ausbügeln muss, sry)

Das ist der Grundversuch I :)

Muss noch schnell was einkaufen, dann kanns weiter gehen xD

Lg GiR-Blunti-Zippo
Zuletzt geändert von Zippo am Samstag 10. Juli 2010 21:29, insgesamt 1-mal geändert.
Zippo
preset user
 
Beiträge: 9
Registriert: Sonntag 29. November 2009 22:37

Re: Spielzeug: "Prozessor" in Reaktor

Beitragvon herw am Freitag 15. Januar 2010 20:54

ui - viel Arbeit; da müsste ich mich erstmal in lang vergangene Schullektüre einlesen (Aufbau von Mehradressrechnern gehörte zum Informatikunterricht).
[Lobmodus]Ich finde solche Projekte einfach köstlich verrückt und entrückt [/Lobmodus].

ciao herw
Benutzeravatar
herw
moderator
 
Beiträge: 1990
Registriert: Montag 13. März 2006 19:28
Wohnort: Dortmund

Re: Spielzeug: "Prozessor" in Reaktor

Beitragvon Snafic am Freitag 15. Januar 2010 22:23

Zippo hat geschrieben:Eine direkte Lektüre gibt es leider nicht, weil das Teil ne komplette Eigenentwicklung ist.
Aber ich kann versuchen zu erklären wie es funktioniert und wie man ihn Programmiert.

So wars gemeint.
Schliesse mich dem Lob von Herw an, ich missbrauche generell auch gerne Reaktor für Sachen die er nicht vorrangig "gebaut" wurde. Reaktor ist auch das letzte an Musiksoftware auf die ich verzichten möchte. Reaktor ist Forschung, Diagnose, Musik und vieles mehr.
Deinen Prozessor werde ich mir auf jeden Fall in Zukunft noch genau anschauen und nebenher noch etwas Fachlektüre lesen, im voraus Danke für das zukünftige Wissen das ich mir aneignen werde. (Geht auch an andere hier natürlich)
Benutzeravatar
Snafic
user
 
Beiträge: 30
Registriert: Mittwoch 10. Mai 2006 17:54
Wohnort: Bodensee

Re: Spielzeug: "Prozessor" in Reaktor

Beitragvon KlangRaum am Freitag 22. Januar 2010 21:20

....echt heavy.... ::kaffee::
Schallpartikel-Spaltung ist eine unerschöpfliche Energiequelle !
Benutzeravatar
KlangRaum
synth guru
 
Beiträge: 572
Registriert: Dienstag 1. August 2006 13:55

Re: Spielzeug: "Prozessor" in Reaktor

Beitragvon Zippo am Donnerstag 18. Februar 2010 22:39

Einkauf brachte nicht viel erfolg, aber dafür eine interressante Idee:

Ich schaffe mir grade noch ein Device Register, so das der Prozzi durch ne Art Bios die Geräte erkennt und nutzen kann.
Nur leider muss ich dann auch ne Art Bios bauen...
Zippo
preset user
 
Beiträge: 9
Registriert: Sonntag 29. November 2009 22:37

Re: Spielzeug: "Prozessor" in Reaktor

Beitragvon Zippo am Montag 28. Juni 2010 17:42

Sodele weil man mich auf "meinem" Server ausgesperrt hat, hab ich nun alles auf https://bitbucket.org/zippo/reaktorfiles verstaut, alle meine Updates gehen nun in die Repo xD

LG GiR-Blunti/Zippo
Zippo
preset user
 
Beiträge: 9
Registriert: Sonntag 29. November 2009 22:37

Re: Spielzeug: "Prozessor" in Reaktor

Beitragvon herw am Mittwoch 7. Juli 2010 7:02

Zippo hat geschrieben:Sodele weil man mich auf "meinem" Server ausgesperrt hat, hab ich nun alles auf https://bitbucket.org/zippo/reaktorfiles verstaut, alle meine Updates gehen nun in die Repo xD

LG GiR-Blunti/Zippo


Hallo Zippo,

kannst Du deine Bilder mir nummeriert noch mal in einer PM zuschicken , dann kann ich sie nachträglich hier wieder einbauen. Es wäre schade, wenn dadurch deine Postings unverständlich würden.

ciao herw
Benutzeravatar
herw
moderator
 
Beiträge: 1990
Registriert: Montag 13. März 2006 19:28
Wohnort: Dortmund


Zurück zu PROJEKTE

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron