FAQ

Allgemeine Fragen:

Q1: Hive – Was ist das?
Q2: Für wen ist das Gerät von Interesse?
Q3: Welche Hardware steckt im Gerät?
Q4: Ist eine Leiterplatte für das Gerät verfügbar?
Q5: Wie lange braucht man um ein solches Gerät zu bauen?
Q6: Was kostet ein Hive-Computer?

Technische Fragen:

QT1: Propeller-Chip? Was ist das?
QT2: Wo finde ich den Schaltplan des Gerätes?
QT3: Wie funktioniert der 8-Bit-Bus
QT4: Wo finde ich Quelltexte und Programme für den Hive?
QT5: Wo findet man die nötigen Handbücher und Compiler zum Propeller-Chip?
QT6: Warum laufen die Propeller im Hive nur mit 5 statt mit 80 MHz?
QT7: Wo kann man den Propellerchip beziehen?

 

 

Q1: Hive – Was ist das?

 

Der Hive ist ein kompletter Kleincomputer mit selbst entwickelter Hard- und Software. Als Basis dienen drei Microcontroller P8x32A „Propeller“ der Firma Parallax mit einer minimalistischen externen Beschaltung. Die wesentlichen Prämissen beim Entwurf des Gerätes kann man in folgenden Ideen zusammenfassen:

Einfacher und sicherer Aufbau: Dazu gehört die Verwendung von einfach zu beschaffenden und zu verarbeitenden Bauelementen. Damit verbieten sich alle Komponenten, welche ausschließlich in SMD-Gehäusen geliefert werden. Der Hive besitzt also ein „Küchentisch-Design“. Bei vorhandener Leiterplatte sollte es einem Interessierten ohne Probleme möglich sein das Gerät in wenigen Stunden auf dem „Küchentisch“ nachzubauen. Alle Bauelemente, bis hin zum Gehäuse und zur Tastatur, sollten aus leicht zugänglichen Quellen beschaffbar sein.

Einfache Programmierung: Einfache Systemsoftware ist schon vorhanden und einsatzbereit. Dazu gehört ein Kommandozeileninterpreter und diverse Tools. Erweiterungen sollten problemlos in einer leicht zu erlernenden Hochsprache möglich sein. Damit wird auch verhindert daß wie bei anderen Systemen interne Strukturen nur Insidern zugänglich sind. Damit ist auch sichergestellt, daß die Beschäftigung mit diesem Projekt ein befriedigendes Lernergebnis erbringt. Und wer mag kann auch ohne Probleme ein völlig eigenes Betriebssystem entwickeln, eigene Vorstellungen verwirklichen oder einfach nur experimentieren.

Lernen durch Selbstmachen: Alle Komponenten – sowohl die Hardware als auch die Software – sollten für jeden Interessierten durchschaubar und selbst nachbaubar sein. Dennoch läßt das System genug Möglichkeiten und Freiheiten für eigene Experimente. Spaß an der Freude ist ein erklärtes Ziel. Durch einen modularen Erweiterungsbus kann jeder das System erweitern, und da sowohl die Hardware, wie auch die Software keine Geheimnisse hat, sollte das auch für jeden möglich sein.

Modularität und Erweiterbarkeit: Am aktuellen Prototyp ist es noch nicht sichtbar, aber die fertige Platine wird die Modularität zum Ausdruck bringen, denn sie soll so gestaltet werden, daß man sowohl ein recht kompaktes und kleines, als auch ein modulares Gerät als Steckkartensystem aufbauen kann. So sind Hardwareexperimenten keine Grenzen gesetzt.

Mehr zum Konzept: >>> hier lang

 

Q2: Für wen ist das Gerät von Interesse?


Schau dir in Ruhe die folgenden Fragen an und beantworte sie für dich selbst:

Du möchtest einfach mal einen kompletten Computer selbst aus Einzelteilen aufbauen und programmieren?
Du möchtest lernen wie die Hardware eines Computers intern arbeitet?
Du möchtest ein eigenes kleines Betriebssystem programmieren?
Du möchtest lernen wie man einen Microcontroller einsetzt und programmiert?
Du wolltest schon immer etwas mit dem Propeller-Chip von Parallax bauen aber hattest nie eine Idee was?
Du möchtest lernen wie man eine RISC-CPU programmierst?
Du möchtest mit einem RISC-Microkernel eine eigene CPU entwerfen?
Du möchtest lernen wie Parallelverarbeitung mit mehreren CPU’s funktioniert?
Dich reizt es einfach Macht über 24 RISC-CPU’s auszuüben? 😉
Du suchst Herausforderungen um als Coder aus einer minimalen, leistungsfähigen und flexiblen Hardware das letzte Quantum an Leistung herauszukitzeln?
Du möchtest auf einer exotischen Hardware Grafik- und Sounddemos programmieren?

