Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

GAL20V8 jak odtworzyć zawartość pliku jedec (pld) z tabeli stanów logicznych?

tomas 02 Wrz 2018 00:18 438 15
  • #1 02 Wrz 2018 00:18
    tomas
    Poziom 16  

    Witam.
    Stary układ GAL20V8B działa ale jest zabezpieczony przed odczytem,
    Potrzebna jest kopia tego układu aby przywrócić do życia inną elektronikę.
    Jak odtworzyć (napisać na nowo) plik JEDEC z tabeli stanów logicznych?


    GAL20V8B skonfigurowano jako 12 linii wejściowych i 1 wyjście.
    Działanie układu jest proste
    Do kodowania sygnałów wejściowych użyto 13 impulsów zegarowych CLK i sygnału RST.
    Każde wejście odpowiada poszczególnemu bitowi na wyjściu:

    wejście/pin/bit na wyjściu
    A - pin2 - bit 2
    B - pin3 - bit 3
    C - pin4 - bit 4
    D - pin5 - bit 5
    E - pin6 - bit 6
    F - pin7 - bit 7
    G - pin8 - bit 8
    H - pin9 - bit 9
    I - pin10 - bit 10
    J - pin11 - bit 11
    K - pin15 - bit 12
    L - pin14 - bit 13

    pin1+23 - wejścia 13 impulsów zegarowych CLK
    pin12,13 - masa
    pin16 - RST - (foto5)
    pin18 - WYJŚCIE
    pin24 +5V

    - tabela prawdy:
    przecinek to moment resetu
    bity przypadające na wejścia x , x A B C D E F G H I J K L
    pin1+pin23 - CLK - 0 , 1 1 1 1 1 1 1 1 1 1 1 1 1 (czerwony przebieg)
    pin19 - 0 , 0 1 0 1 0 1 0 1 0 1 0 1 0
    pin20 - 0 , 0 0 1 1 0 0 1 1 0 0 1 1 0
    pin21 - 1 , 0 0 0 0 1 1 1 1 0 0 0 0 1
    pin22 - 1 , 0 0 0 0 0 0 0 0 1 1 1 1 1
    pin16 - RST - 1 , 0 0 0 0 0 0 0 0 0 0 0 0 0
    pin18 - WYJŚCIE

    stan wejść / bity mierzone oscyloskopem na wyjściu pin18:

    bity przypadające na wejścia x , x A B C D E F G H I J K L
    all pins = 0 - 1 , 0 1 1 1 1 1 1 1 1 1 1 1 1 (żółte przebiegi)
    A = 1 na pin2 - 1 , 0 0 1 1 1 1 1 1 1 1 1 1 1
    B = 1 na pin3 - 1 , 0 1 0 1 1 1 1 1 1 1 1 1 1
    C = 1 n1 pin4 - 1 , 0 1 1 0 1 1 1 1 1 1 1 1 1
    D = 1 na pin5 - 1 , 0 1 1 1 0 1 1 1 1 1 1 1 1
    E = 1 na pin6 - 1 , 0 1 1 1 1 0 1 1 1 1 1 1 1
    F = 1 na pin7 - 1 , 0 1 1 1 1 1 0 1 1 1 1 1 1
    G = 1 na pin8 - 1 , 0 1 1 1 1 1 1 0 1 1 1 1 1
    H = 1 na pin9 - 1 , 0 1 1 1 1 1 1 1 0 1 1 1 1
    I = 1 na pin10 - 1 , 0 1 1 1 1 1 1 1 1 0 1 1 1
    J = 1 na pin11 - 1 , 0 1 1 1 1 1 1 1 1 1 0 1 1
    K = 1 na pin15 - 1 , 0 1 1 1 1 1 1 1 1 1 1 0 1
    L = 1 na pin14 - 0 , 0 1 1 1 1 1 1 1 1 1 1 1 0
    ABCDEF = 1 - 1 , 0 0 0 0 0 0 0 1 1 1 1 1 1 - (foto1)
    EGHIK = 1 - 1 , 0 1 1 1 1 0 1 0 0 0 1 0 1 - (foto2)
    ABCDEFL = 1 - 0 , 0 0 0 0 0 0 0 1 1 1 1 1 0 - (foto3)
    EGHIKL = 1 - 0 , 0 1 1 1 1 0 1 0 0 0 1 0 0 - (foto4)

    stan wejść / bity mierzone oscyloskopem na pin17:
    all pins = 0 - 0 , 1 0 0 0 0 0 0 0 0 0 0 0 0 (żółte przebiegi)
    A = 1 na pin2 - 0 , 1 1 0 0 0 0 0 0 0 0 0 0 0
    B = 1 na pin3 - 0 , 1 0 1 0 0 0 0 0 0 0 0 0 0
    C = 1 na pin4 - 0 , 1 0 0 1 0 0 0 0 0 0 0 0 0
    D = 1 na pin5 - 0 , 1 0 0 0 1 0 0 0 0 0 0 0 0
    E = 1 na pin6 - 0 , 1 0 0 0 0 1 0 0 0 0 0 0 0
    F = 1 na pin7 - 0 , 1 0 0 0 0 0 1 0 0 0 0 0 0
    G = 1 na pin8 - 0 , 1 0 0 0 0 0 0 0 0 0 0 0 0
    H = 1 na pin9 - 0 , 1 0 0 0 0 0 0 0 0 0 0 0 0
    I = 1 na pin10 - 0 , 1 0 0 0 0 0 0 0 0 0 0 0 0
    J = 1 na pin11 - 0 , 1 0 0 0 0 0 0 0 0 0 0 0 0
    K = 1 na pin15 - 0 , 1 0 0 0 0 0 0 0 0 0 0 0 0
    L = 1 na pin14 - 0 , 1 0 0 0 0 0 0 0 0 0 0 0 0

    Bity na pin17 są negacją wyjścia lecz tylko dla wejść ABCDEF, brak reakcji na GHIJKL, wyjście to nie jest używane.


    Wszelka pomoc mile widziana
    pozdrawiam

    0 15
  • #2 03 Wrz 2018 19:49
    JarekC
    Poziom 27  

    A jesteś pewien że układ jest zabezpieczony.
    W przesłanym fragmencie JED odczytana jest elektroniczna sygnatura: G30_P1.1
    Prześlij cały plik JED.

    JarekC

    0
  • #3 03 Wrz 2018 22:11
    tomas
    Poziom 16  

    Witam Cię Jarku, masz rację,
    taki jest opis na naklejce chipa czyli akurat to pole nie jest zabezpieczane przed odczytem aby programista wiedział jaki program w nim siedzi.
    Zrobiłem test innego układu i zaprogramowałem go zerami zabezpieczając przed odczytem. Po odczytaniu mam same jedynki oprócz pola które wkleiłem wcześniej jako obrazek, tam odczytało zera. A kiedy nie mam zaznaczonego bitu LOCK odczytuję to co zostało zaprogramowane.
    Domyślam się że nie ma sposobu na odczytanie zabezpieczonej zawartości więc pozostają czasochłonne kombinacje.

    0
  • #4 03 Wrz 2018 22:32
    JarekC
    Poziom 27  

    OK.
    Po załączonych przebiegach należy się spodziewać że układ pracuje w trybie rejestrowym/sekwencyjnym co bardzo utrudnia odtworzenie logiki działania układu.

    Pierwszy etap do dokładne rozrysowanie podłączeń w układzie docelowym i określenie które piny to wejścia a które wyjścia.
    Jeżeli niektóre piny są np. podłączone do pinów procesora o zdefiniowanej funkcjonalności (RD,WR, ALE PSEN ...) może to pomóc w analizie układu.

    Drugi etap to sprawdzenie wszystkich możliwych kombinacji stanu wejść przy nieaktywnym pinie CLK i obserwowanie stanu wyjść. Pozwoli to na określenie które wyjścia pracują w trybie kombinacyjnym a które sekwencyjnym.

    Trzeci etap jeżeli mamy dostęp do działającego układu to podłączenie analizatora stanów logicznych i obserwacja jak zmieniają się wejścia i wyjścia w stosunku do zegara. Np czy następuje zmiana stanu wejść a potem np kilkanaście impulsów zegarowych czy może wejścia zmieniają się pomiędzy pojedynczymi impulsami zegara.

    Następny etap to zbudowanie układu wymuszającego określone stany wejściowe i zegar oaz rejestrujący zmianę stanu wyjść a potem analiza czy mamy do czynienia z prostym układem sekwencyjnym czy może automatem stanu.
    Po zebraniu danych próba wymyślenia co robi układ.

    JarekC

    0
  • #5 03 Wrz 2018 23:26
    tomas
    Poziom 16  

    Troszkę wyedytowałem pierwszy post aby było troszkę jaśniej.
    Nigdy nie bawiłem się tymi kostkami i aby zacząć całą zabawę chciałbym aby ktoś podpowiedział czym i jak skonfigurować bramki OLMC tak, aby 4 pierwsze działały jako dzielniki sygnału CLK z pin1+pin23

    Ze specyfikacji GAL20V8.pdf :
    bramka 1, dzielnik [A] przez 2 na pin19
    bramka 2, dzielnik [B} przez 4 na pin20
    bramka 3, dzielnik [C] przez 8 na pin21
    bramka 4, dzielnik [D] przez 16 na pin22
    bramka 5, OUTPUT pin18 (żółte przebiegi)
    bramka 6, pin17 (nie wiem po co jest)
    bramka 7, pin16 wejście sygn RESET wszystkich bramek zboczem opadającym (bramka skonfigurowana do odwrotnego działania?)
    bramka 8, pin15 jako Input K (bramka skonfigurowana do odwrotnego działania?)

    tak ma to na początek wyglądać: GAL20V8 jak odtworzyć zawartość pliku jedec (pld) z tabeli stanów logicznych?24816.gif Download (5.63 kB)

    pin1+pin23 -CLK - 0 ,1 1 1 1 1 1 1 1 1 1 1 1 1 (czerwony przebieg)
    przez 2 na pin19 - 0 ,0 1 0 1 0 1 0 1 0 1 0 1 0
    przez 4 na pin20 - 0 ,0 0 1 1 0 0 1 1 0 0 1 1 0
    przez 8 na pin21 - 1 ,0 0 0 0 1 1 1 1 0 0 0 0 1
    przez 16 na pin22 - 1 ,0 0 0 0 0 0 0 0 1 1 1 1 1
    RST bramek pin16 - 1 ,0 0 0 0 0 0 0 0 0 0 0 0 0 (zboczem opadającym)

    pierwsza cyfra każdego z powyższych przebiegów to linia ciągła na oscyloskopie, w miejscu przecinka następuje RESET
    Kiedy wypracuje się sygnały z dzielników i puści je na matrycę będzie można tworzyć funkcje programując na niej odpowiednie bezpieczniki.
    Czy dobrze myślę?
    @JarekC Jaki program polecasz aby zacząć zabawę tą kością, pomożesz?

    0
  • #6 04 Wrz 2018 14:27
    JarekC
    Poziom 27  

    Wygląda to na prosty konwerter wejścia równoległego na wyjście szeregowe z dodatkowym bitem START.
    Wejście aktywne poziomem '1' daje na wyjściu szeregowym '0'.

    Do PAL/GAL używałem programu PALASM (program DOS-owy).
    Opisujesz układ przy pomocy równań logicznych a potem kompilujesz do pliku JED.

    JarekC

    0
  • #7 04 Wrz 2018 17:07
    tomas
    Poziom 16  

    Dokładnie jest tak jak mówisz, wygląda na prosty układ multipleksera z równoległego na szeregowe.
    Bardzo podobne do 74150 lecz w GAL są wewnętrzne dzielniki CLK przez 2/4/8/16 i sam tworzy sobie te bity a 74150 ma zewnętrzne wejścia adresowe A B C D
    https://eduinf.waw.pl/inf/prg/010_uc/74150.php
    Jak to wszystko się poskłada do kupy to prawie będzie gotowy schemat :)


    Wychodzi na to że w GAL pin1 = CLK
    a pin23 = wejście na licznik A B C D / wyjścia piny=19,20,21,22
    input 13 [-OE] w układzie jest podpięte do masy.

    @JarekC do czego służą bity PTD? czy to aktywacja wejść bramki?

    tu ktoś miał podobny problem z licznikiem:
    https://www.edaboard.com/showthread.php?231944-implement-counter-using-16V8-!!!

    0
  • #8 07 Wrz 2018 01:40
    tomas
    Poziom 16  

    Czy podpowie ktoś jak skonfigurować pierwsze 4 bramki OLMC aby zadziałały w układzie dzielnika (licznika) ABCD?
    Podobnie do tego: GAL20V8 jak odtworzyć zawartość pliku jedec (pld) z tabeli stanów logicznych?lekcja..png Download (259.94 kB)

    Na pierwszych 4 bramkach w GAL jest licznik: CLK/2/4/8/16 czyli są wypracowywane bity ABCD.
    Sygnały z 8 pinów wejściowych wchodzą na zaprogramowaną macierz w GAL
    a więc 2 bramki (5 i 6) w GAL zajmują się mnożeniem bitów wejściowych, sygnału CLK oraz kodu BCD.
    Bramki mają po 7 wejść, 3 wejścia zajmują sygnały z dzielnika BCD więc bramkom pozostają po 4 wejścia.
    daje to 8 wejść z pinów.
    7 bramka skonfigurowana odwrotnie jako wejściowa dla sygnału RST pin 16
    8 bramka skonfigurowana odwrotnie jako wejściowa dla pinu 15
    Brakuje 4 linii dla wejść z pozostałych 4 pinów i która bramka to obrabia? może 8?
    Tak ja to widzę, Jak to qrna działa?

    Czy zaprogramuje to ktoś odpłatnie?
    a może prościej będzie 74150+7493

    0
  • #9 10 Wrz 2018 12:04
    JarekC
    Poziom 27  

    Dla Gal20V8 sygnał zegara CLK nie jest konfigurowalny tzn PIN1 jest bezpośrednio podawany na przerzutniki i zboczem aktywnym jest zbocze narastające.

    Oscylogramy nie pokazują zależności pomiędzy CLK a CLK/2 CLK/4, CLK/8 CLK/16 aby określić które zbocze jest aktywne, a w dalszej części sugerujesz że jest to zbocze opadające 24816.gif co by się ne zgadzało z działaniem GAL20V8.

    JarekC

    0
  • #10 11 Wrz 2018 15:22
    tomas
    Poziom 16  

    obrazek 24816.gif został pobrany z neta więc mogą być różnice których nie sprawdzałem a jedynie chodziło mi o pokazanie tej zasady aby z CLK zrobić ABCD
    niewątpliwie potrzebne do pracy multipleksera.
    W załącznikach prawdziwe przebiegi.

    0
  • #11 11 Wrz 2018 21:54
    JarekC
    Poziom 27  

    Gdy przyglądniesz się dokładniej przebiegom to nie jest to dzielnik przez 16 a licznik zliczający od 0 do 12.
    Dla precyzji oznaczyłem:
    PIN 19 - Q0
    PIN 20 - Q1
    PIN 21 - Q2
    PIN 22 - Q3

    Po ostatnim impulsie CLK linie pozostają w stanie Q3...0 = 1100 a pierwszy impuls z następnej paczki powoduje zmianę na Q3..0 = 0000.

    Co pasowałoby do dalszej części układu czyli bit START (zawsze 0) + stan 12 wejść.

    Oczywiście nikt nie będzie ręczne mapował FuseBits.

    Należy stworzyć opis układu np w języku PALASM i skompilować do pliku wyjściowego JED (mapa FuseBits).
    W załączeniu przykładowa realizacja takiego licznika, wykres z symulacji i plik wyjściowy JED.

    Kod: vhdl
    Zaloguj się, aby zobaczyć kod


    Spróbuj dopisać resztę, gdy nie dasz rady pisz na priv.

    Pozdrawiam
    JarekC
    GAL20V8 jak odtworzyć zawartość pliku jedec (pld) z tabeli stanów logicznych?

    0
  • #12 12 Wrz 2018 02:02
    tomas
    Poziom 16  

    WOW jestem pod wrażeniem, myślałem że nie da się tego ruszyć a tu proszę miła niespodzianka.
    Cieszę się, że pomimo starej technologii sprzed 20 lat można znaleźć pomocną osobę która zna się jeszcze na tym i chętnie udziela pomocy.
    Jutro postaram się wgrać plik do kostki i zobaczyć przebiegi na tych 4 nogach.
    Powiedz Jarku czy dobrze kminię z tymi FuseBitami na przykładzie obrazka, GAL20V8 jak odtworzyć zawartość pliku jedec (pld) z tabeli stanów logicznych? czy adresowanie tablicy dla pierwszych 4 wejść (piny2,3,4,5) oraz wypracowane bity Q0,Q1,Q2 miałyby tak wyglądać?
    Nie wiem co oznacza to inne wejście na linii 1600 i czy wszystkie linie w punktach PTD też powinny być zaznaczone jak te 5?

    0
  • #13 12 Wrz 2018 10:29
    JarekC
    Poziom 27  

    Nie, będzie trochę inaczej.
    To co widzisz na obrazku jako jednowejściową bramkę AND w rzeczywistości jest wielowejściową bramką AND (tzw pterm).

    Dla każdej makrokomórki możesz stworzyć równanie logiczne składające się z 8 sum logicznych(bramka OR) , każdy składnik sumy do iloczyn sygnałów (bramka AND).
    Dodatkowo możesz wprowadzić negacje (bramka XOR).

    JarekC

    0
  • #14 13 Wrz 2018 15:12
    JarekC
    Poziom 27  

    Jeszcze dodatkowa uwaga dotycząca wyjścia z PIN17.
    Wyjście to powstało z tego powodu że aby zbudować 12 wejściowy selektor potrzebujemy 12 wejściowej bramki OR a makrokomórki mają tylko 8-wejściowego OR. Wymusiło to układ kaskadowy: 2 makrokomórki - wejścia A-F (6 wejść OR) + G-L (7 wejść OR 6 + 1 z poprzedniego OR).

    Pozdrawiam
    JarekC

    0
  • #15 16 Wrz 2018 13:31
    JarekC
    Poziom 27  

    Autor porzucił temat czy kontynuujemy analizę układu?

    JarekC

    0