Hardware > Hardware (Classic 16-/32-Bit)
1040STE IDE Problem
czietz:
Du möchtest die ganzen Signale nur dann generieren, wenn /UDS und /LDS beide aktiv (also low) sind? Dann würden nur noch Word-Zugriffe auf das IDE-Interface klappen. Byte-Zugriffe würden immer fehlschlagen, weil dabei nur entweder /UDS oder /LDS aktiv/low ist.
Meines Wissens gibt es keinen Treiber, der nur Word-Zugriffe macht, d.h. auch Byte-Zugriffe müssen funktionieren.
tuxie:
So hat es Wolfgang Förster gemacht
--- Zitat --- DTACKn <= '0' when ASn = '0' and UDSn = '0' and LDSn = '0' and DMAn = '1' and ADR >= x"F0000" and ADR < x"F0004" else
'0' when IDE_IORDY = '0' else 'Z';
IOWRn <= '0' when ASn = '0' and UDSn = '0' and LDSn = '0' and DMAn = '1' and ADR = x"F0000" and RWn = '0' else
'0' when ASn = '0' and UDSn = '0' and LDSn = '0' and DMAn = '1' and ADR = x"F0001" and RWn = '0' else
'0' when ASn = '0' and UDSn = '0' and LDSn = '0' and DMAn = '1' and ADR = x"F0002" and RWn = '0' else
'0' when ASn = '0' and UDSn = '0' and LDSn = '0' and DMAn = '1' and ADR = x"F0003" and RWn = '0' else '1';
IORDn <= '0' when ASn = '0' and UDSn = '0' and LDSn = '0' and DMAn = '1' and ADR = x"F0000" and RWn = '1' else
'0' when ASn = '0' and UDSn = '0' and LDSn = '0' and DMAn = '1' and ADR = x"F0001" and RWn = '1' else
'0' when ASn = '0' and UDSn = '0' and LDSn = '0' and DMAn = '1' and ADR = x"F0002" and RWn = '1' else
'0' when ASn = '0' and UDSn = '0' and LDSn = '0' and DMAn = '1' and ADR = x"F0003" and RWn = '1' else '1';
SELPn <= '0' when ASn = '0' and DMAn = '1' and ADR = x"F0000" else
'0' when ASn = '0' and DMAn = '1' and ADR = x"F0001" else '1';
SELSn <= '0' when ASn = '0' and DMAn = '1' and ADR = x"F0002" else
'0' when ASn = '0' and DMAn = '1' and ADR = x"F0003" else '1';
LINEAn <= '0' when ASn = '0' and DMAn = '1' and ADR = x"F0000" else
'0' when ASn = '0' and DMAn = '1' and ADR = x"F0001" else
'0' when ASn = '0' and DMAn = '1' and ADR = x"F0002" else
'0' when ASn = '0' and DMAn = '1' and ADR = x"F0003" else '1';
IDE_RESn <= '0' when RESETn = '0' else 'Z';
ACSI_HDINTn <= '0' when IDE_INTRQ = '1' else '1';
--- Ende Zitat ---
tuxie:
Ah moment was übersehen, ich änder die logic mal ab.
czietz:
Versuch macht klug. Es wird so aber nicht funktionieren, sobald ein Treiber Byte-Zugriffe macht. Wolfgang Förster schreibt selbst (Hervorhebung von mir):
--- Zitat ------- This VHDL model is based on PERA Putnik's IDE interface ----
---- interface (version 1998-12-23) but has full decoding of the ----
---- respective address lines and is valid for word access only. ----
--- Ende Zitat ---
Auch halte ich es für bedenklich, /SELP und /SELM absichtlich verzögern zu wollen. Das sind die Chip-Select-Signale des IDE-Interfaces und diese müssen ausreichend vor /IORD oder /IOWR anliegen und nicht erst gleichzeitig. Die exakte Setup-Zeit hängt vom verwendeten PIO-Mode ab und lässt sich der IDE/ATA-Spezifikation entnehmen.
tuxie:
Ich hab jetzt erstmal AS eingebaut, Testen kann man ja ist ja schnell neu programmiert der GAL. Ich berichte und werde das laufende Posten..
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln