Forum: Projekte & Code Ein 8bit-Rechner auf dem Spartan-3A-Starterkit


von Josef G. (bome) Benutzerseite


Lesenswert?

Hallo, habe eine Konfiguration für das Spartan-3A-
Starterkit ausgearbeitet. Es handelt sich um einen
8bit-Rechner mit CPU-Eigenentwicklung. Informationen
und Downloads sind zu finden auf meiner Website:

http://www.bomerenzprojekt.de

Die Konfiguration wurde getestet auf einem
Spartan-3A-Starterkit Revision-D-Board. Wenn ich
das Xilinx-Dokument UG334 richtig verstanden habe,
ist das Spartan-3AN-Starterkit dazu kompatibel.

Die Konfiguration macht keinen Gebrauch von den
Flash-Speichern auf dem Board. Es ist möglich, sie
ohne bleibende Veränderungen auf dem Board zu testen.

Die Konfiguration verwendet das DDR2-RAM mittels
eines vereinfachten Verfahrens, ohne den von Xilinx
bereitgestellten DDR2-RAM-Treiber MIG. Ob das Verfahren
stabil auf jedem Exemplar des Boards funktioniert, müsste
erst noch getestet werden. Bei positivem Ergebnis wäre das
Verfahren vielleicht auch für andere Nutzer interessant.

Zu dem Projekt gibt es im Forum bereits
einen Beitrag in der Rubrik FPGA, VHDL & CO:
Beitrag "Projekt 8bit-Rechner mit FPGA-Prototyp-Gerät"
Die Diskussion dort war eingeschränkt, weil meine Website
zuerst nur aus der Startseite bestand, und dann erweitert
wurde mit Informationen zur CPU, nicht aber zum Gesamtsystem.
Jetzt, da alles auf der Website verfügbar ist, gehört das
Thema vielleicht in diese Rubrik Codesammlung.

Josef.G

von J. S. (engineer) Benutzerseite


Lesenswert?

Was ist das für ein "einfaches Verfahren"?

von Josef G. (bome) Benutzerseite


Lesenswert?

Das vereinfachte Verfahren zum Betrieb des DDR2-RAM:
Die 4 Datenworte eines Bursts werden als ein einziges
Datenwort behandelt. Beim Schreiben erhalten alle 4 Worte
denselben Wert. Das Lesen erfolgt irgendwo im Inneren des
Bursts. Dadurch entfällt die Schwierigkeit, beim Lesen in
jedem der 4 Worte zeitlich die Mitte zu treffen.

Theoretisch wäre es denkbar, dass beim Lesen zwischen den
4 Worten Glitche auftreten und man fehlerhafte Werte ins
FPGA einliest. Dies scheint jedoch nicht der Fall zu sein.

Vielleicht hat das Verfahren nur zufällig bei meinem Board
funktioniert, weil der Lesezeitpunkt gerade innerhalb eines
einzelnen der 4 Worte liegt, und es würde aufgrund der
Streuungen von Bauteile-Eigenschaften auf anderen Boards
nicht funktionieren, weil doch Glitche aufteten.

Ich habe aber in Test-Konfigurationen das DDR2-RAM als
Video-RAM verwendet und mir den Inhalt vor dem ersten
Beschreiben angeschaut. Dabei gab es teilweise blinkende
Punkte auf dem Display, teils aber auch stabile Bilder.

Ich glaube deshalb, dass durch Temperaturschwankungen und
andere Einflüsse die genaue Phasenlage des Lesezeitpunkts
relativ zu den Daten des Bursts nicht stabil ist, und dass
das Verfahren bei mir nur deshalb funktioniert hat, weil
tatsächlich keine Glitche auftreten.

Das Verfahren ist natürlich nicht im Sinne des DDR2-RAM-
Erfinders. Aus der Sicht des Anwenders, dem ein Viertel der
Speicherkapazität locker ausreicht, erfüllt es seinen Zweck.

von Josef G. (bome) Benutzerseite


Lesenswert?

Habe vielleicht den Thread in diesem Forum Codesammlung falsch
eingeleitet, da hier anscheinend weniger FPGA/VHDL-Leute
unterwegs sind und eher Software-Leute zu finden sind.

Vielleicht gibt es hier eher Leute, die sich für das
Software-Konzept des Projekts und für das Emulations-Programm
interessieren. Der Schwerpunkt des Projekts lag anfangs ohne-
hin auf diesem Gebiet, und die FPGA-Realisierung war nur als
Prototyp-Gerät gedacht, um leichter Interessenten zu finden.

Vielleicht mag jemand das Emulationsprogramm testen. Man muß
dazu nicht gleich die ganze Software-Dokumentation durchlesen.

von W.S. (Gast)


Lesenswert?

Ich hab mir mal deine Seite bissel angeschaut, aber was du da eigentlich 
gebastelt hast, ist mir immer noch unklar. Was für eine Struktur hat 
denn deine CPU? Wie ist der Befehlssatz aufgebaut? Was kann sie denn 
alles? Gibt es überhaupt sowas wie Interrupts, Peripherie usw.? Welcher 
Ressourcenverbrauch ist angesagt? Fragen über Fragen.

Entweder ist dein Projekt noch sehr unreif, oder du hast dir viel zu 
wenig Mühe gegeben, es verständlich darzustellen. Da kommt dann nicht 
viel Beteiligung auf.

Kennst du eigentlich den japanischen PIC16-Nachbau? Sowas wäre eine gute 
Ausgangsbasis zum Entwickeln einer eigenen Soft-CPU.

W.S.

von Josef G. (bome) Benutzerseite


Lesenswert?

Zum Beitrag von W.S.

Der CPU-Befehlssatz ist auf der Seite CPU-doku dokumentiert.
Ich muß zugeben, dass die Darstellung sehr knapp gehalten und
vielleicht nicht flüssig zu lesen ist, sie ist aber vollständig.

Es gibt nur 8bit-Speicherzugriffe. 16bit-Zugriffe können
daraus mittels IXE/DXE, IYE/DYE, IZE/DZE aufgebaut werden.
Die Adressregister X,Y,Z sind gleichberechtigt, und es gibt
keinen Stackpointer. Der Sprungbefehl J.. wird verwendet für
(lange) Sprünge, Unterprogramm-Aufrufe und Rückkehr aus Unter-
programmen. Er rettet die Rückkehradresse (auch wenn sie nicht
gebraucht wird) sowohl in Q als auch in K. Ein Unterprogramm,
welches selbst J.. verwenden will für andere Zwecke als zum
Rücksprung, muß zuerst Q bzw K retten. Der Befehl J.. kann
durch Voranstellen eines H.. mit einer memory-page-Umschaltung
kombiniert werden. Für schnelle Schleifen gibt es die Schleifen-
Startadresse R. Repeat-Befehle gibt es kombiniert mit Zähler-
Dekrementieren und Adresse Inkrementieren/Dekrementieren.

Die CPU ist kein Mikrocontroller wie die Prozessoren der PIC-
Serie, sondern eine blanke Zentraleinheit, also ohne Peripherie.
Die CPU hat keine Interrupts. Sie ist dazu konzipiert, das
Prinzip exakt berechenbarer Programmlaufzeiten umzusetzen.
Es gibt einen universellen Input/Output-Befehl (H..) und eine
Steuerleitung REP zum Anhalten der CPU (auf Eingaben warten).

Wenn man die CPU in einer Steuerung einsetzen will, kann man
zur Realisierung von Sicherheitsfunktionen Reset verwenden, da
die CPU die Startadresse einliest. Für echte Interrupts, nach
deren Beendigung das unterbrochene Programm weiterlaufen soll,
bräuchte man eine zweite CPU, welche die erste mittels REP
anhält und eine Interrupt-Routine ausführt. Im vorliegenden
Gesamtsystem ist dies nicht vorgesehen.

von Josef G. (bome) Benutzerseite


Lesenswert?

Nochmal zum Thema Funktionsfähigkeit
des Verfahrens zur Verwendung des DDR2-RAM :
Die Konfiguration ist mittlerweile auf einem zweiten
Exemplar des Spartan-3A-Starterkits erfolgreich getestet.

von Josef G. (bome) Benutzerseite


Lesenswert?

Zur Frage von W.S. nach dem Ressourcen-Verbrauch der CPU:
Habe von ISE versuchsweise die CPU allein synthetisieren lassen.
Resultierende Zahlen   nach Synthese / nach Place&Route:
Flipflops 259/259,  Slices 575/620,  4input-LUTs 1087/1090

von Josef G. (bome) Benutzerseite


Lesenswert?

Habe die Konfiguration überarbeitet.

Es gibt nun ausser dem 640x480/60Hz-Videomodus auch
einen 1366x768(WXGA)-Modus. Die Auswahl erfolgt durch
einen Schiebeschalter auf dem Board.

Ausserdem ist es nun möglich, über RS232 eine vom Anwender
geschriebene 64KByte-Steckkartensoftware von einem PC ins
DDR2-RAM zu übertragen. Wer sich hauptsächlich für Software-
Entwicklung interessiert, kann nun Software testen ohne
Konfigurationsänderung. Datenaustausch mit PC über RS232.

http://www.bomerenzprojekt.de

von Josef G. (bome) Benutzerseite


Lesenswert?

Habe erneut die Konfiguration überarbeitet.
Die Größe der über RS232 übertragbaren Steckkarten-Software
habe ich auf 32KByte reduziert, damit es schneller geht.
Die 32KByte können nun im Parallel-Flash-Speicher gesichert
und daraus wiederhergestellt werden. Wenn man die Konfiguration
im Platform-Flash ablegt, eine sinnvolle 32KByte Kartensoftware
erstellt und diese im Parallel-Flash ablegt, hat man ein Gerät
mit Bildschirm und Tastatur, das über RS232 mit einem PC Daten
austauschen kann, aber auch ohne PC betrieben werden kann.

von Josef G. (bome) Benutzerseite


Lesenswert?

Siehe auch im Forum Offtopic
Beitrag "Hexadezimaler Ziffernsatz"

von Josef G. (bome) Benutzerseite


Lesenswert?

Einige Besonderheiten der Compilersprache des Systems
(Exakte Informationen sind zu finden auf der Seite SYS-doku)

Die Schleife mit Hineinsprung
Das Sprungziel liegt irgendwo im Schleifenkörper. Wenn es am
Anfang des Schleifenkörpers liegt, hat man eine reine do-while-
Schleife. Liegt es am Ende unmittelbar vor dem Repeat-Befehl,
hat man eine reine while-Schleife.

Der Variablentyp Databox
Damit lassen sich Arrays und Strukturen (Records) realisieren.

