[Projekt] eigener Computer

Hier könnt ihr euch selbst, eure Homepage, euren Entwicklerstammtisch, Termine oder eure Projekte vorstellen.
Forumsregeln
Bitte Präfixe benutzen. Das Präfix "[Projekt]" bewirkt die Aufnahme von Bildern aus den Beiträgen des Themenerstellers in den Showroom. Alle Bilder aus dem Thema Showroom erscheinen ebenfalls im Showroom auf der Frontpage. Es werden nur Bilder berücksichtigt, die entweder mit dem attachement- oder dem img-BBCode im Beitrag angezeigt werden.

Die Bildersammelfunktion muss manuell ausgeführt werden, die URL dazu und weitere Details zum Showroom sind hier zu finden.

This forum is primarily intended for German-language video game developers. Please don't post promotional information targeted at end users.
RedGuy
Establishment
Beiträge: 111
Registriert: 17.09.2002, 17:27
Echter Name: Manuel Hofmann
Wohnort: Rottweil
Kontaktdaten:

Re: [Projekt] eigener Computer

Beitrag von RedGuy »

Hi !!

Also: Hiermit, wie versprochen, die Spezifikation meiner Programmiersprache 8-) !!!

DER AKTUELLE STAND:
Sub-Projekt Programmiersprache: bug-fixing im Bereich der arrays.
Sub-Projekt Betriebsystem: kernel - Konzept ist im Detail fertig, Treiber und GUI Konzepte sind fertig
Sub-Projekt Mikrochips: Chip - Design ist ca. zur Hälfte fertig; der Prozessor-core ist implementiert. Es fehlen so aufwendige Dinge wie Speicher,
welche ich automatisiert implementieren werde (automatisiert z.B. auf Grund von address-decoding).
Sub-Projekt Graphik-chip: debugging von Texturierung; das Kommunikationsprotokoll für zwischen Grafikchip und Hauptprozessor (also Betriebsystem, da auf ROM) ist fertig implementiert 8-)


Jetzt zur Spezifikation meiner Programmiersprache:
Ich hoffe Ihr könnt alles entziffern (manches ist noch Stichwortweiße) bzw. verstehen :D .

Mal sehen was Ihr davon haltet.

Und hier gehts los:

Zum Verständnis: Arise heißt meine Programmiersprache, Events heißt mein Betriebsystem

(1)
Schlüsselwörter ; Bedeutung

decl ;Variablendeklaration
infinite ; Endlosschleife (ist bei meiner Programmiersprache DIE Schleife)
endInfinite
break ; Ausbruch aus der Endlosschleife
= ; Zuweisung
delta ; Maschinencode - interface; siehe unten
function ; Funktionsdeklaration (Funktionen besitzen bei mir KEINE Parameter; die Übergabe geschieht über globale Variablen)
endFunction
return ; Funktionswertrückgabe
endProgram ;Anweisung für mein Betriebsystem, das Programm zu beenden
if
else
endIf
: ; goto - Label
goto ; Sprungbefehl á la goto :)
events ; Parallelisierungsbefehl: Multi-threading; das Betriebsystem erhält wieder die Kontrolle und sieht zu wie es gemäß seiner multi-tasking/multi-threading Strategie weiter verfährt
' ; Kommentar
redim ; Redeklaration von dynamischen arrays !!! (siehe unten)


(2)
Variablendeklarationen:
Festlegung von Menge der Zahlen und die Dimension (Vektor oder Matrix und die Dimension(en))
wie in der Mathematik

Multidimensionale arrays (über zwei Dimensionen hinaus) sind (noch) nicht unterstützt

Variablennamen dürfen beliebige Bezeichnungen aufweisen - sogar Zahlen !!!
bei Zahlen ist der Variablennamen dann allerdings ein override zu einer Zahl.

Variablen müssen nach der Deklaration noch initialisiert werden, sonst steht der aktuelle Speicherinhalt drin!

(3)
Zuordnungen und Typsicherheit
Variablen müssen nach der Deklaration noch initialisiert werden, sonst steht der aktuelle Speicherinhalt drin!

statische Zuordnungen
Typ: Fließkommazahl = 8 (man muss nicht 8.0 schreiben)
Ganzzahl = 10.4 geht natürlich nicht

Operationen müssen typsicher sein. Das bedeutet, dass alle Operanten vom gleichen Typ sein müssen, wie die Zielvariable.

Bei Fehler gibt Compiler Fehlermeldung aus

array - Zuordnungen:
decl xmatrix[2,3] Natürlichezahl
xmatrix = ((2,3)(3,2)(3,3))

decl xvector[4] Natürlichezahl
xvector = (2,3,y,5)

für arrays gibt es mindestens ein Element !!! keine leere Menge !!!
das da eine Variable mindestens einen Wert speichern muss !!!

die array Definition muss stets die gleiche Größe aufweisen, wie der Ziel - array groß ist !
->Variablendefinitionskonform

(4)
dynamische Arrays:
bei dynamischen Arrays kann eine sogenannte redim space angegeben werden
Diese bestimmt wie viel Platz dass nach der tatsächlichen Größe des Arrays für eventuelle Größenänderungen noch freigelassen wird.
Größenänderungen von dynamischen Arrays geschieht über den redim Befehl.
Mit Hilfe von diesem können die Dimensionen des dynamischen arrays neu festgelegt werden.
Die darin befindlichen Daten werden zur Laufzeit entsprechend der Größenänderung umkopiert.
Der allokierte Speicherplatz bleibt nach dem redim Befehl gleich.

Eine neue redim space kann beim redim Kommando nicht angegeben werden.
Beim Überschreiten der redim space beim redim Kommando mittels der angegebenen Dimensionen wird das Programm beendet.

Syntax:

decl dynamicArray[dimension1,dimension2] 20
decl dynamicArray[dimension1,dimension2] dynamicRedimSpaceVariable

redim dynamicArray[newsize1,newsize2]

die Zuweisung der redim space kann dynamisch (per Variable) geschehen.
Die Transformation der Daten des dynamischen Arrays während eines redim Befehls geschieht nach folgender einfacher, selbsterklärender Regelung:
Wenn der array größer wird, liegen die alten Daten am Anfang darin,
wenn der array kleiner wird, werden die Daten am Ende abgeschnitten.


(5)
operationen:
a&b
a|b
a^b (XOR)
a=b
a<b
a>b (nutzt intern b<a)
a<=b
a>=b
a+b
a-b
a*b
a/b
a%b (Modulo als Fließkommazahloperation mit Natürlichezahl-Ergebnis)
a! (invert)
a~ (cast)
a>>f (shift right and fill with f)
a<<f (shift left and fill with f)

(6)
Funktionen als Methodik ("es geht wirklich nicht anders")
nicht nur als Modularisierung / reusability

nur globale Variablen, keine Parameter als lokale Variablen, da
1. Kontext sowieso gegeben (auch bei Funktionen als Methodik)
2. prinzipiell nur globale Variablen (auch keine Kapselung)

Funktionswerte (return command) müssen in die aufrufende Wertzuweisung (z.B. x[2] = functionX) passen

(7)
beliebige Zuweisung/Einführung von Binärzahlen

Wenn Sie einer Variable eine Zahl zuweisen möchten, die im Dualsystem gegeben ist, dann geben Sie einfach die 128stellige Repräsentation ein.
Dies können Sie für alle Fälle einer Einführung einer Zahl in das Arise-System erledigen (zum Beispiel auch beim Indizieren von arrays - mit Binärzahlen).

Beispiel:
x = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000

Dies gilt auch für Fließkommazahlen.

(8)
binäre Fließkommazahlen sind als binäre Ganzzahlen kodiert.

der Aufbau einer Fließkommazahl ist wie folgt:

1bit für Read/Write reserviert + 1 bit Vorzeichen ( 1 bedeutet minus; 0 bedeutet plus)
+ 62 bits Vorkommastellen ( also 2^0 aufwärts)
+ 64 bits Nachkommastellen negative Zweierpotenzen ( also 2^(-1) abwärts)

(9)
Einschränkungen bei Arise Alpha
eine Operation per Zuweisung zum Beispiel: x = a + b und nicht x = a + b + c
extra Zuweisung notwendig pro rechtsseitige Arrayindizierung: x = y und nicht x[a] = y
keine Array-Indizierung bei return Befehlen: also return x und nicht return x
als direkte Rückgabewerte bei return Behlen nur return 2.5 und nicht z.B. return (2,3) ; arrays funktionieren also nicht, nur Skalare

