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 STObraz 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 |