Du möchtest das alles mit einer extrem einfachen Hardware und Software realisieren?
Du möchtest bei deinen Experimenten nicht auf Sound und Grafik verzichten?
Du möchtest deinen eigenen Game-Computer bauen und programmieren?
Dich interessieren Retrocomputer und du wünscht dir einen modernen Retro-Style-Computer, welcher die Stärken und die Faszination weiter entwickelt?
Dich fasziniert die Direktheit und Einfachheit der alten 8-Bit-Computer?
Du möchtest eigene Erweiterungen für den Hive entwickeln und anderen Begeisterten zur Verfügung stellen?
Du suchst wirklichen Spaß an der Technik und willst deine Zeit nicht mit dem bloßem konsumieren von Dingen verschwenden, welche andere entwickelt haben?

Wenn du mehrere der Fragen mit einem klaren „Ja“ beantworten kannst ist das Gerät für dich interessant. Die Gegenprobe:

Du möchtest mit dem Gerät ein neues Doom-X in 3D-Grafik programmieren?
Du möchtest Grafik und Videos wie auf einem aktuellen PC darstellen?
Du möchtest einen fertigen Hive-Computer und dazu noch fertige Software kaufen?
Du möchtest mit dem Gerät im Internet surfen?
Du hast keine Ahnung wo am Lötkolben vorn und hinten ist und willst nur fertige Software nutzen?
Dich interessiert nicht wie die Technik wirklich funktioniert, du willst sie nur nutzen?

In diesen Fällen: Finger weg vom Hive!

 

Q3: Welche Hardware steckt im Gerät?

 

Der Kern des Gerätes besteht aus drei Microcontroller P8x32D40 „Propeller“ der Firme Parallax. Jeder dieser Microcontroller enthält 8 RISC-Kerne (die sogenannten COG’s) und eine ganze Menge begleitender Peripherielogik. Die einzige nennenswerte Zusatzhardware sind ein oder zwei externe Speicherbänke und ein dazu gehöriges Adresslatch. Noch einige passive Bauelemente plus ein wenig Verdrahtung und fertig ist der Mini-Supercomputer. Genaue Informationen zum Propeller findest du im Wikipedia und einen Hardwareüberblick hier bei der Herstellerfirma. Wie schon beschrieben stecken im Hive drei Propellerchips, wobei jeder einen ganz bestimmten Funktionskomplexe bedient:

1. Chip Host „Regnatix“ – Hostsystem

– Externer RAM 1 MByte in zwei Bänken 512 kByte statischer RAM
– Bussystem 8 Bit für die Anbindung der zwei anderen Microcontroller und den Erweiterungsbus

Der erste Chip steht als Host fast vollständig dem Anwender für seine Programme zur Verfügung. Da sehr viele komplexe Systemfunktionen in die beiden Slavecontroller ausgelagert sind, ergeben sich sehr kleine Programmgrößen für die eigendliche Software. Als Beispiel möge der Startracker dienen: Dieser besitzt eine bescheidene Programmgröße von 4,9 kByte für das Programm selbst im Host. Sieben freie Prozessoren, 32 kByte interner RAM des Chips und 1 MByte externer RAM sollten auch für relativ komplexe Anwendungen ausreichend sein.

2. Chip Slave „Bellatrix“ – Intelligentes Grafiksubsystem

– VGA Auflösungen bis 1280 x 1024 Pixel im Textmodus
– Composit-Video
– Anschluß für Tastatur und Maus (PS2)

Der zweite Microcontroller ist für das Benutzerinterface zuständig. Sowohl Bildausgabe über VGA oder Composit-Video, als auch die Eingabegeräte werden hier angesteuert. Die momentanen Funktionen gestatten es dem Host einen beliebigen neuen programmspezifischen Programmcode in das Grafiksubsystem zu übertragen, um die dort vorhanden acht Prozessoren in speziellen Funktionen einzubinden. So könnte der Chip durchaus völlig selbstständig Menüs darstellen und verwalten, da er auch die Mausaktionen überwacht. Bei entsprechender Software muß der Hostchip sich also um solche Kleinigkeiten wie Menüs, Fenster und Benutzeraktionen nicht unbedingt kümmern.

3. Chip Slave „Administra“ – Allgemein I/O-Interface

– Ansteuerung und Verwaltung einer SD-Card (bis 2 GByte)
– FAT16-Dateisystem (ohne Ordner)
– Blockinterface mit Screenpuffer für FORTH, schneller wahlfreier Zugriff auf große Datenbestände
– Engine um komplexe vierkanalige Soundmodule zu puffern und abzuspielen
– 2 Kanal FX-Synthesizer (NFO/LFO/Hüllkurve…)
– 1 Kanal Engine 1bit ADPCM Sample
– Stereo Engine zur Wiedergabe von komprimierten WAV-Dateien direct von SD-Card
– TCP/IP-Interface (geplant)

Administra bietet dem Host momentan 39 (Stand 03/2009) teilweise recht komplexe Funktionen. So ist es nicht nötig, daß sich der Host um „Kleinigkeiten“ wie FAT, Dateinamen oder Verzeichnis kümmert. Viele der Funktionen der angeschlossenen Hardware sind in diesen Microcontroller ausgelagert.

Wie man sieht hätte ein Microcontroller zu wenig Resourcen um einen kompletten Computer zu realisieren. Aber ein System aus drei dieser Schaltkreise bietet genug Leistung, um ein komfortables und flexibles System zu bilden. Der größte Teil der Funktionen wird durch Software realisiert, was die Schaltung erheblich vereinfacht. So bedarf es als Beispiel für den Anschluß eines VGA-Monitors nur einer VGA-Buchse und acht Widerstände. Den Rest erledigt Software. Genial einfach, einfach genial…

Q4: Ist eine Leiterplatte für das Gerät verfügbar?

 

Hochauflösende Versionen von Schaltung und Layout finden sich momentan im Downloadbereich. In Kürze werden dort auch die Schaltung und Boarddatei für Eagle erscheinen.

Q5: Wie lange braucht man um ein solches Gerät zu bauen?

 

Vorrausgesetzt es ist eine fertige Leiterplatte vorhanden, sollte ein geübter Bastler den Computer an einem Abend zum Leben erwecken. Möchte man etwas über die Hardware eines Computers lernen, bietet sich ein schrittweiser Aufbau der drei Funktionskomplexe mit entsprechenden einzelnen Experimenten an. In diesem Fall dauert es einfach so lange wie man Spaß an den Experimenten hat.

Für den ersten schrittweisen Entwurf und Aufbau auf einer Lochrasterplatine (Bilder dazu) habe ich eine Woche gebraucht, inklusive sehr vieler Experimente und einem Busmonitor. Nebenher habe ich aber noch einige Spielereien mit der neuen Hardware veranstaltet. Ein geübter Bastler sollte also einen Hive in wesentlich kürzerer Zeit manuell auch auf einer Rasterplatine aufbauen können.

Den zweiten Prototypen auf einer fertigen Platine habe ich an zwei Abenden aufgebaut, wie in der Galerie dokumentiert

 

Q6: Was kostet ein Hive-Computer?

 

Ich habe momentan keine konkrete Kostenaufstellung, aber grob überschlagen sollten die Kosten für die nötigen Bauteile je nach Leiterplatte deutlich unter 100 Euro sein. Das teuerste sind die drei Propeller (momentan je 10,- €) und eine entsprechende industrielle gefertigte Leiterplatte.

 

QT1: Propeller-Chip? Was ist das?

 

Hier ein Video von Computer-Trend TV, welches einen guten Überblick zum Propeller, dem Demo- und dem Hydraboard gibt. Ein erster Eindruck was alles mit nur einem dieser Schaltkreise möglich ist. Drei von diesen Wunderwerken stecken im Hive.

Mit freundlicher Erlaubniss von Rolf-Dieter Klein.
Artikel in Wikipedia zum Parallax Propeller
Beschaltung, Blockschaltbild, Pinout, Gehäuseformen
Herstellerseite
Deutsches Propeller-Portal
Spin-Compiler Propeller-Tool, Handbuch Propeller, SPIN- und Assemblerprogrammierung als PDF, Datenblätter…


QT2: Wo finde ich den Schaltplan des Gerätes?

 

Portbelegung der drei Microcontroller:

pinout.jpg

Schaltung des Prototypen:

hive-r13-plan1.jpg hive-r13-plan2.jpg hive-r13-plan3.jpg hive-r13-plan4.jpg

 

QT3: Wie funktioniert der 8-Bit-Bus

Der Bus: 1 MB RAM ergeben 20 Adressbits. Um unötige Hardware für die Adressdekodierung der beiden Bänke zu vermeiden, sah ich an Regnatix zwei Ausgänge (/RAM1, /RAM2) zur Selektion vor. Die jeweilige Speicherbank muß also von den RAM-Routinen per Software ausgewählt werden. Bleiben also noch 19 Adressbits, was eindeutig zuviel für Regnatix ist. Damit entschied sich, dass der Adressbus noch durch ein 8 Bit-Latch für den höherwertigen Teil entlastet werden muß. Angesteuert wird das Latch auch per Software direkt von Regnatix über das Signal /AL. Den alten Plan, Bellatrix und Administra über eine serielle Schnittstelle an Regnatix zu koppeln, ließ ich bei der Portaufteilung fallen: Da genug I/O-Leitungen vorhanden waren, wurden alle Props wie die RAM´s über einen parallelen 8 Bit-Datenbus gekoppelt. Für jeden Slavechip gibt es ebenfalls ein entsprechendes Selektionssignal (/PROP1, /PROP2) und korrespondierend dazu an jedem Slave einen Eingang (/SELECT). Um alles auf dem Bus geordnet ablaufen zu lassen definierte ich ein Bustak (BUSCLK), welcher von Regnatix generiert wird. Letztlich gibt es noch ein Schreibsignal (/WR) für RAM´s und Prop´s. Da die Reaktionszeit der Slaveschaltkreise nicht definiert ist, muß durch diese eine Quittung (/HS) erfolgen.

Da die Ausgänge der Propeller keinen Tri-State-Modus zulassen bedarf es einer genau definierten Choreographie der Signale. Es ist zu beachten, dass ein Programmfehler durchaus nicht nur zu einem logischen Buskonflikt führen kann, sondern auch Ausgänge die dauerhaft gegeneinander arbeiten beschädigt werden können.

Bussignale, Betriebsspannungen und verbleibende I/O-Ports von Administra und Bellatrix werde ich letztlich auf einem Erweiterungsbus zusammenfassen.

Die Signale im Überblick:

D0..D7   Datenbus
A0..A10   Adressbus (multiplex)
/RAM1   Selektionssignal RAM-Bank 1
/RAM2   Selektionssignal RAM-Bank 2
/PROP1   Selektionssignal Slave-Propeller 1
/PROP2   Selektionssignal Slave-Propeller 2
/AL   Strobesignal für Adresslatch
/WR   Schreibsignal
BUSCLK   Steuertakt (wird von Regnatix generiert)
/HS   Handshakesignal der beiden Slave-Propeller

Diese Signale beziehen sich auf die Kommunikation zwischen den drei Microcontrollern und den externen RAM’s. Der geplante Erweiterungsbus wird noch weitere Signale enthalten.

Die Busprotokolle:

ram_write.jpg ram_read.jpg prop_write.jpg prop_read.jpg

QT4: Wo finde ich Quelltexte und Programme für den Hive?


Quelltexte, ausführbare BIN-Dateien, Datenblätter und Materialien: >>> hier lang

 

QT5: Wo findet man die nötigen Handbücher und Compiler zum Propeller-Chip?


Ein umfangreiches Handbuch zum Chip, zur SPIN- und Assemblerprogrammierung sowie Datenblätter und Schaltungen findet man hier.

 

QT6: Warum laufen die Propeller im Hive nur mit 5 statt mit 80 MHz?


Die Hauptfrequenz in den Propellerchip wird durch eine PLL-Schaltung gebildet, welche als Referenzsignal den 5 MHz Quarz verwendet. Per Software kann der Teilungsfaktor der PLL definiert werden. In den Quelltexten findet man entsprechend folgende Einträge in einem Block zut Konstantendefinition:

CON
_XINFREQ = 5_000_000
_CLKMODE = XTAL1 + PLL16X

Die erste Konstante gibt an welche Frequenz das Referenzsignal hat, im Hive die Frequenz des Quarzes. Die zweite Konstante stellt neben dem Modus den Teilerfaktor ein. In unserem Fall ergibt der Haupttakt also 5 MHz * 16 = 80 MHz. Jeder Chip läuft also intern mit den vollen 80 MHz. Prinzipiell sind also auch andere Bestückungen möglich  sofern die entsprechenden Werte in der Software angepasst werden.

QT7: Wo kann man den Propellerchip beziehen?

 

http://elmicro.com/de/propeller.html