Forum: Projekte & Code 8bit-Computing mit FPGA


von Josef G. (bome) Benutzerseite


Lesenswert?

Michael schrieb:
> Und auch vollkommen nutzlos, wie selbst der TO erkennt.

Nutzlos sind nicht die Befehle CP.V und CP.U. Verzichtbar ist vielmehr 
die vorher bestehende Kombination von CP.U mit einem nachfolgenden RU.A, 
welche zwar vielleicht nützlich wäre, aber das Prinzip der Einfachheit 
verletzte.

von Mampf F. (mampf) Benutzerseite


Lesenswert?

Josef G. schrieb:
> Symmetrisch zum
> Befehl CP.V (V wird V xor U) gibt es jetzt den Befehl CP.U (U wird V xor
> U).

Das ist ja höchst sonderbar ...

CP.V und CP.U sollten Assembler-Makros sein für einen Befehl CP, der 
zwei beliebige deiner Register als Parameter bekommt (CP dst srt -> dst 
= dst xor src)

Und wofür steht CP überhaupt - wieso kann man das nicht XOR nennen, wenn 
es zwei Register verXORt? 🤔

von Michael (Firma: HW Entwicklung) (mkn)


Lesenswert?

Josef G. schrieb:
> das Prinzip der Einfachheit

Josef, Du solltest wissen das ich Dich nur veräppel.
Niemand außer Dir benutzt die BO8 oder will daran mitwirken.
Niemand außer Dir hält die Doku für irgendwie akzeptabel.
Über die Gründe wurde lang sinniert.
Ist Dein Projekt, Du machst das wie Du meinst.

Nur ist überschreitet dann Entwicklercrew + Userbasis nie den Wert 1.

Alle paar Monate kommt mal:
'Oh, ich habe das was geändert, was gerade alles hinfällig gemacht hat 
was jemals jemand dafür geschrieben haben könnte.'
Okay.
Aber welcher Userbasis erzählst Du das?

von Josef G. (bome) Benutzerseite


Lesenswert?

Mampf F. schrieb:
> Befehl CP, der zwei beliebige deiner Register als Parameter bekommt

In der Notation meines Assemblers sind Register-Operanden Teil des 
Mnemonic-Namens. So wie es auch beim 6502 war. Das ist möglich, weil es 
nur wenige Register gibt.

> Und wofür steht CP überhaupt - wieso kann man das nicht XOR nennen,

CP steht für Compare. Habe ich gewählt wegen des besseren Kontrasts zu 
den 8bit-XR-Befehlen des Akkus.

von Josef G. (bome) Benutzerseite


Lesenswert?

Michael schrieb:
> Aber welcher Userbasis erzählst Du das?

Ich erzähle das den potentiellen Mitstreitern, die ich damit gewinnen 
möchte.

von Michael (Firma: HW Entwicklung) (mkn)


Lesenswert?

Josef G. schrieb:
> damit gewinnen
Hm.
Du meinst bevor die Sonne zum Schneeball wird?
Woran könnte das nur liegen?

von Klaus (feelfree)


Lesenswert?

Josef G. schrieb:
> CP steht für Compare.

Also ein Befehl, der CP heißt, das zwar wie "copy" klingt, aber für die 
Abkürzung von Compare steht, und schließlich ein XOR ausführt.

Kann man sich nicht ausdenken sowas.

von Josef G. (bome) Benutzerseite


Lesenswert?

Josef G. schrieb:
> Im VHDL-Code habe ich die internen Tristates entfernt. Das reduziert
> die Anzahl der Warnungen bei der Synthese, bei Quartus sogar drastisch.

Da es auf der vorherigen Seite steht, hier nochmal zitiert, damit es 
nicht untergeht. Vielleicht hat ja jemand versuchsweise das Projekt in 
Quartus compiliert und war von den vielen Warnungen abgeschreckt.

Wäre sehr schön, wenn sich hier jemand meldet, der das Projekt auf DE0 
oder DE0-nano oder DE0-CV realisiert hat. Merkwürdigerweise ist das 
DE0-CV mit Cyclone V nicht mehr neu erhältlich, wohl aber das DE0 mit 
dem alten Cyclone III, für den man das alte Quartus 13.0 SP1 braucht. 
Neu erhältlich ist nach wie vor das DE0-nano mit Cyclone IV, welcher 
auch vom aktuellen Quartus unterstützt wird. Erfordert für mein Projekt 
aber Lötarbeit.

