Seite 2 von 2

Re: [Projekt] eigener Computer

Verfasst: 06.05.2017, 15:32
von Chromanoid
Jo, das attachment muss im Beitrag angezeigt werden, damit es im Showroom landet. Siehe https://zfx.info/viewtopic.php?f=9&t=11 ... 777#p13777

Re: [Projekt] eigener Computer

Verfasst: 24.06.2017, 18:25
von RedGuy
Hi zusammen !

Hab für die Planungsphase auf physical layout Ebene UND HERSTELLUNG des Prozessors eine eigene Chip-Design Software geschrieben ;) .

Ein Screenshot ist beigefügt.


Damit lässt sich der Prozessor auf Transistorebene aufplanen!

Mein Ziel ist es auch einen Simulator und einen sogenannten silicon compiler für die Software als Erweiterung zu schreiben.
Aber soweit mal sogut.


Außerdem habe ich beschlossen, dass es ersteinmal keine Hardware-Geteilt-Einheit für den Prozessor geben wird- sondern eben software per compiler der Programmiersprache "Arise".
Hardware Geteilt ist nämlich verdammt aufwendig.

---
Die Chip-Design software beinhaltet eine third-party library für die GUI (flow-chart). Das Ganze hat natürlich wieder einen riesen Spaß gemacht zu programmieren.
Wer die third-party-component für Flussdiagramme unter .NET mal ausprobieren möchte: http://www.lassalle.com
Es sind compilierte Demos, sowie Programmbeispiele und eine Doku dabei.

Die Software wurde unter dem guten alten Visual Studio 2005 Express Edition und .NET Framework 2 entwickelt ;) .


Gruss
RedGuy

Re: [Projekt] eigener Computer

Verfasst: 11.07.2017, 09:59
von RedGuy
Hi !

Die sound-chip firmware ist fertig programmiert 8-) !

Danke an die Unterstützung von zfx in den Thread https://zfx.info/viewtopic.php?f=7&t=4262&p=55718 ;) .

Hier die Daten:

sound package sound processing data:
-62bits absolute amplitude (sample) encoding and one bit amplitude sign
-open-end breadth resolution (just depends up to the velocity of internal sound processing; instead of "just" 192 or 320 kbitps)
-nearly unlimited number of channels
-a large circular sound buffer
-would overwrite data in buffer if overrun (which should never happen because of chip hierarchy)


Habe einen 62bit DAC im Einsatz !

Mit Tricks könnte ich die Sample resolution auf meine 127bits erhöhen :P ! Mein Prozessor rechnet ja mit 128bits.

Falls Ihr Fragen habt, als her damit. Den vollständigen Firmware code werde ich aus Urheberrechtsgründen leider nicht veröffentlichen.

Gruss
RedGuy

PS: Jetzt gehts an die PS/2 chips.

Re: [Projekt] eigener Computer

Verfasst: 11.07.2017, 11:21
von Schrompf
RedGuy hat geschrieben:-62bits absolute amplitude (sample) encoding and one bit amplitude sign
Warum nur 62+1 bits? Wegen des verwendeten DACs? Und kann der dann auch -1..+1?

Re: [Projekt] eigener Computer

Verfasst: 11.07.2017, 11:50
von RedGuy
Hi !
Hallo Schrompf!

Also *nur* kann man nicht sagen. Das herkömmliche .wav file kann *nur* 16bit.
Siehe https://en.wikipedia.org/wiki/Audio_bit_depth.


Das Vorzeichen, geschieht über die Ansteuerung des DACs und eine zusätzliche Hälfte des DACs.
Die eine Hälfte vom DAC macht 62bits Plus, die andere 62bits Minus 8-) .

Gruss
RedGuy

Re: [Projekt] eigener Computer

Verfasst: 11.07.2017, 12:06
von Schrompf
RedGuy hat geschrieben:Also *nur* kann man nicht sagen. Das herkömmliche .wav file kann *nur* 16bit.
Was bringt's Dir, wenn alle Quellen nur 16bit liefern? Aber das interessiert mich eigentlich nicht. Ich meinte nur, dass die typische Integer-Größe 64bit sind, Du dagegen mit Vorzeichenbit nur 63bit benutzt. Warum?