keine direkt rekursive Funktionen
diese müssen mit einer indirekten Rekursion ersetzt werden

keine multi-dimensionale arrays, lediglich Vektor und Matrix sind möglich

(10) multi-threading mit "events"
benutzerdefiniert und Systemvoraussetzung (so dass multi-tasting per System möglich ist)

(11)
Array safety
checks for array equality and indexOutOfRange

konsequent umgesetzt bezüglich Statik (z.B. copy von Vektor auf Matrix geht nicht) und Speicherkonsistenz
allerdings Matrizen könnten z.B. mit unterschiedlichen Dimensionen aber gleicher Gesamtgröße kopiert werden
aus Entwicklungszeitgründen
bei Fehler wird Programm beendet

Kopieren ausschließlich statischer arrays wird allerdings auch nur zur run-time überprüft - aus Entwicklungszeitgründen

(12) Maschinencodeinterface 9,1,3,3b
dynamisches Maschinencode interface mit "delta"

delta(299,120 , 300,120)
delta(x,y)
delta(200,120 , x)

delta(5,100, y) // schreibt die Zahl 100 nach y


(13)
Ergebnisregister an Prozessoreinheiten als temporären Speicher verwenden
innerhalb eines Events

(14)
Bei automatisierten Kopiervorgängen, bei denen Quell- und/oder Zieladresse von einer Variablen abhängen
gibt es zwei Prozessorerweiterungen.

Dies ist wichtig wenn man z.B. einfach Daten automatisch (also z.B. Massenweiße) von USB - Stick auf Festplatte kopiert.

Die Erste ist für von einem offset/Variablen abhängige Quelladresse.
Die Zweite ist für eine von einem offset/Variablen abhängige Zieladresse.

[data]offsetting mit internalDataOffsetCopy
read from RAM
2 Varianten (read result from register, oder in einem Wisch)

// internalDataOffsetCopy for data offsetting

// device represents an extension for the core delta processor
// otherwise data offsetting would not be possible

// reads an address given by an offset (given by a previously to a register written offset date)
// writes the result date to the result register AND to Delta date

write to RAM
fast advanced copy (faster than software copy to offset)

// internalDataOffsetCopy for data offsetting

// device represents an extension for the core delta processor
// otherwise advanced copy would not be possible EASILY

// copies a Delta date to a specific address given by an offset (given by control date)

(15)
software copy to offset (further offsetting)
->eine Instruktion wird dynamisch geschrieben
->Gemeinsamkeit und Unterschied zu write to RAM

(16)
das RW-bit und die Daten-Befehlsbeziehung
Spezialfall: Instruction-Register 4
copy to offset - Software - Fälle

(17)
Compilerdefinition und -konzept:

Compiler fügt eine Sequenz von code zusammen
Parser
Module

(18)
der compiler
Parser
Module
Funktionskompilierung mit typhaftem Programmbaum [und "outer rim"]

(19)
compiler - Optimiertheit
hochoptimiert auf Statik - außer auf manche elektrotechnische Interna (-> interne Geräte interop)
und außer bei rechtsseitigen Variablenzuweisungen (?)
und außer bei Variablenzuweisungen und return Befehlen (aus Entwicklungszeitgründen wird nicht der Statikfall berücksichtigt) (?)

Optimierung bei Kopiervorgang statischer und dynamischer arrays ?!

// für einen Kopiervorgang von statischen arrays muss dessen Größe berücksichtigt werden
// ->Optimierung; z.B. 2 Elemente werden direkt kopiert - mehr werden über eine Schleife kopiert
// bei dynamischen arrays wird immer über eine Schleife kopiert



Compiler Optimierungensoptionen

(20)
Daten im Speicher - absolut (von Programmen geschrieben und von resourceManager gelesen)

backjump date for dynamic memory allocation and multi-threading for resource manager

Daten im Speicher - RELATIV (von resourceManager verwaltet)

data processing information
dynamicIDcurrent
metaInfoOffsetCurrent
offsetSource
endOffsetSource
offsetDestination
endOffsetDestination
sizeDimension1source
sizeDimension2source
arrayPosSource
arrayPosDestination
sizeDimension1destination
sizeDimension2destination
lengthArraySource
lengthArrayDestination
arrayPosNormal
arrayPosNormalEnd
xArraySource
yArraySource
xArrayDestination
zArrayCurrent
---
skalare Variablen
---
statische ein dimensionale Arrays
---
statische zwei dimensionale Arrays
---
dynamic array meta information (1):
offsetDynamicArrays
---
dynamic array meta information (2):
offset
endArrayOffset // optimization date for copying the arrays
sizeDimension1
sizeDimension2
redimSpace
---
dynamic arrays