Einbindung von Steckkarten
Abgesehen von einigen einfachen Operationen wie Inkrementieren/
Dekrementieren beinhaltet die Sprache nur Strukturelemente. Die
Routinen werden von den Steckkarten geliefert. Anstelle von Aus-
drücken gibt es Folgen von Mikro-Operationen. Der Programmierer
muß arithmetische Ausdrücke selbst in solche Folgen umschreiben.
Dadurch hat er mehr Schreibarbeit, aber auch die vollständige
Kontrolle über den tatsächlich ausgeführten Code.

Vom Anwender selbst geschriebene Assembler-Routinen
Sie werden über eine wohldefinierte Schnittstelle eingebunden.

Variablenübergabe an Routinen und Unterprogramme
Es werden ausschließlich Zeiger übergeben.

Vaiable vom Typ lokal-fixed
Sie sind Teil des Programmcodes und können, wenn das Programm
nicht aktiv ist, aus der Kommandozeile bearbeitet werden.

Residente Variable
Sie sind im RAM ausserhalb von Programmen bleibend vorhanden.
Programme können sie acquirieren und dann wie gewöhnliche zum
Programm gehörende Variable verwenden.

von Josef G. (bome) Benutzerseite


Lesenswert?

Zu dem möglichen Glitch-Problem beim Lesen des DDR2-RAM:
Habe mich informiert über den inneren Aufbau von DDR2-RAM.
Es scheint so zu sein, dass die vier Datenbits eines Bursts
parallel in ein Schieberegister geladen werden und dann
nacheinander in das am Ausgang liegende Bit des Schiebe-
registers gelangen. Es können also gar keine Glitche auf-
treten, da ein Flipflop, welches mit dem alten Wert
geladen wird, keinen Glitch produziert.

von Josef G. (bome) Benutzerseite


Lesenswert?

Übrigens: Zur Realisierung der Konfiguration auf dem Spartan-3A-
Starterkit wird nur die kostenlose ISE-WebPack-Lizenz gebraucht.

von D. I. (Gast)


Lesenswert?

Deiner Seite fehlt ein Impressum. Nicht das ein böswilliger Mensch dir 
ein paar € abmahnen möchte

von Josef G. (bome) Benutzerseite


Lesenswert?

D. I. schrieb:
> Deiner Seite fehlt ein Impressum.

Die Aussage verstehe ich nicht. Auf der Startseite meiner
Website steht im unteren Drittel: Impressum ...

Trotzdem Danke für den Beitrag, schon allein
wegen der ansonsten spärlichen Reaktionen.

von D. I. (Gast)


Lesenswert?

Josef G. schrieb:
> D. I. schrieb:
>> Deiner Seite fehlt ein Impressum.
>
> Die Aussage verstehe ich nicht. Auf der Startseite meiner
> Website steht im unteren Drittel: Impressum ...
>
> Trotzdem Danke für den Beitrag, schon allein
> wegen der ansonsten spärlichen Reaktionen.

Tatsache,
aber das Impressum muss von jeder Seite über einen ersichtlichen Link 
erreichbar sein. Das könntest du mit einem Anker an diese Position und 
einem Link in deinem Menü oben bewerkstelligen.

von Peter Sieg (Gast)


Lesenswert?

@Josef: Ein paar Bilder wären schön.

Peter

von Josef G. (bome) Benutzerseite


Lesenswert?

Mit Fotos machen oder Screenshots machen und hochladen
kenn ich mich leider nicht aus. Vielleicht tut's auch das:

http://www.xilinx.com/products/boards-and-kits/HW-SPAR3A-SK-UNI-G.htm

von Josef G. (bome) Benutzerseite


Lesenswert?

Nur für den unwahrscheinlichen Fall, dass tatsächlich jemand
daran denkt, das Board speziell für dieses Projekt zu kaufen:
Man achte darauf, dass es das Revision-D-Board ist.

von Josef G. (bome) Benutzerseite


Lesenswert?

Möchte noch hinweisen auf folgende Eigenschaft des Systems,
wenn man es als eigens gefertigte Hardware realisieren würde:
Da die CPU mit einer starren Abfolge von tA/tB läuft, wobei
Speicherzugriffe nur während tA erfolgen (Repeat-Halbzyklen
werden in gerader Anzahl eingefügt und übernehmen abwechselnd
die Rolle von tA und tB), ist es möglich, auf den Steckkarten
eigene CPUs mit 180 Grad Zeitversatz laufen zu lassen.

von Bernd (Gast)


Lesenswert?

Josef G. schrieb:
> Möchte noch hinweisen auf folgende Eigenschaft des Systems,
> wenn man es als eigens gefertigte Hardware realisieren würde:
> Da die CPU mit einer starren Abfolge von tA/tB läuft, wobei
> Speicherzugriffe nur während tA erfolgen (Repeat-Halbzyklen
> werden in gerader Anzahl eingefügt und übernehmen abwechselnd
> die Rolle von tA und tB), ist es möglich, auf den Steckkarten
> eigene CPUs mit 180 Grad Zeitversatz laufen zu lassen.

Klingt für mich irgendwie nach 6510 und dem Cevi, nur das da der VIC2 
der "Busmaster" ist. Willst du dich vielleicht mal drin reinlesen.

von Josef G. (bome) Benutzerseite


Lesenswert?

Möchte nochmal auf das Emulations-Programm für Linux-PC
aufmerksam machen. Es arbeitet die ROM-Software des Systems
interpretativ ab. Man kann sich damit einen Eindruck vom Ver-
halten des Systems verschaffen. Die Bedienung des Programms ist
auf der Seite Emul beschrieben. Nur wenige Informationen muß man
auf der Seite SYS-doku nachschauen.

