CP/M-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Memberlist || Home || Statistik || Kalender || Staff Willkommen Gast!
[ Unofficial CP/M Website ] [ Z80 Family Support Page ] [ Forum-Regeln ] [ Impressum/Kontakt ] [ Datenschutzerklärung ]

CP/M-Forum » Computer » Will wer mitbasteln? » Threadansicht

Autor Thread - Seiten: -1-
000
12.08.2013, 05:31 Uhr
prefect



Hi,

Gerade ist aus Asien ein Pack Prototypen-Karten unterwegs. Erster Prototyp! (64k, kein Bankswitcher, kein Waitstate Generator => Takt <= 6MHz).

Wer hätte Interesse an sowas:
- CPU Karte für Anschluss and Arduino oder Raspberry Pi via SPI.
- Z80-SIO+CTC und Wait-State Generator (eventuell wird das später ein 16550) für Host-Communication.
- 512kB RAM (erster Proto hat 64k)
- CPLD-Basierter Bankswitcher
- Host-DMA Interface über SPI-BUS (Seriell, 2-4MHz): 3mal MCP23017 erlauben den Z80 von aussen zu stoppen und im RAM zu arbeiten. Das wird der "DMA" für den Host um "Plattenzugriffe" abzuliefern. Ein ROM erübrigt sich hier auch. Das kann der Host anliefern ;-).

Als Host eignet sich z.B. ein Arduino Mega(12EUR auf ebay), der bringt:
- SD-Karten-Interface (6EUR), mit Ethernet damit man den Rechner vielleicht über Telnet ansprechen kann oder ein Webserver die Disk-Images verwaltet ca. 20 EUR.

oder eben ein Raspberry der hat dann alles on board, braucht aber Zeit zum booten. Wär aber ne SUPER VGA Karte ;-). Mal schauen was da geht.

Ich frag halt um einzuschätzen ob ich das nur für mich bau, oder wer so'n Ding haben will. Ich werd in jedem Fall CP/M 2.2 anpassen, eventuell CP/M 3.0

Ziel sind 20MHz. Die CPUs können das ja nun und das RAM sollte mit 55ns auch mitkommen, nur die SIO hängt hinterher, aber das wird sich waitstaten lassen.

Durch den Arduino, kann man entspannt Speicher anbinden: 8MB Flash-Speicher, etc. mit wenigen Drähten. Sehr adäquate Platten für sowas.

Jemand Interesse?

Jemand Erfahrung mit High-Speed Z80 Karten? Anbindung der SIO. Bin offen für Tips. Denke an einen CPLD als Bankswitcher und Wait-State-Generator. Gibt es vielleicht eine gute SIO die den WAIT selbst liefert? (Ich frag mich bis heute wieso das keine Peripherie macht.)

Mein erster Proto bekommt ein klassisches 2.2 um mal zu sehen wie das so mit dem Arduino und SD-Karte, Terminal über Ethernet, Seriell oder USB (ja USB) geht. Ich hab ne Micro-VGA (quasi ein Vt100 Terminal, aber PS2), die kombiniert mit dem Arduino-USB Shield erlaubt eine USB wireless-Tastatur (getestet, geht). Ich fänd das nett: Platte über SD-Karte bis zum Abwinken, Wireless Keyboard oder nen klassisches Gamer-Keyboard. Plattenimage Up-Down-load über Ethernet (Mini Webserver), Display an VGA oder über Ethernet im Termal-Fenster ... simultan! Oder das Board am Raspi: HDMI, USB für Display und Keyboard, SD-Karte ist eh on board und Netzwerk auch. Das ist schnell genug um dort einen Emulator zu fahren. Stilvoller wäre aber der ECHTE Z80 am Extension-Port. Ist en bischen wie wenn man in der Garage ne Harley als Türstopper hinstellt aber warum nicht? Erlaubt ist was Spass macht. Beim Raspi wäre nur die Aufgabe das System aufs Minimum zu reduzieren.

Auf diese Weise könnte man auch 68k und 8086 anbinden.


Gruss

prefect

