START
_______________

Atari 8-bit

GAL-MMU

SIO2PC

Atari static RAM

Atari R-Flex

Atari Turbofreezer III

ARC by Pasiu/SSG

Atari Cartridge

Emulator USB Joy

SIDari

YAMari

SONari

SAMari

TIGari

I/O Dekoder

CART+ECI expander

Atari Multicart XE

Atari Full S-RAM

Atari 16-bit

ACSI-SCSI interface

Video digitizer faST

MegaSTe SCSI
internal interface


ST RAMcart

Peter Putnik's
ACSI-CF Interface

Narzędzia

GALprog

Przetwornica StepUp

Przelotki układów DIP

Laminator do PCB

Wiertarka do PCB

Wytrawiarka PCB

Monitor LCD Multi

Programator ALL-07

C64

BlackBOX 8.1

Inne projekty

CS9236 Moduł MIDI


Literatura

Hardware

Software

Varia

Nalewka wiśniowa

 

ACSI-CF Interface

PeraSAN

     Przedstawiam remake niewiarygodnego projektu Petera Putnika. Tak jak opisuje to
na swojej stronie
http://atari.8bitchip.info/astide.php wykonał interfejs ACSI-CF card po
to, aby sprawdzić jak szybki w rzeczywistości jest transfer DMA na złączu ACSI. Efekt
jest porażający! Transfer na poziomie prawie 2MB/s jest czymś niezbyt osiągalnym dla
istniejących urządzeń. Aby poczytać historie Petera - proszę o odwiedzenie jego strony

http://atari.8bitchip.info

     Tutaj opiszę pokrótce jak rozwiązałem podstawowy problem związany z projektem
autora, a który powodował pojawianie się błędów w plikach kopiowanych przy użyciu
interfejsu.

     Według Petera wiele czynników wpływało na pojawianie się błędów. Między innymi:
złe projekty PCB, niewłaściwe zasilanie, wiek komputera, "bad DMA", itd... Otóż - wcale
nie! Wydrukowałem sobie wszystkie dostępne dokumenty nt. ACSI-DMA Atari ST, także
dokumentację IDE/ATA wraz z opisem trybu MultiWord DMA kart CF Sandisk oraz
specyfikacje kart Compactflash różnych producentów. W wolnym czasie analizowałem
opisy, czasy, sygnały i zależności wszystko odnosząc do oryginalnego projektu. Dużą
pomocą okazały się wykonane przez kolegę z forum Atari Area - nick
_tzok_zapisy z
analizatora logicznego kompletnych transferów do i z interfejsu. W tym momencie mój
prototypowy interface wykonany na podstawie oryginału działał prawidłowo wyłącznie w
trybie odczytu. W trakcie próby zapisania czegokolwiek na kartę - następował "zwis" i
zamontowane przez driver dyski znikały z systemu Atari. Dzięki temu wykonałem kilka
doświadczeń z odczytem danych i ponad wszelką wątpliwość ustaliłem, że błędy
powstają wyłącznie w czasie zapisu danych, co trochę zawęziło obszar poszukiwań.

     Nie rozwodząc się już dłużej - znalazłem jeden bardzo poważny problem i drugi -
powiązany z pierwszym - już nie tak istotny. Peter projektując sprzęt korzystał z całej
dostepnej dokumentacji i na tej podstawie stworzył urządzenie, które powinno spełniać
wymogi czasowe opisane w standardach. Wskutek najpewniej pomyłki niepoprawnie
został zaimplementowany sygnał DMARQ co skutkowało obcinaniem impulsu /IOWR
i /IORD podczas transmisji ostatniego bajtu w "paczce". O ile wpływ tego obcięcia na
odczyt okazał się nieistotny, to dla zapisu powodował pojawianie się błędów. Kolega
Mq
wskazywał, że błędy pojawiają się również zależnie od pojemności karty!
     Po wprowadzeniu zmiany do firmware cpld Xilinx9536XL i uruchomieniu interfejsu,
i wykonaniu wielu testów kopiowania dużego pliku testowego (ok.18MB) urządzenie dało
powtarzalne i bezbłędne wyniki. Testy przeprowadzałem na różnych kartach Sandisk
serii Ultra i Extreme.

Dalsza analiza układu pozwoliła na usunięcie drugiego, mało istotnego elementu -
generatora impulsu 74HCT221, który według Petera formuje czas impulsów /IOWR
i /IORD. Okazał się niepotrzebny po poprawieniu oryginalnych formuł zapisanych
w GAL. Poniżej poprawione formuły w pliku P. Putnika.

% Special ACSI-CF adapter controller by PP %
% 8-bit mode with IDE multiword DMA - only Sandisk ? %
% Fixed to proper work in MWDMA Mode0 by tOri %
*IDENTIFICATION
ACSICF05;
*TYPE
GAL16V8;

*PINS

%INPUTS %

A1 = 1,
CS = 2,
RW = 3,
ACK = 4, % First 4 line from ACSI bus %
IRQ = 5, % from IDE - just for inverting it %

DMAON = 6, % Latch %
DMARW = 7, % Latch %
DMARQ = 8, % From IDE High active ! .. & for inverting it %
RESET = 9, % from ACSI, must, because of latch init ! %

ENABL = 11, % Latch bit 7 - if 0 IF disabled - so can cowork !%
MONOST = 12, % Triggered by ACK - duration about 180 nS (for what? tOri)%

%OUTPUTS %

IRQA = 13, % TO ACSI via diode ! %
DRQA = 15, % To ACSI via diode !!!! %
IORD = 17, % to IDE %
IOWR = 18, % to IDE %
LAC =19; % Need rising pulse for 74HCT574 write %

*BOOLEAN-EQUATIONS

LAC = /A1*/CS*/RW*RESET; % raising pulse for latch set %

% Reset signal because it sets by power on, it seems %

% REMOVED DMARQ and MONOST by tOri so all is working excellent %

/IORD = A1*/CS*RW*ENABL + /DMAON*ENABL*/ACK*DMARW;
% must close before ACK !!! - NO - IT DOESN'T (tOri)%

/IOWR = A1*/CS*/RW*ENABL + /DMAON*ENABL*/ACK*/DMARW ; % so, needs monostable again - NO NEED MONOSTABLE (tOri) %

/DRQA = DMARQ*ACK*ENABL ; % Very fast work - off when ACK activates. 2 MB/sec peak ! %

/IRQA = IRQ ; % Invert it - need via diode to ACSI %

*END

     Naniesione do formuł poprawki postanowiłem przetestować na innych komputerach,
z innymi użytkownikami. Nieocenioną pomoc okazał w tym
_tzok_, który poświęcił
sporo czasu na przeróbki i weryfikację nowych formuł. Również wersja interfejsu projektu
kolegi
Mq zaczęła pracować prawidłowo co wcześniej niezbyt się udawało. Stabilność
można było osiągnąć, np. dla konkretnej karty albo dołączając rezystory bądź diody do
niektórych linii sygnałowych. Przy okazji jego testów okazało się, że w starszych niż
STe modelach wystepuje problem braku buforowania DMA co w oryginalnym interfejsie
również produkuje błędy w plikach poddawanych kopiowaniu. Problem nie występuje w
serii STe.
_tzok_ przywołał znaleziony w sieci "fix" polegający na podpięciu linii danych
DMA Atari poprzez rezystory 10k do VCC. Po zastosowaniu tej poprawki na 1040STFm
przez
_tzoka_ spowodowało, że interfejs zaczął działać prawidłowo.

     Tak więc jest już dostępne działające w sposób pewny, ekstremalnie szybkie
urządzenie pamięci masowej. Dzięki Peterowi Putnikowi i mojemu skromnemu wkładowi
oraz pomocy kolegów został wykonany "nowoczesny" remake jego projektu. Wszystkie
niezbędne schematy i pliki zamieszczam poniżej i ponownie kieruję wszystkich, którzy
są zainteresowani historią projektu na strony Petera.

     Schemat układu:


     Schemat logiki zawartej w cpld:

 

     Zdjęcie wersji prostej interfejsu:

 

Zasilanie interfejsu
5V/0.5A DC
wtyk 5,5x2,1mm (plus w środku)

Pliki

Projekt webISE Xilinx
Firmware Xilinx

Schemat format Eagle
PCB w formacie GERBER/EXCELLON wersja prosta
PCB w formacie GERBER/EXCELLON wersja kątowa
Driver Atari ST

Obraz karty 16MB od pancio.net
Obraz karty 32MB od _tzok_
Obraz karty 64MB od _tzok_
Obraz karty 512KB od _tzok_
Obraz karty 1GB od Mq
Obraz karty 2GB od Mq
Obraz karty 2GB od _tzok_
Obraz karty 4GB od _tzok_

     Obrazy najwygodniej zapisać na karcie CF przy pomocy PC i czytnika USB-CF oraz
programu HDD Raw Copy.

     Od Petera Putnika otrzymałem zgodę na publikację mojej wersji projektu co czynię
tak jak zawsze - za free. Tak jak to zrobił Peter. Jest bardzo możliwe, że pojawi się
nowe oprogramowanie - z większymi możliwościami, a także łaty na TOS umożliwiające
boot z karty CF przy użyciu ACSI-DMA.

     W związku z tym, że 8-bitowy tryb MultiWord DMA jest obsługiwany wyłącznie
przez karty Sandisk jest pomysł, aby zaprojektować logikę, która umożliwiłaby
korzystanie z MWDMA także na kartach innych producentów, gdzie obecna jest
obsługa DMA wyłącznie 16-bit. Możliwe, że w wolnej chwili zmierzę się z nowymi
założeniami.

     Bardzo proszę o uszanowanie autorstwa Petera Putnika oraz mojego i nieużywanie
projektu w celach komercyjnych bez zgody. Rozwiązanie udostępniam za darmo dla
każdego, kto zechce go użyć. Jednocześnie nie mam nic przeciwko udoskonaleniom i przeróbkom pod warunkiem wskazania źródła pochodzenia oryginału.

Polecam