von Josef G. (bome) Benutzerseite


Lesenswert?

Das Emulations-Programm kann im Home-Verzeichnis
compiliert und problemlos wieder gelöscht werden.

von Josef G. (bome) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hier sind Screenshots zu einem Demonstrations-Programm.

run.png zeigt den Ablauf zum Compilieren und Betreiben des
Programms. part1.png und part2.png zeigen den Quelltext,
part2.png ausserdem den vollständigen Zeichensatz des Systems.

1.DEMO lädt den Quelltext in die Seite E des Text-RAM.

=NEW =PGM +1111  und  =NEW =EDI +1111  erzeugen die
Variablen PGM und EDI mit initialer Länge-1 = 1111 Bytes.

=IN.C +PGM  und  =IN.D +EDI  installieren
die Variablen in Stack C und Stack D.

=MPRO  und  =ENDM  compilieren das Programm.
-PGM  startet das Programm.

Man kann eine der 4 Grundrechenarten auswählen und gibt dann die
beiden Operanden ein. Beim Dividieren ist zu berücksichtigen,
dass  Divisor  =  zweiter Operand + 1  ist.

Der Quelltext zeigt die Nützlichkeit
der Struktur Schleife mit Hineinsprung.

Beim Zeichensatz sei auf den hexadezimalen Ziffernsatz hinge-
wiesen. Die Ziffern mit Überstrich sind dazu gedacht, längere
Ziffernfolgen zu strukturieren und besser lesbar zu machen.

von Simon K. (simon) Benutzerseite


Lesenswert?

Die Schrift ist grottenhässlich und nicht wirklich leicht lesbar.

von Josef G. (bome) Benutzerseite


Lesenswert?

Simon K. schrieb:
> Die Schrift ist grottenhässlich und nicht wirklich leicht lesbar.

Ist alles eine Frage der Gewöhnung.

von Josef G. (bome) Benutzerseite


Lesenswert?

Zur Schleife mit Hineinsprung

Sie besteht im obigen Listing aus  L.JP  HERE  und  RP.1 /F0.

1 oGET /04 oTTL SEL  testet, ob SEL > 3 ist. Das Resultat
wird auf den TF-Merker geschoben, das ist ein Byte im RAM.

RP.1 /F0  fragt 3 Bits des TF-Merker anhand der Wahrheits-
Tabelle /F0 ab (effektiv wird nur 1 Bit abgefragt), entfernt
das abgelgte Bit und führt einen bedingten Rückwärtssprung aus.

In C müsste man hier eine while-Schleife verwenden und den
Programmteil zwischen HERE und dem Rückwärtssprung in eine
function packen. Es ist offensichtlich, dass die Schleife mit
Hineinsprung den gleichen Zweck auf einfachere Weise erfüllt.

von Josef G. (bome) Benutzerseite


Lesenswert?

Habe die Konfiguration erweitert zur Anbindung einer SD-Karte
mittels eines PmodSD-Kartenhalters von Digilent.

Softwareseitig habe ich bisher nur die physikalischen Routinen
Initialisieren, Read, Write, Erase (mit Block-Adressierung)
erstellt, dazu eine provisorische Schnittstelle zur Kommando-
zeile zum Testen der Routinen. Die Anwendungsroutinen, welche
handeln mit Dateinamen und Directory, muß ich noch erstellen.

Näheres auf der Seite Hawa meiner Website.
http://www.bomerenzprojekt.de

von Josef G. (bome) Benutzerseite


Angehängte Dateien:

Lesenswert?

Zur Förderung des Interesses und meiner Glaubwürdigkeit ...

von Josef G. (bome) Benutzerseite


Lesenswert?

Der PmodSD-Kartenhalter von Digilent und der ebenfalls
bei trenz erhältliche Micro-SD-Adapter von Trioflex
sind nicht Pin-kompatibel.

von Josef G. (bome) Benutzerseite


Angehängte Dateien:

Lesenswert?

Vielleicht sehen die Kleinbuchstaben so besser aus.

von Josef G. (bome) Benutzerseite


Lesenswert?

Habe gerade festgestellt, dass seit heute oder gestern auf meiner
Website nicht mehr die neue Version vom 13.06.2012 angezeigt
wird, sondern die vorherige Version (ohne SD-Karte).

von Nebulus (Gast)


Lesenswert?

Ich würde mir an Deiner Stelle mal Gedanken darüber machen, wie man 
einer Leserschaft Inhalte so präsentiert, dass Interesse geweckt wird.

Du hingegen scheinst ja eher der redundanzfreie Typ zu sein.

So funktioniert Wissensvermittlung aber nicht. Alleine den 
Einstiegspunkt auf Deiner Homepage zu finden, ist schon ein Martyrium.

Farbgebung darf angenehm sein.

Inhaltsverzeichnis, Übersicht("sicht" kommt von sehen!), ein paar 
Blockdiagramme, eine Spässchen, eine Anekdote oder gar ein Smilie, das 
bewegt zum Weiterlesen.

von Josef G. (bome) Benutzerseite


Lesenswert?

Nebulus schrieb:
>        Alleine den Einstiegspunkt auf Deiner
> Homepage zu finden, ist schon ein Martyrium.

Habe die Startseite geändert. Vielleicht sind die
wichtigen Informationen jetzt schneller zu finden.