(21)
Entwicklungsprozess
erst Delta Prozessor
dann Events und Arise Konzept
dann Arise Alpha
dann Events
virtueller Monitor VGA
clock chip
Grafikchip
emulative Tastatur & Maus PS2
PS2 - chip
Hauptprozessor

Erweiterungsmöglichkeiten (Delta-System)
z.B. USB (z.B. auch für Drucker), eSATA (z.B. auch für optisches Laufwerk), Netzwerk, SD-Card-Reader
parallel dazu VLSI - Design
dann Events - Software
dann Arise-Events IDE
---
Arise Alpha IDE
core programming option
Wenn man nicht für Events programmiert, sondern zum Beispiel events programmiert, dann
sind bestimmte API - Elemente nicht definiert- zum Beispiel die Speicherallokation über Events.
Wenn man also komplett eine eigene Applikation schreibt, bitte Häkchen für core programming setzen.

Achtung: Laufzeitfehler bei arrays werden nicht mehr abgefangen...
Oprah Noodlemantra
Beiträge: 19
Registriert: 30.06.2015, 19:03

Re: [Projekt] eigener Computer

Beitrag von Oprah Noodlemantra »

Wofür wird return gebraucht, wenn die Funktion doch einfach eine globale Variable schreiben könnte?

Es wäre ohne return wohl etwas aufwändiger: Returnvariable reservieren, Funktion aufrufen, Wert der Returnvariable an eine andere Variable schreiben.
RedGuy
Establishment
Beiträge: 111
Registriert: 17.09.2002, 17:27
Echter Name: Manuel Hofmann
Wohnort: Rottweil
Kontaktdaten:

Re: [Projekt] eigener Computer

Beitrag von RedGuy »

@Oprah Noodlematra

also das ist richtig. daran hab ich nicht gedacht :D ! Das hab ich wohl aus den Gründen so implementiert, da halt eine Funktion auf jeden Fall so definiert ist.

Danke für den Tipp !!!

Gruss
RedGuy
RedGuy
Establishment
Beiträge: 111
Registriert: 17.09.2002, 17:27
Echter Name: Manuel Hofmann
Wohnort: Rottweil
Kontaktdaten:

Re: [Projekt] eigener Computer

Beitrag von RedGuy »

Der Hauptteil von meinem Betriebsystemkernel ist fertig.

Also man könnte sagen mein Betriebsystemkernel ist fertig.


Dateisystem, GUI (samt Schrift), Treiber sind nur noch eine Erweiterung dessen.

Den fertigen Kernel nenne ich den sogenannten Resourcemanager und dieser umfasst ca. 600 Zeilen code in meiner eigenen Programmiersprache (Arise).

Ich weiß der Kernel ist sehr schlank, aber Leistungsfähig ;) !!!

Gruss
Red
Benutzeravatar
Zudomon
Establishment
Beiträge: 2253
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Re: [Projekt] eigener Computer

Beitrag von Zudomon »

Ich finde dein Projekt sehr spannend!
Kannst du nicht mal ein YouTube Video machen, wo du deinen Rechner vorführst?
RedGuy
Establishment
Beiträge: 111
Registriert: 17.09.2002, 17:27
Echter Name: Manuel Hofmann
Wohnort: Rottweil
Kontaktdaten:

Re: [Projekt] eigener Computer

Beitrag von RedGuy »

Hi !!

Danke !

Also ein youtube-Video bringt im Moment nichts, denn ich habe NOCH nichts Anschauliches zum vorführen.

Wenn es soweit ist, geb ich natürlich Bescheid !!!


Also gestern hab ich den Treiberbereich konzeptioniert. Heute kommt die GUI dran ;) . Zur Erinnerung: ich hab ne 3d GUI 8-) !!!!!!!!!!!!!!!!!


Gruss
RedGuy
Benutzeravatar
Zudomon
Establishment
Beiträge: 2253
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Re: [Projekt] eigener Computer

Beitrag von Zudomon »

Ja echt krass, dass es eine 3d GUI wird!!!
Aber davon wirst du uns doch sicher dann Screenshots zeigen können, oder?

Ich meine du hättest irgendwo mal gesagt, dass du für dein System auch eine 3d Hardware Beschleunigung bauen würdest?
Basiert dein 3D System dann auf rasterizing oder schon auf raytracing? Wenn es letzteres ist, kannst du dann auch path tracing implementieren? Und ist die 3d beschleunigung dann fixed function oder shader basiert? Und wenn shader, welche shadertypen hast du dir überlegt?
RedGuy
Establishment
Beiträge: 111
Registriert: 17.09.2002, 17:27
Echter Name: Manuel Hofmann
Wohnort: Rottweil
Kontaktdaten:

Re: [Projekt] eigener Computer

Beitrag von RedGuy »

Hi Zudomon !!

Selbstverständlich kann ich dann screenshots zeigen ;) .

Tatsächlich, ich baue eine hardware Beschleunigung (3d-Grafikchip).

AAALSO.

Das Ganze basiert auf rasterizing. Außerdem habe ich einen Entwicklungsprozess eingeplant:
Im Moment verwende ich keine shaders und leider habe ich nicht einmal eine lightning (außer ein einziges ambientes Licht) :( .
Das erhoffe ich mir durch Zusammenarbeit (z.B. mit ZFX) zu erarbeiten.
Ich habe einen eigenen Algorithmus für texture mapping und rasterizing entwickelt (siehe https://zfx.info/viewtopic.php?f=5&t=4156).


Also etwas Geduld und ich habe super Dinge zu zeigen !!!

Gruss
Red
RedGuy
Establishment
Beiträge: 111
Registriert: 17.09.2002, 17:27
Echter Name: Manuel Hofmann
Wohnort: Rottweil
Kontaktdaten:

Re: [Projekt] eigener Computer

Beitrag von RedGuy »

Hi !

Also ich komme Riesenschritte voran:

Bin grad bei der GUI und zwar an der Stelle wo eine Anwendung sein Desktop-Icon definiert und das Icon vom Betriebsystem auf die Festplatte geschrieben wird.
Bei meinem Betriebssystem wird das von der Anwendung erledigt (also das Festlegen des Icons).

AUßERDEM - EIN RIESEN DURCHBRUCH. Ich weiß, wie ich das Ganze (den kompletten Computer) kostengünstig für frühe Anfänge produzieren kann.

Nämlich als FPGA - Variante !!!

Ich hab mir vor kurzem ein FPGA - board zugelegt:
http://www.ebay.de/itm/Altera-CycloneIV ... 1768063938
Man beachte bei dem Board den einfach ansteuerbaren VGA-Anschluss und den wohl relativ einfach ansteuerbaren PS/2 - Anschluss (nehme ich für die Maus).

Das müsste bald ankommen ;) .

Habe mich schon in VHDL (Programmiersprache für FPGA) eingearbeitet ;) !
Mit VHDL kann ich meinen kompletten Prozessor, samt Betriebsystem (welches bei mir ja als ROM auf dem Prozessor aufgebracht ist) komplex beschreiben 8-).

Gruss
RedGuy

PS: Ein Testbild wird bei meinem Graphikchip schon angezeigt. Lediglich habe ich Probleme mit der Grafikengine unter JAVA :( (siehe auch hier https://zfx.info/viewtopic.php?f=5&t=3880&p=49345). Möglicherweiße portiere ich meine virtuelle Maschine samt virtuellen Monitor, welche das Testbild generieren nach C#.
Unter C# habe ich die Probleme nicht...
RedGuy
Establishment
Beiträge: 111
Registriert: 17.09.2002, 17:27
Echter Name: Manuel Hofmann
Wohnort: Rottweil
Kontaktdaten:

Re: [Projekt] eigener Computer

Beitrag von RedGuy »

Hi !

yep! das FPGA-board ist da.
Hab heute meinen Command-Counter des Prozessors (128bits !!!) auf binärer Ebene automatisiert hardcoded in VHDL programmiert 8-)

Gruss
Red
Benutzeravatar
Zudomon
Establishment
Beiträge: 2253
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Re: [Projekt] eigener Computer

Beitrag von Zudomon »

RedGuy hat geschrieben:Also etwas Geduld und ich habe super Dinge zu zeigen !!!
Wann kommt denn mal was?
Seit Monaten bekommen wir, mal abgesehen von den beiden "fotorealistischen" Dreiecken, nichts wirklich zu Gesicht.
Okay, das ist nicht ganz fair. Es gibt ein paar Beschreibungen, aber ehrlich gesagt bin ich geistig ein bisschen zurückgeblieben und kann damit überhaupt nichts anfangen. Also will sagen, es ist mir alles zu hoch. Zwar kann ich erahnen, dass das, was du da machst, wahnsinnig krass sein muss. Aber ich brauche Bilder oder besser noch Videos um das dann zu begreifen. In Büchern gucke ich mir auch nur immer die Bilder an.
RedGuy
Establishment
Beiträge: 111
Registriert: 17.09.2002, 17:27
Echter Name: Manuel Hofmann
Wohnort: Rottweil
Kontaktdaten:

Re: [Projekt] eigener Computer

Beitrag von RedGuy »

Hi !

Hast recht - hinundwieder beschreibe ich mal was :D - z.B. vor allem https://zfx.info/viewtopic.php?f=5&t=4156#p53807

Allerdings bis es zur ersten Betriebsystem-Testapplikation kommt und die dann auf dem FPGA Chip läuft kann es noch ein oder zwei Monate dauern. Dieser Zeitraum ist realistisch.

Das kann ich dann allerdings auf youtube stellen !

Also Du must Dir vorstellen, es handelt sich um ein komplettes Betriebsystem. Soetwas dauert schon seine Zeit, wobei ich eigentlich brutal schnell dabei bin :P ...

[EDIT]
Also ich hab schon etwas zu zeigen. Die virtuelle Maschine für meinen Prozessor und der virtuelle (VGA) Monitor sind fertig. Ein Testprogramm geschrieben in meiner eigenen Programmiersprache füllt den Bildschirm mit roter Farbe aus. Habe lediglich das Problem mit Bildschirmflackern (siehe https://zfx.info/viewtopic.php?f=5&t=3880&p=49349) - wenn man glück hat sieht man allerdings die Farbe :D.

Ich werd mal Screenshots hochladen...

[EDIT EDIT]

Also hier mal für folgendes Programm ein danach folgender Screenshot der virtuellen Maschine (emulierte VGA-Grafikausgabe).

Code: Alles auswählen

' graphics chip program
' (C) Manuel Hofmann, November 2016

decl screenMemoryRed[1440,900] Natürlichezahl
decl screenMemoryGreen[1440,900] Natürlichezahl
decl screenMemoryBlue[1440,900] Natürlichezahl

' erzeuge ein Testbild:
' eine Strecke über eine lineare Funktion
' f(x) = x

decl x Natürlichezahl
decl y Natürlichezahl


' reset screen memory
x = 0
y = 0

infinite
	if ( y > 900 )
		break
	endIf

	infinite
		if ( x > 1440 )
			break
		endIf

		screenMemoryRed[x, y]	= 0
		screenMemoryGreen[x, y]	= 0
		screenMemoryBlue[x, y]	= 0
		x = x + 1

		' TODO: DEBUG - remove again
		break
	endInfinite

	x = 0

	y = y + 1

	' TODO: DEBUG - remove again
	break
endInfinite

' write Strecke into screen memory
x = 0
y = 0

infinite
	if ( y <= 900 )
		screenMemoryRed[x, y]	= 60
		screenMemoryGreen[x, y]	= 60
		screenMemoryBlue[x, y]	= 60

		x = x + 1
		y = y + 1

		' TODO: DEBUG - remove again
		break
	else
		break
	endIf
endInfinite

' write full test screen

infinite
	delta{5,60,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000,10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000}

	delta{5,60,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000,10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001}

	delta{5,60,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000,10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010}
endInfinite
[EDIT EDIT EDIT] Das Bild ist jetzt als Anhang...


Und hier die Debugger (Konsolen) Ausgabe der virtuellen Maschine:

https://sites.google.com/site/ncoreshof ... onment.txt


Grüsse
Red

PS: das FPGA board funktioniert- es blinkt und piepst...
Dateianhänge
screenshot von der virutellen VGA Monitor Ausgabe der virtuellen Maschine
screenshot von der virutellen VGA Monitor Ausgabe der virtuellen Maschine
Zuletzt geändert von RedGuy am 06.05.2017, 15:17, insgesamt 2-mal geändert.
Benutzeravatar
xq
Establishment
Beiträge: 1581
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: [Projekt] eigener Computer

Beitrag von xq »

Hoste deine Bilder doch mal bei imgur oder so, googlesites erlaubt scheinbar kein cross-site-loading... Ansonsten wäre es auch mal cool, wenn du hier deine Projektseite verlinkst oder wenigstens deine Dokumente
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Programmiert viel in ⚡️Zig⚡️ und nervt Leute damit.
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: [Projekt] eigener Computer

Beitrag von Krishty »

ZFX kann auch Dateianhänge; die landen dann sogar automatisch im Showroom :)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
RedGuy
Establishment
Beiträge: 111
Registriert: 17.09.2002, 17:27
Echter Name: Manuel Hofmann
Wohnort: Rottweil
Kontaktdaten:

Re: [Projekt] eigener Computer

Beitrag von RedGuy »

So ! Jetzt müsste alles angezeigt werden...

Allerdings hat die Änderung meines alten posts nicht dazu geführt, dass ich im Showroom angezeigt werde :cry: ...
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4254
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: [Projekt] eigener Computer

Beitrag 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
RedGuy
Establishment
Beiträge: 111
Registriert: 17.09.2002, 17:27
Echter Name: Manuel Hofmann
Wohnort: Rottweil
Kontaktdaten:

Re: [Projekt] eigener Computer

Beitrag 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
Dateianhänge
screenshot chip-design software &quot;nDesign&quot;
screenshot chip-design software "nDesign"
RedGuy
Establishment
Beiträge: 111
Registriert: 17.09.2002, 17:27
Echter Name: Manuel Hofmann
Wohnort: Rottweil
Kontaktdaten:

Re: [Projekt] eigener Computer

Beitrag 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.
Benutzeravatar
Schrompf
Moderator
Beiträge: 4838
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: [Projekt] eigener Computer

Beitrag 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?
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
RedGuy
Establishment
Beiträge: 111
Registriert: 17.09.2002, 17:27
Echter Name: Manuel Hofmann
Wohnort: Rottweil
Kontaktdaten:

Re: [Projekt] eigener Computer

Beitrag 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
Benutzeravatar
Schrompf
Moderator
Beiträge: 4838
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: [Projekt] eigener Computer

Beitrag 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?
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
RedGuy
Establishment
Beiträge: 111
Registriert: 17.09.2002, 17:27
Echter Name: Manuel Hofmann
Wohnort: Rottweil
Kontaktdaten:

Re: [Projekt] eigener Computer

Beitrag 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.
Zuletzt geändert von RedGuy am 11.07.2017, 12:25, insgesamt 1-mal geändert.
Benutzeravatar
xq
Establishment
Beiträge: 1581
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: [Projekt] eigener Computer

Beitrag 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
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Programmiert viel in ⚡️Zig⚡️ und nervt Leute damit.
RedGuy
Establishment
Beiträge: 111
Registriert: 17.09.2002, 17:27
Echter Name: Manuel Hofmann
Wohnort: Rottweil
Kontaktdaten:

Re: [Projekt] eigener Computer

Beitrag von RedGuy »

Hi MasterQ32!

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

Gruss
Red
Benutzeravatar
xq
Establishment
Beiträge: 1581
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: [Projekt] eigener Computer

Beitrag von xq »

Worauf ankommt?
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Programmiert viel in ⚡️Zig⚡️ und nervt Leute damit.
RedGuy
Establishment
Beiträge: 111
Registriert: 17.09.2002, 17:27
Echter Name: Manuel Hofmann
Wohnort: Rottweil
Kontaktdaten:

Re: [Projekt] eigener Computer

Beitrag 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-) !
Benutzeravatar
Zudomon
Establishment
Beiträge: 2253
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Re: [Projekt] eigener Computer

Beitrag von Zudomon »

Bild
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: [Projekt] eigener Computer

Beitrag 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?
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
RedGuy
Establishment
Beiträge: 111
Registriert: 17.09.2002, 17:27
Echter Name: Manuel Hofmann
Wohnort: Rottweil
Kontaktdaten:

Re: [Projekt] eigener Computer

Beitrag 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
mrz
Beiträge: 79
Registriert: 07.08.2008, 14:34

Re: [Projekt] eigener Computer

Beitrag 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.
Antworten