mikrocontroller.net

Forum: Projekte & Code 8bit-Computing mit FPGA


Autor: Frank M. (ukw) (Moderator) Benutzerseite
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Instrukteur schrieb:
> Nein. Viel dringender wird
> SE.LF.DES.TRUC.TI.ON
> gebraucht.

Syntax Error. Reboot System.

Ist meine Version zu alt?

: Bearbeitet durch Moderator
Autor: Instrukteur (Gast)
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
Frank M. schrieb:
> Syntax Error

Gewiss. Gleiches ließe sich auch durch die zusammengesetzte Inkarnation

SE.L FD.E ST.R UC.T IO.N (bitte in dieser Reihenfolge) realisieren. Ich 
bin allerdings der Meinung, daß es die herausragend wichtige 
Funktionalität allemal wert ist, als ein CISC Befehl mit gesonderter, 
eindeutiger Syntax in der FPGA-CPU realisiert zu werden...

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Josef G. schrieb:
> die Befehle SZ.A und AZ.A wieder einzuführen

Ich sollte vielleicht noch nachtragen:
SZ.A : Subtrahiere Zero mit Carry,
AZ.A : Addiere Zero mit Carry

Autor: Endlos nutzlos (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Josef G. schrieb:
> Ich sollte vielleicht noch nachtragen:

Richtig. Gut so. Es darf keinerlei Zweifel daran aufkommen, daß Du (mal 
vorerst) keine unangenehmen Schlussfolgerungen aus Deiner heutigen 
Eingebung (die CPU nutzt ja eh keiner) ziehen wirst.

Autor: Informatiker (Gast)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Hätte ja gerne mal den Emulator getestet, hab aber keine Lust, mir den 
selbst zu kompilieren, wenn ich den Sourcetree nicht komplett in nem 
Archiv runterladen kann.

Du müsstest das Projekt bitte besser dokumentieren und auch Binaries für 
Windows und Linux bereitstellen.
Hab schon mit sehr komplexer Software zu tun gehabt (Arbeite an der 
Unterstützung von Sparc-Prozessoren für Linux), aber dein Projekt ist 
mir ne Nummer zu hoch :(

Habe aber auf jeden Fall Respekt vor deiner Arbeit. Eine CPU zu 
entwerfen ist eine große Leistung, daran habe ich mich noch nie wirklich 
rangewagt...

Eigentlich könntest du ja deine CPU so gestalten, dass sie je nach 
Microcode sich wie eine bekannte CPU verhält (in deinem Fall wären Z80, 
8008, 8080, 6502 usw).
Es gab ja mal die Firma Transmeta, die sowas entwickelt hatte, schade, 
dass da nichts neues mehr kommt.

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
      +0     +1     +2     +3     +4     +5     +6     +7

00-   H..    SL.S   SW.X   SL.X   SW.Y   SL.Y   SW.Z   SL.Z
08-   IX0    IX1    IX2    IX3    IX4    IX5    IX6    IX7
10-   IY0    IY1    IY2    IY3    IY4    IY5    IY6    IY7
18-   IZ0    IZ1    IZ2    IZ3    IZ4    IZ5    IZ6    IZ7
20-   NO2    ST.S   SS.X   ST.X   SS.Y   ST.Y   SS.Z   ST.Z
28-   DX0    DX1    DX2    DX3    DX4    DX5    DX6    DX7
30-   DY0    DY1    DY2    DY3    DY4    DY5    DY6    DY7
38-   DZ0    DZ1    DZ2    DZ3    DZ4    DZ5    DZ6    DZ7

40-   O.VZ   O.VS   B.VZ   B.VS   O.UZ   O.US   B.UZ   B.US
48-   O.AZ   O.AS   B.AZ   B.AS   O.KZ   O.KS   B.KZ   B.KS
50-   O.WY   O.RP   B.WY   B.CN   GTR    ADR    GTA    NON
58-   IKL    DKL    IXL    DXL    IYL    DYL    IZL    DZL
60-   AD.    LV.    AV.    SV.    GT.    AN.    XR.    NR.
68-   STMX   LVMX   AVMX   SVMX   GTMX   ANMX   XRMX   NRMX
70-   STMY   LVMY   AVMY   SVMY   GTMY   ANMY   XRMY   NRMY
78-   STMZ   LVMZ   AVMZ   SVMZ   GTMZ   ANMZ   XRMZ   NRMZ

80-   ST.B   LV.B   AV.B   SV.B   GT.B   AN.B   XR.B   NR.B
88-   SL.K   TA1    TA2    TA3    TA4    TA5    TA6    TA7
90-   NO1    TK1    TK2    TK3    TK4    TK5    TK6    TK7
98-   TK8    TK9    TKa    TKb    TKc    TKd    TKe    TKf
a0-   EX.S   LV.S   AV.S   SV.S   GT.S   LD.S   AD.S   SD.S
a8-   EX.X   ZO.X   ES.X   RS.X   GT.X   LD.X   AD.X   SD.X
b0-   EX.Y   ZO.Y   ES.Y   RS.Y   GT.Y   LD.Y   AD.Y   SD.Y
b8-   EX.Z   ZO.Z   ES.Z   RS.Z   GT.Z   LD.Z   AD.Z   SD.Z

c0-   R.VZ   R.VS   R.UZ   R.US   R.AZ   R.AS   R.KZ   R.KS
c8-   R.WY   R.CN   R.IX   R.DX   R.IY   R.DY   R.IZ   R.DZ
d0-   GH.S   GL.S   GH.X   GL.X   GH.Y   GL.Y   GH.Z   GL.Z
d8-   IC.S   DC.S   IXE    DXE    IYE    DYE    IZE    DZE
e0-   PV.B   TZ.B   PV.A   TZ.A   SE.U   NE.U   ZO.U   CP.V
e8-   RD.B   RU.B   RD.A   RU.A   SE.V   NE.V   ZO.V   CR.V
f0-   ZO.B   NE.B   ZO.A   NE.A   IV.A   DV.A   ZO.S   S.RP
f8-   IC.K   DC.K   ZO.K   NE.K   IC.A   DC.A   GT.Q   J..

Josef G. schrieb:
> Bin zur Zeit am überlegen, anstelle von NA.K und NA.A
> die Befehle SZ.A und AZ.A wieder einzuführen und lediglich
> die Ersetzung von LZ.A durch ZO.K beizubehalten.

Habe das nun so gemacht. Die Mnemonics AZ.A und SZ.A
habe ich dabei ersetzt durch IV.A und DV.A, das steht
für Inkrementiere und Dekrementiere mit Carry V.

Ausserdem habe ich die Befehle neu angeordnet. Dadurch wurden
die Logiknetze zur Berechnung der internen Steuersignale
ein wenig einfacher. Und ich meine, der Befehlssatz
sieht jetzt aufgeräumter aus.

http://www.mikrocontroller.net/articles/8bit-CPU:_bo8

Autor: Informatiker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo? Liest du hier die Posts?
Mach mal bitte ein vernünftiges Archiv zum herunterladen deiner 
Quellcodes.

Autor: Falk B. (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
and daily greets the Murmeltier . . .

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Informatiker schrieb:
> Hätte ja gerne mal den Emulator getestet, hab aber keine Lust, mir den
> selbst zu kompilieren, wenn ich den Sourcetree nicht komplett in nem
> Archiv runterladen kann.

Das Emulationsprogramm testet nur die Software, nicht den
inneren Aufbau der CPU. Der Quelltext besteht lediglich aus
der Datei emul.c, man muss nur emul.c.txt.zip herunterladen
und dekomprimieren und das Suffix .txt entfernen.

Das Compilieren erfolgt mittels
gcc -o emul emul.c -L/usr/X11R6/lib -lX11

Beim Starten des Programms emul mittels ./emul muss
die Textdatei coka im aktuellen Verzeichnis stehen,
man muss dazu coka.txt.zip herunterladen und
dekomprimieren und das Suffix .txt entfernen.

Optional kann auch noch die Textdatei teca vorhanden sein, welche
man in gleicher Weise aus teca.txt.zip erhält. Dann steht die
Software der erweiterten Test-Steckkarte zur Verfügung.

Man hat also insgesamt 3 Dateien herunterzuladen. Ich meine,
das ist zumutbar. Allerdings kommen noch die Beispieldateien
emtext_* hinzu, falls man sie verwenden will.

Ein größeres Problem wird ohnehin die Gewöhnung an die
Tastaturbelegung sein, welche auf der Seite Emul meiner
Website beschrieben ist.

Für ein erstes schnelles Erfolgserlebnis tippe man nach dem
Starten des Emulationsprogramms:    61.demo - Enter

Autor: Helmut (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Informatiker schrieb:
> Hallo? Liest du hier die Posts?

Dann seid ihr ja schon zwei ...

Autor: Christopher B. (chrimbo) Benutzerseite
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Josef G. schrieb:
> Beim Starten des Programms emul mittels ./emul *muss*
> die Textdatei coka im aktuellen Verzeichnis stehen

was liegt da auch naeher als es separat zu verpacken?

> man muss dazu coka.txt.zip herunterladen und
> dekomprimieren und das Suffix .txt entfernen

warum haengst du immer noch txt an, wenn man es sowieso wieder entfernen 
muss? Mit so einer Gaengelei vertreibst du doch noch die letzten 
Menschen die sich dafuer interessieren koennten...

: Bearbeitet durch User
Autor: pixl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Mit so einer Gaengelei vertreibst du doch noch die letzten
>Menschen die sich dafuer interessieren koennten...
Whaaaaaa - und durch solche Posts holst Du diesen nervigen Thread immer 
wieder an's Tageslicht. Ich sterb deswegen bald.

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christopher B. schrieb:
> was liegt da auch naeher als es separat zu verpacken?

Man sieht bereits auf der Website vor dem Herunterladen,
um was es sich handelt, und nicht erst nach dem Entpacken.

Und es gab immer wieder neue Versionen einzelner Dateien.
Wer sich auf der Seite Downloads die Datumsangaben ansieht,
braucht nur jeweils die neuen Dateien herunterladen.

Das Herunterladen dauert nur Sekundenbruchteile. Es kann
doch nicht so schlimm sein, wenn man zweimal klicken muss.

> warum haengst du immer noch txt an,

Jeder sieht bereits vor dem Herunterladen, dass es Textdateien
sind. Und ich kann sicher sein, dass das Archivierungsprogramm
die Dateien als Textdateien erkennt und als solche komprimiert,
und nicht irgendwelche Verfahren für spezielle Dateiformate
anwendet, wo es dann vielleicht beim Entpacken auf
anderen Rechnern Inkompatibilitäten gibt.

Autor: informatiker (Gast)
Datum:

Bewertung
3 lesenswert
nicht lesenswert
Ich kann es ja verstehen das du nicht ein großes ZIP-Archiv machen 
willst, damit du Updates einzelner Dateien einfacher anbieten kannst, 
aber alles andere macht doch wenig Sinn.

Josef G. schrieb:
> Das Herunterladen dauert nur Sekundenbruchteile. Es kann
> doch nicht so schlimm sein, wenn man zweimal klicken muss.

Richtig, und es würde auch nur Sekundenbruchteile dauern wenn die 
Dateien nicht gepackt sind ;) Die C-Dateien sind nur wenige kB groß, da 
kann man sich das archivieren wirklich sparen, weil das entpacken macht 
viel mehr Arbeit wir der Zeitgewinn im Millisekunden-Bereich durch die 
minimalen Größen-Ersparnisse (auch wenn sie relativ Betrachtet wohl groß 
erscheinen mögen).

Ein Vorteil wenn die Dateien nicht gepackt wären wäre auch, das man sich 
den Code direkt im Browser schon ansehen könnte. Und nur dadurch das die 
Dateien gepackt sind weiß ich ja nicht wirklich genau was ich mir 
herunterlade, erst wenn ich es entpackt habe ;)

Auch das du .txt an die Dateien anhängst macht so keinen Sinn. Zum einen 
wird standardmäßig unter Windows bekannte Dateierweiterungen 
ausgeblendet, das umbenennen macht dann wieder zusätzlichen Aufwand. 
Auch brauchst du keine Sorge vor "dateispezifischen inkompatiblen 
Optimierungen" zu haben bei Archiven, das kann (zumindest bei den mir 
bekannten Verfahren) nicht geben, wobei das Archivieren einer einzigen 
weniger kB-großen Dateien an sich schon unsinnig ist.

Von daher, wenn einer sich deine Dateien laden will braucht er nicht nur 
die wenige Sekunden zum anklicken der Dateien, sondern muss diese 
nochmals entpacken und dann noch vermutlich googlen wie er bekannte 
Dateierweiterungen unter Windows anzeigt um diese dann umzubenennen. Und 
spätestens dann denkt man wer sowas macht kann nichts ordentliches 
fabrizieren und schon hat man keine Lust mehr auf dein Projekt :(

Autor: pixl (Gast)
Datum:

Bewertung
-3 lesenswert
nicht lesenswert

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
informatiker schrieb:
> da kann man sich das archivieren wirklich sparen,
> weil das entpacken macht viel mehr Arbeit
>
> Ein Vorteil wenn die Dateien nicht gepackt wären wäre auch,
> das man sich den Code direkt im Browser schon ansehen könnte.

Das Archivieren habe ich gemacht, um das Downloaden zu erzwingen.
Andernfalls würden die Dateien direkt angezeigt und man müsste den
Browser dazu bringen, sie zu sichern. Das Entpacken geschieht bei
meinem Apple durch einfaches Anklicken. Von Windows habe ich null
Ahnung. Den Apple habe ich für's Internet, zum Arbeiten verwende
ich Linux. Das Emulationsprogramm funktioniert nur unter Linux.

> Auch das du .txt an die Dateien anhängst macht so keinen Sinn.

Das Anhängen von .txt habe ich gemacht, weil mein Apple .vhd nicht
kennt und die Dateien als unbekannte Programme anzeigt. Dasselbe
gilt für die Dateien coka und teca ohne Suffix. Bei .c wäre es nicht
notwendig, aber ich habe es gemacht, damit alles einheitlich ist.

Autor: informatiker (Gast)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Josef G. schrieb:
> Das Archivieren habe ich gemacht, um das Downloaden zu erzwingen.

Du kannst den Download einfacher erzwingen. z.B. indem du einfach:
<a type="application/octet-stream" hre....
in den Link einfügst. Einfach mal kurz googlen da gibt es mehrere 
Lösungen für.
Allgemein ist es kein Problem eine offene Datei im Browser zu speichern, 
einfach kurz Strg+S sollte überall klappen, sowohl auf Windows wie auch 
unter Linux/Mac. Unter Windwos dürfte das immer noch vielfach schneller 
sein wie ein Archiv zu entpacken ;)

Josef G. schrieb:
> Das Entpacken geschieht bei
> meinem Apple durch einfaches Anklicken. Von Windows habe ich null
> Ahnung.

Okay dann sind wir in verschieden Welten unterwegs zum Mac kann ich 
nichts sagen.

Josef G. schrieb:
> Das Anhängen von .txt habe ich gemacht, weil mein Apple .vhd nicht
> kennt und die Dateien als unbekannte Programme anzeigt. Dasselbe
> gilt für die Dateien coka und teca ohne Suffix. Bei .c wäre es nicht
> notwendig, aber ich habe es gemacht, damit alles einheitlich ist.

Verständlich, aber vermutlich ist es trotzdem besser das .txt 
wegzulassen. Wenn Windows eine Dateierweiterung nicht kennt wird 
nachgefragt womit "versucht" werden soll die Datei zu öffnen. Entweder 
verknüpft man dann die Datei mit dem korrekten Programm oder öffnet sie 
mit einem Editor seiner Wahl.

Bei bekannten Dateierweiterungen blendet Windows jedoch standardmäßig 
die Erweiterung aus (Änderung der Erweiterung nicht mehr einfach 
möglich) und öffnet im Falle von .txt alles mit dem hauseigenen 
(unbrauchbaren) Windows-Editor, was man nicht unbedingt möchte.

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Josef G. schrieb:
> Falls also tatsächlich jemand Software für die CPU schreiben
> sollte, so möge er sorgfältig dokumentieren, welche Bereiche
> des fertigen Codes tatsächlich Programmcode enthalten und
> welche Bereiche stattdessen aus Tabellen von Zeigern oder
> Daten bestehen. Dann kann er im Programmcode nachträglich
> leicht per Ersetzungsprogramm die Opcodes austauschen.

Die Aussage bleibt weiter gültig. Nach der letzten CPU-Änderung
habe ich leider nochmal Zuordnungen zwischen Befehlen und OpCodes
gefunden, welche ich ändern sollte, weil sich dann Vereinfachungen
der Logiknetze zur Berechnung der internen Steuersignale ergeben.
Und zwar sollten SW.X mit ZO.X, SW.Y mit ZO.Y, SW.Z mit ZO.Z
getauscht werden. Ich möchte dies jedoch vorerst nicht tun,
vielleicht ergeben sich noch weitere Vertauschungen.

: Bearbeitet durch User
Autor: Scherge von Josef (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
push
Wann wird jetzt endlich x86 durch die von Josef entwickelte Architektur 
ersetzt?
x86 ist doch zum heutigen Zeitpunkt im Vergleich zu Josefs Architektur 
Steinzeit.

Autor: Falk B. (falk)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
@Scherge von Josef (Gast)

>Wann wird jetzt endlich x86 durch die von Josef entwickelte Architektur
>ersetzt?

An dem Tag, an dem die Hölle gefriert.

>x86 ist doch zum heutigen Zeitpunkt im Vergleich zu Josefs Architektur
>Steinzeit.

Naja, Josefs Werk ist dem Dadaismus näher als der Boolschen Algebra . . 
. ;-)

https://de.wikipedia.org/wiki/Dadaismus

Autor: Informatiker (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
In der Tat sehe auch ich großes Potential für diese CPU.
Wenn er jetzt noch Linux darauf portiert, wird er bald Marktführer im 
Bereich der CPU-Architekturen sein. Nur Transmeta hatte ansatzweise 
ähnlich gute Konzepte.

Autor: pixl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, mir reichts jetzt. Ich schalte PETA ein!

Autor: Neugierig gewordener Windows-Experte (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Informatiker schrieb:
> Wenn er
> jetzt noch Linux darauf portiert

Warum so kleine Brötchen backen?
Josefs Ausdauer langt doch locker für eine Windows-Inkarnation. Lässt 
sich alles durch Vereinfachungen der Logiknetze zur Berechnung der 
internen Steuersignale ermöglichen. Diverse Instruktionen für Multimedia 
werden auch bald nachgereicht. Geduld bitte !

Autor: Informatiker (Gast)
Datum:

Bewertung
-10 lesenswert
nicht lesenswert
Mir ist niemand bekannt, der Windows für seine tägliche Arbeit benötigt. 
Linux ist völlig ausreichend.

Autor: Neugierig gewordener Windows-Experte (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Und sei es nur als Beweis der Leistungsfähigkeit seiner überragenden 
Architektur.

Autor: Informatiker (Gast)
Datum:

Bewertung
-5 lesenswert
nicht lesenswert
Ist trotzdem recht sinnlos. Warum sollte man Hardware für closed Source 
Systeme entwickeln?
Windows ist schlicht und einfach eine Randerscheinung der Informatik.

Autor: Neugierig gewordener Windows-Experte (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Informatiker schrieb:
> Ist trotzdem recht sinnlos.

Na dann passt es doch optimal zum Projekt.

Autor: Nils S. (kruemeltee) Benutzerseite
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
Falk B. schrieb:
> and daily greets the Murmeltier . . .

s\Murmeltier\Multimeter

Autor: Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nils S. schrieb:
> Falk B. schrieb:
>> and daily greets the Murmeltier . . .
>
> s\Murmeltier\Multimeter

Falsch. Korrekt wäre:
s/Murmeltier/Multimeter/

Autor: Nils S. (kruemeltee) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas, das stimmt so aber nicht. Mein sed arbeitet anders herum.

;)

Autor: Fpga K. (fpgakuechle) Benutzerseite
Datum:

Bewertung
4 lesenswert
nicht lesenswert
Andreas S. schrieb:
>> s\Murmeltier\Multimeter
>
> Falsch. Korrekt wäre:
> s/Murmeltier/Multimeter/

Kiddies, ihr habt beide recht, denn das erste Zeichen nach dem 's' 
bestimmt den delimiter. Neben slash und backslash wird auch colon und 
pipe verwendet.
http://www.grymoire.com/Unix/Sed.html#uh-2

Nachdem das geklärt ist, könnt ihr ja was zur Sache schreiben. Außer 
Eurer Detailwissen reicht wie beim sed über oberflächliche Kenntnisse 
nicht hinaus.

SCNR

: Bearbeitet durch User
Autor: Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite
Datum:

Bewertung
-3 lesenswert
nicht lesenswert
Nils S. schrieb:
> Andreas, das stimmt so aber nicht. Mein sed arbeitet anders herum.

Dein sed benötigt aber mit Sicherheit auch den abschließenden "\" bzw. 
"/".

Autor: Nils S. (kruemeltee) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Abgeschlossen wird mit '\1'. Das kann dein Browser, dank Steuerzeichen 
statt Glyphen an der Stelle, aber nicht anzeigen. Ich seh's hier aber.

: Bearbeitet durch User
Autor: Marc (Gast)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Hin und wieder lese ich diesen Thread mit Spannung, was so Neues 
passiert.
Bewundernswert finde ich den Gleichmut von Joseph und die Konsequenz wie 
er sich auf die Mobing-artigen Kommentare der ganzen Besserwisser hier 
überhaupt nicht einlässt.
Ich finde jeder sollte seine Ideen präsentieren dürfen. Wenn es 
qualifizierte Gegenargumente für die ein oder andere Idee gibt, können 
diese zivilisiert vorgebracht werden.

Die Leute hier, die das Joseph Mobbing betreiben, verachte ich zutiefst.
[...]

: Bearbeitet durch Moderator
Autor: Mark B. (markbrandis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marc schrieb:
> Ich finde jeder sollte seine Ideen präsentieren dürfen.

Soweit richtig.

> Wenn es qualifizierte Gegenargumente für die ein oder andere Idee gibt,
> können diese zivilisiert vorgebracht werden.

Das wurde ja hier auch getan. Wenn freilich die kritischen Argumente 
vollkommen ignoriert werden, wie soll es dann Deiner Meinung nach 
weitergehen?

Autor: Anonymous User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marc schrieb:
> Bewundernswert finde ich den Gleichmut von Joseph und die Konsequenz wie
> er sich auf die Mobing-artigen Kommentare der ganzen Besserwisser hier
> überhaupt nicht einlässt.

Das ist nicht Gleichmut. Joseph ist nur merkbefreit. 
(https://de.wikipedia.org/wiki/Merkbefreiung)
Sein Projekt ist ist in etwa mit einem Auto mit viereckigen Rädern 
vergleichbar. Mit Gewalt fährt es, aber kein Mensch würde es so 
konstruieren oder könnte etwas damit anfangen.

Marc schrieb:
> Wenn es
> qualifizierte Gegenargumente für die ein oder andere Idee gibt, können
> diese zivilisiert vorgebracht werden.

Hast du den Thread mal von Anfang an durchgelesen? Gegenargumente wurden 
tausendfach vorgebracht und von Joseph geflissentlich ignoriert. Da ist 
es doch kein Wunder, wenn mittlerweile fast nur noch sarkastische 
Bemerkungen zu seinem Projekt kommen.

Marc schrieb:
> Die Leute hier, die das Joseph Mobbing betreiben, verachte ich zutiefst.

Das ist nicht Mobbing, das ist Selbstschutz.

Autor: Fpga K. (fpgakuechle) Benutzerseite
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Anonymous User schrieb:

> Das ist nicht Gleichmut. Joseph ist nur merkbefreit.
> (https://de.wikipedia.org/wiki/Merkbefreiung)

Das ist kein "zivilisiert vorgetragenenes Gegenargument" sondern eine 
Beleidigung insbes. Schmähkritik:
https://de.wikipedia.org/wiki/Beleidigung_%28Deutschland%29#Wahrnehmung_berechtigter_Interessen

da eine inhaltliche Auseinandersetzung komplett fehlt.

> Sein Projekt ist ist in etwa mit einem Auto mit viereckigen Rädern
> vergleichbar. Mit Gewalt fährt es, aber kein Mensch würde es so
> konstruieren oder könnte etwas damit anfangen.

Joseph ist ein mensch und zum Studieren von alternativen 
Implementierungen und Architekturvarianten ist sowas immer gut. 
Ausserdem wurde es mehrfach von weiteren Forumslesern auf ihren Boards 
adaptiert.

> Marc schrieb:
>> Wenn es
>> qualifizierte Gegenargumente für die ein oder andere Idee gibt, können
>> diese zivilisiert vorgebracht werden.
>
> Hast du den Thread mal von Anfang an durchgelesen? Gegenargumente wurden
> tausendfach vorgebracht und von Joseph geflissentlich ignoriert. Da ist
> es doch kein Wunder, wenn mittlerweile fast nur noch sarkastische
> Bemerkungen zu seinem Projekt kommen.

Jeder hat das Recht sein Projekt so zu realisieren wie er es für nötig 
hält. Die Sourcen sind frei zugänglich, wer dazu in der Lage ist kann 
sie nach seinem Wünschen anpassen. Es gibt leute die heute noch mit 
Röhren basteln oder 8bit Computer aufbauen und meinetwegen auch 
viereckige Räder. Warum nicht?! Wenn Du damit nicht klar kommst sucht 
Dir doch ein Projekt nach deinen Regeln.

> Marc schrieb:
>> Die Leute hier, die das Joseph Mobbing betreiben, verachte ich zutiefst.
>
> Das ist nicht Mobbing, das ist Selbstschutz.

Ich teile Marc's Auffassung, das was hier den Thread beherrscht ist 
Mobbing. Wer sich dabei auf "Selbstschutz" beruft ist m.E. ein A*h.

MfG,

PS:
Falk B. schrieb:
> Naja, Josefs Werk ist dem Dadaismus näher als der Boolschen Algebra . .
> . ;-)

Oder mit anderen Worten: Auch dieses Werk ist Kunst.

: Bearbeitet durch User
Autor: Anonymous User (Gast)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Fpga K. schrieb:
> Das ist kein "zivilisiert vorgetragenenes Gegenargument" sondern eine
> Beleidigung insbes. Schmähkritik:

Seit Böhmermann scheint es wohl Mode zu werden bei jeder Kleinigkeit 
gleich "Beleidigung" zu schreien und nach dem Staatsanwalt zu rufen.

Fpga K. schrieb:
> Oder mit anderen Worten: Auch dieses Werk ist Kunst.

Da gebe ich dir sogar Recht. Kunst existiert um ihrer selbst willen; sie 
muss keinen Zweck erfüllen. Nur sieht Josehp sein Projekt nicht als 
Kunst, sondern als Lösung aller jemals existierenden Computerprobleme. 
Seine Lösung ist die einzig Wahre und es ist ihm völlig unverständlich, 
warum seine Lösung von allen verkannt wird. So kommt es zumindest bei 
mir und scheinbar auch bei vielen anderen rüber. Es ist ein bisschen so 
wie bei dem Mann auf der Autobahn: Als es im Radio hört das ein 
Geisterfahrer unterwegs ist schaut er nur verwundert aus dem Fenster und 
sagt: "Einer? Hunderte?".

Darum:
Josephs Projekt als Kunst? Gerne. Als alles andere: Nein, danke.

Autor: otto (Gast)
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
-------------------
Die Frage überrascht mich sehr.
Hast du tatsächlich Software für die CPU geschrieben?
Oder ist die Frage doch nur theoretisch gemeint im Sinne von
"Mal angenommen, es hätte jemand bereits Software geschrieben ..."?
-------------------

Was soll denn diese scheiß Antwort auf eine vernünftige Frage?
Ich glaube du hast nicht mehr alle Drähte in deinem Kopf am richtigen 
Platz.

Kannst du nicht vernünftig die Frage beantworten?
Blöder Schuljunge.

Man...man..

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Mark B. schrieb:
> Wenn freilich die kritischen Argumente vollkommen ignoriert werden,

Wo sind die sachlichen kritischen Argumente, welche
ich ignoriert habe? Kannst du mal ein solches zitieren?

Autor: Markus F. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Joe G. schrieb:
> Was für eine wundervolle Welt muss das sein!

Nun, der Punkt mit den Standards ist ja der, dass sich Vieles im Laufe 
der Zeit durch try and error als Machbar oder Nichtmachbar 
herausgestellt hat und damit die Methoden und Bezeichnungen eine gewisse 
Evolution durchlaufen haben.

Und vieles ist eben ausgereift und kann nicht mehr weiter verbessert 
werden.

Und wenn man 8bit computing machen will, sollte man die Standards so 
anwenden, wie sie in den 80ern galten. Das betrifft Zeichensätzen, 
farben und auch Bezeichner.

Ob die Prozessorregister jetzt Sondernamen haben oder nicht, sollte aber 
nicht der Punkt sein.

Prozessoren heissen ja auch Skylake und so ...

Autor: Mark B. (markbrandis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Josef G. schrieb:
> Mark B. schrieb:
>> Wenn freilich die kritischen Argumente vollkommen ignoriert werden,
>
> Wo sind die sachlichen kritischen Argumente, welche
> ich ignoriert habe? Kannst du mal ein solches zitieren?

Zum Beispiel wurden sowohl Dein C-Code als auch die Qualität Deiner 
Dokumentation kritisiert. Es sieht für mich so aus, als ob Du beides 
nicht zum Anlass genommen hast, entsprechende Verbesserungen in den 
Quelltexten bzw. in der Dokumentation durchzuführen.

Autor: Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Josef G. schrieb:
> Wo sind die sachlichen kritischen Argumente, welche
> ich ignoriert habe? Kannst du mal ein solches zitieren?

Du bist zwar auf die allermeisten dieser kritischen Argumente 
eingegangen und hast Dich jeweils für Deine Architekturentscheidungen 
rechtfertigt. Immerhin hast Du eingeräumt, eine mögliche 
Interruptbehandlung nicht bedacht zu haben.

Aus meinem Einwand gegen die die Bankumschaltung führst Du zu kleine 
Adressräume anderer Prozessoren an. Statt jedoch den korrekten Schluss 
daraus zu ziehen, den Adressraum Deines Prozessors hinreichend groß zu 
wählen, denkst Du Dir: "Wenn schon falsch, dann aber gleich richtig 
falsch!"

Auf die wirklich ganz großen Kritikpunkte, die hier von mehreren 
Diskussionsteilnehmer eingebracht wurden, bist Du bislang jedoch in 
keiner Weise eingegangen, die der Eindruck erweckt, dass Du sie 
irgendwie beherzigen würdest.

Eigentlich wäre doch jetzt der richtige Zeitpunkt gekommen, an dem Du 
Deine Erfahrungen in Sachen Prozessorentwurf, die hier aufgeführten 
Kritiken und Anmerkungen sowie den aktuellen Stand der Technik 
zusammenführen und noch einmal ganz von vorne einen neuen Prozessor 
entwerfen könntest. Und zwar ohne auch nur eine einzige Zeile des alten 
Entwurfs wiederverwenden zu wollen.

In solche Überlegungen sollte natürlich nicht nur der Prozessorkern 
einfließen, sondern auch noch das "Ökosystem" rund um den Prozessor, 
d.h. Peripherie und vor allem auch die Softwareumgebungen auf Host und 
Zielsystem. Schaue Dir ggf. auch fremde Simulationsumgebungen für 
Prozessorarchitekturen und deren Umsetzungen an.

: Bearbeitet durch User
Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mark B. schrieb:
> Zum Beispiel wurden sowohl Dein C-Code

Nein. Wo?

> als auch die Qualität Deiner Dokumentation kritisiert.

Ist richtig. Ich bin aber sehr wohl darauf eingegangen.
Beitrag "Re: 8bit-Computing mit FPGA"
Siehe auch den folgenden Beitrag von A.K.
Demnach ist das Problem offensichtlich nicht die Dokumentation,
sondern die fehlende Bereitschaft anderer, sie zu lesen.

Autor: Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Josef G. schrieb:
> Demnach ist das Problem offensichtlich nicht die Dokumentation,
> sondern die fehlende Bereitschaft anderer, sie zu lesen.

Deine Dokumentation ist so schlecht (=ungeeignet für Dritte), dass sich 
kaum jemand die Mühe macht, sie zu lesen. Das ist etwas komplett anderes 
als mangelnde Bereitschaft.

Du antwortest in der Tat auf Kritik, gehst aber nicht auf sie ein.

Autor: A. K. (prx)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Josef G. schrieb:
> Demnach ist das Problem offensichtlich nicht die Dokumentation,
> sondern die fehlende Bereitschaft anderer, sie zu lesen.

Der Wurm muss eben dem Fisch schmecken, nicht dem Angler. ;-)

Autor: Mark B. (markbrandis)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Josef G. schrieb:
> Mark B. schrieb:
>> Zum Beispiel wurden sowohl Dein C-Code
>
> Nein. Wo?

Zum Beispiel hier:
Beitrag "Re: 8bit-Computing mit FPGA"

>> als auch die Qualität Deiner Dokumentation kritisiert.
>
> Ist richtig. Ich bin aber sehr wohl darauf eingegangen.
> Beitrag "Re: 8bit-Computing mit FPGA"
> Siehe auch den folgenden Beitrag von A.K.
> Demnach ist das Problem offensichtlich nicht die Dokumentation,
> sondern die fehlende Bereitschaft anderer, sie zu lesen.

Dokumentation ist dann gut, wenn die Kunden sie verstehen und gut 
finden.

Autor: 1965er (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Josef G. schrieb:
> Positive Eigenschaften der historischen 8bit-Heimcomputer sind:
> Man kann sie auch ohne langes Studium vollständig verstehen.

Kann man das wirklich? Mal ne Hauptplatine eines VC 20 aufgemacht?
Verstanden wurde da nur die oberflächliche Funktion. So wie heute bei 
den Smartphones.

Autor: Michael W. (michael_w738)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
{quote}
Kann man das wirklich? Mal ne Hauptplatine eines VC 20 aufgemacht?
Verstanden wurde da nur die oberflächliche Funktion. So wie heute bei
den Smartphones.
{quote}

Das habe ich mich auch schon oft gefragt... ich denke das ist eine Frage 
der Verständnis- bzw. Betrachtungsebene.

Die Architektur vom VC 20 ist schon einfacher als von einem moderneren 
Gerät - weniger Bau- / Funktionsgruppen (beim Smartphone sind die 
Funktionsgruppen auf dem SoC, während beim VC 20 noch diskrete ICs auf 
der Platine sind). Der Schaltplan vom VC 20 ist ja auch im Netz zu 
finden, und nicht übermäßig komplex. Auf dieser (groben) Ebene also 
schon irgendwie "qualitativ" verständlich, und wahrscheinlich einfacher 
als ein Smartphone.

Ich stimme zu, dass selbst beim VC 20 die komplexeren Chips (6502, VIC, 
...) nur funktional, also ihr IO- und Timing-Verhalten, verständlich 
sind. Aber will man denn heutzutage - oder selbst damals ? - Chips auf 
detailierteren Ebenen noch verstehen müssen? Abstraktion ist schon 
erforderlich - irgendwie muss man die Komplexität ja auch beherrschen. 
Hardwarebeschreibungssprachen und Simulationen sind heutzutage wohl 
unerlässlich - anders damals, als die Layouts von Chips noch mit 
Buntstiften auf Papier gemalt wurden, und der Designer die Funktion 
jedes Transistors verstehen musste. Das skaliert natürlich nicht.

Zumindest scheint es so zu sein, dass es wesentlich mehr Hobbybastler 
gibt, die sich ihren eigenen 8bitter bauen, als Smartphone-Bastler ;-)

https://hackaday.io/list/2402-homebrew-computers

TTL- und Transistor-Computer gibt's da auch, aber nicht so viele. Das 
scheint schon auch irgendwie dafür zu sprechen, das 8bitter "einfacher" 
sind.

Ich schwärme immer noch für den NDR-Klein-Computer und die 
Fernsehsendungen damals... Homebrew Computing pur! Letztlich es es von 
diesem hervorragenden Klassiker / Buch von Steve Ciarcia "Build Your Own 
Z80 Computer" zu Systemen wie dem NDR-Klein-Computer aber auch kein soo 
großer Schritt mehr.

Nun, bin kein Hardware-Experte... just my two cents :-)

@ Josef - vielleicht ist https://hackaday.io/ ja auch eine gute 
Community, um Dein System zu präsentieren?

Autor: Fpga K. (fpgakuechle) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1965er schrieb:
> Josef G. schrieb:
>> Positive Eigenschaften der historischen 8bit-Heimcomputer sind:
>> Man kann sie auch ohne langes Studium vollständig verstehen.
>
> Kann man das wirklich? Mal ne Hauptplatine eines VC 20 aufgemacht?
> Verstanden wurde da nur die oberflächliche Funktion. So wie heute bei
> den Smartphones.

Klar, Homecomputer sind kein Hexenwerk, siehe 
Retrocomputing auf FPGA.

MfG,

: Bearbeitet durch User
Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Josef,

könntest Du zum einfacheren Verständnis für mich hier ein kleines 
Programm in Assembler posten?
Es soll die Ziffern von 0 bis 9 auf dem Bildschirm ausgeben.

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marc schrieb:
> könntest Du zum einfacheren Verständnis

Mach ich. Wird aber 1 oder 2 Tage dauern,
bin zur Zeit anderweitig beschäftigt.

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die definitiv(?) letzte Version ...

      +0     +1     +2     +3     +4     +5     +6     +7

00-   H..    ST.S   SS.X   ST.X   SS.Y   ST.Y   SS.Z   ST.Z
08-   IX0    IX1    IX2    IX3    IX4    IX5    IX6    IX7
10-   IY0    IY1    IY2    IY3    IY4    IY5    IY6    IY7
18-   IZ0    IZ1    IZ2    IZ3    IZ4    IZ5    IZ6    IZ7
20-   ZO.S   SL.S   ZO.X   SL.X   ZO.Y   SL.Y   ZO.Z   SL.Z
28-   DX0    DX1    DX2    DX3    DX4    DX5    DX6    DX7
30-   DY0    DY1    DY2    DY3    DY4    DY5    DY6    DY7
38-   DZ0    DZ1    DZ2    DZ3    DZ4    DZ5    DZ6    DZ7

40-   O.VZ   O.VS   B.VZ   B.VS   O.UZ   O.US   B.UZ   B.US
48-   O.AZ   O.AS   B.AZ   B.AS   O.KZ   O.KS   B.KZ   B.KS
50-   O.WY   O.RP   B.WY   B.CN   GTR    ADR    GTA    NON
58-   IKL    DKL    IXL    DXL    IYL    DYL    IZL    DZL
60-   AD.    LV.    AV.    SV.    GT.    AN.    XR.    NR.
68-   STMX   LVMX   AVMX   SVMX   GTMX   ANMX   XRMX   NRMX
70-   STMY   LVMY   AVMY   SVMY   GTMY   ANMY   XRMY   NRMY
78-   STMZ   LVMZ   AVMZ   SVMZ   GTMZ   ANMZ   XRMZ   NRMZ

80-   ST.B   LV.B   AV.B   SV.B   GT.B   AN.B   XR.B   NR.B
88-   SL.K   TA1    TA2    TA3    TA4    TA5    TA6    TA7
90-   NO1    TK1    TK2    TK3    TK4    TK5    TK6    TK7
98-   TK8    TK9    TKa    TKb    TKc    TKd    TKe    TKf
a0-   EX.S   LV.S   AV.S   SV.S   GT.S   LD.S   AD.S   SD.S
a8-   EX.X   ES.X   SW.X   RS.X   GT.X   LD.X   AD.X   SD.X
b0-   EX.Y   ES.Y   SW.Y   RS.Y   GT.Y   LD.Y   AD.Y   SD.Y
b8-   EX.Z   ES.Z   SW.Z   RS.Z   GT.Z   LD.Z   AD.Z   SD.Z

c0-   R.VZ   R.VS   R.UZ   R.US   R.AZ   R.AS   R.KZ   R.KS
c8-   R.WY   R.CN   R.IX   R.DX   R.IY   R.DY   R.IZ   R.DZ
d0-   GH.S   GL.S   GH.X   GL.X   GH.Y   GL.Y   GH.Z   GL.Z
d8-   IC.S   DC.S   IXE    DXE    IYE    DYE    IZE    DZE
e0-   PV.B   TZ.B   PV.A   TZ.A   SE.U   NE.U   ZO.U   CP.V
e8-   RD.B   RU.B   RD.A   RU.A   SE.V   NE.V   ZO.V   CR.V
f0-   ZO.B   NE.B   ZO.A   NE.A   IV.A   DV.A   NO2    S.RP
f8-   IC.K   DC.K   ZO.K   NE.K   IC.A   DC.A   GT.Q   J..

Autor: Josef G. (bome) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
Das Programm zur Ausgabe der Ziffern 0 bis 9

    - START \ ####
    - MARKE - -
    START /UA 0000
    =     /UR 0000
    =     GT.S         bereite X für Rücksprung ins Betriebs-
    =     TK1          system vor:   positioniere X hinter die
    =     AD.X         Parameter, falls solche übergeben wurden
    =     ST.X         ...
    =     SW.Y         schalte Y auf Speicherseite 1
    =     GTA ec       rufe Routine Linefeed auf
    =     /.J.         ...
    =     /GTA 8fc0    setze Y auf Start der Zeile 3f
    =     ST.Y         ...
    =     GT. 09       initialisiere Schleifenzähler
    =     SL.S         ...
    =     GT. 60       lade Akku mit Ziffer Null
    MARKE IY1          Schleifenstart; erhöhe Y
    =     STMY         speichere Zeichen
    =     IC.A         inkrementiere Zeichen
    =     B.CN MARKE   Rückwärtssprung mit Zählvorgang
    =     SW.Y         schalte Y zurück auf RAM1
    =     ZO.Z         bereite Z für Rückkehr vor
    =     GT.Z         Sprung zur Rückkehrschnittstelle
    =     /.J.         ...

Die Routine ist als EXE-Routine geschrieben, welche aus der
Kommandozeile oder aus einem Programm aufgerufen werden kann.
Die beiden 2-Byte-Werte 0000 am Anfang bedeuten, dass die EXE-
Routine keine angehängte Data-Box und keine Initialisierungs-
Routine enthält. Übergebene Parameter werden ignoriert.

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke. Das sieht übersichtlich aus, nur die Befehle sind etwas 
ungewohnt.

Die Prozessorstruktur wird langsam klarer.

Wenn ich es richtig sehe, gibt es folgende Register

A:     Akku, 8 bit
B:     ?     8 bit

X,Y,Z: Index Register für Adressierung, alle 16 bit

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marc schrieb:
> nur die Befehle sind etwas ungewohnt.

/GTA 8fc0 und /.J. sind Makros und stehen für

  GTA c0                  H..
  AD. 8f                  J..

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Josef G. schrieb:
> beric schrieb:
>> Warum dann nicht einfach "AD_X" oder "J__"  ...
>
> Der auf der Grundlinie liegende Bindestrich ist kein Unterstrich.
> Dieses Zeichen habe ich in meinem Zeichensatz neu eingeführt.
>
> Den Unterstrich als Bindestrich zu verwenden finde ich hässlich,
> ausserdem hat es den Nachteil, dass man Strings, in welchen der
> Unterstrich als Bindestrich verwendet wird, nicht ohne
> Informationsverlust unterstreichen kann.

Passend hierzu habe ich heute folgendes gefunden,
ist interessant auch wegen des Autors:
Beitrag "Re: "Guter Programmierstil" VHDL"
> ich kann Unterstriche im Quelltext nicht ausstehen.

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marc schrieb:
> Wenn ich es richtig sehe, gibt es folgende Register
>
> A:     Akku, 8 bit
> B:     ?     8 bit
>
> X,Y,Z: Index Register für Adressierung, alle 16 bit

Ein Zähl- bzw. Schleifenregister (S? SL?) unbekannter Bitbreite gibt es 
auch noch:

Josef G. schrieb:
>     =     GT. 09       initialisiere Schleifenzähler
>     =     SL.S         ...

Jens

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jens schrieb:
> Ein Zähl- bzw. Schleifenregister (S? SL?) unbekannter Bitbreite ...
>
> Josef G. schrieb:
>>     =     GT. 09       initialisiere Schleifenzähler
>>     =     SL.S         ...

Der Schleifenzähler S ist 16 bit breit.
GT. 09    lädt den Wert 09 in den Akku
SL.S      speichert den Akku im LowByte von S,
          das HighByte von S wird Null.

Die Breite des Schleifenzählers ergibt sich aus der Pseudo-Grafik
auf der Seite CPU-doku meiner Website oder im Artikel zur CPU:
P  Q R S  X Y Z    K     V            Bezeichnung:  A7 = U
|  | | |  | | |    |A                               AB = K
|  | | |  | | |    |B

SL.S ist weiter unten auf der Seite erklärt:
$ stehe für S|X|Y|Z

SL.$     $ LowByte erhält A ,  $ HighByte wird 0

: Bearbeitet durch User
Autor: Falk B. (falk)
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
DA DA DA
DA DA DA
DA DA DA

Ich versteh dich nicht, du verstehst es nicht, aha
Ich versteh dich nicht, du verstehst es nicht, aha
Ich versteh dich nicht, du verstehst es nicht, aha
Ich versteh dich nicht, du verstehst es nicht, aha

DA DA DA
DA DA DA
DA DA DA

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Der Schleifenzähler S ist 16 bit breit.

Also erweitere ich die Registerübersicht um den 16 bit Schleifenzähler:
A:     Akku,                                  8 bit
B:     ?                                      8 bit

S:     Schleifenzähler                       16 bit

X,Y,Z: Index Register für Adressierung, alle 16 bit

Autor: Marc (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
>DA DA DA
>Ich versteh dich nicht

Das ist im akademischen Bereich und in der Kunst oft auch so.
Da Verständnis aber immer auch was mit dem eigenen Wissen und der 
Aufnahmefähigkeit zu tun hat, ist es besser zu schweigen, sonst kann 
leicht die eigene Dummheit offenbar werden.

Autor: pixl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>...und in der Kunst oft auch so.
>.. ist es besser zu schweigen, sonst kann leicht die eigene Dummheit offenbar 
werden.

Wenn Du schon diesen Vergleich ziehst: Youtube-Video "HUUURZ! Auf der grünen Wiese... Hape Kerkeling singt Hurz"

Autor: Nils S. (kruemeltee) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Josef G. schrieb:
> Die Breite des Schleifenzählers ergibt sich aus der Pseudo-Grafik
> auf der Seite CPU-doku meiner Website oder im Artikel zur CPU:
> P  Q R S  X Y Z    K     V            Bezeichnung:  A7 = U
> |  | | |  | | |    |A                               AB = K
> |  | | |  | | |    |B

Naja, sehr übersichtlich ist das ja nicht und in der Pseudografik über 
diesen Zeilen kann ich gar nicht auf eine Breite schliessen. Anhand von 
was denn, von acht "|"?

>
> SL.S ist weiter unten auf der Seite erklärt:
> $ stehe für S|X|Y|Z
>
> SL.$     $ LowByte erhält A ,  $ HighByte wird 0

Auch wenn Low- und High-Byte zu einem 16bit Wert passt, ist das nicht so 
ganz offensichtlich, dass es sich auch um einn solchen handelt. Und zu 
finden ist das schonmal gar nicht, wenn man nicht weiss, nach was man 
sucht.

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nils S. schrieb:
> in der Pseudografik über diesen Zeilen kann
> ich gar nicht auf eine Breite schliessen.

Jedenfalls erkennt man, dass  P, Q, R, S, X, Y, Z, K
gleich breit sind. Jedes | soll 1 Byte symbolisieren.
Das steht zwar nicht explizit da, sollte aber auch
klar sein, weil einer der Striche mit A bezeichnet
ist. Und weiter unten werden die Adressleitungen
mit a0 .. af bezeichnet, daraus ergibt sich die
Breite der Adressregister.

Autor: Nils S. (kruemeltee) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In jedem brauchbaren Manual steht das dann ungefähr so:

Register:

A - Akku (8bit)
X, Y - ....
SP - Stack Pointer (16bit)
...

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Entschuldigt meine dumme Frage, aber ist das hier Satire wie der Crypto 
Chef, der CPU Chef sozusagen, oder ist das mit der CPU ernstgemeint? 
Drei Jahre so eine Satire durchzuziehen ist schon ziemlich gut.

Autor: Mark B. (markbrandis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... schrieb:
> ist das hier Satire wie der Crypto Chef

Die Website vom Kryptochef gibt es leider nicht mehr. Allein schon für 
die Wortschöpfung "Vollbitverschlüsselung" habe ich sie geliebt ;-)

Autor: Hans-Georg L. (h-g-l)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das war das Stichwort ...
Zum Verstehen dieser CPU benötigt man unbedingt einen Vollbitschlüssel 
;-))

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... schrieb:
> Drei Jahre so eine Satire durchzuziehen ist schon ziemlich gut.

Bei Kurt sind es schon weit mehr als 3 Jahre und die Frage steht immer 
noch im Raum.

Autor: Marc H. (marchorby)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Mark B. schrieb:
> ... schrieb:
>> ist das hier Satire wie der Crypto Chef
>
> Die Website vom Kryptochef gibt es leider nicht mehr. Allein schon für
> die Wortschöpfung "Vollbitverschlüsselung" habe ich sie geliebt ;-)

Im Cache schon:
https://web.archive.org/web/20140517202802/http://kryptochef.net/

Autor: Josef G. (bome) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
3 lesenswert
nicht lesenswert
Wegen der weiten Verbreitung des DE0-nano habe ich den
Rechner nun auch auf diesem Board realisiert. Vielleicht
entschließt sich ja doch einer der vielen Besitzer des
Boards, die Konfiguration darauf zu testen.

Die VGA-Schnittstelle besteht aus einer Sub-D-Buchse und
5 Widerständen, die übrige fehlende Peripherie habe ich
mit Pmod-Modulen von Digilent realisiert.

Zur Entlastung des USB-Anschlusses habe ich ein 5.4V-Netzgerät
am 2-Pin-Verbinder angeschlossen. Zur Problematik der
Stromversorgung beim DE0-nano siehe auch
Beitrag "De0 nano - Frage zur Stromversorgung"

PS: Ich meine, mal im Forum gelesen zu haben, dass
bei hochgeladenen Fotos mit zu hohem Speicherbedarf
automatisch der Speicherbedarf verringert wird, und
muss darauf hoffen, weil mir auf meinem Rechner die
Verringerung des Speicherbedarfs nicht gelungen ist.

http://www.bomerenzprojekt.de/Website/Hawa.html

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falls jemand über eine Realisierung auf seinem
DE0-nano nachdenkt, aber den Aufwand scheut:
Es geht auch ohne die 7-Segment-Anzeigen.

Autor: Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Josef,

ich bin immer wieder erschrocken darüber, wie sehr Du durchaus 
fundamentale Kritik an Deinem derzeitigen Prozessor/System ignorierst 
und munter auf dem toten Pferd weiterreitest. Die Tatsache, dass sich 
kürzlich ein paar Diskutanden inhaltlich mit dem Befehlssatz Deines 
Prozessors und den Notationen Deiner Assemblersprache befasst haben, 
bedeutet noch lange nicht, dass nun der Zeitpunkt für den Durchbruch 
gekommen ist.

Leider bist Du bisher auch nicht auf meinen vor einiger Zeit 
eingebrachten Beitrag eingegangen:

Andreas S. schrieb:
> Eigentlich wäre doch jetzt der richtige Zeitpunkt gekommen, an dem Du
> Deine Erfahrungen in Sachen Prozessorentwurf, die hier aufgeführten
> Kritiken und Anmerkungen sowie den aktuellen Stand der Technik
> zusammenführen und noch einmal ganz von vorne einen neuen Prozessor
> entwerfen könntest. Und zwar ohne auch nur eine einzige Zeile des alten
> Entwurfs wiederverwenden zu wollen.
>
> In solche Überlegungen sollte natürlich nicht nur der Prozessorkern
> einfließen, sondern auch noch das "Ökosystem" rund um den Prozessor,
> d.h. Peripherie und vor allem auch die Softwareumgebungen auf Host und
> Zielsystem. Schaue Dir ggf. auch fremde Simulationsumgebungen für
> Prozessorarchitekturen und deren Umsetzungen an.

Und zu Deiner aktuellen Nachricht: Nein, es wird kaum jemanden geben, 
der wirklich den Einsatz Deines Prozessors auf dem DE0-nano ernsthaft in 
Erwägungg ziehen wird. Vielleicht mag es noch ein oder zwei Leute geben, 
die einen kurzen Funktionstest durchführen, um zu überprüfen, ob Dein 
System wirklich funktioniert. Mehr aber auch nicht.

: Bearbeitet durch User
Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas S. schrieb:
> Aus meinem Einwand gegen die die Bankumschaltung führst Du zu kleine
> Adressräume anderer Prozessoren an. Statt jedoch den korrekten Schluss
> daraus zu ziehen, den Adressraum Deines Prozessors hinreichend groß zu

Bei Adressen mit 24 oder 32 Bit wird der Vorteil des linearen
Adressraums erkauft durch den Nachteil des größeren Platzbedarfs
und langsameren Ladens einer Adresse, jedenfalls bei einer 8bit-CPU.

Deshalb glaube ich, dass meine CPU mit ihrer Seitenumschaltung
eine Chance hat, ihre ökologische Nische zu finden, auch und
gerade deshalb, weil die anderen es anders machen.

> Auf die wirklich ganz großen Kritikpunkte, die hier von mehreren
> Diskussionsteilnehmer eingebracht wurden, bist Du bislang jedoch in
> keiner Weise eingegangen, die der Eindruck erweckt, dass Du sie

Welche sachlichen Kritikpunkte meinst du? Mir fallen keine ein.

Autor: Falk B. (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Andreas Schweigstill (Firma: Schweigstill IT) (schweigstill)

>ich bin immer wieder erschrocken darüber, wie sehr Du durchaus
>fundamentale Kritik an Deinem derzeitigen Prozessor/System ignorierst
>und munter auf dem toten Pferd weiterreitest.

Immer noch nicht verstanden, was mit Josef los ist?

Beitrag "Re: 8bit-Computing mit FPGA"

https://de.wikipedia.org/wiki/Autismus

Autor: AnonymousUser (Gast)
Datum:

Bewertung
-3 lesenswert
nicht lesenswert
Josef G. schrieb:
> weil mir auf meinem Rechner die
> Verringerung des Speicherbedarfs nicht gelungen ist.

Du kannst ein ganzes Rechnersystem entwerfen, aber verzweifelst vor 
einer simplen Bildverkleinerung? Ich fürchte, Falk hat Recht mit dem 
Autismus...

Autor: Nils S. (kruemeltee) Benutzerseite
Datum:

Bewertung
1 lesenswert
nicht lesenswert
AnonymousUser schrieb:
> Ich fürchte, Falk hat Recht mit dem
> Autismus...

Langsam wirds echt übel hier im Thema. Aber wenigstens schreibt er sowas 
nicht Anonym.

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> Das fängt ganz wesentlich mit der optischen Gestaltung an. Ob dir das
> gefällt oder nicht, das ist ein Aspekt unter dem ein Leser sich der
> Sache nähert. Die letzte mit Schreibmaschine gesetzte

Da einige Leute offenbar Probleme damit haben, Text in Festbreiten-
Schrift zu lesen, habe ich den Artikel zum Projekt neu formatiert.
http://www.mikrocontroller.net/articles/8bit-Computer:_bo8h

Autor: Josef G. (bome) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Habe die Implementierung von Conway's Game of Life überarbeitet.

Bisher konnte man nur eines von 8 fest vorgegebenen Startbildern
auswählen. Jetzt wird eines dieser Startbilder aus Textseite E
importiert, man kann es also vorher dort selber erstellen.

Die ersten 64 Zeilen zu je 64 Zeichen ergeben das Startbild mit
64*64 Zellen, jedes nichtleere Zeichen ergibt eine aktive Zelle.

Die Bilder oben sind mit dem Emulationsprogramm erstellt und
zeigen die periodischen Objekte Tümmler und Pulsator. Auf dem
realen Gerät dauert jede Iteration wie bisher 0.27 Sekunden.

Autor: Le X. (lex_91)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Josef G. schrieb:
> Habe die Implementierung von Conway's Game of Life überarbeitet.

Wo kann ich mir denn den Sourcecode dazu ansehen?

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Le X. schrieb:
> Wo kann ich mir denn den Sourcecode dazu ansehen?

Den habe ich nur handschriftlich auf Papier. Der fertige
Code steht in der Datei teca im Bereich 39c0 .. 405f.

Bin immer wieder mal am Überlegen, einen auf PC laufenden
Zeilen-Disassembler zu schreiben, hab es aber bisher nie
ernsthaft in Angriff genommen. Aber vielleicht nimmt sich
ja jemand anderer der Sache an ...

Autor: Eddy C. (chrisi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Josef G. schrieb:
> Bin immer wieder mal am Überlegen, einen auf PC laufenden
> Zeilen-Disassembler zu schreiben,

Denk' mal besser über einen Zeilen-Assembler nach.

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eddy C. schrieb:
> Denk' mal besser über einen Zeilen-Assembler nach.

Einen Assembler gibt es schon, sogar einen "richtigen"
mit Labels, sowohl auf dem Zielsystem als auch auf PC.

Habe ihn aber selber bisher nicht verwendet,
da mir die Tipp-Arbeit zu aufwendig ist.

Autor: Eddy C. (chrisi)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Daher und um Deinen Quelltext nicht vom Zettel in den Rechner übertragen 
zu müssen, denkst Du lieber über einen Disassembler nach? Jo, das kann 
man so machen...

Autor: Nils S. (kruemeltee) Benutzerseite
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Die am Code Interessierten sollen sich ja auch den Binär-Blob bei 
$BLABLUBB ansehen und die Opcodes anhand der Tabelle nachschlagen, die, 
wie ich mich irgedwie schwach errinnern kann, aus der 
Opcode-Beschreibung vom Leser on the fly zu Erzeugen ist.

Autor: Eddy C. (chrisi)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Verstehe, Stichwort "sprechender Opcode", womit sich ein Assembler 
sowieso erübrigt.

Autor: Eric B. (beric)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eddy C. schrieb:
> Stichwort "sprechender Opcode"

Was? Die Kiste kann Text-To-Speech? Ich bin sprachlos!

Autor: Nils S. (kruemeltee) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eric B. schrieb:
> Ich bin sprachlos

Deshalb bist du auch weder Op noch Code.

Autor: Josef G. (bome) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Josef G. schrieb:
> Le X. schrieb:
>> Wo kann ich mir denn den Sourcecode dazu ansehen?
>
> Den habe ich nur handschriftlich auf Papier. Der fertige
> Code steht in der Datei teca im Bereich 39c0 .. 405f.
>
> Bin immer wieder mal am Überlegen, einen auf PC laufenden
> Zeilen-Disassembler zu schreiben, hab es aber bisher nie
> ernsthaft in Angriff genommen. Aber vielleicht nimmt sich
> ja jemand anderer der Sache an ...

Habe jetzt einen Disassembler geschrieben und damit
ein Listing meiner GOL-Implementierung erzeugt.

Die GOL-Implementierung habe ich nochmal überarbeitet.
Die fest vorgegebenen Startbilder gibt es nun nicht mehr.
Man kann die Größe des Spielfelds 64*64 oder 128*128 wählen,
das Startbild der Größe 64*64 wird in beiden Fällen aus der
Seite E des Text-RAM importiert, bei 128*128-Auflösung in
die Mitte des Spielfelds.

-------------

Den Assembler habe ich überarbeitet. In den Variablen-
vereinbarungs-Zeilen ist das links stehende - weggefallen,
in den Code-Zeilen ist bei Zeilen ohne Setzen eines Labels
das links stehende = weggefallen, stattdessen setzt man
jetzt die Labels in der Form  =NAME. Damit ist weniger
Tipparbeit erforderlich. Aufrufe von Labels oder anderen
Variablen schreibt man jetzt in der Form NAME+n,
den Offset +0 kann man weglassen.

Siehe Beschreibung des Kommandos =MASS
auf der Seite SYS-doku meiner Website.

Autor: Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Michael schrieb im Beitrag #4678264:
> Zum Lebensende wirst Du Dir bei wachem Verstande eingestehen müssen:
> Hätte ich meine Zeit und meine Fähigkeiten nur sinnvoller verwendet!

Wenn Josef das Projekt Spaß bereitet, soll er es doch so weiterführen 
wie er möchte. Wie viele andere Hobbys werden hinterlassen auch keine 
für Dritte verwertbaren Dinge, sondern sind sehr vergänglich.

> Immerhin: Du unterhälst die Leute mit soviel Schmalspursicht.

Das einzige, was man Josef vielleicht noch verwerfen kann, ist die 
mangelnde Einsicht, dass sein Prozessor für Dritte nicht allzu 
interessant ist und dass er sehr viele Ratschläge einfach ignoriert. 
Aber die Welt wird nicht untergehen, wenn irgendwann der Prozessor 
wieder verschwinden wird. Ebenso gehen auch sehr viele 
Briefmarkensammlungen, Bierdeckelsammlungen, Malereien, 
Topflappenstickereien, usw. irgendwann in der Versenkung unter, auch 
wenn da jeweils sehr viel Zeit und Herzblut hineingeflossen ist.

Autor: Fürst Fürchtenix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael schrieb im Beitrag #4678330:

> Es ist aber ein schönes Studienbeispiel was herauskommt, wenn die Freude
> am (komplizierten) technischen Funktionieren jede Nutzwertüberlegung
> dominiert.

Naja, andersrum killt jede Nutzwertüberlegung die Enthusiasmus fürs 
Hobby. Dann wird jeder Rat teuer.

Warum soltel man seine Zeit ins Beantworten von Fragen und schreiben von 
Wiki-Artikel investieren, wenn's keinen verwertbaren Nutzen hat?! 
Obendrein wird man noch als verbohrter Spinner, der nur Unsinn redet 
beschimpft.

Autor: Tom W. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fpga K. schrieb:
> Susi schrieb:
>> T. W. schrieb:
>> Ob der Josef mit dieser Einordnung einverstanden ist?
>
> Na jedenfalls ist "Susi" mit dem ersten Teil der Einordnung:
>
> T. W. schrieb:
>> Insbesondere auch deshalb, weil die meisten anderen hier weder ähnliches
>> anzubieten haben noch bereit sind, es auszustellen.
>
> in der richtige Schublade gelandet.


Ich glaube, ich wurde hier ein wenig misverstanden. Ich habe dieses 
Projekt in keinster Weise abwerten wollen. Man muss es nur sehen, als 
das, was es ist: Eines von vielen Hobbyprojekten, ohne industriellen 
Nutzen, das aber eine sehr schöne Freizeitgestaltung darstellt, sowie 
eine Möglichkeit, was zu lernen. Man hätte es auch mit 
FPGA-Arcade-Plattformen vergleichen können.

Autor: Josef G. (bome) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Habe die Software der Test-Steckkarte überarbeitet
und die Realisierung von Arrays verbessert.

Das Programm zeigt die Realisierung eines 2-dimensionalen
Arrays aus 4-Byte-Integer-Variablen. Der erste Index läuft
von 0 bis f, der zweite Index läuft von 0 bis 7. Das Array
ist somit eine Databox mit Länge-1 = 01ff.

Aus den beiden Indizes INX und INY wird die Position IXY
in der Databox errechnet gemäß IXY = (INX*8+INY)*4.
Dies geschieht durch die Mikrooperationen
oLDX /07 INX  und  oADX /03 INY

oSTO /c0 ARR  speichert den vorher eingelesenen
4-Byte-Wert von VAR in der Databox ARR ab Position IXY.
Bei Bereichsüberschreitung erfolgt eine Fehlermeldung.

Die obersten 2 Bit der Konstanten /c0
bestimmen die Anzahl der Bytes.

Die Variable IXY wird für die Operation nicht gebraucht,
sie dient im Programm nur dazu, die Position auszugeben.

Natürlich ist meine Notation nicht so kompakt wie die
algebraische Notation  ARR(INX,INY) = VAR. Vorteil meiner
Notation: Die Dauer der Mikrooperationen ist bekannt, die
Gesamtdauer lässt sich daraus sehr einfach berechnen.


------------------

Die Seite Testcard meiner Website habe ich überarbeitet,
ich meine, sie ist jetzt verständlicher.

Der Disassembler ist jetzt auf meiner Website verfügbar.
Beschreibung auf der Seite Emul.

: Bearbeitet durch User
Autor: ein Fan (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Josef G. schrieb:
> Vorteil meiner
> Notation: Die Dauer der Mikrooperationen ist bekannt, die
> Gesamtdauer lässt sich daraus sehr einfach berechnen.

für welche 'heutige Anwendung' ist dieses Wissen relevant?

Die Zeiten als man Delays durch abzählen von CPU-Takten und CPU-Frequenz
berechnet hat, sind dank integrierter Hardware-Timer
(die man auch im FPGA implementieren kann 'wink') vorbei.

Gruß

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
ein Fan schrieb:
> dank integrierter Hardware-Timer

Davon versteh ich zwar nicht viel, aber ich meine,
die Verwendung von Hardware-Timern hat auch Nachteile:

Man muss sie initialisieren, und eine ungefähre Abschätzung
der Zahl der CPU-Zyklen ist trotzdem erforderlich.

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Nils S. (kruemeltee) Benutzerseite
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Josef G. schrieb:
> die Verwendung von Hardware-Timern hat auch Nachteile:
>
> Man muss sie initialisieren, und eine ungefähre Abschätzung
> der Zahl der CPU-Zyklen ist trotzdem erforderlich.

Unbelehrbar.... Ich laufe lieber, weil mein Auto muss gestartet werden 
und dem Fahrer muss ich sagen, wo ich hin will...

Autor: Eddy C. (chrisi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Josef G. schrieb:
> Man muss sie initialisieren, und eine ungefähre Abschätzung
> der Zahl der CPU-Zyklen ist trotzdem erforderlich.

Ja, so ganz ohne Nachdenken kommt man tatsächlich nicht aus ;-)

Das Zählen von Zyklen ist aber auch nur bei Programmen geringer 
Komplexität handhabbar.

Trotzdem gibt es Bereiche, wo Programme mit der Zahl Ihrer 
Ausführungszyklen getimt werden. Beispiele:

- Software-UART

Mal ehrlich: wer hat nicht mal unter Verzicht jeglicher Timer eine 
solche UART implementiert, einfach schon deshalb, weil keiner vorhanden 
oder man die Resourcen des Systems nicht anderweitig belasten wollte 
(z.B. in einem Monitor-Program für Debugging)

- Anwendungen, wo es auf geringen Jitter ankommt, z.B. gepulste 
IR-Übertragung oder allgemein Modulatoren.

Schlussendlich darf auch auf die gute alte Turbo-Taste in PCs aus dem 
letzten Jahrtausend hingewiesen werden: Die Ausführungsgeschwindigkeit 
vieler Spiele hing von der Computerleistung ab. Offensichtlich wurde 
hier keine Timer benutzt.

Autor: Protomax (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Eddy C. schrieb:
> Offensichtlich wurde
> hier keine Timer benutzt

[ ] du weist wie ein Timer funktioinert
[x] du weist nicht wie ein Timer funktioniert


ein Timer (egal ob Hardware oder Software) hängt natürlich
vom Prozessortakt ab. Die Turbo-Taste beeinflusst beide Versionen.

Nur ein Hardware Timer wäre (einmal eingestellt)
1. nicht CPU blockierend
2. unabhängig von der Befehls Ausführungs-Geschwindigkeit
(wenn ein Opcode Befehl durch Optimierung schneller wird, stimmt
das zuvor berechnete Pausentiming nicht mehr)
3. per VHDL leicht parallel vervielfachbar

Eine Software-UART in einem FPGA macht ja wohl gar keinen Sinn
(außer für Lernzwecke)

Autor: Eddy C. (chrisi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Protomax schrieb:
> [ ] du weist wie ein Timer funktioinert
> [x] du weist nicht wie ein Timer funktioniert

[ ] du weist nicht wie ein Timer funktioniert
[x] du weist garnicht nicht wie ein Timer funktioniert

...sonst wüsstest Du, dass Timer- und Prozessortakt nicht 
notwendigerweise aneinander gekoppelt sind. Abgesehen davon:

https://de.wikipedia.org/wiki/Turbo-Taste

Stichwort "Verzögerungsschleife"

> Nur ein Hardware Timer wäre (einmal eingestellt)
> 1. nicht CPU blockierend

Ahso? Braucht es dazu vielleicht noch mehr? Einen Interrrupt z.B.?

> 2. unabhängig von der Befehls Ausführungs-Geschwindigkeit
> (wenn ein Opcode Befehl durch Optimierung schneller wird, stimmt
> das zuvor berechnete Pausentiming nicht mehr)

Hammer!

> 3. per VHDL leicht parallel vervielfachbar

In Nutella sind zur Zeit Keks-Stempel zum sammeln!

> Eine Software-UART in einem FPGA macht ja wohl gar keinen Sinn

Der OP hat schon keine Lust auf Timer. Da willst Du eine UART in den 
FPGA giessen?

> (außer für Lernzwecke)

Bingo ;-)

Autor: Gustl B. (-gb-)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Eddy C. schrieb:
> ...sonst wüsstest Du, dass Timer- und Prozessortakt nicht
> notwendigerweise aneinander gekoppelt sind. Abgesehen davon:

Na klar nicht notwendigerweise, aber es macht Sinn die zu koppeln.

Eddy C. schrieb:
> Der OP hat schon keine Lust auf Timer. Da willst Du eine UART in den
> FPGA giessen?

Also das ist in etwa gleich vom Aufwand her. Hat man Beides an einem 
Nachmittag geschrieben.

Autor: Eddy C. (chrisi)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Gustl B. schrieb:
> Eddy C. schrieb:
>> ...sonst wüsstest Du, dass Timer- und Prozessortakt nicht
>> notwendigerweise aneinander gekoppelt sind. Abgesehen davon:
>
> Na klar nicht notwendigerweise, aber es macht Sinn die zu koppeln.

Beim PC aber schon und darum ging es hier ;-)

> Eddy C. schrieb:
>> Der OP hat schon keine Lust auf Timer. Da willst Du eine UART in den
>> FPGA giessen?
>
> Also das ist in etwa gleich vom Aufwand her. Hat man Beides an einem
> Nachmittag geschrieben.

Na klar Mann, aber Josef ∉ "man". Immer schön auf der Spur bleiben ;-)

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thema Timer:

Die CPU hat zwar keine Interrupts, aber es wäre ohne weiteres
möglich, dass die CPU mittels einer H..-Operation einen externen
Zähler startet, dann irgendwelche Programmschritte ausführt, und
wenn sie damit fertig ist mittels einer weiteren H..-Operation
wartet, bis der Zähler abgelaufen ist, bevor sie weitermacht.

Thema UART:

Die in der aktuellen Konfiguration des Geräts implementierte
RS232-Schnittstelle bewerkstelligt das Senden und Empfangen
eines Bytes in der Hardware, die CPU selber gibt nur ganze
Bytes aus oder empfängt ganze Bytes.

Ist aber kein UART (U = universell), weil die Baudrate fest
ist und die Handshake-Leitungen nicht verwendet werden.

Autor: Tr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Josef G. schrieb:
> Die CPU hat zwar keine Interrupts

OK jetzt nehme ich deine CPU und baue damit einen Küchenwecker.

Wie mache ich sowas ohne Interrupts? Ich kann einen externen (wo ist 
der? NE555?) Timer starten und darauf warten. Was mache ich in der 
Zwischenzeit, z.B. wenn der Anwender doch eine andere Zeit einstellen 
will?

Muss ich ständig in einer Schleife laufen bis die Zeit um ist oder 
jemand einen Knopf drückt? Kann ich dabei Strom sparen?

Ich kann also nur
a) polling machen (ohne Pause, Sleep etc. also voller Stromverbrauch)
b) den gesamten Core anhalten und auf ein Ereignis warten.

Stimmt das?!
Wie soll ich damit sinnvolle Anwendungen programmieren? Multitasking auf 
einer normalen CPU ist schon schwer genug, du machst es nochmal extra 
schwierig. Hat das einen Grund? Vorteile hats keine.

Autor: Le X. (lex_91)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tr schrieb:
> Wie soll ich damit sinnvolle Anwendungen programmieren? Multitasking auf
> einer normalen CPU ist schon schwer genug, du machst es nochmal extra
> schwierig. Hat das einen Grund? Vorteile hats keine.

Da fällt dem Josef sicher was ein.

Aber nehmen wir doch ein realistischeres Beispiel, z.B. die Wordclock, 
die vielen hier ja ein Begriff sein sollte.
Die zeigt eigentlich ziemlich gut wie ein typisches ATmega-Projekt so 
aussieht und spricht recht viel Hardware an.

- Timer für den Systemtakt
- Parsen/Auswerten eines IR-Sensors für Fernbedienungen
- Auswerten der DCF77-Information
- Kommunikation mit externer RTC via I2C
- (hab bestimmt noch was vergessen)
- meine macht zusätzlich noch 6-Kanal Soft-PWM damit das Ambilight eine 
andere Farbe haben kann als die Schrift
- Protokollparser samt Kommandointerpreter der auf der UART lauscht 
(Bluetooth-Fernbedienung, nur Spielerei ;-) )

Da ist jetzt nichts wildes dabei, alles eher Standardzeugs für 8-Bitter.
OK die hochfrequente Soft-PWM ist eher ungewöhnlich und erfordert 
natürlich ein bestimmtes Zeitverhalten, sonst flackerts.

Josef, kann deine CPU das vernünftig und zuverlässig? Deterministisch?

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tr schrieb:
> b) den gesamten Core anhalten und auf ein Ereignis warten.

Es können auch mehrere Ereignisse sein. Die externe Hardware,
welche bei H.. das Repeat-Signal zum Anhalten der CPU erzeugt,
kann mit Ende des Repeat die Nummer des beendenden Ereignisses
auf den Datenbus legen, und die CPU kann die Nummer einlesen
und mit der Nummer eine Sprungtabelle auswerten.

Le X. schrieb:
> kann deine CPU das vernünftig und zuverlässig?

Von den aufgelisteten Anforderungen verstehe ich zwar nichts,
aber ich glaube nicht, dass eine einzelne CPU ohne Interrupts
das kann. Aber warum sollte meine CPU das können, dafür ist
sie nicht gemacht. Man kann mit ihr einen Computer bauen
mit Tastatur und Bildschirm, dafür ist sie gemacht.

Autor: Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Josef G. schrieb:
> Von den aufgelisteten Anforderungen verstehe ich zwar nichts,
> aber ich glaube nicht, dass eine einzelne CPU ohne Interrupts
> das kann.

Und deswegen sind CPUs ohne Interrupts auch ausgestorben bzw. haben sich 
nicht durchgesetzt. Es gibt zwar durchaus auch Ausnahmen wie z.B. 
Parallax Propeller, die auch ohne Interrupts auskommen, aber dafür 
andere sehr geschickte Merkmale in ihrer Architektur haben. Parallax 
erhebt aber auch überhaupt nicht den Anspruch, Universalprozessoren zu 
entwickeln, sondern schränkt die Anwendungsbereiche deutlich ein.

> Aber warum sollte meine CPU das können, dafür ist
> sie nicht gemacht. Man kann mit ihr einen Computer bauen
> mit Tastatur und Bildschirm, dafür ist sie gemacht.

Deine CPU ist aber auch nicht hierfür gemacht. Schon bei dem Versuch, 
eine diskret aufgebaute Tastaturmatrix zu verwenden, deren Tastendrücke 
im Hintergrund erfasst werden, scheitert Dein Konzept. Und die 
Unmöglichkeit, eine halbwegs zur normalen Uhrzeit passende Systemuhr zu 
realisieren, verhindert nicht nur Projekte mit expliziter Ausgabe der 
Uhrzeit (siehe o.a. Wordclock), sondern auch so etwas wie Zeitstempel 
bei Datei(system)zugriffen, Netzwerkprotokolle, usw..

Auch wenn Du viel Spaß an Deinem Projekt hast, finden sich immer mehr 
Gründe gegen die weitere Verbreitung Deiner CPU. In den letzten Jahren 
wurden immer mehr Schwächen Deiner Architektur aufgedeckt, und Du 
unternimmst nicht einmal den Hauch einer Anstrengung, diese Schwächen zu 
analysieren und Deine CPU entsprechend zu überarbeiten bzw. zu 
erweitern. Stattdessen bestrafst Du die wenigen Leute, die tatsächlich 
Deine CPU ausprobieren, damit, dass Du irgendwelche weitgehend nutzlose 
Änderungen am Befehlssatz durchführst und für Inkompatibilitäten mit 
bestehenden Programmen sorgst.

Autor: Michael K. (Firma: Knoelke Elektronik) (knoelke)
Datum:

Bewertung
7 lesenswert
nicht lesenswert
Josef:
  Ich habe etwas tolles gebaut mit dem man sich einen rostigen Nagel ins 
Knie schlagen kann wenn man schlimmen Kopfschmerz loswerden will.

Forum:
  Das tut aber weh und warum sollte man das machen wenn das Knie dann 
viel mehr wehtut als der Kopf.

Josef:
  Ich habe ein paar andere Hämmer ausprobiert und es geht auch damit.
  Nun man los, so einen Hammer hat doch jeder Zuhause.

Forum:
  Dein Konzept taugt nicht, das will doch niemand.

Josef:
  Geht auch mit langen Nägeln und man kann auch Schrauben einschlagen 
wenn man schön fest zuhaut.

Forum:
  Das Prinzip Gegenschmerz ist seit 100 Jahren tot weil es ungefähr eine 
million bessere Wege gibt.

Josef:
  Ich hab die Nägel schön poliert jetzt kann es doch keinen Grund mehr 
geben das nicht zu wollen.

Forum: (Wird sich bis zum jüngsten Tag in dieser Endlosschlefe bewegen)

: Bearbeitet durch User
Autor: Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Josef:
Seit heute kann man Schrauben mit Linksgewinde verwenden. Die sind 
genauso schön poliert wie die Nägel. Allerdings benötigt man einen 
Linksgewindeschraubenhammer.

Autor: Mark B. (markbrandis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich darf diesen Beitrag zitieren, der einen sehr vernünftigen Vorschlag 
enthält:

Andreas S. schrieb:
> Eigentlich wäre doch jetzt der richtige Zeitpunkt gekommen, an dem Du
> Deine Erfahrungen in Sachen Prozessorentwurf, die hier aufgeführten
> Kritiken und Anmerkungen sowie den aktuellen Stand der Technik
> zusammenführen und noch einmal ganz von vorne einen neuen Prozessor
> entwerfen könntest. Und zwar ohne auch nur eine einzige Zeile des alten
> Entwurfs wiederverwenden zu wollen.

Warum nicht so?

Autor: Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mark B. schrieb:
> Warum nicht so?

Weil auch ich mittlerweile aufgegeben habe, davon auszugehen, dass Josef 
wirklich irgendwann auf solche Vorschläge eingehen wird.

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas S. schrieb:
> Deine CPU ist aber auch nicht hierfür gemacht. Schon bei dem Versuch,
> eine diskret aufgebaute Tastaturmatrix zu verwenden, deren Tastendrücke
> im Hintergrund erfasst werden, scheitert Dein Konzept.
Das sind doch alles keine Argumente für unseren Wozniak2:
https://de.wikipedia.org/wiki/Apple_II#Timing

Der Apple II verfügte von Haus aus nicht über Zeitgeber (Timer)
und Unterbrechungen (Interrupts). Wozniak nannte als Grund dafür,
dass er das Design möglichst einfach halten wollte. Außerdem
hatte ein interruptgetriebener Tastaturtreiber versagt, so
dass er für diesen auf ein „Polling“-Verfahren zurückgriff.

Autor: Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann solltest Du aber auch noch schreiben, dass diese Einsparung 
durchaus als Ärgernis angesehen wurde und es für den Apple ][ auch 
etliche Anbieter von Einsteckkarten mit Uhren- und/oder Timer-Funktionen 
gab. Der 6502 war nämlich durchaus interruptfähig, und auch Apple hat 
den Erweiterungsslots sowohl einen gemeinsamen NMI (non-mascable 
Interrupt) als auch einen normalen Interrupt mit Daisy Chaining 
spendiert. Somit kann man also gerade den Apple ][ nicht als Referenz 
für eine interruptfreie Rechnerfamilie anführen.

Man sollte es aber bei solchen Rechnern tunlichst unterlassen, einen im 
Hintergrund laufenden Interrupthandler zu realieren, der auch dann aktiv 
ist, wenn das eigene Hauptprogramm verlassen wurde. Da bei Apple ][ auch 
das gesamte Timing für Audioausgabe, Kassettenrekorder und sogar 
Diskettenlaufwerke in Software realisiert wurde, hätte man sich üble 
Fehler beim Schreiben auf externe Datenträger oder lästiges Knistern im 
Lautsprecher einhandeln können.

: Bearbeitet durch User
Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
Update zum Stand des Projekts:

Die drei Xilinx-Boards Spartan-3A/3AN-Starter-Kit,
Spartan-3E-Starter-Board, Nexys2-Board werden nicht
mehr produziert und sind neu nicht mehr erhältlich.

Die drei Altera-Boards DE1, DE0, DE0-nano gibt es noch neu.
Die letzte Quartus-Version zu DE1 und DE0 ist 13.0 Sp1.

Falls jemand über den Kauf eines neuen Boards nachdenkt,
empfehle ich das DE0. Einziger Nachteil des Boards:
Die Buchse für RS232 muss man selber anschließen.

---

Die selbstgestrikte parallele Erweiterungs-Schnittstelle
habe ich wieder entfernt. Stattdessen habe ich jetzt den
VHDL-Code so umgeschrieben, dass Anwender leicht eigene
Schnittstellen einbauen können.

---

Die Domain bomerenzprojekt.de habe ich aufgegeben.

Neue Website zum Projekt ist http://www.bo8h.de

Auf der neuen Website steht das gesamte Projekt in
einer einzigen zip-Datei zum Download zur Verfügung.


Der Vollständigkeit halber hier nochmal der
Link zum Wiki-Artikel: 8bit-Computer: bo8h

Autor: Falk B. (falk)
Datum:

Bewertung
5 lesenswert
nicht lesenswert
Man könnte auch versuchen, Kühlschränke an Eskimos zu verkaufen . . .

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
-4 lesenswert
nicht lesenswert

Autor: Jonas (Gast)
Datum:

Bewertung
3 lesenswert
nicht lesenswert
Hast Du immer nocht nicht aufgegeben?
Schade um die Zeit. Damit könnte etwas Sinnvolleres auf die Beine 
gestellt werden!

Autor: Manfred F. (manfred_f)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Josef G. schrieb:
> Habe die Konfiguration der vier FPGA-Boards geändert.

Toll. Hast du das ganze endlich auf ein nachvollziehbares und vor allem 
sinnvolles Konzept geändert?

Josef G. schrieb:
> Die Start-Prozedur nach dem  Konfigurieren erfordert nun nur
> noch das Drücken eines einzigen Tasters (CPU-Reset aufheben).

Och nee. Zu früh gefreut. Schade.

Josef G. schrieb:
> Man kann nun (selbstgebaute) Zusatzhardware anschließen.

Nicht man sondern du. Du dürftest wohl weltweit der einzige sein der 
Zusatzhardware dafür bauen will.

Autor: Jonas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Manfred F. schrieb:
> Du dürftest wohl weltweit der einzige sein

Das Projekt hat halt was Einzigartiges :)

Autor: Mario (Gast)
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
Toll, es geht weiter, jupiii. Schnell Cola und Knabberzeug holen.
Habt Ihr schon Josef gefragt, was man mit dem ACHT-Bit-Computer alles 
tolles machen kann, wo er den Markt sieht für seinen 
Super-8-Bit-Computer. Acht Bit in einer Reihe. Wow. Mit einem 
300€-FPGA-Board einen Computer bauen der weniger kann als ein 
EIN-EURO-Board aus der Bucht. Das muss doch was sein. Macht weiter. 
Danke.

Autor: Eddy C. (chrisi)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Es ist ein Projekt zum Selbermachen und Lernen. Da sind 8 Bit schon in 
Ordnung.

Autor: Dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mario schrieb:
> Habt Ihr schon Josef gefragt, was man mit dem ACHT-Bit-Computer alles
> tolles machen kann

Er kann damit Kurt auf der Suche nach den Seitenbändern behilflich sein:
https://groups.google.com/d/msg/de.sci.electronics/G8I-j6x2Gdc/wf5ARaTABwAJ

Autor: Steve (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Eddy C. schrieb:
> Es ist ein Projekt zum Selbermachen und Lernen. Da sind 8 Bit
> schon in
> Ordnung.

Ja, aber nicht in Form dieser eigenwilligen Machbarkeitsstudie.
Zum Lernen nimmt man einen kleinen AVR.
Positiver Nebeneffekt: Damit sind sogar ernsthafte Anwendungen möglich.

Autor: Eddy C. (chrisi)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Steve schrieb:
> Zum Lernen nimmt man einen kleinen AVR.

Es hängt davon ab, was Du lernen willst. Wenn Du Dir selbst Deine 
Traum-CPU bauen willst inkl. Entwicklungsumgebung, würdest Du sicher 
nicht AVR nehmen, sondern prinzipbedingt etwas entwickeln, was so noch 
nicht existiert.

Man muss ja froh sein, dass es eine 8-Bit-Maschine ist und nicht 7. Oder 
9 ("Oktal rulz!)

Wobei ich die Wortbreite der Maschinenbefehle nicht kenne.

Autor: Klaus L. (klausi5000)
Datum:

Bewertung
4 lesenswert
nicht lesenswert
Frank M. schrieb:
> Ich schlage stattdessen WE.G, DA.M, I.T vor. Das passt besser.

Auch wenn viele diese Meinung teilen, ist das doch etwas fern einer 
guten Moderation, denn "moderieren" heisst "abschwächen" und nicht etwa 
die Diskussion befeuern.

Das kannst Du mit Deinem privaten account tun. Als Moderator sollte man 
da zurückhaltender sein mit seinen Meinungen.

So schlimm ist jetzt das Projekt von Josef auch wieder nicht.

Es gibt Projekte im Internet, die haben nicht mal die Hälfte an Doku und 
die ist in chinesich!

Auch Hardwaremodule, die Ich beruflich einsetze und die aus China 
kommen, sind schlimmer und lückenhafter beschrieben.

: Bearbeitet durch User
Autor: Delaykiller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klaus, Du hast irgendwo ein
delay(18_MONTHS);
kommentier das mal aus, dann geht's schneller.

Autor: Frank M. (ukw) (Moderator) Benutzerseite
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Klaus L. schrieb:
> Auch wenn viele diese Meinung teilen, ist das doch etwas fern einer
> guten Moderation, denn "moderieren" heisst "abschwächen" und nicht etwa
> die Diskussion befeuern.

Die Kamelle, die Du hier ausgepackt hast, ist vom April 2016. Damals war 
ich noch überhaupt kein Moderator. Dass es trotzdem über dem Beitrag 
steht, liegt daran, dass das Forum immer den IST- und nicht den 
momentanen Zustand zeigt.

Und jetzt beam Dich mal wieder in die Gegenwart ;-)

Autor: Josef G. (bome) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
-3 lesenswert
nicht lesenswert
Habe das Emulations-Programm überarbeitet.

Die farbliche Gestaltung entspricht jetzt dem realen System.
Die Tastaturbelegung ist komplett neu, jetzt sind auch
die Cursortasten eingebunden.

Und es gibt jetzt eine ausführliche Anleitung
zur Bedienung des Programms.

http://www.bo8h.de/Downloads/

Autor: Manfred F. (manfred_f)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Josef G. schrieb:
> Die farbliche Gestaltung entspricht jetzt dem realen System.

Echt jetzt? Schwarze Schrift auf knallgelben Hintergrund?
Bei dir darf man sich wirklich über gar nichts mehr wundern.
Ich hatte eigentlich gehofft das du nach nunmehr fünf Jahren Unsinn 
endlich zur Vernunft kommst und das ganze einstampfst.

: Bearbeitet durch User
Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
-3 lesenswert
nicht lesenswert
Einige aktuelle Beiträge in einem Thread im FPGA-Forum betreffen auch
die Qualität meines VHDL-Codes, deshalb möchte ich sie hier zitieren.
Es geht um die Erzeugung eines Taktsignals aus einem Master-Clock.

Josef G. schrieb:
> Achim S. schrieb:
>> Deine Ausgangssignale werden zwar mit 2MHz bzw. 1MHz hin und her
>> schalten. Aber du solltest dir im Klaren darüber sein, dass das dann
>> kein Taktsignal ist in dem Sinn, dass du damit eine Logik im FPGA
>> vernünftig takten kannst. Es wird nicht von den Clock-Treibern des
>> FPGA auf dem Clock-Tree verteilt sondern ist ein normales Logiksignal.
>
> Bei Spartan3, CycloneII/III/IV geht das aufschalten auf Clockleitungen
> durchaus, siehe mein Projekt. Man muss nur im Clock-Report nachschauen,
> ob die Synthese das von sich aus macht. Andernfalls kann man es durch
> Instantierung eines Clockbuffers erzwingen.

Josef G. schrieb:
> Lothar M. schrieb:
>> Trotzdem wird die Toolchain irgendwas zum Thema "skew" ausgeben...
>
> Nein, bei mir nicht.
>
> Der erzeugte Takt kommt ja an allen Flipflops gleichzeitig an,
> weil er über das Clock-Leitungssystem verteilt wird.
>
> Nur gegenüber der erzeugenden Flanke des Master-Clocks besteht
> ein kleiner Zeitversatz, dessen genaue Größe unbekannt ist.
> Das muss man halt im Auge behalten bei Übergängen
> zwischen den Taktdomainen.

Da D. schrieb:
> Klingt jetzt vielleicht gemein ... : Josef ist auch kein FPGA Experte.

Gustl B. schrieb:
> Aber er hat hier schon Recht. Wenn man den Takt mit einem FF teilt und
> wieder in ein Taktnetzwerk einspeist, dann ist das OK. Man hat einen
> Versatz zwischen dem ursprünglichen Takt und dem neuen Takt, aber wenn
> man das ordentlich behandelt passt das.

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
-3 lesenswert
nicht lesenswert
Da manche FPGA-Fachleute Vorbehalte gegen asynchrone Resets haben,
habe ich den CPU-Reset in einen synchronen Reset umgeschrieben.

Ausserdem habe ich die Wirkung der Code-Folge  H.. H..
nochmal geändert. Sie führt jetzt zum Anhalten der CPU.

8bit-CPU: bo8

Autor: Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super, dann müssen sich ja die Hersteller von ARM- und 
RISC-V-Prozessoren warm anziehen, weil sie von BO8 verdrängt werden!

Autor: Michael K. (Firma: Knoelke Elektronik) (knoelke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Josef G. schrieb:
> nochmal geändert

Ich niemand merkt es ...
Du sorgst seit langem mit aller Kraft dafür das keiner das Teil mit der 
Kneifzange anfassen mag.
Weiter so, bleib Dir treu ...

Gäbe es Auszeichnungen für schlechteste Dokumentation, intransparenteste 
Entwicklung, permanente unangekündigte Designänderungen, schlechteste 
Codebasis und mutwillige Vertreibung jeglicher Interessenten, Du würdest 
sie alle einheimsen.

Vor 30 Jahren habe ich in der Ausbildung mit dem MFA Lehrsystem 
gearbeitet.
8085 Steckkartensystem im 19' Gehäuse.
Um an die Übersichtlichkeit, Erweiterbarkeit und den Bedienkompfort 
dieses längst ausgestorbenen Dinosaurieres heranzukommen müssten Du noch 
ein paar Jahre intensiver Arbeit in das BO8 System stecken.

So nützlich wie ...
https://de.wikipedia.org/wiki/Familienbenutzer

Autor: jemand (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael K. schrieb:
> Josef G. schrieb:
>> nochmal geändert
> ...

Sag mal, wenn dich das hier nicht interessiert, hör wenigstens auf so 
agressiv herumzumäkeln.

Es gibt einen Unterschied zwischen Kritik und Beleidigungen. Deine Posts 
gehen eher in die Zweite Richtung.

Kritik ist ja ok, aber sowas?

Leute wie du sind der Grund, warum dieses Forum so ekelhaft ist.

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
Michael K. schrieb:
> permanente unangekündigte Designänderungen

Der aktuelle Befehlssatz der CPU unterscheidet sich
von der ersten hier veröffentlichten Version neben
der Codefolge  H.. H..  lediglich in einem Befehl:

Subtrahiere A von Null mit Carry wurde ersetzt durch
Lade K mit Null. Und die Befehle sind neu angeordnet.

Ausserdem haben ein paar Operationen neue Mnemonics.

Autor: Gu. F. (mitleser)
Datum:

Bewertung
3 lesenswert
nicht lesenswert
Josef G. schrieb:
> Ausserdem haben ein paar Operationen neue Mnemonics.

Mist, jetzt nachdem ich endlich fehlerfrei in Bom8 Assembler 
programmieren gelernt habe.

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Gu. F. schrieb:
> Josef G. schrieb:
>> Ausserdem haben ein paar Operationen neue Mnemonics.

Meine Aussage war missverständlich.

Mit "neu" war nicht gemeint aktuell neu, sondern neu gegenüber
der ersten Version. Die letzte Änderung liegt schon lange zurück.

Beitrag "Re: 8bit-Computing mit FPGA"

Autor: Alca Pone (Gast)
Datum:
Angehängte Dateien:

Bewertung
-2 lesenswert
nicht lesenswert
Frank M. schrieb:
> Ich schlage stattdessen WE.G, DA.M, I.T vor. Das passt besser.
> Eben, Du kannst auch EX.U ND.H O.PP verwenden, das merkt keine Sau.

Sag mal Frank, eine Frage:

Was hat dein Gehetze gegen Josef mit deiner Funktion des Moderierens 
gemein? Laut Wiki bedeutet Moderieren eigentlich "abschwächen", d.h. 
Diskussionen zu kanalisieren und zu besänftigen, statt sie zu befeuern!

Du bist kein Moderator sondern Stänkerer! Und weil Dir Kritik nicht 
gefällt, wirst Du deine Modetatorenrechte misbrauchen und diese Kritik 
an dir weglöschen.

Wetten das?


jemand schrieb:
> Michael K. schrieb:
>> Josef G. schrieb:
>>> nochmal geändert
>> ...
>
> Sag mal, wenn dich das hier nicht interessiert, hör wenigstens auf so
> agressiv herumzumäkeln.
>
> Es gibt einen Unterschied zwischen Kritik und Beleidigungen. Deine Posts
> gehen eher in die Zweite Richtung.
>
> Kritik ist ja ok, aber sowas?
>
> Leute wie du sind der Grund, warum dieses Forum so ekelhaft ist.

Dem ist nichts hinzuzufügen!


Andreas S. schrieb:
> Super, dann müssen sich ja die Hersteller von ARM- und
> RISC-V-Prozessoren warm anziehen, weil sie von BO8 verdrängt werden!

Den B8 knackt wenigstens keiner, falls jemand auf die Idee kommt, ihn 
einzusetzen. Es gibt dafür keinen Disassembler, keinen richtigen 
Compiler und keine Doku. Besser hätten es die Russen auch nicht 
hinbekommen können :-)

Zu den Farben, wäre sowas vielleicht angehmer, als das grelle Gelb:

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alca Pone schrieb:
> Frank M. schrieb:
>> Ich schlage stattdessen WE.G, DA.M, I.T vor. Das passt besser.
>> Eben, Du kannst auch EX.U ND.H O.PP verwenden, das merkt keine Sau.
>
> Sag mal Frank, eine Frage:

Als Frank M. das schrieb, war er noch nicht Moderator.
Hat er weiter oben schon richtiggestellt.
Beitrag "Re: 8bit-Computing mit FPGA"

> Es gibt dafür keinen Disassembler,

Doch. Siehe im Download-File im Verzeichnis info die Datei Emul.

> keinen richtigen Compiler

Ist richtig.

> und keine Doku.

Doch, und sie ist vollständig.
Siehe die Datei CPU-doku oder 8bit-CPU: bo8.

> Zu den Farben, wäre sowas vielleicht angehmer, als das grelle Gelb:

Wie hat du das Bild erzeugt?

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gu. F. schrieb:
> Mist, jetzt nachdem ich endlich fehlerfrei in Bom8 Assembler
> programmieren gelernt habe.

Obwohl das sicher ironisch gemeint ist, scheinst du
doch irgendwie Interesse an der CPU zu haben.

Hast du den Assembler schon ausprobiert?

Siehe im Download-File im Verzeichnis info die Seite Emul.

Da steht zwar, der Assembler beruht auf dem Emulationsprogramm,
aber er ist ohne Grafik, deshalb gelten die möglicherweise
abschreckenden Sicherheitshinweise zum Emulationsprogramm
hier nicht. Und es ist eine Beispiel-Sourcedatei dabei.

Autor: Falk B. (falk)
Datum:

Bewertung
4 lesenswert
nicht lesenswert
@Josef G. (bome) Benutzerseite

>> Mist, jetzt nachdem ich endlich fehlerfrei in Bom8 Assembler
>> programmieren gelernt habe.

>Obwohl das sicher ironisch gemeint ist,

WOW! Joseph erkennt Ironie! Ist Heilung in Sicht?

> scheinst du
>doch irgendwie Interesse an der CPU zu haben.

Ohh, doch nicht . . .

Autor: Frank M. (ukw) (Moderator) Benutzerseite
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Alca Pone schrieb:
> Du bist kein Moderator sondern Stänkerer!

Wie Josef schon richtigstellte, war ich damals noch kein Moderator. 
Leider wird im Beitrags-Kopf immer der aktuelle Ist-Zustand angezeigt 
und nicht der damalige Zustand, als der Beitrag entstand. Ich bin mir 
der Aufgabe als Moderator durchaus bewusst - auch wenn ich heute noch 
als normaler Teilnehmer des Forums manche Beiträge als User und nicht 
als Moderator verfasse. Schließlich sind wir Moderatoren auch noch 
"nebenbei" normale Anwender des Forums.

> Und weil Dir Kritik nicht
> gefällt, wirst Du deine Modetatorenrechte misbrauchen und diese Kritik
> an dir weglöschen.
> Wetten das?

Die Wette hast Du leider verloren. Dein Beitrag bleibt natürlich der 
Nachwelt erhalten. Kritik kann ich durchaus annehmen, wenn sie 
gerechtfertigt ist.

Autor: MaWin (Gast)
Datum:

Bewertung
3 lesenswert
nicht lesenswert
Josef G. schrieb:
>> und keine Doku.
> Doch, und sie ist vollständig.

Das glaube ich dir. Aber sie ist kaum zu gebrauchen, weil sie 
unverständlich ist, wenn man das System noch nicht kennt.

Eine Doku ist keine einfache Aneinanderreihung von technischen Fakten.

Autor: Mark B. (markbrandis)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
MaWin schrieb:
> Josef G. schrieb:
>>> und keine Doku.
>> Doch, und sie ist vollständig.
>
> Das glaube ich dir. Aber sie ist kaum zu gebrauchen, weil sie
> unverständlich ist, wenn man das System noch nicht kennt.
>
> Eine Doku ist keine einfache Aneinanderreihung von technischen Fakten.

Exakt.

Eine Doku soll, wenn sie gut geschrieben ist, jemandem das System 
erklären der es eben (noch) NICHT kennt.

Autor: Computer-Ex-Perte (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Mark B. schrieb:
> Eine Doku soll, wenn sie gut geschrieben ist, jemandem das System
> erklären der es eben (noch) NICHT kennt.

Habe die Doku mal überflogen. Sie ist wirklich nicht zu gebrauchen. Wenn 
ich es nicht besser wüsste, hätte ich spontan gesagt, der Josef ist mein 
Kollege vom Nachbarbüro, der bei uns die firmware macht. Der 
dokumentiert auch so.

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
-8 lesenswert
nicht lesenswert
Computer-Ex-Perte schrieb:
> Habe die Doku mal überflogen. Sie ist wirklich nicht zu gebrauchen.

Wer sie verstehen will und sich Zeit nimmt, der versteht sie auch.

Wer sie nur überfliegt, der will sie gar nicht verstehen.

Autor: MaWin (Gast)
Datum:

Bewertung
7 lesenswert
nicht lesenswert
Josef G. schrieb:
> Wer sie verstehen will und sich Zeit nimmt, der versteht sie auch.
> Wer sie nur überfliegt, der will sie gar nicht verstehen.

Das ist nicht, wie Dokumentation funktioniert.
Wenn man es will und genug Zeit reinsteckt, braucht man gar keine Doku 
und kann sich alles aus dem Code Reverse-Engineeren.

Eine Dokumentation muss problemlos les- und verstehbar sein. Sonst ist 
sie unbrauchbar.

Autor: Falk B. (falk)
Datum:

Bewertung
8 lesenswert
nicht lesenswert
Der Wurm muß dem Fisch schmecken und nicht dem Angler!

Autor: Mark B. (markbrandis)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Falk B. schrieb:
> Der Wurm muß dem Fisch schmecken und nicht dem Angler!

So einfach und so wahr.

Erstaunt mich immer wieder, dass manche Menschen solch einfache Dinge 
nicht verstehen können oder wollen.

Autor: TriHexagon (Gast)
Datum:

Bewertung
4 lesenswert
nicht lesenswert
Josef G. schrieb:
> Wer sie verstehen will und sich Zeit nimmt, der versteht sie auch.

Also wenn ich sehe, dass man mir gleich technische Details, schnöde 
Textdateien ohne große Strukturierung und Abkürzungen aka 
Buchstabensalat ohne Erklärung vor die Schnauze knallt, hat man die Lust 
eigentlich sofort verloren. Bei einer Doku sieht man sofort wie viel 
Mühe sich derjenige gemacht hat, da sehe ich hier schwarz.

Von einer Doku erwarte ich heutzutage Dokumente im PDF-Format, richtige 
Abbildungen (kein 80er Jahre ASCII Quatsch) und eine ordentliche 
Strukturierung mit Inhaltsverzeichnis. Bei einer Doku zu einer CPU 
erwarte ich eine schöne Übersicht, welche Architektur, welche Features, 
Aufbau etc.. Die Details kommen da erst ganz hinten. Ein Abschnitt über 
die ISA mit einem Unterkapitel pro Instruktion. Für Programmbeispiele in 
Assembler gibts Bonuspunkte. Das ist mal was mir so spontan einfällt.

Hier ein gutes Beispiel: 
https://www.st.com/content/ccc/resource/technical/document/programming_manual/6c/3a/cb/e7/e4/ea/44/9b/DM00046982.pdf/files/DM00046982.pdf/jcr:content/translations/en.DM00046982.pdf

Vom VHDL-Code will ich eigentlich keine Worte verlieren, so was 
unlesbares habe ich noch nicht gesehen. Wie wärs mit Kommentaren und 
aussagekräftigen Namen statt kryptische Namensgebung wie bei einem 
Code-Obfuscation-Contest?

Das hochgesteckte Ziel Anfängern zu erklären wie CPUs funktionieren, 
hast du damit kolossal verfehlt, wenn man als studierter Informatiker 
mit großen Interesse zu Rechnerarchitekturen keinen Zugang findet.

Also nimm die Kritik an, mach es besser, Profit.

BTW Architektur mit Akkumulator ist ziemlich out und macht es Anfängern 
auch nicht einfacher. Anfänger sollte man eine einfache, moderne 0815 
RISC Architektur vorlegen.

Autor: Analoger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn er einen 80er-Jahre 8-Bitter nachbauen will, kommt er um den Akku 
nicht herum:-)

Autor: Florian (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Instrukteur schrieb:
> Josef G. schrieb:
> Bin zur Zeit am überlegen, anstelle von NA.K und NA.A
> die Befehle SZ.A und AZ.A wieder einzuführen
>
> Nein. Viel dringender wird
> SE.LF.DES.TRUC.TI.ON
> gebraucht.
> Dann bitte 1x ablaufen lassen...

Ein ganz schön blöder Kommentar

Autor: Meister E. (edson)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Falk B. schrieb:
> @Josef G. (bome) Benutzerseite
>
>>> Mist, jetzt nachdem ich endlich fehlerfrei in Bom8 Assembler
>>> programmieren gelernt habe.
>
>>Obwohl das sicher ironisch gemeint ist,
>
> WOW! Joseph erkennt Ironie! Ist Heilung in Sicht?

Die wirklich lernresistenten Akteure in diesem Forum sind doch die, die 
noch heute eine gefällige Dokumentation von Josef erwarten und denken, 
ihn dazu bekehren zu können.

Instrukteur schrieb:
> Josef G. schrieb:
> Bin zur Zeit am überlegen, anstelle von NA.K und NA.A
> die Befehle SZ.A und AZ.A wieder einzuführen
>
> Nein. Viel dringender wird
> SE.LF.DES.TRUC.TI.ON
> gebraucht.
> Dann bitte 1x ablaufen lassen...

Vielleicht braucht kein Mensch den B08, aber es brauchte einen Menschen 
um ihn zu erschaffen. Das sollte man zumindest respektieren.

Beitrag #5581625 wurde vom Autor gelöscht.
Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Hier eine Beschreibung des Befehlssatzes, ausgeschrieben ohne
Platzhalterzeichen. Ist die Beschreibung so besser lesbar?

nn sei das zweite Byte eines 2-Byte-Befehls

AN.B    A wird   A and B
NR.B    A wird   A nor B
XR.B    A wird   A xor B
AV.B    A wird   A+B+V          V erhält Übertrag
SV.B    A wird   A-B-V          V erhält Übertrag
LV.B    A wird   B-A-V          V erhält Übertrag
GT.B    A erhält B
ST.B    B erhält A

AN. nn    A wird   A and nn
NR. nn    A wird   A nor nn
XR. nn    A wird   A xor nn
AV. nn    A wird   A+nn+V          V erhält Übertrag
SV. nn    A wird   A-nn-V          V erhält Übertrag
LV. nn    A wird   nn-A-V          V erhält Übertrag
GT. nn    A erhält nn
AD. nn    A wird   A+nn

ANMX    A wird   A and (X)
ANMY    A wird   A and (Y)
ANMZ    A wird   A and (Z)

NRMX    A wird   A nor (X)
NRMY    A wird   A nor (Y)
NRMZ    A wird   A nor (Z)

XRMX    A wird   A xor (X)
XRMY    A wird   A xor (Y)
XRMZ    A wird   A xor (Z)

AVMX    A wird   A+(X)+V          V erhält Übertrag
AVMY    A wird   A+(Y)+V          V erhält Übertrag
AVMZ    A wird   A+(Z)+V          V erhält Übertrag

SVMX    A wird   A-(X)-V          V erhält Übertrag
SVMY    A wird   A-(Y)-V          V erhält Übertrag
SVMZ    A wird   A-(Z)-V          V erhält Übertrag

LVMX    A wird   (X)-A-V          V erhält Übertrag
LVMY    A wird   (Y)-A-V          V erhält Übertrag
LVMZ    A wird   (Z)-A-V          V erhält Übertrag

GTMX    A erhält (X)
GTMY    A erhält (Y)
GTMZ    A erhält (Z)

STMX    (X) erhält A
STMY    (Y) erhält A
STMZ    (Z) erhält A

AD.S       K wird   K+S
AD.X       K wird   K+X
AD.Y       K wird   K+Y
AD.Z       K wird   K+Z

SD.S       K wird   K-S
SD.X       K wird   K-X
SD.Y       K wird   K-Y
SD.Z       K wird   K-Z

LD.S       K wird   S-K
LD.X       K wird   X-K
LD.Y       K wird   Y-K
LD.Z       K wird   Z-K

AV.S       K wird   K+S+V          V erhält übertrag
SV.S       K wird   K-S-V          V erhält übertrag
LV.S       K wird   S-K-V          V erhält übertrag

GT.S       K erhält S
GT.X       K erhält X
GT.Y       K erhält Y
GT.Z       K erhält Z

ST.S       S erhält K
ST.X       X erhält K
ST.Y       Y erhält K
ST.Z       Z erhält K

RS.X       S erhält X
RS.Y       S erhält Y
RS.Z       S erhält Z

SS.X       X erhält S
SS.Y       Y erhält S
SS.Z       Z erhält S

SL.K       B erhält A ,  A wird 0

SL.S       S LowByte erhält A ,  S HighByte wird 0
SL.X       X LowByte erhält A ,  X HighByte wird 0
SL.Y       Y LowByte erhält A ,  Y HighByte wird 0
SL.Z       Z LowByte erhält A ,  Z HighByte wird 0

GL.S       A erhält LowByte von S
GL.X       A erhält LowByte von X
GL.Y       A erhält LowByte von Y
GL.Z       A erhält LowByte von Z

GH.S       A erhält HighByte von S
GH.X       A erhält HighByte von X
GH.Y       A erhält HighByte von Y
GH.Z       A erhält HighByte von Z

EX.S       Austausch  K<>S
EX.X       Austausch  K<>X
EX.Y       Austausch  K<>Y
EX.Z       Austausch  K<>Z

ES.X       Austausch  S<>X
ES.Y       Austausch  S<>Y
ES.Z       Austausch  S<>Z

ZO.S     S wird 0
ZO.X     X wird 0
ZO.Y     Y wird 0
ZO.Z     Z wird 0

NE.V     V   wird logisch negiert
NE.U     U   wird logisch negiert
NE.A     A   wird logisch negiert
NE.B     B   wird logisch negiert
NE.K     K   wird logisch negiert

ZO.V     V   wird 0
ZO.U     U   wird 0
ZO.A     A   wird 0
ZO.B     B   wird 0
ZO.K     K   wird 0

SE.V     V   wird 1
SE.U     U   wird 1

IV.A     A wird  A+V          V erhält Übertrag
DV.A     A wird  A-V          V erhält Übertrag

IC.A     A wird  A+1
IC.K     K wird  K+1
IC.S     S wird  S+1

DC.A     A wird  A-1
DC.K     K wird  K-1
DC.S     S wird  S-1

PV.A     A wird 8-fache Kopie von V ,  V wird 0
PV.B     B wird 8-fache Kopie von V ,  V wird 0

TZ.A     wenn nicht ( A=0 )   dann   ( V wird 1 )
TZ.B     wenn nicht ( B=0 )   dann   ( V wird 1 )

RD.A     A wird abwärts  durch V rotiert
          Resultat V7654321    V erhält Bit0
RD.B     B wird abwärts  durch V rotiert
          Resultat V7654321    V erhält Bit0

RU.A     A wird aufwärts durch V rotiert
          Resultat 6543210V    V erhält Bit7
RU.B     B wird aufwärts durch V rotiert
          Resultat 6543210V    V erhält Bit7

CP.V     V wird  V xor U
CR.V     U wird  V xor U  , dann wird ein RU.A ausgeführt

TAs  mit s= 1..7      A wird s Bitstellen aufwärts verdreht
                      Resultat von TA3 ist 43210765

TKs  mit s= 1..f      K wird s Bitstellen aufwärts verdreht

IXs  mit s= 0..7      X wird  X+s+1
IYs  mit s= 0..7      Y wird  Y+s+1
IZs  mit s= 0..7      Z wird  Z+s+1

DXs  mit s= 0..7      X wird  X-s-1
DYs  mit s= 0..7      Y wird  Y-s-1
DZs  mit s= 0..7      Z wird  Z-s-1

IXE      X wird X+1 , und Austausch A<>B
IYE      Y wird Y+1 , und Austausch A<>B
IZE      Z wird Z+1 , und Austausch A<>B

DXE      X wird X-1 , und Austausch A<>B
DYE      Y wird Y-1 , und Austausch A<>B
DZE      Z wird Z-1 , und Austausch A<>B

IKL nn     K wird  K+nn+1
IXL nn     X wird  X+nn+1
IYL nn     Y wird  Y+nn+1
IZL nn     Z wird  Z+nn+1

DKL nn     K wird  K-nn-1
DXL nn     X wird  X-nn-1
DYL nn     Y wird  Y-nn-1
DZL nn     Z wird  Z-nn-1

GTA nn      K wird     00nn
GTR nn      K wird     P+nn+3
ADR nn      K wird   K+P+nn+3

NO1    no operation    1  Zyklus
NO2    no operation    2  Zyklen

NON nn      no operation    2+nn Zyklen   falls nn > 0
NON 00      K erhält R      2    Zyklen

GT.Q        K erhält Q

S.RP        R erhält P+1
O.RP nn     R erhält P+2   P wird P+nn+3

Bedingung cc ist    WY   always
                    VZ   V ist 0
                    VS   V ist nicht 0
                    UZ   U ist 0
                    US   U ist nicht 0
                    AZ   A ist 0
                    AS   A ist nicht 0
                    KZ   K ist 0
                    KS   K ist nicht 0

O.cc nn   wenn cc   dann ( P wird P+nn+3 )
B.cc nn   wenn cc   dann ( P wird P-nn-1 )
B.CN nn   wenn S >0 dann ( P wird P-nn-1 , S wird S-1 )

R.cc    wenn cc   dann ( P erhält R )
R.CN    wenn S >0 dann ( P erhält R , S wird S-1 )
R.IX    wenn S >0 dann ( P erhält R , S wird S-1 , X wird X+1 )
R.IY    wenn S >0 dann ( P erhält R , S wird S-1 , Y wird Y+1 )
R.IZ    wenn S >0 dann ( P erhält R , S wird S-1 , Z wird Z+1 )
R.DX    wenn S >0 dann ( P erhält R , S wird S-1 , X wird X-1 )
R.DY    wenn S >0 dann ( P erhält R , S wird S-1 , Y wird Y-1 )
R.DZ    wenn S >0 dann ( P erhält R , S wird S-1 , Z wird Z-1 )

Bei  O.VZ, O.VS, B.VZ, B.VS, R.VZ, R.VS   wird stets  V = 0.

Alle O-,B- Operationen dauern 3 Zyklen | 2 Zyklen   wenn der
              Sprung ausgeführt wird | nicht ausgeführt wird

J..     P und R erhalten K ,  Q und K erhalten P+1

SW.X    nach dem folgenden FE-Halbzyklus wird statt eines BN
        ein BX ausgegeben. Dies soll extern eine memory-page-
        Umschaltung für X auslösen. Das Resultat muss bereits
        beim folgenden tA zur Verfügung stehen.

SW.Y    nach dem folgenden FE-Halbzyklus wird statt eines BN
        ein BY ausgegeben. Dies soll extern eine memory-page-
        Umschaltung für Y auslösen. Das Resultat muss bereits
        beim folgenden tA zur Verfügung stehen.

SW.Z    nach dem folgenden FE-Halbzyklus wird statt eines BN
        ein BZ ausgegeben. Dies soll extern eine memory-page-
        Umschaltung für Z auslösen. Das Resultat muss bereits
        beim folgenden tA zur Verfügung stehen.

H..     wenn ein J.. folgt: J.. wird modifiziert, indem nach
           dem FE des J..-Codes statt eines BN ein BP ausge-
           geben wird. Dies soll extern eine memory-page-
           Umschaltung für P auslösen. Das Resultat muss
           bereits beim folgenden tA zur Verfügung stehen.
           Gesamtdauer  H..  J..  2 Zyklen.

        sonst:   nach diesem folgenden (FE/BN) wird ein (HA/BN)
           eingefügt.  Anzurechnen sind 2 Zyklen allein für H..

           Ausnahme: Wenn die auf H.. folgende Operation wieder
           ein H.. ist, wird (KA/BN) statt (HA/BN) ausgeführt,
           und die CPU bleibt im Zustand BN bis Reset erfolgt.

: Bearbeitet durch User
Autor: Falk B. (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Josef G. (bome)

>Hier eine Beschreibung des Befehlssatzes, ausgeschrieben ohne
>Platzhalterzeichen. Ist die Beschreibung so besser lesbar?

Nein. Dein Problem ist und bleibt das gleiche. Alles schon mal 
dagewesen, es gibt nichts neues unter der Sonne.

Beitrag "Re: Warum ist das Zoll als Maßstab für Elektronikbauteile im Elektronikbereich immer noch dominieren"

Beitrag "Re: Ein 8bit-Rechner auf dem Spartan-3A-Starterkit"

Beitrag "Re: Warum ist das Zoll als Maßstab für Elektronikbauteile im Elektronikbereich immer noch dominieren"

Beitrag "Re: 8bit-Computing mit FPGA"

: Bearbeitet durch User
Autor: Michael K. (Firma: Knoelke Elektronik) (knoelke)
Datum:

Bewertung
3 lesenswert
nicht lesenswert
Josef G. schrieb:
> Hier eine Beschreibung des Befehlssatzes, ausgeschrieben ohne
> Platzhalterzeichen. Ist die Beschreibung so besser lesbar?

Nicht wirklich.
Nehm Dir doch einfach mal die Doku eines alterwürdigen 8051, 8085, 6502, 
Z80 in die Hand und schau wie die Architektur und Befehlssatz 
dokumentiert haben.

Du ballerst das alles unsortiert auf eine Seite Fließtext und wunderst 
Dich das sich da niemand durchrackern mag.
Statt 'telling names' für die Mnemonics wie z.B. LDI = Load Immediately, 
verwendest Du einen Wust von Kürzeln die Knoten im Gehirn auslösen beim 
Versuch da durchzusteigen.
Josef G. schrieb:
> SW.Z    nach dem folgenden FE-Halbzyklus wird statt eines BN
>         ein BZ ausgegeben. Dies soll extern eine memory-page-
>         Umschaltung für Z auslösen. Das Resultat muss bereits
>         beim folgenden tA zur Verfügung stehen.

Aha, ja bitte was?
Das meine ich, das mag sich doch niemand antun.
Dir ist das alles klar, Du hast den ja auch gebaut.
Nur lebst Du da echt in Deiner eigenen Welt und kaum jemand hat Lust da 
einzutauchen weil die BO8 nichts kann was nicht schon 100mal woanders 
besser gelöst worden wäre.
Als Lernsystem vielleicht, aber das einzige was man da lernt ist eine 
hohe Frustrationstoleranz gegenüber grauenhafter Doku.

Ich höre auf zu lesen wenn sich mir kein zwingender Architekturvorteil 
erschliesst und sich der Autor noch nicht mal Mühe gibt eine saubere, 
lesbare und vernünftig formatierte Dokumentation zu liefern.

Deinen Hang zum nackten Purismuss teilt kaum jemand.
Ich erwarte ein strukturiertes, revisioniertes, PDF mit 
Inhaltsverzeichnis für ein Produkt mit dem ich mich beschäftigen soll.

Du steckst da so viel Arbeit rein und weigerst Dich seit einer Ewigkeit 
auch nur einen gutgemeinten Rat anzunehmen was Farbwahl, Struktur, 
Datenformat etc. pp. angeht.
Auch dieser Post wird so überhaupt garnichts bringen bei Dir.
Du wirst weiter Dein Ding machen, vorbei an allen anderen, obwohl Du 
eigentlich gerne Mitstreiter hättest.

Autor: Mark B. (markbrandis)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Michael K. schrieb:
> Als Lernsystem vielleicht, aber das einzige was man da lernt ist eine
> hohe Frustrationstoleranz gegenüber grauenhafter Doku.

Oh, oh, oh! Da kenn ich aber so einige Industrieprojekte, bei denen man 
das als Skill sehr gut gebrauchen kann.

:-)

Autor: Michael K. (Firma: Knoelke Elektronik) (knoelke)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Auch wieder wahr ;-)


Bewertung
3 lesenswert
nicht lesenswert
Josef G. schrieb:
> Hier eine Beschreibung des Befehlssatzes, ausgeschrieben ohne
> Platzhalterzeichen. Ist die Beschreibung so besser lesbar?

Nein. So wie im Anhang sollte es ungefähr aussehen (aus Datenblättern 
von Atmel entnommen).

Autor: A. K. (prx)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Analoger schrieb:
> Wenn er einen 80er-Jahre 8-Bitter nachbauen will, kommt er um den Akku
> nicht herum:-)

Der 8-Bit Mikrocontroller Z8 von Zilog 1979 hat keinen Akku, sondern 16 
Register.

Der 8-Bit Mikroprozessor 2650 von Signetics aus den 70ern hatte 
ebenfalls keinen Akku, sondern 4 Register.

: Bearbeitet durch User
Autor: Chris B. (dekatz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> Der 8-Bit Mikroprozessor 2650 von Signetics aus den 70ern

OMG, erinnert mich an meine ersten "Gehversuche", war in einem 
INSTRUCTOR 50 verbaut....Handassemblierung mit Bleistift und Radiergummi 
auf toten Holz etc.....

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch ein Versuch:
nn ist zweites Byte eines 2-Byte-Befehls ,  % ist  X|Y|Z

AN.B      A <=  A and B
NR.B      A <=  A nor B
XR.B      A <=  A xor B
AV.B      A <=  A+B+V            V <= Carry
SV.B      A <=  A-B-V            V <= Carry
LV.B      A <=  B-A-V            V <= Carry
GT.B      A <=  B
ST.B      B <=  A

AN. nn    A <=  A and nn
NR. nn    A <=  A nor nn
XR. nn    A <=  A xor nn
AV. nn    A <=  A+nn+V           V <= Carry
SV. nn    A <=  A-nn-V           V <= Carry
LV. nn    A <=  nn-A-V           V <= Carry
GT. nn    A <=  nn
AD. nn    A <=  A+nn

ANM%      A <=  A and (%)
NRM%      A <=  A nor (%)
XRM%      A <=  A xor (%)
AVM%      A <=  A+(%)+V          V <= Carry
SVM%      A <=  A-(%)-V          V <= Carry
LVM%      A <=  (%)-A-V          V <= Carry
GTM%      A <=  (%)
STM%     (%) <=  A

AV.S      K <=  K+S+V            V <= Carry
SV.S      K <=  K-S-V            V <= Carry
LV.S      K <=  S-K-V            V <= Carry

AD.S      K <=  K+S
SD.S      K <=  K-S
LD.S      K <=  S-K

AD.%      K <=  K+%
SD.%      K <=  K-%
LD.%      K <=  %-K

GT.S      K <=  S
ST.S      S <=  K
GT.%      K <=  %
ST.%      % <=  K

RS.%      S <=  %
SS.%      % <=  S

SL.K      B <=  A ,    A <= 0

SL.S      S LowByte <= A ,  S HighByte <= 0
SL.%      % LowByte <= A ,  % HighByte <= 0

GL.S      A <= LowByte  von S
GH.S      A <= HighByte von S
GL.%      A <= LowByte  von %
GH.%      A <= HighByte von %

EX.S      Austausch  K <> S
EX.%      Austausch  K <> %
ES.%      Austausch  S <> %

ZO.S      S <= 0
ZO.%      % <= 0

NE.V      V  wird logisch negiert
NE.U      U  wird logisch negiert
NE.A      A  wird logisch negiert
NE.B      B  wird logisch negiert
NE.K      K  wird logisch negiert

ZO.V      V <= 0
ZO.U      U <= 0
ZO.A      A <= 0
ZO.B      B <= 0
ZO.K      K <= 0

SE.V      V <= 1
SE.U      U <= 1

IV.A      A <=  A+V              V <= Carry
DV.A      A <=  A-V              V <= Carry

IC.A      A <=  A+1
IC.K      K <=  K+1
IC.S      S <=  S+1

DC.A      A <=  A-1
DC.K      K <=  K-1
DC.S      S <=  S-1

PV.A      A <=  8-fache Kopie von V ,  V <= 0
PV.B      B <=  8-fache Kopie von V ,  V <= 0

TZ.A      wenn nicht  A=0   dann   ( V <= 1 )
TZ.B      wenn nicht  B=0   dann   ( V <= 1 )

RD.A      A wird nach unten durch V rotiert
           Resultat V7654321      V <= Bit0
RD.B      B wird nach unten durch V rotiert
           Resultat V7654321      V <= Bit0

RU.A      A wird nach oben  durch V rotiert
           Resultat 6543210V      V <= Bit7
RU.B      B wird nach oben  durch V rotiert
           Resultat 6543210V      V <= Bit7

CP.V      V <=  V xor U
CR.V      U <=  V xor U , dann wird ein RU.A ausgeführt

TAs  mit s= 1..7      A wird s Bitstellen nach oben verdreht
                      Resultat von TA3 ist 43210765

TKs  mit s= 1..f      K wird s Bitstellen nach oben verdreht

I%s  mit s= 0..7      % <=  %+s+1
D%s  mit s= 0..7      % <=  %-s-1

I%E       % <= %+1 ,  und Austausch  A <> B
D%E       % <= %-1 ,  und Austausch  A <> B

IKL nn    K <=  K+nn+1
DKL nn    K <=  K-nn-1
I%L nn    % <=  %+nn+1
D%L nn    % <=  %-nn-1

GTA nn    K <=     00nn
GTR nn    K <=     P+nn+3
ADR nn    K <=   K+P+nn+3

NO1       no operation       1 Zyklus
NO2       no operation       2 Zyklen

NON nn    no operation    2+nn Zyklen   falls nn > 0
NON 00    K <=  R            2 Zyklen

GT.Q      K <=  Q

S.RP        R <= P+1
O.RP nn     R <= P+2 ,   P <= P+nn+3

Bedingung cc ist    WY   always
                    VZ   V ist 0
                    VS   V ist nicht 0
                    UZ   U ist 0
                    US   U ist nicht 0
                    AZ   A ist 0
                    AS   A ist nicht 0
                    KZ   K ist 0
                    KS   K ist nicht 0

O.cc nn    wenn cc         dann ( P <= P+nn+3 )
B.cc nn    wenn cc         dann ( P <= P-nn-1 )
B.CN nn    wenn nicht S=0  dann ( P <= P-nn-1 , S <= S-1 )

R.cc    wenn cc         dann ( P <= R )
R.CN    wenn nicht S=0  dann ( P <= R , S <= S-1 )
R.I%    wenn nicht S=0  dann ( P <= R , S <= S-1 , % <= %+1 )
R.D%    wenn nicht S=0  dann ( P <= R , S <= S-1 , % <= %-1 )

Bei  O.VZ, O.VS, B.VZ, B.VS, R.VZ, R.VS   wird   V <= 0

Alle O-,B- Operationen dauern  3 Zyklen | 2 Zyklen
           wenn der Sprung erfolgt | nicht erfolgt

J..     P und R erhalten K ,  Q und K erhalten P+1

SW.%    nach dem Einlesen des folgenden OpCodes mit FE
        wird statt eines BN ein B% ausgegeben. Das soll
        extern eine memory-page-Umschaltung bewirken.
        Das Resultat muss beim folgenden tA bereitstehen.

H..     wenn ein J.. folgt:   Nach dem Einlesen dieses OpCodes
           mit FE wird statt eines BN ein BP ausgegeben.  Das
           soll extern eine memory-page-Umschaltung bewirken.
           Das Resultat muss beim folgenden tA bereitstehen.
           Gesamtdauer  H.. und  J..  2 Zyklen.

        sonst:   Nach dem Einlesen dieses OpCodes mit (FE/BN)
           folgt ein (HA/BN).    Allein H.. dauert 2 Zyklen.

           Ausnahme:  Wenn die auf  H..  folgende Operation
           wieder ein H.. ist, erfolgt (KA/BN) statt (HA/BN),
           und die CPU bleibt im Zustand BN bis Reset erfolgt.

Autor: Falk B. (falk)
Datum:

Bewertung
4 lesenswert
nicht lesenswert
@Josef G. (bome)

>Noch ein Versuch:

Und wieder grandios gescheitert.

Autor: Marktwächter (Gast)
Datum:

Bewertung
4 lesenswert
nicht lesenswert
"Zu erreischen Gluckseligkeit unter finstrem Tann, ganz einfach 
Handbedienung von GWK 9091: 1. Auspack und freu. 2. Slippel A kaum 
abbiegen und verklappen in Gegenstippel B fuer Illumination von GWK 
9091. 3. Mit Klamer C in Sacco oder Jacke von Lebenspartner einfraesen 
und laecheln fuer Erfolg mit GWK 9091. 4. Fuer eigens Weihnachtsfeierung 
GWK 9091 setzen auf Tisch."

-Bedienungsanleitung für Weihnachtskerzen Typ GWK 9001.

"Stellen Sie die Gerte des Singweisen Griffers Zur EINSTELLUNG. Eine 
nette Singstimme wird verbeugen den anderen Teil auf denn Telephon von 
hörender Yhrer geheimer Unterredung."

-Gebrauchsanleitung für dein Handy eines asiatischen Herstellers.
Beide Beispiele von 
https://www.sueddeutsche.de/digital/kuriose-bedienungsanleitungen-teutonische-gemuetlichkeit-fuers-heim-1.11310

Jetzt ein Beispiel von  Josef G.:

A wird nach unten durch V rotiert
A wird s Bitstellen nach oben verdreht
Nach dem Einlesen dieses OpCodes
mit FE wird statt eines BN ein BP ausgegeben.

Vielleicht sollten wir Josefs Projekt mal den Chinesen zum Übersetzen 
geben. Wäre vielleicht sogar verständlicher...

Autor: Hans-Georg L. (h-g-l)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marktwächter schrieb:
> Vielleicht sollten wir Josefs Projekt mal den Chinesen zum Übersetzen
> geben. Wäre vielleicht sogar verständlicher...

Bitteschön ;-)

Josefisch

A wird nach unten durch V rotiert
A wird s Bitstellen nach oben verdreht
Nach dem Einlesen dieses OpCodes
mit FE wird statt eines BN ein BP ausgegeben.

Chinesisch

A xiàng xià xuánzhuǎn tōngguò V.
A xiàngshàng xuàn zhuǎn s wèi
kàn wán zhège OpCode zhīhòu
yǔ FE yīqǐ fāxíng BP ér bùshì BN

und zurück auf Deutsch

A dreht sich nach unten durch V.
A dreht sich ein bisschen nach oben
Nach dem Lesen dieses OpCode
Release BP statt BN mit FE.

Ich hoffe jetzt ist alles viel verständlicher ;-)

Autor: Julian W. (julian-w) Benutzerseite
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Josef G. schrieb:
> Noch ein Versuch:

Aber man muss zumindest so ehrlich sein, dass die Richtung stimmt. Das 
ist schon wesentlich lesbarer wie die kryptische Doku die du sonst so 
hast. Der Weg ist der richtige, aber am Ziel bist du noch nicht 
angekommen ;-)