Das Vorzeichen, geschieht über die Ansteuerung des DACs und eine zusätzliche Hälfte des DACs.
Die eine Hälfte vom DAC macht 62bits Plus, die andere 62bits Minus 8-) .
Dann ist das ein 63bit DAC, den Du mit ner Offset-Spannung zentrierst? Oder sind das zwei 62bit-DACs, die Du gegeneinander ansteuerst?

Re: [Projekt] eigener Computer

Verfasst: 11.07.2017, 12:21
von RedGuy
Hi !

Also ich habe diese Bit-tiefe gewählt, weil mein Prozessor 62bits Vorkommastellen in Vorzeichen behafteten Variablen vorsieht.
Ich habe quasi keine Vorzeichen behafteten integers... so ist das halt.


Beim DAC sieht mein design zwei 62bit DACs vor, welche ich mit zwei unterschiedlichen Vorzeichen an Spannungen bediene 8-) .

Gruss
Red

[EDIT]:
Die hohe bit-Breite ist praktisch auch über mein Chip-Design Programm https://zfx.info/viewtopic.php?f=10&t=4 ... 726#p55548 realistisch!!
Ich könnte wie schon erwähnt mit Tricks sogar noch auf 127bits hoch gehen.

Re: [Projekt] eigener Computer

Verfasst: 11.07.2017, 12:24
von xq
Wofür brauchst du eigentlich 63 Bit PCM-Daten bei Audio? Da hast du bei quasi egal welcher Spannung eine Auflösung im Attovolt-Bereich... Deine Schaltung und deine Kabel werden irgendwo im Millivolt-Bereich rauschen... Hast also nix dabei gewonnen

Re: [Projekt] eigener Computer

Verfasst: 11.07.2017, 12:27
von RedGuy
Hi MasterQ32!

Meine Philosophie, sieht vor, dass es darauf ankommt ;) ...

Gruss
Red

Re: [Projekt] eigener Computer

Verfasst: 11.07.2017, 12:31
von xq
Worauf ankommt?

Re: [Projekt] eigener Computer

Verfasst: 11.07.2017, 13:17
von RedGuy
Hi !

Also meine Philosophie besagt, dass ich alles so Natur getreu (realistisch) wie möglich umsetze.

Ich denke also, dass es auf eine möglichst hohe Audio bit depth (sample resolution) ankommt - in meinem Fall eben 63 anstatt nur 16 bits.

Gruss
Red


PS: mein Software-Geteilt für meine Programmiersprache ist akkut in Arbeit. Muss nur noch debuggen und dann werd' ich mal den code hier veröffentlichen 8-) !

Re: [Projekt] eigener Computer

Verfasst: 11.07.2017, 14:34
von Zudomon
Bild

Re: [Projekt] eigener Computer

Verfasst: 11.07.2017, 14:41
von Krishty
RedGuy hat geschrieben:Falls Ihr Fragen habt, als her damit.
Bei wie vielen Transistoren bist du jetzt auf den einzelnen Chips bzw. allen zusammen?

Re: [Projekt] eigener Computer

Verfasst: 11.07.2017, 17:44
von RedGuy
Hi !

Danke für die Antworten.

Die Anzahl der Transistoren kann ich erst dann sagen, wenn ich konkrete Daten für die Produktion habe.

Konkret bedeutet das: wie viel Speicher kann ich auf einen Chip-Die packen.
Dies hängt von der Integrationsdichte ab.

Das werde ich erst ganz zum Schluss managen.

Ich hab nämlich die Möglichkeit ganz dynamisch auf die Integrationsdichte zu reagieren und unterschiedliche Speichergrößen zu fertigen.
Das Ganze ist nämlich in meiner Chip-Design software automatisiert.
Ich kann dort sagen: Stelle mir einen 1Mega-Wort großen Speicher her. Und er platziert die Transistoren automatisch ;) .

Gruss
RedGuy

Re: [Projekt] eigener Computer

Verfasst: 11.07.2017, 19:13
von mrz
Stellt sich nur noch die Frage wann ich meine AMD und Intel Aktien abstossen soll?

Im Ernst:
Auch wenn ich in diesem Thread hauptsächlich nur Bahnhof verstehe bin ich total gespannt wie sich dein Projekt entwickelt.
Wäre toll wenn Du auch hier jeweils neue Fotos verlinkst oder hier zumindest hinweisen würdest,
dass es auf deiner Homepage neues Material gibt.

Re: [Projekt] eigener Computer

Verfasst: 11.07.2017, 19:52
von RedGuy
Hi !

Bezüglich Photos und neuem Material: Das bringe ich natürlich sofort, wenn ich Welches habe.


So. Und hier kommt auch schon wieder etwas Neues:
Ich habe gerade mein Software-Geteilt implementiert.

Dies bedeutet, wenn in meiner Programmiersprache geschrieben steht,

a = b / c

dann heißt das, dass eine Geteiltfunktion (softwaremäßig) aufgerufen wird, welche BINÄR b durch c teilt.

Nun werde ich exklusiv den source-code (in meiner Programmiersprache Arise) veröffentlichen 8-) !

Die Textdatei liegt hier: https://sites.google.com/site/ncoreshof ... 20test.txt

Viel Spaß damit !

Also der code ist in meiner virtuellen Maschine getestet und funktioniert !

Ihr kennt sicherlich noch die Teilenmethode aus der Grundschule :) .
So wie es im code steht kann man im Zweiersystem teilen !

Mal sehen ob Ihr den Algorithmus mitverfolgen könnt.


Jetzt brauche ich keinen Hardware-Teiler mehr implementieren, weil wie Ihr sicherlich seht wäre das ganz schön aufwendig (ich meine die Hardware-Synthese).


Gruss
RedGuy

[EDIT]hey mein 100. Beitrag :) .

Re: [Projekt] eigener Computer

Verfasst: 11.07.2017, 22:02
von DerAlbi
Dein Algorithmus ist leicht suboptimal. Du probierst ja wirklich jedes Bit durch... warum?
Angenommen bei A/B = C
-> Bei A ist das höchstwertige gesetzte bit Bit 22
-> Bei B ist das höchstwertige gesetzte bit Bit 8
Dann musst du bei C nur ab bit 22-8 = 14 probieren.

Re: [Projekt] eigener Computer

Verfasst: 12.07.2017, 15:00
von RedGuy
Hi !

Kann sein, es ist jedoch Gegenstand späterer Versionen, dies zu optimieren.

Jetzt funktioniert der Algo als erstes einmal ;) .

Auf den ersten Blick hast wahrscheinlich recht könnte ich das höchste Einserbit überprüfen.


Aber der Algorithmus ist doch interessant, oder ?

Gruss
Red

Re: [Projekt] eigener Computer

Verfasst: 12.07.2017, 22:49
von DerAlbi
:-| Das ist so ultra brute force.... da würde ich jetzt erstmal deiner geforderten Bauchmiezelei widerstehen ;-)
Schon das Nutzen eines Multiplizierers wäre für mich ein NoGo... das kann man das z.B. auf ein Shift und Add/Sub reduzieren. Ich verstehe auch nicht, warum du das in Software machen willst, wenn du den Prozessor eh selber machst.. gib den doch ne Hardwaredivision und gut.
Ich hab mit dem gleichen Prinzip eine bitgenaue Fixkomma-Wurzel geschrieben... da war das Brute-Force das Schnellste, was es gibt.

Re: [Projekt] eigener Computer

Verfasst: 08.08.2017, 21:32
von Krishty
Raymond Chen schreibt über den Alpha AXP; der hatte auch keine Integer-Division. Vielleicht kannst du dir ja dort das eine oder andere abgucken.
There are three common workarounds:
  • Use a helper function.
  • If dividing by a constant n, you may be able to use the UMULH instruction to multiply by (2⁶⁴÷n) and then extract the high 64 bits (which means to divide by 2⁶⁴).
  • Convert both values to floating point, perform a floating point division, and then convert the result back to an integer.

Re: [Projekt] eigener Computer

Verfasst: 11.08.2017, 19:42
von RedGuy
Hi zusammen !

@krishty
Also ich werde doch ein Hardware geteilt bauen - hab mich umentschieden ;) ...
Es kostet zwar an enormer Entwicklungsarbeit, aber es ist durchaus machbar...


Also im Moment bin ich an einem PS/2 Controller dran !
Das ist höchst interessant. Denn ich erledige die Kommunikation nicht über Interrupts, sondern
-gemäß meiner Grundphilosophie- asynchron über sogenanntes Polling.

Für den Sound-chip gab es ja in meinem zugehörigen Thread kleine Meinungsverschiedenheiten.
Ich hab jetzt eine logarithmische Formel eingesetzt - so wie es in einer Quelle im Internet http://www.sengpielaudio.com/calculator-spl.htmzu Verfügung steht.


Ganz interessant / Funktionsweiße vom PS/2 Controller:
die Tastatur/Maus senden mit 10-16,7 kHz serielle Daten und mein PS/2 Host chip fragt mit entsprechend höherer Frequenz ab.
Der Host (mein Controller) stellt die interpretierten deserialisierten Daten an dafür vorgesehenen Registern bereit.
Der auf dem Betriebsystem installierte Tastatur-/Maustreiber holt die Daten von den Registern ab und schreibt sie
in meinen sogenannten Treiber-Abstraction-layer im RAM. Dort sind diese (z.B. Mausbewegung oder Klick) für alle Programme verfügbar- über das Treiberprotokoll.

Mein Controller erkennt auch korrupte Eingabegerätedaten !
Das Protokoll für den Datentransfer wurde übrigens von IBM entwickelt.

Wenn ich wieder größere Meilensteine habe und screenshots dafür habe- poste ich wieder etwas !

Gruss
RedGuy

Re: [Projekt] eigener Computer

Verfasst: 11.08.2017, 22:56
von Krishty
RedGuy hat geschrieben:Das Protokoll für den Datentransfer wurde übrigens von IBM entwickelt.
Ja; IBM hat PS/2 damals eingeführt. Auch die Scancodes von Tastaturen sind noch nach IBM-Standard. AFAIK müssen USB-Tastatureingaben entsprechend umgerechnet werden, um mit Spielen usw. kompatibel zu sein.

Re: [Projekt] eigener Computer

Verfasst: 04.09.2017, 15:36
von RedGuy
Hi zusammen !


Als Anhang ein screenshot bezüglich meiner aktuellen Arbeit an meinem eigenen Computer.
binary up-counter with preset
binary up-counter with preset
Das Ganze (screenshot) ist der elementare Teil eines Binärzählers. Hier noch 1 bit groß.
Dieser wird dann programmatisch automatisiert auf 128bit hoch berechnet.
Das Programm worin dieser samt seiner Komponenten dargestellt wird, ist meine schon beschriebene eigene Chip-Design-Software "nDesign".
Der Zähler besteht im Elementaren aus einem modifizierten JK-Master-Slave-FlipFlop.

In meinem Computer befindet sich der Counter im Prozessor als Befehlszähler (instruction counter).
Also ein integraler Baustein eines Prozessors ;) .

Dies um zu zeigen was ich gerade mache.

Eins kann ich sagen: Es dauert nicht mehr lange (im Rahmen von einem Monat, wenns gut läuft) und ich habe den kompletten Prozessor aufmodelliert ;) .
Dann kann ich auch sagen, wie viele Transistoren er hat (weil Krishty ja schon gefragt hatte).

Bevor ich Schaltungen mit nDesign modelliere und simuliere, simuliere ich diese mit einer Simulationssoftware, welche Ihr vielleicht kennt: Yenka (früher crocodile-clips).
Einfach mal nach "Yenka" googeln!

Das gesamte Projekt kann noch andauern. Ich schätze 2 bis 3 Jahre.
Aber die lange Zeit wird sich lohnen- denn es ist ja immerhin ein komplett eigener Computer ;) .

Gruss
RedGuy

Re: [Projekt] eigener Computer

Verfasst: 04.09.2017, 19:53
von RedGuy
Hi nochmals !


Jetzt hab ich den elementaren Zähler nämlich ein durch mich modifizieren JK-Master-FlipFlop mit Preset -Möglichkeit
für Yenka ;) . Siehe Anhang.
Befehlszählerelement (1bit)
Befehlszählerelement (1bit)
Gruss
RedGuy