Die Website zeigt nun wieder den aktuellen Stand.

von Josef G. (bome) Benutzerseite


Lesenswert?

Eine weitere Besonderheit der Compilersprache des Systemms:
Frei definierbare Datentypen. Fest eingebaut sind nur die Typen
Name, String, vorzeichenlose Zahl (bis 32 Byte). Weitere Typen
wie zB. Gleitpunktzahlen können durch die Steckkarten bereit-
gestellt werden, und es gibt dazu eine Schnittstelle zur Konver-
tierung von Datenstring und Wert, die beim Compilieren verwendet
wird, und auch beim nachträglichen Bearbeiten aus der Kommando-
Zeile von lokal-fixed Daten.

von Josef G. (bome) Benutzerseite


Lesenswert?

Betrachtet man die Zahl der Downloads der weiter oben geposteten
Screenshots und des Fotos, so scheint es doch einige Leute zu
geben, die sich für das Projekt interessieren. Leider ist die
aktive Beteiligung an diesem Thread mäßig, und der Thread
wird wohl in der Versenkung verschwinden.

Ich habe deshalb einen kleinen Artikel mit Verweis auf den
Thread erstellt, damit er auch weiterhin gefunden wird. Der
Artikel hat den Titel "Acht-bit-Rechner" und findet sich
in der Kategorie FPGA-Projekte.

Josef G.

von Josef G. (bome) Benutzerseite


Lesenswert?


von J. S. (engineer) Benutzerseite


Lesenswert?

Zwischenfrage zum Stand des Systems:

Wie gross wäre der Aufwand, damit eine Art GUI für Elektronik zu bauen, 
also mit Maus und Tastatur für PS/2 und einem Zeichengenerator-RAM, wo 
man wie bei einem Messgerät durch Klicken die Werte hoch und runter 
stellen kann.

Sowas braucht man für viele FPGA-Designs, da sähe ich einen Ansatz.

von Josef G. (bome) Benutzerseite


Lesenswert?

J. S. schrieb:
> Zwischenfrage zum Stand des Systems:

Ich habe seit der bereits veröffentlichten SD-Card-Anbindung
nicht mehr an dem Projekt weitergearbeitet.

> Wie gross wäre der Aufwand, damit eine Art GUI für Elektronik zu bauen,
> also mit Maus und Tastatur ...

Mit grafischen Benutzeroberflächen und Maus-Verwendung
kenne ich mich leider nicht aus.

von Josef G. (bome) Benutzerseite


Lesenswert?

Auf der Seite Emul der Projekt-Website gibt es nun auch
Informationen zur internen Arbeitsweise der CPU.
http://www.bomerenzprojekt.de

von Josef G. (bome) Benutzerseite


Lesenswert?

Leider gibt es kaum noch kleine Monitore zu einem akzeptablen
Preis, welche sich für das Projekt eignen würden. Habe nun den
Monitor Asus VH168D (1366x768, 15.6 Zoll) erfolgreich an der
Konfiguration getestet. Das 1366x768-Bild ist gut, es war aber
am Monitor eine Justierung der Phase erforderlich. Auch die
Qualität des 640x480-Bildes ist erstaunlich gut. Man kann
am Monitor das Format 4:3 einstellen.

Großer Nachteil: Das Display ist nicht entspiegelt. Das stört
vor allem, weil bei meiner Anwendung das Bild nur einen Teil
der Fläche beansprucht. Man sollte den unbenutzten
Randbereich mit Papier abdecken.

http://www.asus.com/Display/LCD_Monitors/VH168D/#overview

von Josef G. (bome) Benutzerseite


Lesenswert?

Im embedded-projects-Journal 14 Seite 19 gibt es zu dem Projekt
den Artikel "Ein 8bit-Rechner auf dem Spartan-3A-Starterkit".
http://www.embedded-projects.net

Als Benedikt Sauter mir schrieb, er brauche noch ein Foto oder
eine Grafik, eventuell würde ihm eine Skizze auf Papier reichen,
und ich ihm darauf Skizzen sandte, da hatte ich mir eingebildet,
er würde daraus am Rechner saubere Grafiken basteln. Dass er die
Skizzen einscannt und unverändert abdruckt, damit hatte ich nicht
gerechnet. Au weia. Und die Bildunterschrift "CPU" an dem Foto,
das den Gesamtaufbau zeigt, tut weh.

von Josef G. (bome) Benutzerseite


Lesenswert?


von Josef G. (bome) Benutzerseite


Lesenswert?

Habe nun eine in der Praxis einsetzbare Software für die
SD-Karte erstellt. Es gibt ein einfaches Dateisystem ohne
Unterverzeichnisse, und man kann Dateien unter einem Namen
speichern und wiederfinden. Siehe Seite Hawa der Website.

von Josef G. (bome) Benutzerseite


Lesenswert?

Das System gibt es nun auch als Konfiguration
für das Spartan-3E Starter Board von Digilent.
Siehe Seite Hawa der Projekt-Website.

von Josef G. (bome) Benutzerseite


Lesenswert?

Zu dem oben angesprochenen Monitor: Habe ihn entspiegelt mit der
Folie d-c-fix static Frost 338-0011 (Strichcode 4007386 218407).
Die Folie dämpft etwas zu stark, aber noch akzeptabel, und ist
erheblich billiger als spezielle Displayschutzfolien.

von Harald (Gast)


Lesenswert?