Autor: Sepp (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Ich habe gerade das FPGA-Erklärungsvideo vom EEV-Blog angeschaut und ich 
muss sagen man muss schon Respekt vor Leuten haben die damit etwas 
zustande bringen :-)

Autor: 2⁵ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe hier ein paar Bücher zum 6502. Der ist jetzt wirklich nicht so 
kompliziert. Das MOS Programmier Handbuch dafür hat immerhin 140 Seiten 
plus ca 40 Seiten Anhang. Rodnay Zaks hat immerhin ca 430 Seiten 
gebraucht. Der Kurs vom 64er "Assembler ist keine Alchemie" braucht auch 
so um die 70 Seiten. Da könntest du schon ein bisschen mehr 
dokumentieren.

Beispiele: Erkläre mal alle Register. Ich musste in den in den CPU Code 
schauen (nicht sehr übersichtlich) um zu begreifen, dass X, Y und Z 
Register 16 Bit haben... habe sie doch, oder? Und Akku A und B (jeweils 
8-Bit) sind zusammen D (16 Bit), wie beim HC11, oder?

Also:

1) Register erklären (mir ist z.B. unklar, welches der Stackpointer ist)

2) Erkläre dann man die grundlegenden Befehle, also:

AN - And
NR - Nor
XR - Xor
AV - Add mit Carry, V ist das Carry-Flag (warum nicht C?)
SV - Substract mit Carry (A-B)
LV - Substract mit Carry (andersherum B - A)
GT - Get, Wert in Akku A laden
ST - Store, Wert vom Akku in Register oder im Speicher/RAM abspeichern.

