Forum: Mikrocontroller und Digitale Elektronik SID 6581 an AT91SAM7S256


von Peter Pippinger (Gast)


Lesenswert?

Hallo NG,

mein 6510 Emulator ist jetzt nahezu fertig. Habe auch schon mal einen 
Vergleich zwischen C64 und dem Emulator (AT91SAM7S256) gemacht. Für ein 
Assemblerprogramm, wo der C64 1,5 Min benötigt, braucht der Emulator 1 
Min. Es wird aktuell noch nicht auf die jeweils aktuellen Clockcycles 
"gewartet". Diese werden aber schon berechnet.

Jetzt muss ich es irgendwie schaffen, mit der restlichen Zeit die 
Anbindung an den SID 6581 zu schaffen. Wie würdet ihr denn da vorgehen? 
Ich habe mir das so vorgestellt:

(vereinfacht ohne gespiegelte Adressen)

wenn ein Speicherzugriff (lesend oder schreiben) auf D400-D400+27 
stattfindet, muss ich die Adressleitungen, Datenleitungen usw setzen. 
Aber wie genau gehe ich da vor? der SID erwartet ja auch einen - ich 
denke mal rel. konstanten - Takt von rund 1MHz...

Danke für jeden Tip!
Peter

von Lupin (Gast)


Lesenswert?

den SID kannst doch auch noch emulieren...

von Peter Pippinger (Gast)


Lesenswert?

der war gut ;-)

von gerhard (Gast)


Lesenswert?

>wenn ein Speicherzugriff (lesend oder schreiben) auf D400-D400+27
>stattfindet, muss ich die Adressleitungen, Datenleitungen usw setzen.
>Aber wie genau gehe ich da vor?
guckst du hier:
http://www.htu.tugraz.at/~herwig/c64/sid.php
am ende der seite findest du ein timing diagramm

aber mal eine frage meienrseits:
wie hast du den den sid angeschaltet?

>der SID erwartet ja auch einen - ich
>denke mal rel. konstanten - Takt von rund 1MHz...
den kannst du mit dem at91sam7s256 erzeugen, guckst du im datenbaltt 
unter kapitel "Programmable Clock Output Controller".
unte folgendem link findest du auch noch einen hinweis worauf du bei der 
takterzeugung aufpassen mußt:
http://www.midibox.org/forum/index.php?topic=5748.0

und hier noch ein paar links mit interessanten infos zum sid:
http://www.ucapps.de/
http://msc175.de/module/sid6581.htm

gruss
gerhard

von Peter Pippinger (Gast)


Lesenswert?

Hallo Gerhard,

also zunächst mal danke für den Link! Ich denke, damit kann ich schon 
mal was anfangen...

>aber mal eine frage meienrseits:
>wie hast du den den sid angeschaltet?

...das verstehe ich nicht, was meinst Du mit "angeschaltet"?

von Magnus Müller (Gast)


Lesenswert?

Er meint: Wie hast du den SID mit dem Controller verbunden (Schaltplan) 
?

von Peter Pippinger (Gast)


Lesenswert?

>Er meint: Wie hast du den SID mit dem Controller verbunden (Schaltplan)
>?

Noch gar nicht. Ich dachte, das geht aus meinem ersten Posting hervor:

------ 8< ------ 8< ------ 8< ------ 8< ------ 8< ------ SCHNIPP

Jetzt muss ich es irgendwie schaffen, mit der restlichen Zeit die
Anbindung an den SID 6581 zu schaffen. Wie würdet ihr denn da vorgehen?
Ich habe mir das so vorgestellt:

------ 8< ------ 8< ------ 8< ------ 8< ------ 8< ------ SCHNAPP

Ich würde halt für die

Adressleitungen       (4)
Datenleitungen        (8)
CS                    (1)
RW                    (1)
-------------------------
 = 14 Port-Pins
=========================

vom ARM vorsehen. Habe extra wenig angeschlossen und die "sparvariante" 
des HD44780 verwendet.

Wollteeigentlich mit dem Posting ein wenig über die vorgehensweise 
erfahren, wie ich das Teil einbinde.

Im Emulator wird ja an mehreren Stellen auf den Speicher zugegriffen. 
Das kann lesend, als auch schreibend passieren. z.B.

STA $D400 -> Akkumulatorinhalt an D400 schreiben. Jetzt ist es aber so, 
dass mit dem jeweiligen Befehl ja nur in den Speicher des ARM 
geschrieben wird. Ich muss aber in dem Fall alles, was zwischem $D400 
und $D41C in den Speicher geschrieben wird an den SID "schicken". (im 
ARM wäre das natürlich an 0x020D400 zu finden).

Mit dem Lesen sollte es dann natürlich so sein, dass wenn z.B.
LDA $D400 gewünscht ist das Register vom SID ausgelesen wird und dann in 
dem Speicher des ARM landet, damit der Emulator später damit 
"weiterrechnen" kann...

von Peter Pippinger (Gast)


Lesenswert?

Weiß jemand zufällig, wie Takt-tollerant der SID ist, wenn man davon 
ausgeht, die mindest-Timings einzuhalten? Also sprich: wenn ich die 
Leitungen gesetzt habe, kann ich dann auch eine Sekunde später Daten 
abholen bzw. schreiben?

Der HD44780 ist da ja äußerst tollerant. Da kann man ja nahezu in jeder 
Geschwindigkeit > min schreiben...

von Peter Pippinger (Gast)


Lesenswert?

> ..Vergleich zwischen C64 und dem Emulator (AT91SAM7S256) gemacht. Für ein
> Assemblerprogramm, wo der C64 1,5 Min benötigt, braucht der Emulator 1
> Min.

habe noch ein bischen optimieren können. Jetzt benötigt er z.Zt. 40 Sek!

Hat nicht vielleicht noch jemand etwas zum Thema SID-Timing zu 
sagen/schreiben?

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.