www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SID 6581 an AT91SAM7S256


Autor: Peter Pippinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Lupin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
den SID kannst doch auch noch emulieren...

Autor: Peter Pippinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
der war gut ;-)

Autor: gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Pippinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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"?

Autor: Magnus Müller (Gast)
Datum:

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

Autor: Peter Pippinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Peter Pippinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Peter Pippinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.