3) Dann erkläre die Adressierungsarten, anhand eines Befehls, also:

GT.B - Lade den Akku A mit Inhalt von Akku B
GT. 01 - Lade den Wert 01 in den Akku (Unklar: Dezimal, Hex, ...), also 
unmittelbar
GTMX - Lade Akku A mit dem Inhalt der Speicheradresse, auf die das 
X-Register zeigt
GTMY - GTMX - Lade Akku A mit dem Inhalt der Speicheradresse, auf die 
das Y-Register zeigt
[...]
(%) bedeutet wohl, den Inhalt auf den das Register % zeigt (indirekt)
% ist der Inhalt des Registers selbst (direkt)

Gibt es neben unmittelbar, Register direkt und Register indirekt noch 
weitere Adressierungsarten? Speicher direkt scheint es ja nicht zu 
geben.
Wie läd' man eine 16-bit Adresse in das X, Y oder Z Register?
Also z.B. 0x1234 ins X Register?

Ich halte IX0, um das X-Register um eines zu erhöhen, übrigens auch für 
suboptimal... warum nicht IX1 bis IX8?

Was ist K und P?

GTA nn    K <=     00nn
GTR nn    K <=     P+nn+3
ADR nn    K <=   K+P+nn+3

Autor: 2⁵ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
2⁵ schrieb:
> (Unklar: Dezimal, Hex, ...)

