START _______________
Atari 16-bit
Floppy Drive DIN14-IDC34 adapter
ACSI-SCSI interface
Video digitizer faST
MegaSTe SCSI
internal interface
ST RAMcart
Peter Putnik's ACSI-CF Interface
Sack's PC-speed remake project
Vortex AT-ONCE remake project
Sack's AT-speed remake project
MagicSAC+
remake project
ICD ST Hard Drive Adapter BD remake project
ICD Advantage SCSI+ remake project
ICD AdSCSI Micro remake project
Realtime Clocks
Matrix M110 GAL Pack
ICD Advantage SCSI remake project
ICD Micro MegaSTe adaptation project
Emagic LOG3 Interface remake
C-Lab Combiner remake
Vortex ATonce-386SX DIP version remake project
Simple M68000 relocator
Vortex ATonce-386SX
MegaSTe version remake project
JRI's ST4096C remake project
TOS Card 2 restoration project
ICD AdSCSI MegaSTe
|
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. Autorem DMA-fix z użyciem drabinki rezystorowej 10k jest exxos - twórca forum Atari UK -
https://www.exxosforum.co.uk/forum/index.php 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.
Zaprojektowałem zmienioną wersję interfejsu gdzie jako gniazdo zasilania 5V zostało zastosowane złącze microUSB. Pliki w formacie GERBER 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 |