von Falk B. (falk)


Lesenswert?

Die Hoffnung stirbt zuletzt . . .

von Gerhard H. (hauptmann)


Lesenswert?

Michael schrieb:
> Aber welcher Userbasis erzählst Du das?

Jeder der ein gewisses Maß an Arbeit in ein Projekt gesteckt und weiter 
daran Freude hat wird nur schwer davon ablassen. Da wird sich die 
(potentielle) Nutzerbasis dieses großen Forums halt begeistert 
hinzufantasiert.
Alles ganz menschlich.
Viel Spaß Josef an allen weiteren geplanten Änderungen. Wichtig ist nur, 
daß sie für Dich Sinn ergeben!

von J. S. (engineer) Benutzerseite


Lesenswert?

Josef G. schrieb:
> Im VHDL-Code habe ich die internen Tristates entfernt. Das reduziert
> die Anzahl der Warnungen bei der Synthese, bei Quartus sogar drastisch.

Das ist ein guter Zug, Dinge aus den Beschreibungen zu werfen, die etwas 
beschreiben, was es nicht geben kann.

Man glaubt gar nicht, wieviele Leute es gibt, die sowas im FPGA Code 
haben. Inklusive Buffer-Konstrukte.

von Falk B. (falk)


Lesenswert?

J. S. schrieb:
> Das ist ein guter Zug, Dinge aus den Beschreibungen zu werfen, die etwas
> beschreiben, was es nicht geben kann.

Naja, früher(tm) zu seeligen Xilinx Spartan und 4000er Zeiten Mitte der 
1990er Jaghre gab es interne Tristate Buffer. Ist aber lange her und aus 
gutem Grund nicht mehr vorhanden. Zu groß, zu langsam.

von Mampf F. (mampf) Benutzerseite


Lesenswert?

J. S. schrieb:
> Josef G. schrieb:
>> Im VHDL-Code habe ich die internen Tristates entfernt. Das reduziert
>> die Anzahl der Warnungen bei der Synthese, bei Quartus sogar drastisch.
>
> Das ist ein guter Zug, Dinge aus den Beschreibungen zu werfen, die etwas
> beschreiben, was es nicht geben kann.

looool, das gleiche hab ich mir auch gedacht 😂😂😂

Ich meine wie alt ist das Projekt schon ... 10+ Jahre? Und immer noch 
war da sowas eingebaut? 🤔

Und nach soooooo langer Zeit ist nicht mal der Instruction-Set stable 
...

: Bearbeitet durch User
von Philipp Klaus K. (pkk)


Lesenswert?

Klaus schrieb:
> Josef G. schrieb:
>> CP steht für Compare.
>
> Also ein Befehl, der CP heißt, das zwar wie "copy" klingt, aber für die
> Abkürzung von Compare steht, […]

Das ist üblich: Es fallen mir spontan Z80 (und Derivate), STM8, 
HC08/S08, 6502 ein, bei denen "cp" mnemonic für "compare" ist.

von Klaus (feelfree)


Lesenswert?

Philipp Klaus K. schrieb:
> Das ist üblich: Es fallen mir spontan Z80 (und Derivate), STM8,
> HC08/S08, 6502 ein, bei denen "cp" mnemonic für "compare" ist.

Und die führen dann auch eine xor-Operation aus statt einem compare? 
Dann nehme ich meine Kritik zurück....

von Josef G. (bome) Benutzerseite


Lesenswert?

Klaus schrieb:
> Und die führen dann auch eine xor-Operation aus statt einem compare?

Ein 1-Bit-Compare ist nichts anderes als ein XOR.

von Klaus (feelfree)


Lesenswert?

Josef G. schrieb:
> Ein 1-Bit-Compare ist nichts anderes als ein XOR.

Ein compare vergleicht zwei Operanden und stellt das Ergebnis in einem 
Flag zur Verfügung.
Die Operanden selbst bleiben dabei unverändert.

von Josef G. (bome) Benutzerseite


Lesenswert?

Josef G. schrieb:
> Ein 1-Bit-Compare ist nichts anderes als ein XOR.

Jedenfalls dann, wenn man auf Gleichheit testen will.
Man könnte natürlich auch auf kleiner-gleich testen.
Das wäre etwas anderes.

Klaus schrieb:
> Ein compare vergleicht zwei Operanden und stellt das Ergebnis in einem
> Flag zur Verfügung. Die Operanden selbst bleiben dabei unverändert.