Dieser Post wurde am 12.08.2013 um 05:41 Uhr von prefect editiert.
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
001
12.08.2013, 23:25 Uhr
Hein_Ko

Avatar von Hein_Ko

Hallo perfect

So einen CP/M-Z80 mit 20 MHz habe ich gerade fertig entwickelt.
Der ist richtig schnell. :-)

Sieh mal hier: http://www.kolter.de/sepia.html

Grüße
Heinrich
--
Es gibt keine Probleme - nur Lösungen !
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
002
13.08.2013, 11:24 Uhr
prefect



Sehr hübsch, (das mein ich ehrlich, stylisch!)

und sieht richtig teuer aus ;-). (das mein ich auch ehrlich!)

Ich will in den Low-Cost, jedermanns Rechner.

Dabei ist es gut wenn nicht ALLE Peripherie-Karten neu müssen.

Geht mal auf ebay und gib da ARDUINO als Suche ein. Oder geht auf http://arduino.cc . Da bekommst Du einen Eindruck was geht.

Klar Arduino ist kein "Produktionsrechner" sondern eher ein Prototypensystem, aber ... auch daran arbeite ich gerade. Erste Industrie-Entwickler haben die Plattform adoptiert.

Wenn ich also hingehe und einen Arduino nehme und ihn zu einem Peripherie-controller für den Z80 mache, dann steht alle Peripherie offen.

Die ist beim Arduino *meistens* seriell angebunden I2C oder SPI.

Es gibt USB, Ethernet, WLAN, diverse Wandler und Sensoren, LCD-Display und so weiter. Ebay ist voll davon.

Nachteil: keine Rücksicht auf 19". Dafür kostet die Peripherie aber auch nur *vergleichsweise* Peanuts.

Beispiel:
- CPU bestückt nehme ich derzeit ca. 50€ an
- Arduino Mega 13-18€
- USB Host-Shield 25€
- Ethernet Shield 20€
- Micro-VGA 25€
- 3x TTL-RS232 Pegelwandler = 12€

Also für 150€ habe ich ... dann:
- einen 20MHz Z80, 512kB
- mit einem 16MHz Peripherie-Controller, der DMA kann
- mit SD-Karten-Slot
- Ethernet
- USB für Storage und Tastatur
- Console simultan über:
- Screen: VGA oder Telnet
- Keyboard: Telnet, PS2, SIO, USB-seriell (Arduino Port 0)

Das ganze wird erweitert durch ein Carrier-Shield für den Arduino:
- 512kB RAM für den Arduino (buffers, etc.)
- zus. SD-Card-Slot
- Realtime-Clock
- 4x8MB Flash
- Anschluss für ... mehrere Z80 boards (bis zu 3)
- Kosten unter 40€ (Ziel)
- Euro-Karten format: Arduino drunter und Shields oben drauf und ab ins Rack!

Und Damit bin ich bei 200€ für einen Ultra Z80 Rechner plus Gehäuse und Frontplatten oder 300€ für ein Steuersystem mit 3 CPUs. Über SPI sind jede Menge Digitial I/O erweiterbar.

Gruss
Adrian
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
003
13.08.2013, 11:29 Uhr
prefect



In ein paar Tagen mach ich mal erste Fotos. In 5-6 Wochen ist das Carrier Shield sicher auch fertig und dann wird es auch hübsch!
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
004
13.08.2013, 11:32 Uhr
prefect



Heinrich,

lustig!

Dein Design sieht wohl so aus dass Du jede Platine erstmal mit nem ISPI anfängst ;-). Ich sollte Lattice Aktien kaufen! ;-).

Aber im Ernst ... solides Material ... Preisliste?
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
005
13.08.2013, 11:59 Uhr
hschuetz

Avatar von hschuetz

Hallo Adrian,
sicher ein interessantes Projekt... leider habe ich da selber einiges in der Mache.
Vielleicht kann ich das eine oder andere in meine Projekte mit einfließen lassen. Heinrich hat da ein absolutes Profigerät super Aufbau.... leider auch entsprechend der Preis. Deine Kalkulation gefällt mir da besser... ist halt ein Bastelprojekt. Wenn du da Bilder hast schaun wir nochmal...
Gruß
Hans-Werner
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
006
13.08.2013, 16:54 Uhr
prefect



Gestern sind die Platinen angekommen.

Heute abend löte ich den Kram mal zusammen. Basieren auf 4MHz mit Z80A und SIO (weil noch kein Waitstate Generator) ist erstmal ein Proof of Concept.

Der Arduino wird erstmal nackt betrieben und soll heute abend erstmal den Boot-Code reinschreiben (Test des BUSREQ, etc. pp.) und irgendwas machen. Eventuell gehe ich soweit den CTC und die SIO zum rasseln zu bekommen. Mal sehen.

Hat jemand einen Z80 Assembler für MacOS (Intel)?

Gruss
Adrian

Dieser Post wurde am 13.08.2013 um 16:55 Uhr von prefect editiert.
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
007
13.08.2013, 17:10 Uhr
prefect



Hab einen gefunden. zasm auf sourceforge. Damit wird es leichter.

Der Arduino bekommt den Code in seine Firmware. Damit kann der später ggfls das ganze CP/M halten (256kB Firmware Flash) und booten.

Ich glaube kaum dass abgesehen von meinem damaligen NVRAM boot, je eine CP/M büchse schneller bootet ;-)

Ganz ehrlich: wenn ich fertig bin. Will ich mit Heinrich konkurrieren ;-). Denn mit der Carrier-Karte ist das "Spielzeug" eine Waffe. Und der Sepia-Bus ist sehr aufwendig und sehr leistungsfähig und verglichen mit einem 4-8MHz SPI Bus, der zugegeben etwas weniger Bandbreite hat (aber nur für Peripherie verwendet wird) allein aufgrund der vielzahl der Busleitung ist SEPIA jedoch erheblich fehleranfälliger. Ich kann die Peripherien prinzipiell mit 4 Drähten verbinden! Es geht entweder ALLES oder NIX, und die Diagnose ist trivial!

Mit ein bischen mehr Aufwand, habe ich dann auch den Arduino mega gegen einen DUO ausgetauscht. Dann hat der Peripherie-Prozessor 84MHz und ZWEI SPI Busse. Spätestens dann wird die Mühle einem ECB Derivat Druck machen.

Nicht vergessen: beim ECB blockieren I/O Zugriffe den Bus. Ich kann I/O über DMA laufen lassen, noch mehr sogar, ich kann den I/O direkt funktional ins RAM pushen, mitten in die Application. Ob eine Taste gedrückt wurde oder I/O stattfand kann der Z80 im RAM in einer Message Queue finden. D.h. der Peripherie-Prozessor kann bereits im Vorfeld den I/O priorisieren und vorberechnen und Z80 abbonniert die messages in einen Buffer, den der Arduino mitverwaltet. Disk-I/O im DMA. Daten-Loggen auf disk ohne Z80. Der Z80 begnügt sich damit die Daten zu browsen. Beauftragen des Arduinos mit Überwachungen. Datenpuffer auf Flash oder RAM. Der Z80 kann vollends asynchron arbeiten.