Wobei das ja zum Assembler gehört.

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
1 lesenswert
nicht lesenswert
2⁵ schrieb:
> ...

Die neue Beschreibung der Befehle habe ich inzwischen
auch in den Artikel eingebaut: 8bit-CPU: bo8
Die meisten Fragen werden im Artikel beantwortet.

Eine erläuternde Beschreibung zur CPU findet sich auch
im Artikel zum Gesamt-Projekt: 8bit-Computer: bo8h

> um zu begreifen, dass X, Y und Z Register 16 Bit haben
> Und Akku A und B (jeweils 8-Bit) sind zusammen D (16 Bit)

Steht zwar nicht explizit im Artikel zur CPU, aber dort
findet sich die Breite von Adressbus und Datenbus. Und
es ergibt sich aus der Pseudo-Grafik zu den Registern.
Was du hier D nennst, heisst bei mir K.

> mir ist z.B. unklar, welches der Stackpointer ist

Gibt es nicht. Siehe hierzu die Arbeitsweise des Sprungbefehls J..

> (%) bedeutet wohl den Inhalt auf den das Register % zeigt

So ist es.

> Gibt es neben unmittelbar, Register direkt und
> Register indirekt noch weitere Adressierungsarten?

Nein.

> Wie läd' man eine 16-bit Adresse in das X, Y oder Z Register?
> Also z.B. 0x1234 ins X Register?
GTA  34
AD.  12
ST.X

> Was ist K und P?

K ist Kurzbezeichnung für AB,  P ist der Programmzähler

: Bearbeitet durch User
Autor: Marie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Josef G. schrieb:
> Die meisten Fragen werden im Artikel beantwortet.

Dass etwas irgendwo steht reicht nicht.
Es muss in einer sinnvollen Strukturierung vorhanden sein, damit es 
verständlich ist.

> Steht zwar nicht explizit im Artikel zur CPU

Du erkennst das Problem?

> Siehe hierzu die Arbeitsweise des Sprungbefehls J..

Gäbe es ein Kapitel mit dem Namen "Arbeitsweise des Sprungbefehls J..", 
wäre das einfach.

>K ist Kurzbezeichnung für AB

Totaler Unsinn, der nur Verwirrung stiftet.
Es spart nur ein einziges Zeichen. Lass es weg und nenne es AB.

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
2⁵ schrieb:
> Unklar: Dezimal, Hex, ...

Hex. Sollte klar sein durch die Zweistelligkeit von nn.

Würde im übrigen der hinter dem Projekt stehenden
Philosophie widersprechen, Dez zu verwenden.

Autor: Marie (Gast)
Datum:

Bewertung
3 lesenswert
nicht lesenswert
Josef G. schrieb:
> Sollte klar sein durch die Zweistelligkeit von nn.

nein?

> Würde im übrigen der hinter dem Projekt stehenden
> Philosophie widersprechen, Dez zu verwenden.

Und wo ist das dokumentiert?
Ist es so dokumentiert, dass man es liest, bevor man mit diesen Zahlen 
in Kontakt kommt?

Autor: Route 6. (route_66)
Datum:

Bewertung
-3 lesenswert
nicht lesenswert
Hallo, liebe Leute.
Hört doch endlich auf, auf Josef herumzutrampeln. Er will und kann 
Eure Einlassungen nie verstehen. Das ist typisch für diese Krankheit.

Beim Autismus gibt es verschiedene Ausprägungen. Die Asperger-Variante 
ist es offensichtlich nicht. Da würde Josef Alles in der dunklen Ecke 
des Kellers für sich allein machen, und nie an die Öffentlichkeit 
treten.

Eure Versuche, ihn zu belehren oder anzuleiten müssen ins Leere 
laufen.
Autisten haben ein vorgegebenes Denkmuster. Davon abweichen geht nicht. 
Fremde Einlassungen dazu kommen bei den Kranken überhaupt nicht an - als 
ob sie nie geäußert wurden.
Wenn man solche Menschen umstimmen könnte, dann wären es nur 
Ungebildete, die noch etwas Lernen können.
Bei Autisten geht das aber nicht, denn es ist eine (noch?) unheilbare 
Krankheit!

Mein Vorschlag: ein Moderator hängt das Schloß uter den Thread oder es 
antworten nur noch Jene, die dieselbe Krankheit haben und Josef deshalb 
verstehen können.

Autor: Falk B. (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Meine Rede seit Jahren. Aber auch mich versteht anscheinend keiner 8-0

Autor: Gu. F. (mitleser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Josef G. schrieb:
>> Was ist K und P?
>
> K ist Kurzbezeichnung für AB

Genial!

Autor: Radler (Gast)
Datum:

Bewertung
3 lesenswert
nicht lesenswert
Route 6. schrieb:
> Autisten haben ein vorgegebenes Denkmuster. Davon abweichen geht nicht.
> Fremde Einlassungen dazu kommen bei den Kranken überhaupt nicht an - als
> ob sie nie geäußert wurden.

Findest Du es angemessen über Autismus zu reden und Leute hier zu 
beleidigen? Der Josef kriegt eben einfach keine Doku hin und arbeitet 
chaotisch. Zudem ist das sicher kein Profiprojekt sondern Bastelei. 
Schau Dir lieber mal den Scheissdreck an, den man auf Github findet: 
Hingerotze Codes ohne Doku at all! Da gibt es überhaupt nichts dazu. Das 
Gleiche auf anderen open source Plattformen.

Die meisten Entwickler sind unfähig eine schlüssig Doku zu liefern. 
Selbst in beruflichen Projekten.


Gu. F. schrieb:
> Josef G. schrieb:
>>> Was ist K und P?
>>
>> K ist Kurzbezeichnung für AB
>
> Genial!

Da muss man erst mal drauf kommen. Ich z.B. hätte jetzt vermutet, das K 
die Kurzform für K und A ist als den Komponentenakku, den man mit dem 
Triple-Load-Befehl in die Ultra-Ionen-Register schreibt.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gu. F. schrieb:
>> K ist Kurzbezeichnung für AB
>
> Genial!

Hast du das Carry-Flag schon gefunden? ;-)

Autor: Falk B. (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Radler (Gast)

>> Autisten haben ein vorgegebenes Denkmuster. Davon abweichen geht nicht.
>> Fremde Einlassungen dazu kommen bei den Kranken überhaupt nicht an - als
>> ob sie nie geäußert wurden.

>Findest Du es angemessen über Autismus zu reden und Leute hier zu
>beleidigen?

Das ist keine Beleidigung sondern eine sachliche Feststellung, auch wenn 
sie von medizinischen Laien kommt.

> Der Josef kriegt eben einfach keine Doku hin und arbeitet
>chaotisch.

Er ist auch kommunikationsbehindert.

> Zudem ist das sicher kein Profiprojekt sondern Bastelei.

Mag sein.

>Schau Dir lieber mal den Scheissdreck an, den man auf Github findet:
>Hingerotze Codes ohne Doku at all! Da gibt es überhaupt nichts dazu. Das
>Gleiche auf anderen open source Plattformen.

Das steht gar nicht zur Debatte.

>Die meisten Entwickler sind unfähig eine schlüssig Doku zu liefern.
>Selbst in beruflichen Projekten.

Stimmt. Macht die Sache aber nicht besser.

Autor: Falk B. (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@A. K. (prx)

>>> K ist Kurzbezeichnung für AB
>
>> Genial!

>Hast du das Carry-Flag schon gefunden? ;-)

Y?

Autor: A. K. (prx)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Falk B. schrieb:
>>Hast du das Carry-Flag schon gefunden? ;-)
>
> Y?

Vast.

Autor: Sepp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kenne das: das Projekt ist im Kopf schon ziemlich fertig, nur 
Details und Doku sind eine schwere Nummer. Man muss es nicht nur 
notieren sondern auch noch schön formatieren ...

Autor: Route 6. (route_66)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Radler schrieb:
> Findest Du es angemessen über Autismus zu reden und Leute hier zu
> beleidigen?

Findest du es beleidigend, wenn ich sage meine Frau ist grippekrank?
Seit wann ist Krankheit ein Beleidigungstatbestand.
Ich bin zwar kein Mediziner, hatte aber beruflich und im privaten Umfeld 
mit verschiedensten Formen und Ausprägungen des Autismis zu tum.

Josef ist eindeutig dort einzuordnen.

Die Frage der Dokumentation ist ja nur ein Bruchteil der Symtome...

Autor: Marie (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Route 6. schrieb:
> Findest du es beleidigend, wenn ich sage meine Frau ist grippekrank?

Wenn sie nicht grippekrank ist, dann ja.
Es ist einfach unverschämt jemanden "behindert" zu nennen, wenn man 
nicht weiß, ob das eine Tatsache ist.

Autor: Joe G. (feinmechaniker) Benutzerseite
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Route 6. schrieb:
> Seit wann ist Krankheit ein Beleidigungstatbestand.
> Ich bin zwar kein Mediziner, hatte aber beruflich und im privaten Umfeld
> mit verschiedensten Formen und Ausprägungen des Autismis zu tum.

Das wundert doch etwas, dass du dann von „Krankheit“ sprichst.

Autor: Stephan N. (someone_like_you)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gibt es eigentlich irgendwo Angaben, wie gross deine CPU ist? Also FFs, 
LUTs, etc.? Und wie sieht es mit maximaler Taktfrequenz und 
Instruktionen/Sekunde aus?

In deiner Doku habe ich nicht wirklich was gefunden...

Autor: Marktwächter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stephan N. schrieb:
> In deiner Doku habe ich nicht wirklich was gefunden...

Das verwundert hier niemanden.

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stephan N. schrieb:
> Gibt es eigentlich irgendwo Angaben, wie gross deine CPU ist?

Habe ich vor langer Zeit mal herauszufinden versucht:
Beitrag "Re: Ein 8bit-Rechner auf dem Spartan-3A-Starterkit"

Die Zahlen sind nicht mehr aktuell, da ich seitdem vieles
am Code geändert habe. Neue Zahlen habe ich nicht parat.

> Und wie sieht es mit maximaler Taktfrequenz
> und Instruktionen/Sekunde aus?

Das weiss ich nicht. Du sprichst hier einen wunden Punkt an.
Ich habe bisher um die Beschäftigung mit Timing-Constraints
einen großen Bogen gemacht, das ist mir alles zu kompliziert.
Das Projekt ist halt ein Bastler-Projekt.

Natürlich habe ich versucht, in den Kombinatorik-Netzen
die Zahl der Ebenen in etwa abzuschätzen und alles
einigermaßen ausgewogen zu verteilen.

In meiner aktuellen Realisierung dauert ein Vollzyklus,
bestehend aus den Halbzyklen tA und tB, 640 Nanosekunden.
Befehle dauern 1 oder 2 oder 3 Vollzyklen.

Autor: Marie (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Josef G. schrieb:
> Du sprichst hier einen wunden Punkt an.

Zum Glück ist das der einzige Wunde Punkt des Projekts.

Autor: bko (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Marie schrieb:
> Josef G. schrieb:
>> Die meisten Fragen werden im Artikel beantwortet.
>
> Dass etwas irgendwo steht reicht nicht.
> Es muss in einer sinnvollen Strukturierung vorhanden sein, damit es
> verständlich ist.
>
>> Steht zwar nicht explizit im Artikel zur CPU
>
> Du erkennst das Problem?
@Marie: erkennst du das Problem?
vor 4 Jahren schon ähnliche Vorschläge und hat Josef seine Doku 
geändert?....
Beitrag "Re: 8bit-Computing mit FPGA"

>
>> Siehe hierzu die Arbeitsweise des Sprungbefehls J..
>
> Gäbe es ein Kapitel mit dem Namen "Arbeitsweise des Sprungbefehls J..",
> wäre das einfach.

Autor: Xilinx Synthesedienst (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Stephan N. schrieb:
> Gibt es eigentlich irgendwo Angaben, wie gross deine CPU ist? Also FFs,
> LUTs, etc.? Und wie sieht es mit maximaler Taktfrequenz und
> Instruktionen/Sekunde aus?
Siehe Anhang.
Ob das Design (noch) läuft, kann ich gerade mangels Hardware nicht 
testen.

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Xilinx Synthesedienst schrieb:
> Siehe Anhang.

Der gezeigte Ressourcen-Verbrauch gilt natürlich
für das Gesamtsystem, nicht für die CPU allein.

Das lokal geroutete cl2 im Clock-Report hatte ich
auch. Das führt jedoch nicht zu Fehlern, weil die
mit cl2 getakteten Flipflops nicht gleichzeitig
geschrieben und gelesen werden und deshalb
nicht genau gleichzeitig takten müssen.

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Das CPU-Timing:
    0     1 2     3 0     1 2     3 0
    |     | |     | |     | |     | |

    |  tA   |  tB   |  tA   |  tB   |

Typleitungen ändern ihren Zustand zu Zeitpunkten   0 und 2.
Adressen und Write-Daten sind gültig von Zeitpunkt 0 bis 2.

Einlesen von REP zu Zeitpunkten 1 und 3.
Einlesen von Read-Daten zum Zeitpunkt 1.

In einer ASIC-Realisierung der CPU als Einzelbaustein würde
man Adressbus und Datenbus bereits zum Zeitpunkt 1 hochohmig
schalten. Dann stünden die Busse während der tB-Phasen für DMA
oder einen Coprozessor zur Verfügung, und Treiberkonflikte an
den Übergängen von tA und tB wären zuverlässig ausgeschlossen.
Innerhalb eines FPGA ist das nicht nötig, da es dort keine
Tristate-Busse gibt und diese durch Logik ersetzt werden.

Vielleicht fände es jemand deshalb besser, im FPGA auch
Read-Daten erst zum Zeitpunkt 2 einzulesen. Dann stünde
für lesende Speicherzugriffe mehr Zeit zur Verfügung.

Dabei ergäbe sich jedoch folgendes Problem:

Der Befehl H.. liest zunächst den folgenden OpCode ein.
Falls das ein J.. ist, wird während tB statt BN ein BP
ausgegeben, was eine memory-page-Umschaltung für P
bewirkt, und das nachfolgende HA/BN unterbleibt.

Würde H.. den folgenden OpCode erst zum Zeitpunkt 2 einlesen,
dann könnte H.. nicht bereits ab Zeitpunkt 2 statt BN ein BP
ausgeben. Die Entscheidung müsste etwas später erfolgen. Für
die memory-page-Umschaltung bliebe immer noch genug Zeit.
Jedoch würde das Konzept der Typleitungen durchbrochen,
welche sich nur zu Zeitpunkten 0 und 2 ändern.

Als Alternative habe ich mir folgende Lösung überlegt:

H.. gibt nach dem Einlesen des folgenden Opcodes in jedem Fall
statt BN ein BP aus. Zusätzlich wird auch nach HA stets ein BP
statt BN ausgegeben. Falls also auf H.. kein J..  folgt, hebt
das zweite BP die page-Umschaltung des ersten BP wieder auf.

Ob ich selber noch dazu komme, diese Idee umzusetzen,
weiss ich nicht. Deshalb habe ich sie hier mitgeteilt.

Autor: Marktwächter (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Josef G. schrieb:
> H.. gibt nach dem Einlesen des folgenden Opcodes in jedem Fall
> statt BN ein BP aus. Zusätzlich wird auch nach HA stets ein BP
> statt BN ausgegeben. Falls also auf H.. kein J..  folgt, hebt
> das zweite BP die page-Umschaltung des ersten BP wieder auf.

Und noch ein Teil für die Sammlung der kuriosesten Sätze aller Zeiten.

Autor: Ulf (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Marktwächter schrieb:
> Und noch ein Teil für die Sammlung der kuriosesten Sätze aller Zeiten.
:-)

Josef G. schrieb:
> Ob ich selber noch dazu komme, diese Idee umzusetzen,
> weiss ich nicht.
Wer, wenn nicht Du?

Autor: adam (Gast)
Datum:

Bewertung
3 lesenswert
nicht lesenswert
Josef.
Ob da ein "<=" oder "wird zu" steht macht keinen Unterschied. Darum geht 
es auch nicht.


Josef G. schrieb:
> O.cc nn    wenn cc         dann ( P <= P+nn+3 )

Was bedeutet das O?
Wie merke ich mir, dass bei diesem Befehl "P" verändert wird?
und warum wird 3 addiert? warum nicht 2? oder 69?
Der Befehl könnte auch einfach heißen:

AddToP.cc nn

Und wenn man dann eine 3 hinzuaddiert haben möchte schreibt man noch:

AddToP.cc 3

und fertig. Das wäre schön leserlich.


> B.cc nn    wenn cc         dann ( P <= P-nn-1 )

B... wofür steht das?
Wie merke ich mir, dass hier subtrahiert wird?
Und wo kommt die -1 her?

Warum nicht: SubFromP.cc nn


> B.CN nn    wenn nicht S=0  dann ( P <= P-nn-1 , S <= S-1 )

Ach du meine Güte...
Wofür steht B? Wofür C und wofür N?
Und für was benötigt man solch einen Befehl?
Kann man nicht einfach einen bedingten Sprung zu einer Stelle ausführen,
wo dann P <= P-nn-1 und S <= S-1 gemacht wird?

Also quasi so:
JMP.SNZ label             # Jump if S Not Zero
...
label:
DEC P                     # Decrement P
SUB P, nn                 # Subtract nn from P
DEC S                     # Decrement S

Wäre doch viel besser lesbar und übersichtlicher.

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
adam schrieb:
> ...
> Josef G. schrieb:
>> O.cc nn    wenn cc         dann ( P <= P+nn+3 )
>
> Was bedeutet das O?
> Wie merke ich mir, dass bei diesem Befehl "P" verändert wird?
> und warum wird 3 addiert? warum nicht 2? oder 69?

O.cc nn   omit  Vorwärtssprung falls cc

P ist der Programmzähler

P    Adresse des OpCodes
P+1  Adresse des Distanzbytes nn
P+2  erstes nachfolgendes Byte
P+3  zweites nachfolgendes Byte

Der Offset 3 ist so gewählt, dass mindestens 1 nach-
folgendes Byte übersprungen wird (wenn also nn = 0 ist).

>
>> B.cc nn    wenn cc         dann ( P <= P-nn-1 )
>
> B... wofür steht das?
> Wie merke ich mir, dass hier subtrahiert wird?
> Und wo kommt die -1 her?

B.cc nn   back   Rückwärtssprung falls cc

P-1  ist die Adresse des letzten Bytes vor dem OpCode.

Der Offset -1 ist so gewählt, dass mindestens dieses
eine Byte wiederholt wird (wenn also nn = 0 ist)

>
>> B.CN nn    wenn nicht S=0  dann ( P <= P-nn-1 , S <= S-1 )
>
> Wofür steht B? Wofür C und wofür N?

B.CN   back  ,  counting

> Und für was benötigt man solch einen Befehl?

Zur Beschleunigung von Zählschleifen. S ist der Schleifenzähler.

Vergleiche hierzu auch den Befehl DJNZ des Z80.

Autor: Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite
Datum:

Bewertung
3 lesenswert
nicht lesenswert
Hallo Josef,

es geht nicht darum, dass Du in diesem Thread die offenen Fragen und 
missverständlichen Themen erklärst, sondern all diese Informationen 
gehören in die strukturierte Projektdokumentation. Jemand, der diesem 
Thread nicht folgt und nur Deine Projektdateien kennt, wird die 
Informationen nicht erhalten.

Nimm Dir doch einfach ein normales Lehrbuch für eine der etablierten 
Prozessorarchitekturen als Vorlage, d.h. gerne etwas aus der 8-Bit-Ära 
der 1980er Jahre. In solchen Büchern findet man immer eine 
zusammenhängende Beschreibung aller Register, d.h. mit dem jeweiligen 
Verwendungszweck, der Breite usw.. Dann werden die Adressierungsarten 
definiert und im Detail erklärt. Und zuguterletzt folgt dann der 
eigentliche Befehlssatz, bei dem jeder einzelne Befehl erklärt wird, und 
zwar unter Zuhilfenahme der vorherigen Erläuterungen zu Registern und 
Adressierungsarten.

Genauso bedarf es auch noch Kapitel über die Hardwarearchitektur, d.h. 
Busse, Timing, Adressräume, Taktung, usw..

Wenn man einen Prozessor mit vielen Registern und recht orthogonalem 
Befehlssatz (also nicht bo8) hat, sollten auch Konventionen für die 
Registernutzung festgelegt werden. Bei "klassischen" ARM-Prozessoren im 
32-Bit-Modus wurden z.B. R13 für den Stackpointer und R14 als 
Linkregister definiert, obwohl eigentlich alle Register (außer dem PC 
R15) hierfür hätten verwendet werden können. ARM hat diese Konventionen, 
die insbesondere für Compilerhersteller von allergrößter Wichtigkeit 
sind, als APCS bzw. ATPCS (ARM(/Thumb) procedure calling standard) 
benannt.

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Andreas S. schrieb:
> Jemand, der diesem
> Thread nicht folgt und nur Deine Projektdateien
> kennt, wird die Informationen nicht erhalten.

Auf bo8h.de ist meine mikrocontroller.net-Benutzerseite
verlinkt. Dort finden sich Links zu den Forenbeiträgen.
Und in den beiden Artikeln zum Gesamtsystem und
zur CPU wird auf die Forenbeiträge verwiesen.

Autor: Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Das ist doch absoluter Murks. Alle Grundlagen MÜSSEN in der 
Dokumentation an einer Stelle stehen, und zwar in sinnvolle Kapitel 
eingeteilt. Nur ergänzende Informationen dürfen extern verlinkt sein. 
Ansonsten wird sich niemand die Mühe machen, alles durchzuarbeiten.

Stelle Dir doch vor, Xilinx würde Deine Vorgehensweise umsetzen. Statt 
der sehr umfangreichen Handbücher zu so ziemlich jeder Kleinigkeit der 
Bausteine und Toolchain (und noch etliche andere Dinge) stünde dort nur 
noch ein kleiner Teil. Und den Rest findet man nur noch als Diskussion 
in irgendwelchen Elektronikforen. Na super.

Aber irgendwie hat Xilinx das anders gemacht, d.h. sie haben erkannt, 
dass die sehr umfangreichen Handbücher eine übergreifende Verwaltungs- 
und Suchfunktion benötigen. Folglich gibt es den DocNav. Das ist also 
genau das Gegenteil der von Dir propagierende Zerfledderung der 
Dokumentation.

Wie viele Leute würden einen Microblaze einsetzen, wenn sie sich dessen 
Dokumentation zwingend in Internetforen zusammensuchen müssten?

Autor: Michael K. (Firma: Knoelke Elektronik) (knoelke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Josef G. schrieb:
> Dort finden sich Links zu den Forenbeiträgen.

Also wie bei den Ludolfs.
Ist alles da, irgendwo in dem großen Haufen, unter all dem Schrott der 
sich so angesammelt hat.

Ja, hört sich nach einem tollen System an.
Die Doku ist zwar Müll, dafür ist der Code aber unleserlich.
Das System macht zwar nichts besser als hervorragend dokumentierte MCUs, 
dafür gibt es aber wenigstens keine erkennbare Codebasis, keinen 
Compiler und kryptische ASM Mnemonics.
Der einzige Entwickler ist zwar vollkommen unsteuerbar und 
beratungsresistent, dafür gibt es aber eine riesige Community die das 
Teil nicht mit der Kneifzange anfassen würde.

Ich frage mich nur warum Du so viel Zeit darin investierst wenn es Dir 
doch offensichtlich vollkommen egal ist das es in diesem Zustand von 
niemanden verwendbar ist und auf dieser Basis auch niemand bereit sein 
wird sich an diesem Projekt zu beteiligen.

Noch nicht mal als Referenzprojekt für Bewerbungen taugt es.
Jeder Personaler wird die Hände über den Kopf zusammenschlagen wenn er 
Deine isolierte Arbeitsweise sieht und Deine fehlende Bereitschaft auf 
Feedback einzugehen.

Als Spaßprojekt das niemanden ausser Dir gefallen muss, sicher ganz 
tauglich.

Autor: Falk B. (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Michael K. (Firma: Knoelke Elektronik) (knoelke)

>Ich frage mich nur warum Du so viel Zeit darin investierst wenn es Dir
>doch offensichtlich vollkommen egal ist das es in diesem Zustand von
>niemanden verwendbar ist und auf dieser Basis auch niemand bereit sein
>wird sich an diesem Projekt zu beteiligen.

Ich frage mich, warum DU noch nicht kapiert hast, wo das grundlegende 
Problem WIRKLICH liegt?

Beitrag "Re: 8bit-Computing mit FPGA"

Autor: Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Josef G. schrieb:
> Natürlich habe ich versucht, in den Kombinatorik-Netzen
> die Zahl der Ebenen in etwa abzuschätzen und alles
> einigermaßen ausgewogen zu verteilen.

Bei heutigen FPGA wird Kombinatorik in LUTs realisiert, d.h. bereits das 
Synthesetool fasst sehr vieles zusammen, sofern LUTs mit der 
entsprechenden Anzahl von Eingängen verfügbar sind. Um also den 
Ressourcenverbrauch und/oder die Signallaufzeiten zu optimieren, sollte 
man sich eher anschauen, wie die eigene Logik durch das Synthesetool 
abgebildet wird. Und hierbei hilft ein Blick in den generierten 
Schaltplan ganz ungemein. Lothar Miller hat auf seiner Homepage auch ein 
paar schöne Beispiele aufgeführt.

Autor: Michael K. (Firma: Knoelke Elektronik) (knoelke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falk B. schrieb:
> Ich frage mich, warum DU noch nicht kapiert hast, wo das grundlegende
> Problem WIRKLICH liegt?

Och Falk, das habe ich schon lange kapiert.
Ich schreibe hier aus dem gleichen Grund wie Du: Zerstreuung...

Autor: Sepp (Gast)
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
Pssst...der Meister reflektiert gerade ...

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Das bisherige CPU-Timing:
    0     1 2     3 0     1 2     3 0
    |     | |     | |     | |     | |

    |  tA   |  tB   |  tA   |  tB   |

Typleitungen ändern ihren Zustand zu Zeitpunkten   0 und 2.
Adressen und Write-Daten sind gültig von Zeitpunkt 0 bis 2.

Einlesen von REP zu Zeitpunkten 1 und 3.
Einlesen von Read-Daten zum Zeitpunkt 1.

Josef G. schrieb:
>
> ...
> ...
>
> Vielleicht fände es jemand deshalb besser, im FPGA auch
> Read-Daten erst zum Zeitpunkt 2 einzulesen. Dann stünde
> für lesende Speicherzugriffe mehr Zeit zur Verfügung.
>
> Dabei ergäbe sich jedoch folgendes Problem:
>
> Der Befehl H.. liest zunächst den folgenden OpCode ein.
> Falls das ein J.. ist, wird während tB statt BN ein BP
> ausgegeben, was eine memory-page-Umschaltung für P
> bewirkt, und das nachfolgende HA/BN unterbleibt.
>
> Würde H.. den folgenden OpCode erst zum Zeitpunkt 2 einlesen,
> dann könnte H.. nicht bereits ab Zeitpunkt 2 statt BN ein BP
> ausgeben. Die Entscheidung müsste etwas später erfolgen. Für
> die memory-page-Umschaltung bliebe immer noch genug Zeit.
> Jedoch würde das Konzept der Typleitungen durchbrochen,
> welche sich nur zu Zeitpunkten 0 und 2 ändern.
>
> Als Alternative habe ich mir folgende Lösung überlegt:
>
> H.. gibt nach dem Einlesen des folgenden Opcodes in jedem Fall
> statt BN ein BP aus. Zusätzlich wird auch nach HA stets ein BP
> statt BN ausgegeben. Falls also auf H.. kein J..  folgt, hebt
> das zweite BP die page-Umschaltung des ersten BP wieder auf.


Habe das jetzt so umgesetzt. Das Einlesen von
Read-Daten erfolgt jetzt erst zum Zeitpunkt 2.

8bit-CPU: bo8

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eigentlich habe ich mir angewöhnt, negative Bewertungen
zu ignorieren. Aber bei meinem vorherigen Beitrag würde
es mich schon interessieren, woran es liegt.

Gibt es etwa hier jemanden, der das Einlesen
der Read-Daten zum Zeitpunkt 1 besser fand?

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PS: Als ich das schrieb, stand die Bewertung auf -3.

Autor: MWS (Gast)
Datum:

Bewertung
3 lesenswert
nicht lesenswert
Josef G. schrieb:
> PS: Als ich das schrieb, stand die Bewertung auf -3.

Der Umstand sollte Dir zu denken geben, dass der Fankreis für die 
Zwangsstörung größer zu sein scheint, als der Fankreis für die Sache 
selbst.

Autor: Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Josef G. schrieb:
> Eigentlich habe ich mir angewöhnt, negative Bewertungen
> zu ignorieren. Aber bei meinem vorherigen Beitrag würde
> es mich schon interessieren, woran es liegt.
>
> Gibt es etwa hier jemanden, der das Einlesen
> der Read-Daten zum Zeitpunkt 1 besser fand?

Nein, es interessiert hier niemanden auch nur die Bohne, zu welchem 
Zeitpunkt das Einlesen stattfindet, weil sich niemand außer Dir selbst 
mit den Interna des bo8 beschäftigt. Die wenigen Leute, die vor langer 
Zeit daran interessiert waren, hast Du mittlerweile sehr erfolgreich 
vergrault.

Wir haben hier schon Unmengen an Ratschlägen gegeben, wie du das 
Interesse steigern könntest. Statt auf diese einzugehen, bügelst Du sie 
nur ab und frickelst weiter an dem Prozessor herum. Spätestens mit den 
immer wieder stattfindenden Befehlssatzänderungen vertreibst Du nicht 
nur die Leute, die an der Hardware interessiert wären, sondern jeden, 
der für den bo8 Software schreibt. Solche Änderungen bedeuten im 
Zweifelsfall, vorhandene Programme Zeile für Zeile durchgehen zu müssen, 
um zu schauen, wo es inkompatibel wurde.

Dein Projekt ist und bleibt also nichts anderes als eine 
Modelleisenbahnanlage, an der nur Du herumbastelst. Als Bastler kann man 
damit sehr viel Spaß haben, und wenn man solch eine Anlage alle paar 
Monate oder Jahre seiner Familie oder Bekannten vorführt, bekommt man 
für eine schöne Anlage auch viel durchaus ernstgemeintes Lob. Niemand 
käme jedoch auf die Idee, mitbasteln zu wollen (, außer z.B. meiner 
Frau, die mit größter Begeisterung Häuser zusammenbaut), sondern würde 
lieber eine eigene Anlage aufbauen wollen. Natürlich kann man auch an 
einer Clubanlage herumbasteln, aber das ist nur etwas für ganz 
hartgesottene Waldschrate.

Erfolgreiche große Modellbahnen werden nicht von Leuten aufgebaut und 
betrieben, die eigentlich nur im eigenen stillen Kämmerchen basteln 
wollen, sondern von Profis, die aus den verschiedensten Gewerken 
stammen. Und das sind nicht nur Handwerker, sondern auch Kaufleute, 
Marketingleute, usw..

https://www.miniatur-wunderland.de/

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Andreas S. schrieb:
> es interessiert hier niemanden auch nur die Bohne,

Wäre schön, wenn die Leute, die an der Sache nicht
interessiert sind, hier einfach wegbleiben würden.

Dann würde der Thread nicht durch sachfremde
Beiträge so aufgebläht, und die sachlichen
Beiträge wären leichter zu finden.

Autor: Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Josef G. schrieb:
> Wäre schön, wenn die Leute, die an der Sache nicht
> interessiert sind, hier einfach wegbleiben würden.

MWS hat das schon sehr zutreffend formuliert.

Autor: Florian (Gast)
Datum:

Bewertung
4 lesenswert
nicht lesenswert
Josef G. schrieb:
> Wäre schön, wenn die Leute, die an der Sache nicht
> interessiert sind, hier einfach wegbleiben würden

Dir ist schon klar, dass es hier das uC.net ist?
Wenn du sachlich willst, musst du in ein Forum gehen bei dem
Mods unsachliche Beiträge löschen. Und mit unsachliche Beiträge meine
ich nicht Kritik an den Mods (die hier gelöscht wird) sondern 
unsachliche Beiträge
die nichts mit dem Titel zu tun hat (die hier stehen gelassen werden).

Autor: der_clone (Gast)
Datum:

Bewertung
3 lesenswert
nicht lesenswert
Josef G. schrieb:
> Wäre schön, wenn die Leute, die an der Sache nicht
> interessiert sind, hier einfach wegbleiben würden.

Dann würde außer dir aber keiner schreiben...

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
Beitrag "Re: Gibt es eine Programmiersprache mit diesem Schleifentyp?"

>> du hingegen hast hier Arbeit auf 2 Befehle aufgeteilt (S.RP  und  R.IY)
>> d.h. man muss fairerweise auch die Zeit von beiden addieren..
>
> Nein, man muss die Zeiten nicht addieren. Das S.RP steht
> ausserhalb der Schleife und wird nur 1-mal ausgeführt.


Habe gerade im Artikel zum Gesamtsystem im Abschnitt zur CPU
eine missverständliche Formulierung entdeckt. Da stand, die
Schleifenstartadresse R werde gesetzt am Schleifenanfang.
Tatsächlich wird sie gesetzt vor dem Schleifenanfang.

Möchte hier darauf hinweisen für den Fall, dass
die Falschinformation jemanden vergrault hat.

8bit-Computer: bo8h

Autor: Michael K. (Firma: Knoelke Elektronik) (knoelke)
Datum:

Bewertung
3 lesenswert
nicht lesenswert
Josef G. schrieb:
> Wäre schön, wenn die Leute, die an der Sache nicht
> interessiert sind, hier einfach wegbleiben würden.

Du suchst Die Öffentlichkeit und Du findest sie auch, nur nicht die 
Öffentlichkeit die Du gerne hättest.
Es wurde sowohl inhaltlich über die BO8 (teilweise sehr fachlich 
fundiert) als auch über die Art Deiner Dokumentation gesprochen.

Da man bei Dir aber das Gefühl hat mit einer Parkuhr zu sprechen und 
keine der Rückmeldungen zu wesentlichen Änderungen geführt hat, wird 
nunmal überwiegend darüber gesprochen warum keiner mehr Bock hat sich 
das weiter anzutun.

Du möchtest Anwender und Mitstreiter, aber es gelten ausschliesslich 
Deine Regeln dabei.
Das funktioniert schon im Job nicht und es funktioniert auch ganz 
bestimmt nicht hier.
Da Du da aber vollkommen beratungsresistent bist, unterhalten wir uns 
über den Grad der Behinderung.
Verständlich für die meisten, für Dich natürlich nicht, was ja wiederum 
Teil der Diskussion ist.

Wenn Dir das nicht gefällt, ist das hier ganz bestimmt das falsche 
Forum.
Anarchie bedeutet die Diktatur der Masse.
Leb damit oder nicht.

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
-4 lesenswert
nicht lesenswert
Michael K. schrieb:
> Da Du da aber vollkommen beratungsresistent bist,

Immerhin habe ich die Befehlssatz-Beschreibung geändert.

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
-4 lesenswert
nicht lesenswert
Andreas S. schrieb:
> Spätestens mit den immer wieder stattfindenden
> Befehlssatzänderungen vertreibst Du nicht nur
> die Leute, die an der Hardware interessiert wären,
> sondern jeden, der für den bo8 Software schreibt.

Hier eine Zusammenstellung aller durchgeführten Änderungen

Ursprünglich gab es die Operationen
AZ.A    A <= A+V        V <= Carry
SZ.A    A <= A-V        V <= Carry
LZ.A    A <= 0-A-V      V <= Carry

Sie wurden für kurze Zeit ersetzt durch
NA.A    A wird arithmetisch negiert
NA.K    K wird arithmetisch negiert
ZO.K    K <= 0

Die ersten zwei Ersetzungen wurden rückgängig gemacht,
AZ.A und SZ.A heissen jetzt IV.A und DV.A
IV.A    A <= A+V        V <= Carry
DV.A    A <= A-V        V <= Carry
ZO.K    K <= 0

Und die Befehle wurden neu angeordnet.

Hinzu kommen folgende Änderungen bei den Mnemonics:

Die logischen Negationen NG.* heissen jetzt NE.*
EX.B (Austausch von A und B) heisst jetzt TK8

Das ist der Stand seit Juni 2016.
Beitrag "Re: 8bit-Computing mit FPGA"

Es gab noch eine Änderung bei der Codefolge H.. H..
Beitrag "Re: 8bit-Computing mit FPGA"

Autor: Michael K. (Firma: Knoelke Elektronik) (knoelke)
Datum:

Bewertung
3 lesenswert
nicht lesenswert
Josef G. schrieb:
> Immerhin habe ich die Befehlssatz-Beschreibung geändert.

Ja ...
Im Josef Style.
Die Anregung die BO8 so zu dokumentieren wie es jeder andere MCU 
Hersteller tut ist aber wirkungslos an Dir abgeprallt.
Du siehst die Notwendigkeit nicht und damit hat es auch für keinen 
anderen notwendig zu sein.
Die Leute die Du versuchst anzusprechen verlangen aber eine bestimmte 
Form der Dokumentation.
Die sind sie gewohnt, mit sowas können sie schnell und effizient 
arbeiten.
Die bekommen sie nicht von Dir und daher bekommst Du nicht ihre 
Mitarbeit.

Wie sagte Falk: Der Wurm muss dem Fisch schmecken, nicht dem Angler.

Ist ja okay, das kannst Du so machen, ist ja Dein Projekt.
Jetzt bleibt es aber auch Deins, weil die ernsthaft interessierten 
längst weitergezogen sind.
Der Drops ist gelutscht.

Autor: ehemaliger 8 Bitter (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Josef G. schrieb:
> Typleitungen ändern ihren Zustand zu Zeitpunkten   0 und 2.
> Adressen und Write-Daten sind gültig von Zeitpunkt 0 bis 2.
Also ehrlich, ich kapiere nicht, was das ist oder sein soll.

Ein Diagramm braucht eine Überschrift, eine Einleitung und einen Bezug.
Wenn man sich alles zusammensuchen muss, ist das nix.

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ehemaliger 8 Bitter schrieb:
> Also ehrlich, ich kapiere nicht, was das ist oder sein soll.

Hast du den Artikel schon angeschaut?
8bit-CPU: bo8

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas S. schrieb:
> Nein, es interessiert hier niemanden ..., zu welchem
> Zeitpunkt das Einlesen stattfindet, weil sich niemand
> außer Dir selbst mit den Interna des bo8 beschäftigt.

Der Einlese-Zeitpunkt ist keine interne Eigenschaft,
sondern durchaus von Bedeutung für die Anwendung.

Und die Verlegung von Zeitpunkt 1 auf Zeitpunkt 2
ist eine deutliche Verbesserung, durch welche es
vielleicht doch einmal Anwender geben wird.

Autor: udok (Gast)
Datum:

Bewertung
-4 lesenswert
nicht lesenswert
Ich finde die CPU super, das ist endlich mal ein Ding
für einen richigen Mann.
Sind nur Waschweiber hier unterwegs, wie es scheint.

Autor: Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Josef G. schrieb:
> Und die Verlegung von Zeitpunkt 1 auf Zeitpunkt 2
> ist eine deutliche Verbesserung, durch welche es
> vielleicht doch einmal Anwender geben wird.

Allmählich glaube ich nicht mehr daran, dass bei Dir eine autistische 
Störung vorliegt, sondern dass es sich um ein von Dir betriebenes 
psychologisches Experiment handelt, bei dem Du die Reaktionen anderer 
Forenmitglieder auf (vorgetäuschtes) autistisches Handeln beobachten 
willst.

: Bearbeitet durch User
Autor: udok (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Früher gab es für echte 8-bit CPUs DIN-A4 grosse Beschreibungen
aller wesentlichen Register und Befehle, um damit arbeiten zu können.
War echt praktisch.

Meine erste 8-Bit CPU war noch mit Low Power Schottky TTL Logik 
aufgebaut,
und die kompletten Schaltpläne passten auf eine Handvoll Seiten.
Ist ja nicht so kompliziert so eine winzige CPU...

Die Doku ist bei so einem Projekt ohnehin nicht so wichtig, wer sich 
dafür
interessiert, muss halt mal reinbeissen, oder solls bleiben lassen.

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gerade gefunden, interessant auch wegen des Autors:
Beitrag "Re: Flankenerkennung schlägt fehl (VHDL)"

> this_is_the_external_signal_that_should_be_evaluated_and_counted

> merkst du, dass diese Unterstrichorgie extrem schlecht lesbar ist?

Tja, mein auf der Grundlinie liegender
Bindestrich ist wohl doch eine gute Idee.

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
-1 lesenswert
nicht lesenswert

Autor: Poldi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Josef G. schrieb:
> Projekt-Website: http://www.bomerenzprojekt.de

Das Projekt ist nicht erreichbar. Seite geändert?

Autor: Josef G. (bome) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Poldi schrieb:
> Das Projekt ist nicht erreichbar. Seite geändert?

Ja, schon vor langer Zeit.
Neue Website ist http://www.bo8h.de
Beitrag "Re: 8bit-Computing mit FPGA"

Siehe auch meine Benutzerseite, rechts neben dem Benutzernamen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.