Josef G. schrieb:
> für das Spartan-3E Starter Board von Digilent.

cool!

von Josef G. (bome) Benutzerseite


Lesenswert?

Es gibt nun auch eine Konfiguration für das Nexys2 Board
von Digilent. Siehe Seite Hawa der Projekt-Website.

von Sven P. (Gast)


Lesenswert?

Ach du liebes Bisschen.
1
signal
2
    t1eaa, t1ebb, t2ebb, t1eab, t1eba, t1eava, t1eaav, t1ebvb, t1ebbv,
3
    t1eat1, t1eat2, t1eat3, t1eat4, t1eat5, t1eat6, t1eat7,
4
    t1ebop, t2eae1, t2ebe1, t1eabs, t1na, t2na, t1nb, t2nb,
5
    t1ecd1, t1ecd2, t1ecd3, t1ecd4, t1ecd5, t1ecd6, t1ecd7, t1ecds,
6
    t1ecdk, t2ecdk, t1ecdx, t2ecdx, t1ecdy, t2ecdy, t1ecdz, t2ecdz,
7
    t1ecdp, t2ecdp, t2ecdm, t1ecdq, t2ecdr, t1ncd, t2ncd,
8
    t1ewv, t2ewv, t1ewa0, t1ewa7, t1ewb0, t1ewb7, t1nw, t2nw,
9
    t1ncc, t1eccv, t1eccu, t1ecca, t1ecck, t1eccs,
10
    t1oupo, t1oup, t1ouro, t1our, t1ouk, t1oux, t1ouy, t1ouz, t1oua,
11
    t1sn3, t2sn3, t3sn3, t1sn2, t1sn1, t2sn1, t3sn1, t1sn0,
12
13
    p1eaa, p1ebb, p2ebb, p1eab, p1eba, p1eava, p1eaav, p1ebvb, p1ebbv,
14
    p1eat1, p1eat2, p1eat3, p1eat4, p1eat5, p1eat6, p1eat7,
15
    p1ebop, p2eae1, p2ebe1, p1eabs, p1na, p2na, p1nb, p2nb,
16
    p1ecd1, p1ecd2, p1ecd3, p1ecd4, p1ecd5, p1ecd6, p1ecd7, p1ecds,
17
    p1ecdk, p2ecdk, p1ecdx, p2ecdx, p1ecdy, p2ecdy, p1ecdz, p2ecdz,
18
    p1ecdp, p2ecdp, p2ecdm, p1ecdq, p2ecdr, p1ncd, p2ncd,
19
    p1ewv, p2ewv, p1ewa0, p1ewa7, p1ewb0, p1ewb7, p1nw, p2nw,
20
    p1ncc, p1eccv, p1eccu, p1ecca, p1ecck, p1eccs,
21
    p1oupo, p1oup, p1ouro, p1our, p1ouk, p1oux, p1ouy, p1ouz, p1oua,
22
    p1sn3, p2sn3, p3sn3, p1sn2, p1sn1, p2sn1, p3sn1, p1sn0 : std_logic;
23
24
--steub
25
   signal
26
    f1kaa, f2kaa, f1kac, f1kad, f1kasu, f2kasu, f1kant, f2kant,
27
    f1kaxr, f2kaxr, f1kaw, f1kbb, f1kbc, f1kbd, f1kbsu, f2kbsu,
28
    f1vw, f1vnz, f1vcy, f2vcy, f1vcn, f2vcn,
29
    f1wx, f2wx, f1wy, f2wy, f1wz, f2wz,
30
    f1xzab, f1xzdc, f1xzic, f1xzsu, f2xzsu,
31
    f1ssda, f1ssia, f1ssab, f1sscd,
32
    f1pin, f2psu, f1mn, f1rn, f2rn, f1qcd,
33
    f1opae,
34
    f1sefo, f1sef, f2sef, f3sef, f1seh,
35
    f1sn2o, f1sn2, f1sn1, f1sn0,
36
37
    q1kaa, q2kaa, q1kac, q1kad, q1kasu, q2kasu, q1kant, q2kant,
38
    q1kaxr, q2kaxr, q1kaw, q1kbb, q1kbc, q1kbd, q1kbsu, q2kbsu,
39
    q1vw, q1vnz, q1vcy, q2vcy, q1vcn, q2vcn,
40
    q1wx, q2wx, q1wy, q2wy, q1wz, q2wz,
41
    q1xzab, q1xzdc, q1xzic, q1xzsu, q2xzsu,
42
    q1ssda, q1ssia, q1ssab, q1sscd,
43
    q1pin, q2psu, q1mn, q1rn, q2rn, q1qcd,
44
    q1opae,
45
    q1sefo, q1sef, q2sef, q3sef, q1seh,
46
    q1sn2o, q1sn2, q1sn1, q1sn0        : std_logic;

Quelle: http://www.bomerenzprojekt.de/Website/CPU-vhdl.html

von Klaus (Gast)


Lesenswert?

Ich hab mal für ein JavaScript einen JavaScriptobuscator benutzt.

wow, der CPU Code sieht ungefähr so aus, als wenn er direkt aus einem 
VHDL-Obfuscator käme. Typischer Fall von write-only-code. Lesen kann das 
niemand mehr :-/

von Josef G. (bome) Benutzerseite


Lesenswert?

Wer sich für den internen Aufbau der CPU interessiert, sollte den
entsprechenden Abschnitt auf der Seite Emul der Projekt-Website lesen.
http://www.bomerenzprojekt.de