Die Carrier-Karte bringen dann das ganze physisch in ein Rack. Was mir noch im Kopf rumgeht ist die Verbindung zur Peripherie:
* Will ich eine Busplatine oder ein Buskabel (z.B. 10 Adern Flachband mit 5-10 Abgriffen.
* Verwende ich für spezielle Peripherie (Uhr und DCF77, VGA Terminal, etc.) eine separate Carrier Karte?

Der 16MHz Peripherie-Prozessor bringt ggfls. erheblich mehr als der schnelle Bus! Und ich kann die ggfls auch kaskadieren. D.h. wenn ich AD-Wandle nehm ich einen separaten Arduino binde den mit an den SPI. Lasse den Loggen und wühle mit dem Kernsystem per Queries in dessen Daten rum.

Das alles ändert nichts an der Sache: die SEPIA Büchse sieht ... *super* aus! Aber er ignoriert die Tatsache dass heute die "Busse" für sowas eben anders aussehen. Da gibt es I2C, SPI und CAN. Wenn ich mir den SEPIA anschaue kommen mir folgende Gedanken (und ich hab es da in meinem Konzept tw. nicht besser):
- die CPU hat 20MHz
- die Peripherie kann schon im Regelfall nicht so schnell und blockiert den Bus mit Waitstates.
- die CPU geht in die Knie!

Mein Konzept hat das auch ... aber nur mit der primären Peripherie: dem seriellen Kommando-Kanal (115-57kBit) und den überdenke ich eventuell noch und stütze den auf SPI. Damit hat die CPU dann den ganzen Bus ohne einen einzigen Waitstate für sich allein. DAS ist schnell.

Mit den Waits etc. kann sich der Arduino vergnügen. Allerdings ist dessen DMA noch nicht sooo schnell. Deswegen denke ich auch darüber nach das externe RAM interface in Zukunft für den DMA zu verwenden. Aber das ist noch Scifi. Erstmal gemütlich.

Dieser Post wurde am 13.08.2013 um 17:35 Uhr von prefect editiert.
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
008
13.08.2013, 21:30 Uhr
Hein_Ko

Avatar von Hein_Ko

Hallo Adrian

Ich wünsche Dir und Deinem neuen Projekt viel Erfolg (ehrlich). Es macht einerseits sicher viel Spass so etwas zu entwickeln, anderseits kostet es aber viel Zeit, und noch mehr Geld und Nerven, wenn man es richtig und konsequent bis zur Marktreife treibt. Die Entwicklung für SEPIA hat über 2,5 Jahre gedauert. Diese Kosten werde ich in diesem meinen Leben nie wieder "einfahren". CP/M war nur ein kleiner Hobby-Ausflug von mir, um zu sehen, wie das oldschool-BS wohl mit 20 MHz klappt. Daher habe ich das Ganze ehr als Lernprojekt betrachtet und quasi nebenher ein solides Automatiserungsgerät für spezielle (eigensichere) Industrie-Anwendungen entwickelt. Zu den offenen Fragen/Anmerkungen kann ich folgende Aussagen treffen:

1. Es geht auch noch viel teurer > siehe PXI/PXIe...
2. Bin ich quasi zum mc-ECB Bus kompatibel, um andere Karten einzubinden
3. Die Waitstates betreffen nur wenige I/O-Adressen, nicht das ganze System
4. Das Ziel, viele alte + neue Schnittstellen zu unterstützen, wurde umgesetzt
5. SEPIA ist autark, d.h. man kann direkt in BASIC programmieren (eigenes OS, dank Dr. Hehl)
6. Die Robustheit ist mir (und meinen Kunden) wichtiger, als nur billig (soll nicht abwertend sein)
7. Das BusSystem ist ausbaufähig, gerade das ist i.d. Automatisierung wichtig
8. Der Bus ist 6-lagig Multilayer. Sei versichert: Keine Probleme mit Störungen
9. Das System wurde in einem auditierten Labor komplett EMV-geprüft (teuer)
10. Der hohe Teile-Aufwand ist gerechtfertig und der Redundanz geschuldet

Aber wo Licht ist, ist auch Schatten: Alleine die Dokumentation hat mich fast in den Wahnsinn getrieben. Schau Dir doch einfach mal das BASIC-Manual an: http://www.kolter.de/SEPIA-BASIC.pdf

... snip...

Nochmals meinen Dank in die Runde:
Ohne die Hilfe von ein paar echten CP/M-lern (hier im Forum, bei http://www.kc-club.de und http://hc-ddr.hucki.net/wiki/doku.php/cpm) hätte ich CP/M nicht implementieren können, da ich diese Zeit darmals irgendwie verpennt habe und mehr auf dem ZX81, ColorGenie und APFEL-Tripp (ohne Z80 Softcard) war.

Schöne Grüße - auch in die Runde
Heinrich

P.S.: Ja, mit Lattice-CPLDs kenne ich mich ein wenig aus ;-) Der Vorteil liegt im Ändern der Logik, ohne jedes mal eine neue Leiterplatte zu fertigen. Auf diese Weise lassen sich z.T. auch noch nachträgliche Schaltungsideen (bsp. WatchDog...) einbringen.
--
Es gibt keine Probleme - nur Lösungen !

Dieser Post wurde am 13.08.2013 um 22:16 Uhr von Hein_Ko editiert.
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
009
14.08.2013, 22:33 Uhr
m.haardt



prefect:

Wenn man wollte, könnte man eine ECB Karte mit SPI/I2C controller bauen. Intelligente Peripheriecontroller, die die CPU entlasten, gibt es ja nun schon ewig und die spielen mit den vektorisierten Interrupts und dem DMA Betrieb beim Z80 wunderbar zusammen, wie Du schon erkannt hast. Sepia bietet da eine robuste Basis, die Du erst noch schaffen musst.

Ein terminierter und störungsfreier Parallelbus wie ECB hat eine ordentliche Transferrate. Viel Spaß, die mit SPI zu erreichen. Das Z80-Timing als Grundlage von ECB ist sehr eindeutig. SPI ist nur eine prinzipielle Technik, das Timing will jeder Chip etwas anders haben mit zig einstellbaren Parametern - der pure Albtraum bei vielen verschiedenen Slaves und teilweise sehr langsam, wenn der SPI-Master für jeden Zugriff umkonfiguriert werden muss. I2C-Slaves können den Bus blockieren, d.h. I2C-Slaves auf kleinen Controllern brauchen viel Sorgfalt, um die Stabilität nicht zu gefährden. Das ist im Detail nicht so einfach, wie es anfänglich aussieht.

Zilog hat von Anfang an auf starke Peripheriecontroller gesetzt, darum entsprechen neue Controller, wie Du sie Dir vorstellst, absolut dem ursprünglichen Konzept. Ohne ECB-Interface isolierst Du Dich allerdings von vorhandenen Designs.

Michael
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
010
22.08.2013, 12:20 Uhr
hschuetz

Avatar von hschuetz

Hallo,
ja das wäre auch nicht schlecht, eine ECB Karte mit i2c und SPI Controller....
wer hat so etwas schon gebaut? Genau das ist eigentlich das was gebraucht wird und nicht das 100erste Z80 System. Sicher Heinrich hat sein System als Industriesteuerung gebaut... das muss schnell sein...aber unter uns Bastlern ist Geschwindigkeit nicht alles und birgt viele Gefahren welch man mit einfachen Mitteln nicht in den Griff bekommt.
Gruß
Hans-Werner
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
011
23.08.2013, 18:30 Uhr
Ronald



Hallo,

die Ideen kommen mir teilweise bekannt vor. Auch ich bastle seit einiger Zeit an verschiedenen Projekten, die den guten alten Z80-Prozessor und CP/M mit aktuellen Mikrokontrollern "verheiraten".

Hier ein Beispiel:
http://www.projekte.daleske.de/cpm/50_cpd5/cpm_cpd5.htm

Dabei bringt der Z80 die Möglichkeit, das einfache aber leistungsfähige CP/M zu nutzen. Die Mikrokontroller können aber die Kopplung zu anderen Modulen (z.B. zum PC oder zur RAM-Floppy) viel besser. In diesem Projekt mit dem Namen CPD5 wird die Z80 nach dem Start sofort in den BUSRQ-Zustand versetzt. Ein ATMEGA64 (oder ATMEGA128) übernimmt den Bus und kopiert aus seinem FLASH-Speicher das BIOS, BDOS und CCP in den Arbeitsspeicher des Z80. Dann wird der Z80-Prozessor mit einem RESET wieder frei gegeben.

So dauert der Startvorgang nur Sekundenbruchteile. Auch die Verwaltung der RAM-Floppy (512 MB statischer RAM, 628512-55) übernimmt der ATMEGA64.

Für das Problem der VGA-Grafikkarte habe ich eine Lösung für Baster gefunden, mit der man die CP/M üblichen 80 Zeichen und 24 Zeilen über eine RS232-Schnittstelle ansteuern kann.

http://www.projekte.daleske.de/mcp/46_CPD-Modul_VGAGEN2/VGAGEN2.htm

Gruß Ronald
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
Seiten: -1-     [ Computer ]  



gaby.de

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek