Pre správnu prácu akcelerátora je nutné čo najlepšie simulovať procesor na natívnej frekvencii amigy.
MC68000 pracuje z okolím počas 4 taktov rozdelených do 8 stavov. Keďže Amiga 600 nepočíta z použitím zariadení z rodiny 6800 nemusíme riešiť !VPA, !VMA a !E signály. Tiež to dovolilo použiť dostupnejší 68SEC000 Ktorý tieto signály nepozná.
- S0 – procesor nastaví FC0 až FC2 a R/!W dá do stavu H
- S1 – procesor nastaví Adresu
- S2 – procesor nastaví !AS
- Pri čítaní aj !UDS !LDS
- Pri zápise nastaví aj R/!W
- S3 – procesor „nič nerobí“
- S4 – procesor čaká na !DTACK prípadne !BERR od zariadenia. Ak nepríde vloží čakajúce cykli medzi S4 a S5
- Pri zápise nastaví aj !UDS !LDS
- S5 – procesor „nič nerobí“
- S6 – procesor
- Pri čítaní prečíta dáta z pamäte
- Pri zápise nerobí nič
- S7 – procesor vráti !AS, !UDS a !LDS. Zariadenie !DTACK a !BERR
- Pri zápise aj R/!W
Popis | Citanie 16 bit | Zápis 8 bit horné bity | State S0 S1 S2 S3 S4 S5 S6 S7 S0 S1 S2 S3 S4 S5 S6 S7 S0 CLK _----____----____----____----____----____----____----____----____---- !AS ---------________________________--------________________________---- !UDS ---------________________________----------------________________---- !LDS ---------________________________------------------------------------ R/!W -----------------------------------------________________________---- !DTACK -----------------________________----------------________________---- D15-D8 xxxxxxxxxxxxxxxxx================xxxxxxxxxxxx====================xxxx D7-D0 xxxxxxxxxxxxxxxxx================xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Poznámky: = Hodnota na zbernici ktorá sa aktuálne nemení x Nieje podstatný stav _ L stav - H stav
V prípade synchrónneho akcelerátora máme prácu zjednodušenú stačí vhodne vynucovať wait stavy.
Popis | Citanie 16 bit | Zápis 8 bit horné bity | State Amiga S0 S1 S2 S3 S4 S5 S6 S7 S0 S1 S2 S3 S4 S5 S6 S7 S0 State ACC S0S1S2S3S4SwSwSwSwSwSwSwSwS5S6S7S0S1S2S3S4SwSwSwSwSwSwSwSwS5S6S7S0S1 CLK Amiga _----____----____----____----____----____----____----____----____---- CLK ACC _--__--__--__--__--__--__--__--__--__--__--__--__--__--__--__--__--__ !AS Amiga ---------________________________--------________________________---- !AS ACC -----____________________________----____________________________---- !UDS Amiga ---------________________________----------------________________---- !UDS ACC -----____________________________------------____________________---- !LDS Amiga ---------________________________------------------------------------ !LDS ACC -----____________________________------------------------------------ R/!W Amiga -----------------------------------------________________________---- R/!W ACC -------------------------------------____________________________---- !DTACK Amiga -----------------________________----------------________________---- !DTACK ACC -------------------------________------------------------________----
Pri pohľade na priebehy napadne myslienka vôbec to ma zmysel? Ale áno Medzi Stavmy S7 a S0 nie sú ukázané takty nutné na vykonanie inštrukcie. Tam je priestor vďaka ktorému akcelerátor urýchli Amigu. Tiež si treba uvedomiť ze aj samotná Amiga vyvoláva wait stavy, a to v prípade keď sa pristupuje co Chip RAM.
K problematike sa dá pristupovať rôzne. Napríklad fakt ze Amiga pracuje o pol taktu posunuto oproti CPU dovoľuje istú voľnosť v generovaní Niektorých signálov. Na druhú stranu môže to vyvolávať rôzne neštandardné stavy. V prípade synchrónneho akcelerátora sa asi moc prejavovať nebudú ale v prípade asynchrónneho one nieje núdza. Čo je aj dôvod prečo som prišiel k záveru že moja konštrukcia bez zmien nieje pre asynchrónny mód použiteľná
Najjednoduchší akcelerátor navrhol Livio Plos a Joerg Richter. Tento akcelerátor len ovláda posunutie !DTACK a ostatné riadiace signály necháva nedotknuté.
Osobne si ale myslím že zarovnávanie aj ostatných signálov na stabilite len pridá.