Hardware > Hardware (Classic 16-/32-Bit)

Wer kennts sich mit GAL-Programmierung aus?

<< < (3/3)

tfhh:

--- Zitat von: SolderGirl am So 26.08.2018, 11:10:18 ---Da geht auch eine einfache 1N4148?

--- Ende Zitat ---

Na klar. Gemäß TTL Spezifikation sind die verbleibenden 0,7 Volt (max.) immer noch eindeutig "low" und die gute, alte 1N4148 ist sauschnell. Man KANN natürlich auch noch edlere Dioden mit Goldrand nehmen, aber wozu... nicht bei den paar MHz der alten Kisten  :)

tfhh:
Moin,


--- Zitat von: SolderGirl am So 26.08.2018, 11:09:21 ---...  und ich brauche auch das RW-Signal invertiert für die Flash Chips.
--- Ende Zitat ---

Eigentlich nicht. Die Gleichung hat dafür doch bereits ein Term mit drin - siehe hier:


--- Code: ---IOWR     = LDS & /RW & CS0
         + LDS & /RW & CS1
         + LDS & /RW & TOS; % Signal TOS wegen EEPROMs %
--- Ende Code ---

Ich habe es mal auseinander gezogen zur besseren Lesbarkeit. IOWR ist das low-Aktive "Write Enable" für IDE Platte 0 und 1 UND für ein EEPROM - genauso gut kann es für ein Flash-ROM genutzt werden. Das heißt, Du führst IOWR an den /WE Eingang des Flashes, fertig.



SolderGirl:
Leider ist das bei der FTOS-Schaltung nicht so ganz einfach.
Da geht nämlich RW nicht an WE.

Das RW wird in dem Fall als OE-Signal genutzt, und das WE-Signal der Flash Chips kommt von einem kleinen ATtiny. Das ist sozusagen der Schreibschutz, weil man das WE-Signal von Hand per Taster aktivieren muß.

SolderGirl:
So, ich hab jetzt mal was gebastelt:


--- Code: ---' IDE / 4x FlashTOS
'
' IDE-Register $F00000 bis $F0FFFF
' ROM-Area     $E00000 bis $E3FFFF for TOS 2.06
' ROM-Area     $FC0000 bis $FEFFFF for TOS 1.x
'
' Generates:
' /DTACK  zum Atari
' /CS0  -> IDE Pin 37
' /CS1    -> IDE Pin 36
' /IORD    -> IDE Pin 25
' /IOWR    -> IDE Pin 23
' /INT    Interrupt-Signal to Atari (DMA-Port Pin 10)
' /TOS Chip Enable for Flash ROM
' /WE Write Enable for Flash ROM

*IDENTIFICATION
 IDE_FTOS;
 
*TYPE
 GAL20V8;
 
*PINS

' Inputs
 /AS = 3,
 RW = 5,
 A5 = 1,
 A16    = 2, ' Was ROM2 on ct-IDE
 A17 = 6,
 A18 = 7,
 A19 = 9,
 A20 = 8,
 A21 = 10,
 A22 = 11,
 A23 = 13,
 /LDS = 4,
 /IOCHRDY = 14,
 IRQ14 = 23,
 
' Output
 /INT.T = 19,
 /TOS = 20, ' Chip Enable for Flash
 /IOWR.T = 22,
 /IORD.T = 21,
 /WE = 16, ' Was G (DIR for Drivers) on ct IDE
 /CS1.T = 18,
 /CS0.T = 17,
 /DTACK = 15; ' via 1N4148
 
*BOOLEAN-EQUATIONS

IOWR.E  = VCC;
IORD.E  = VCC;
CS1.E   = VCC;
CS0.E   = VCC;

' Common Signals
DTACK   =      A23 & A22 & A21 &  A20 & /A19 & /A18 & /A17 & /A16 ' F00000 - F0FFFF For IDE
+ AS & A23 & A22 & A21 & /A20 & /A19 & /A18;     ' E00000 - E3FFFF TOS 2
' DTACK for FC0000-FEFFFF should be gegerated by GLUE

' IDE Signals 