Ausser wenn das Flag einer der Operanden ist.

von Mampf F. (mampf) Benutzerseite


Lesenswert?

Josef G. schrieb:
> Klaus schrieb:
>> Und die führen dann auch eine xor-Operation aus statt einem compare?
>
> Ein 1-Bit-Compare ist nichts anderes als ein XOR.

du hast 1bit Register? 😳

von Rick (rick)


Lesenswert?

Mampf F. schrieb:
> du hast 1bit Register? 😳
Natürlich! Und zwar ganz Viele! Wirklich!
Und die sind genauso intuitiv benannt, wie die OpCodes:
1
  signal  outa, outk, outp, outr, outx, outy, outz, outd,
2
          wnn, ennpp, ennrr, ennkk,
3
          we2, wopb, wccc, nccc, eccvs, eccus, eccas, eccks, eccss,
4
          wtab, nta, ntb, etabs, etaa, etab, etava, etaav, etae1, etat,
5
          etba, etbb, etbvb, etbbv, etbe1, etbop, wcd, ncd, ecdt,
6
          ecds, ecdk, ecdx, ecdy, ecdz, ecdp, ecdr, ecdq,
7
          wtw, ntw, etwv, etwa0, etwa7, etwb0, etwb7,
8
9
          t1et1, t1et2, t1et3, t1et4, t1et5, t1et6, t1et7,
10
          t1eaa, t1ebb, t2ebb, t1eab, t1eba, t1eava, t1eaav, t1ebvb, t1ebbv,
11
          t1eat, t1ebop, t2eae1, t2ebe1, t1eabs, t1na, t2na, t1nb, t2nb,
12
          t1ecdk, t2ecdk, t1ecdx, t2ecdx, t1ecdy, t2ecdy, t1ecdz, t2ecdz,
13
          t1ecdt, t1ecds, t1ecdp, t2ecdp, t1ecdq, t2ecdr, t1ncd, t2ncd,
14
          t1ewv, t1ewu,  t1nw,   t2nw,
15
          t1ncc, t1eccv, t1eccu, t1ecca, t1ecck, t1eccs,
16
          t1oup, t1oupo, t1our, t1ouro, t1ouk, t1oux, t1ouy, t1ouz, t1oua,
17
          t1sn2, t2sn2, t3sn2, t1sn1, t1sn0, thsn0,
18
19
          p1eaa, p1ebb, p2ebb, p1eab, p1eba, p1eava, p1eaav, p1ebvb, p1ebbv,
20
          p1eat, p1ebop, p2eae1, p2ebe1, p1eabs, p1na, p2na, p1nb, p2nb,
21
          p1ecdk, p2ecdk, p1ecdx, p2ecdx, p1ecdy, p2ecdy, p1ecdz, p2ecdz,
22
          p1ecdt, p1ecds, p1ecdp, p2ecdp, p1ecdq, p2ecdr, p1ncd, p2ncd,
23
          p1ewv, p1ewu,  p1nw,   p2nw,
24
          p1ncc, p1eccv, p1eccu, p1ecca, p1ecck, p1eccs,
25
          p1oup,         p1our,         p1ouk, p1oux, p1ouy, p1ouz, p1oua,
26
          p1sn2, p2sn2, p3sn2, p1sn1, p1sn0, phsn0              : std_logic;
27
28
  signal  wpp, epsum, wrr, wqq,
29
          we1, we3, wopa, wfa, wha,
30
          wvv, evvw, evvzo, evvcy, evvcn,
31
          wka, ekaa, ekac, ekad, ekasu, ekant, ekaxr, ekaw,
32
          wkb, ekbb, ekbc, ekbd, ekbsu,
33
          wss, essdab, essiab, essab, esscd,
34
          wxx, wyy, wzz, exztab, exzdcd, exzicd, exzsum,
35
36
          f1kaa, f2kaa, f1kac, f1kad, f1kasu, f2kasu, f1kant, f2kant,
37
          f1kaxr, f2kaxr, f1kaw, f1kbb, f1kbc, f1kbd, f1kbsu, f2kbsu,
38
          f1vw, f1vnz, f1vcy, f2vcy, f1vcn, f2vcn,
39
          f1wx, f2wx, f1wy, f2wy, f1wz, f2wz,
40
          f1xzab, f1xzdc, f1xzic, f1xzsu, f2xzsu,
41
          f1ssda, f3ssda, f1ssia, f1ssab, f1sscd,
42
          f1pin, f1psu, f2psu, f1rn, f2rn, f1qcd,
43
          f1opa,
44
          f1sef, f2sef, f3sef, f1opz,
45
          f1sn2, f1sn1, f1sn0,
46
47
          q1kaa, q2kaa, q1kac, q1kad, q1kasu, q2kasu, q1kant, q2kant,
48
          q1kaxr, q2kaxr, q1kaw, q1kbb, q1kbc, q1kbd, q1kbsu, q2kbsu,
49
          q1vw, q1vnz, q1vcy, q2vcy, q1vcn, q2vcn,
50
          q1wx, q2wx, q1wy, q2wy, q1wz, q2wz,
51
          q1xzab, q1xzdc, q1xzic, q1xzsu, q2xzsu,
52
          q1ssda, q3ssda, q1ssia, q1ssab, q1sscd,
53
          q1pin, q1psu, q2psu, q1rn, q2rn, q1qcd,
54
          q1opa,
55
          q1sef, q2sef, q3sef, q1opz,
56
          q1sn2, q1sn1, q1sn0         : std_logic;

Und keiner der über 400 Signalnamen ist länger als sechs Zeichen, damit 
man nicht soviel tippen muß...

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Bei vielen Prozessoren werden keine separaten Komparatoren o.ä. genutzt, 
sondern die entsprechenden Befehle müssten eigentlich als "ALU-Operation 
ohne Schreiben des Ergebnisses" bezeichnet werden. Lediglich die 
Auswirkungen auf die Statusbits (Zero, Carry, usw.) werden 
berücksichtigt. im klassischen ARM-Befehlssatz ist der Befehl BEQ 
(Branch if equal) eigentlich BZ (Branch if zero). Auch die anderen 
bedingten Sprünge sind nach den Vergleichsergebnissen benannt, werten 
aber eigentlich die Rechenergebnisse aus.

von Klaus (feelfree)


Lesenswert?

Josef G. schrieb:
> Ausser wenn das Flag einer der Operanden ist.

Brainfuck par excellence.

von MaWin O. (mawin_original)


Lesenswert?

Das Projekt an sich finde ich eigentlich gar nicht mal so schlecht.

Also, es ist sicher unbenutzbar, es enthält viele kuriose Dinge und mit 
an Sicherheit grenzender Wahrscheinlichkeit wird er aus diesen Gründen 
keine "Mitstreiter" finden.

Aber als Bastelprojekt für den Spaß? Absolut legitim!
Da habe ich schon dümmere Bastelprojekte gemacht.

Ein Hobby muss keinen Sinn ergeben.

von Falk B. (falk)


Lesenswert?

MaWin O. schrieb:
> Aber als Bastelprojekt für den Spaß? Absolut legitim!
> Da habe ich schon dümmere Bastelprojekte gemacht.

Du hast eine komische Definition von "Spaß". Da ramm ich mir lieber den 
Lötkolben ins Knie!

von Falk B. (falk)


Lesenswert?


von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Falk B. schrieb:
> Du hast eine komische Definition von "Spaß". Da ramm ich mir lieber den
> Lötkolben ins Knie!

Du hast eine komische Definition von "Spaß". Ich könnte mir durchaus 
bessere Tätigkeiten vorstellen, z.B. einen Softcore mit zugehörigem 
Experimentierbrett zu entwerfen.

von Josef G. (bome) Benutzerseite


Lesenswert?

Josef G. schrieb:
> Wäre sehr schön, wenn sich hier jemand meldet, der das Projekt auf DE0
> oder DE0-nano oder DE0-CV realisiert hat.

Wichtig ist die Neubeschriftung der Tastatur, damit man nicht dauernd 
die Belegung nachschauen muss. Papierstückchen mit Tesafilm aufkleben, 
die kann man problemlos wieder ablösen. Als erstes das Kommando =WARE 
eingeben.

von MaWin O. (mawin_original)


Lesenswert?

Falk B. schrieb:
> Da ramm ich mir lieber den Lötkolben ins Knie!

Jeder halt so, wie er möchte.
Viel Spaß mit dem Lötkolben, Falk.

von Falk B. (falk)


Lesenswert?

MaWin O. schrieb:
> Jeder halt so, wie er möchte.
> Viel Spaß mit dem Lötkolben, Falk.

https://www.youtube.com/watch?v=B4YtnXXYlAo#t=1m55s

;-)

von (prx) A. K. (prx)


Lesenswert?

Klaus schrieb:
> Kann man sich nicht ausdenken sowas.

Ach komm, das geht schon. Etwa wenn der eigentliche Sinn von
  SA1 A1+1
darin besteht, das Register X1 aus dem Speicher zu laden. Von Adresse in 
A1 mit Preinkrement. Aber Vorsicht, bei
  SA6 A6+1
wird X6 nicht geladen, sondern gespeichert.

Man sieht hier auch schön, dass Registerbezeichnungen als Teil des 
Menmonics eine sehr alte Übung sind. Weit älter als 6502.

Andere wiederum fanden es praktisch. ein XOR mit AUT zu bezeichnen, 
abgeleitet von Antivalenz (frag mich nicht nach dem U ;-):
  AUT n
ist bei der 6502:
  EOR n
Ist aber irgendwie logisch, wenn sich AND/OR als ET/VEL schreiben.

: Bearbeitet durch User
von Klaus (feelfree)


Lesenswert?

Josef G. schrieb:
> Wichtig ist die Neubeschriftung der Tastatur, damit man nicht dauernd
> die Belegung nachschauen muss. Papierstückchen mit Tesafilm aufkleben,
> die kann man problemlos wieder ablösen. Als erstes das Kommando =WARE
> eingeben.

Wenn es ein Satiremagazin für Elektronikprojekte gäbe, du könntest es im 
Alleingang mit Inhalten füllen.

von Klaus K. (Gast)


Lesenswert?

>> Viel Spaß mit dem Lötkolben, Falk.


Ja das deutsche Kinopublikum liebt seine Übersetzungsfehler, im Original 
heisst es "blowtorch" (Lötlampe) und nicht "solder iron" (Lötkolben):

https://youtu.be/57RCd87Naf4?t=105
https://en.wikipedia.org/wiki/Blowtorch

von Yalu X. (yalu) (Moderator)


Lesenswert?

Rick schrieb:
> Und keiner der über 400 Signalnamen ist länger als sechs Zeichen, damit
> man nicht soviel tippen muß...

Vermutlich entstammt Josef der Generation der Fortran-Programmierer von
vor 1990:

  http://web.stanford.edu/class/me200c/tutorial_77/05_variables.html

;-)

von Josef G. (bome) Benutzerseite


Lesenswert?

Rick schrieb:
> Und keiner der über 400 Signalnamen ist länger als sechs Zeichen, damit
> man nicht soviel tippen muß...

Sind alles interne Steuersignale, die für den Programmierer unsichtbar 
sind.

von MaWin O. (mawin_original)


Lesenswert?

Josef G. schrieb:
> die für den Programmierer unsichtbar sind.

Lustig. :)

Nein, sie sind nicht unsichtbar. Sie sind nicht unsichtbar für die 
"Mitstreiter", die du ja so dringend suchst.
Einer der größten Gründe, weshalb du keine "Mitstreiter" finden wirst, 
ist die Unlesbarkeit der Quellcodes.

von Klaus (feelfree)


Lesenswert?

MaWin O. schrieb:
> Einer der größten Gründe, weshalb du keine "Mitstreiter" finden wirst,
> ist die Unlesbarkeit der Quellcodes.

Nicht nur der Quellcode. Auch die Bedienung/Programmierung ist für einen 
normalen Menschen absolut unmöglich, das fängt mit der Tastenbelegung 
an, und hört bei solchen Dingen noch lange nicht auf:

> Da alle Codes für darstellbare Zeichen vergeben sind, sind
> besondere Vereinbarungen erforderlich.
> Zur Realisierung von Strings mit variabler Länge und fester
> reservierter Länge vereinbare man, dass abschließende Leer-
> zeichen nicht zum String gehören.
> Bei Textdateien haben die Zeilen eine konstante Länge
> (dh. werden durch Leerzeichen aufgefüllt).
> Zur seriellen Übertragung bietet sich ein 5-Bit-Code an.
> Das erste Bit zeigt an, ob es sich um ein Daten-Nibble
> oder einen Steuercode handelt.

Un. Fass. Bar.

Wenn ich es nicht selbst heruntergeladen hätte würde ich nicht glauben, 
dass es so etwas gibt.

Sowas passiert wohl, wenn jemand
https://mister-devel.github.io/MkDocs_MiSTer
und
https://programmingwiki.de/Brainfuck
in einen Topf wirft uns sehr kräftig umrührt.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.