von Josef G. (bome) Benutzerseite


Lesenswert?

In Beitrag "Hexadezimaler Ziffernsatz"
wurde ich geschimpft wegen der Farbgestaltung der Website.
Die habe ich vor kurzem geändert. Ist es so besser?

von Sven P. (Gast)


Lesenswert?

Josef G. schrieb:
> Wer sich für den internen Aufbau der CPU interessiert, sollte den
> entsprechenden Abschnitt auf der Seite Emul der Projekt-Website lesen.
> http://www.bomerenzprojekt.de

Das ist ja alles gut und schön, und der mit Steckkarten erweiterbare 
Befehlssatz klingt wirklich interessant.

Aber denkst du denn nicht auch, dass du gerade VHDL benutzt, damit du 
nicht sämtliche logischen Funktionen von Hand reduzieren und 
ausprogrammieren musst?

Und dann überall diese Dinger hier:
1
o := essab ; veab  :=   o & o & o & o & o & o & o & o
2
                        & o & o & o & o & o & o & o & o;

Das kann man doch einfach als Aggregat formulieren:
1
veab <= (15 downto 0 => essab);
2
-- oder generisch:
3
veab <= (veab'range => essab);

Und der elementea-Prozess: Wie willst du oder irgendjemand den jemals 
debuggen? Ich denke, du machst dir das Leben an einigen Stellen unnötig 
schwer...

von Josef G. (bome) Benutzerseite


Lesenswert?

Sven P. schrieb:
> Wie willst du oder irgendjemand den jemals debuggen?

Wer die Logiknetze überprüfen will, kann mit dem Programm stsg
sich für jeden OpCode die Folge der Steuersignale ansehen und
nachvollziehen, dass sie die gewünschte Operation bewirken. Er
kann sich dann für jedes Steuersignal und jede Phase die Tabelle
der OpCodes und Bedingungen ansehen, und hat zu prüfen, ob die
im VHDL-Code enthaltenen Logiknetze diese Tabellen erfüllen.

Ich habe mir dazu ein kleines C-Programm geschrieben.
Man gibt ein zB. 0111xx10, 111xxx01, ... und lässt
sich die erzeugte Tabelle anzeigen.

Ich wüsste nicht, wie das einfacher gehen könnte. Im übrigen
ist aus meiner Sicht die CPU auf mittlerweile 3 FPGA-Boards
und mit doch recht umfangreicher Software getestet.

von Sven P. (Gast)


Lesenswert?

Josef G. schrieb:
> Sven P. schrieb:
>> Wie willst du oder irgendjemand den jemals debuggen?
>
> Wer die Logiknetze überprüfen will, kann mit dem Programm [...]
Aber das ist doch genau der Punkt. Kein Mensch wird anfangen, sich durch 
irgendwie erzeugte Logiktabellen zu wühlen, um dann damit VHDL-Code(!!!) 
zu prüfen. Vor zwanzig, dreißig Jahren hätte ich das ja noch verstanden. 
Da musste man zwangsläufig Logik von Hand reduzieren und irgendwie in 
Gatter und Flipflops verpacken.

Aber du benutzt doch schon VHDL -- der Witz an VHDL ist doch gerade, 
dass man eben nicht mehr händisch Logiknetze reduzieren muss. 
Stattdessen beschreibt man in lesbarer und nachvollziehbarer Form, wie 
sich die Schaltung verhalten soll. Und die Umformung in logische 
Gleichungen und deren Verteilung auf irgendwelche Gatter überlässt man 
der Synthese -- die kann das, wirklich, denn die ist genau dazu erfunden 
worden.


> Ich wüsste nicht, wie das einfacher gehen könnte. Im übrigen
> ist aus meiner Sicht die CPU auf mittlerweile 3 FPGA-Boards
> und mit doch recht umfangreicher Software getestet.
Es ginge einfacher, wenn du das Verhalten der Schaltung beschriebest, 
und nicht ihre Implementierung. So mit 'if' und 'case' und 'for' und so 
weiter.

Es freut mich, dass diese CPU funktioniert und der Quelltext sieht schon 
irgendwie ästhetisch aus. Es ist aber objektiv Quelltext für die Katz, 
und das ist furchtbar schade. Man stelle sich vor, irgendeine Änderung 
vorzunehmen. Dann geht alles von vorne los, weil niemand die 
Monster-Schaltnetze versteht.

von Falk B. (falk)


Lesenswert?

Jaja, die Sauerbierbrauerei. Hauptsache dem Braumeister schmeckt's . . .

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

von Edi M. (Gast)


Lesenswert?

Sven P. schrieb:
> Aber du benutzt doch schon VHDL -- der Witz an VHDL ist doch gerade,
>
> dass man eben nicht mehr händisch Logiknetze reduzieren muss.
>
> Stattdessen beschreibt man in lesbarer und nachvollziehbarer Form, wie
>
> sich die Schaltung verhalten soll.

Das ist etwas, was ich häufig beobachte: Ich hatte vor einigen Jahren 
mal mit Leuten von der Siemens zu tun, die sich einen abprogrammierten, 
die ganzen Logikfunktionen zu optimieren, sie in VHDL als UND-Oder 
umzusetzen und bis ins Detail "Verbesserungen" vornahmen, nur um am Ende 
bei jeder Änderung wieder alle abzuändern.

Die hatten dort ein internes tool mit dem man VHDL grafisch erfassen 
konne, was zu einem gewaltigen Drahtverhau führte, bei dem niemand mehr 
durchblickte. Wenn da was geändert werden sollte. mussten tausende 
Striche weggenommen werden. dabei hätte man es durch einen sequziellen 
Dekoder, mit einfachen generate-Anweisungen auch zusammenbauen lassen 
können und sich das Ergebnis im real view in Xilinx ansehen können.

Auch die händisch optmierten Schaltungen waren leicht zu toppen, wenn 
man nur die Syntheseconstraints richtig benutzt und die passende Niesche 
anvisiert.

Aber die vorwiegend älteren Entwickler hatten das jahrelang so gemacht, 
also waren sie nicht davon abzubringen.

Und, das ist gar nicht so selten!!!

***********************************

Das Problem, dass mit den Selbsbauprojekten besteht, ist dagegen einfach 
das, dass niemand eine Weiterverwertung Dritter einkaluliert, wenn es 
beginnt, sowas zu machen - mich selber eingeschlossen. Das Resultat ist, 
dass man den halben Code umwerfen muss, um ihn so modular hinzubekommen, 
dass er für andere nutzbar wird und den Aufwand scheut man halt, wenn 
man nicht etwas dafür bekommt.

von Bert (Gast)


Lesenswert?

@ Falk & Klaus: Man muß sich für Sinn und Zweck dieses Projekts ja nicht 
unbedingt begeistern- sollte aber mit seinen Äußerungen stets über der 
Gürtellinie und nach Möglichkeit bei der Sache bleiben.
Manch einer ist wohl auch auf die hier gezeigte Hobby-Leidenschaft 
neidisch !?

von Josef G. (bome) Benutzerseite


Lesenswert?


von Klaus (Gast)


Lesenswert?

Ja sehr gut, du und deine weltfremden Weltverbesserungsideen können 
gerne in andere Foren verschwinden. Ich betrachte deinen Link auf ein 
anderes Forum mal als sowas wie eine Abschiedsbotschaft :-)

von Josef G. (bome) Benutzerseite


Lesenswert?

Argumente zum Hexadezimalsystem habe ich
hier im Eröffnungs-Beitrag zusammengestellt:
http://www.drillingsraum.de/room-forum/showthread.php?tid=3785

von Simon K. (simon) Benutzerseite


Lesenswert?

Josef, du bist ein sehr professioneller Troll! ;-)

von Sven P. (Gast)


Lesenswert?

Aber hey, wenn wir jetzt alle sedezimal rechnen, haben wir auf einmal 
genauso beknackte Einheiten, wie die Amis:

64 Cent = 1 Euro,
38E Meter = 1 Kilometer
usw.

von Hans-Georg L. (h-g-l)


Lesenswert?

Sven P. schrieb:
> Aber hey, wenn wir jetzt alle sedezimal rechnen, haben wir auf einmal
> genauso beknackte Einheiten, wie die Amis:
>
> 64 Cent = 1 Euro,
> 38E Meter = 1 Kilometer
> usw.

Dafür hat es einen schönen Nebeneffekt .. es macht jünger ;-)

von Josef G. (bome) Benutzerseite


Lesenswert?


von Content B. (Firma: Da) (contentblocker_da)


Lesenswert?

Josef G. schrieb:
> Da geht's weiter:
>
> https://www.mikrocontroller.net/topic/2297603

Nein! Der Tread ist gelöscht worden

von zz (Gast)


Lesenswert?


von Josef G. (bome) Benutzerseite


Lesenswert?

Content B. schrieb:
> Josef G. schrieb:
>> Da geht's weiter:
>>
>> https://www.mikrocontroller.net/topic/2297603
>
> Nein! Der Tread ist gelöscht worden

Mein Link: /topic/297603

Dein Link: /topic/2297603

zz schrieb:
> Josef G. schrieb:
>> http://www.bomerenzprojekt.de
>
> Die websight ist offline

Schon seit sehr langer Zeit. Nachfolger ist
http://www.bo8h.de

Und jetzt in diesem Thread bitte nicht mehr antworten.

von Sinus T. (micha_micha)


Lesenswert?

zz schrieb:
> Die websight ist offline

Der Thread wurde ja auch sinnloser Weise nach 8 Jahren von Hans-Georg L. 
(h-g-l) wieder rausgeholt, nach 8 Jahren kann sich schon mal was 
geändert haben. Josef hat geschrieben, wo es weitergeht und  deshalb 
kann das hier eigendlich zu.

von Frank (Gast)


Lesenswert?

Sinus T. schrieb:
> nach 8 Jahren

Josef hat wirklich schon acht Jahre seines Lebens mit diesem sinnlosen 
Projekt vergeudet. Man muss wirklich Mitleid mit ihm haben.

von Content B. (Firma: Da) (contentblocker_da)


Lesenswert?

Josef G. schrieb:
> Und jetzt in diesem Thread bitte nicht mehr antworten.

Und weshalb? Hier ist es doch so schön und kuschllig.

von Jack V. (jackv)


Lesenswert?

Frank schrieb:
> Josef hat wirklich schon acht Jahre seines Lebens mit diesem sinnlosen
> Projekt vergeudet.

Hobbys müssen nicht sinnvoll sein. Andere lassen kleine Züge auf dem 
Dachboden fahren, und stecken da wahrscheinlich mehr Geld und Zeit rein, 
als Josef in sein Projekt. Die werden in der Regel auch nicht schief 
angeguckt – warum auch?

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.