' Interrupt     
INT.E  = IRQ14;
  INT     = IRQ14;

  ' Master/Slave
CS0     = A23 & A22 & A21 &  A20 & /A19 & /A18 & /A17 & /A16 & /A5;
CS1     = A23 & A22 & A21 &  A20 & /A19 & /A18 & /A17 & /A16 &  A5;

' Read / Write
IORD    = LDS &  RW & CS0
+ LDS &  RW & CS1;      
IOWR    = LDS & /RW & CS0
+ LDS & /RW & CS1;

' FlashTOS Signal (Chip Enable)

' Chip Enable ROM
TOS     = AS & A23 & A22 & A21 & /A20 & /A19 & /A18                                  ' E00000 - E3FFFF
    + AS & A23 & A22 & A21 &  A20 &  A19 &  A18 & /A17 & /A16 & RW ' FC0000 - FCFFFF
                    + AS & A23 & A22 & A21 &  A20 &  A19 &  A18 & /A17 &  A16 & RW ' FD0000 - FDFFFF 
                    + AS & A23 & A22 & A21 &  A20 &  A19 &  A18 &  A17 & /A16 & RW; ' FE0000 - FEFFFF

' Write Enable
WE = RW; ' Is inverted on Output.      

*END

--- Ende Code ---

Hab ich da irgendwo einen Denkfehler ?

tfhh:
Moin,
da ich die Ursprungsschaltungen etc. nicht kenne, würde ich mal kommentieren:
--- Code: ---TOS-Gleichungen:
    TOS     = AS & A23 & A22 & A21 & /A20 & /A19 & /A18                                      ' E00000 - E3FFFF
                + AS & A23 & A22 & A21 &  A20 &  A19 &  A18 & /A17 & RW                 ' FC0000 - FDFFFF
                + AS & A23 & A22 & A21 &  A20 &  A19 &  A18 &  A17 & /A16 & RW;     ' FE0000 - FEFFFF
--- Ende Code ---

Das kann man so zusammenfassen. Was mich irritiert... ist das mit RW..Warum hast Du im Addressbereich für TOS 1.0x die RW Leitung mit im Term? Aktuell, da RW oben in der Definition nicht negiert ist, würde "TOS" nur low-aktiv werden bei einem _Lesezugriff_ auf FC0000-FEFFFF. Soll die von Dir erzielte Lösung ein Flashen (Schreiben) auch im TOS 1.0x Bereich ermöglichen, muß "RW" aus der Gleichung verschwinden, denn das Flashen erfordert Lese- und Schreibzugriff. Von daher vermute ich mal, Du möchtest bei Schreibvorgängen das Chipselect erzeugen... das langt aber so nicht. DTACK muß entsprechend gesetzt werden, sonst gibt es einen Bus Error..
Ergänze daher:
--- Code: ---    DTACK   =  AS & A23 & A22 & A21 &  A20 & /A19 & /A18 & /A17 & /A16       ' F00000 - F0FFFF For IDE
            +  AS & A23 & A22 & A21 & /A20 & /A19 & /A18;                    ' E00000 - E3FFFF TOS 2.0x
            +  AS & A23 & A22 & A21 &  A20 &  A19 &  A18 & /A17              ' FC0000 - FDFFFF TOS 1.0x
            +  AS & A23 & A22 & A21 &  A20 &  A19 &  A18 &  A17 & /A16       ' FE0000 - FEFFFF TOS 1.0x

--- Ende Code ---
.
Und das mit WE macht so auch kein Sinn (schrieb ich schon mal). Das Signal RW der CPU ist low-aktiv bei Schreibzugriffen, genauso braucht es WE bei einem Flash-ROM auch, d.h. Du kannst RW vom 68000er Bus direkt an WE der Flash-ROMs anschließen, fertig..
Für OE brauchst Du invertiertes RW Signal...  :) .
Komplettes Listing gibt es u.A. auch hier bei Pera Putnuk: Flash-TOS mit und ohne IDE.
Gruß, Jürgen---PS: Irgendwie verschluckt der Editor Leerzeilen... Formatierung sieht mies aus. Sorry.


Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln