Układy GAL
Jakiś czas temu [tutaj] dałem się namówić
do dywagacji na temat układów GAL,
czas się wywiązać o obietnic.
Działaniom towarzyszyła mi całkiem spokojna muza,
bo ponad wszystko najważniejszy jest spokój...:
https://www.youtube.com/watch?v=i8A849ZvOAE
Jest kilka narzędzi dedykowanych do potyczek z układami programowalnymi (PLD) o prostej budowie i małej skali integracji, czyli generalnie układami GAL. Wcześniejsze układy typu PAL lub PALCE obecnie właściwie wyszły z użycia. Przede wszystkim z racji tego, że układy PAL nie są reprogramowalne, chociaż PALCE ponoć są, ale jakoś do tej pory nie przyszło mi się sprawdzić tej cechy. Bo ja wszystko sprawdzam na sobie i nie przyjmuję na wiarę (no może z wyjątkiem jednej osoby, której wierzę bezwarunkowo, bo mnie jeszcze nigdy nie okantowała, chociaż nie zawsze to wygląda tak prosto). Większość układów PAL będących z odzysku poszła... na odzysk złota. Zostawiłem sobie tylko kilkanaście układów typu PALCE (bo to nówki sztuki nie śmigane).
Układy GAL są w pełni reprogramowalne, toteż nawet te z odzysku mają rację bytu i można je używać. Obecnie chyba jedynie dwóch producentów wytwarza te układy. Są to LATTICE (twórca technologii) oferujące układy o oznaczeniu GAL<coś tam> oraz ATMEL (który wszedł w struktury Microchip) z układami o oznaczeniu ATF<coś tam>. Podejrzewam, że z racji swoistej konkurencji między firmami oprogramowanie Lattice nie koniecznie będzie generować pliki dla układów Atmela oraz vice versa. W przypadku układów GAL można je obrabiać za pomocą programu oferowanego przez Lattice o nazwie ispLEVER. W przypadku układów atmelowych do obróbki dedykowane jest oprogramowanie WinCUPL.
Potyczki z układami GAL należy zacząć od pozyskania odpowiednich narzędzi programowych. W przypadku układów latticowych, należy wejść na stronę tej firmy: http://www.latticesemi.com/ispleverclassic lub wyklikać zakładkę Products i tam odnaleźć odsyłacz oznaczony islLEVER Classis.
By pobrać odpowiednie oprogramowanie należy się zarejestrować (klikając na Register), wypełnić odpowiednie pola. Loginem jest podany adres mail, na który przyjdzie wiadomość zawierająca link do kliknięcia by aktywować utworzone konto. Posiadając już konto w Lattice można pobrać oprogramowanie narzędziowe.
Wybieramy wskazaną pozycję do ściągnięcia. Przyjdzie w formie spakowanej (jako ZIP). Po rozpakowaniu (jest jeden plik EXE) należy go uruchomić. Na początek poklikać na wyrażenie zgody i inne podobne dyrdymały a potem pozostaje cierpliwie poczekać.
Teraz pozostało cierpliwie poczekać.
No i w końcu oczekiwane szczęśliwe zakończenie.
Wracamy na stronę Lattice by pobrać plik licencji. Będzie potrzebny numer karty sieciowej, czyli tzw. adres MAC karty sieciowej. Można go wyklikać:
Do pobrania pliku licencji należy przejść do
To prowadzi do miejsca, gdzie należy podać uzyskany z własnego kompa adres MAC karty sieciowej, który należy wpisać i klikając na właściwy button zażądać wygenerowania pliku licencji.
Plik licencji przyjdzie pocztą na podane jako login konto poczty mail.
Tak jak jest napisane w email, plik załącznika należy zapisać do kartoteki o nazwie \license. Program narzędziowy uruchamia się jako
Jeżeli plik licencji nie zostanie zapisany lub nie we właściwym miejscu, program ispLever wypnie się na współpracę z nami.
Jeżeli zaistnieje właściwa harmonia, to program uruchomi się bez żadnych problemów.
Ten pakiet oprogramowania narzędziowego obrabia wszystkie układy firmy Lattice. Fajną sprawą jest to, że udostępniają możliwość obrabiania starych układów. Nie wszyscy tak robią, toteż obok bardziej współczesnych układów:
można obrabiać układy już trochę leciwe,
oraz klasyczne układy GAL.
GAL'e - technologia obróbki
GAL'e - technologia obróbki
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse
Re: GAL'e - technologia obróbki
Układy GAL
projekt dla układu kombinacyjnego
Najprostszy przykład wykorzystania układu GAL, to czysta logika kombinacyjna. Może to znaleźć zastosowanie w wielu miejscach, ot, choćby w zespole do generowania sygnałów typu chip select na magistrali mikroprocesorowej do aktywacji różnych portów. Typowym rozwiązaniem jest użycie układu 74HC138. Ma on wszystko co potrzeba, 3 linie do selekcji oraz kilka linii do aktywacji samego dekodera. Wyjścia ma w tzw. logice ujemnej (stan aktywny jest zerem logicznym). Jednak zdarzyło mi się , gdzie wyjścia dekodera w kilku przypadkach wymagały logiki dodatniej (tj. stanem aktywnym jest jedynka logiczna). Można, rzecz jasna dać w torze negator, albo... użyć układu GAL i zaprogramować właściwe warianty. Poniżej przedstawię jakiś wyimaginowany projekt, w którym układ GAL będzie pełnił czystą funkcję kombinacyjną. Przykładowo niech to będzie trzy linie wejściowe (dane wejściowe to trzy sygnały logiczne) i oczekiwane są trzy wyniki różnych funkcji kombinacyjnych. W sumie nie jest istotne jaką funkcję realizuje układ. Zapewne każdy jest w stanie bazując na bieżącym przykładzie utworzyć takie zapisy, jakie są mu niezbędne. W ogólnym przypadku może być inna liczba linii wejściowych oraz inna liczba linii wyjściowych. Tutaj jest jakiś abstrakcyjny projekt.
Odpalamy rakietę o nazwie ispLEVER i tworzymy nowy projekt: File → New project.
W odpowiednich polach należy wprowadzić nazwę projektu, jego lokalizację na dysku (np. microgeek/gal/ezample1) i określić, że projekt będzie w języku ABEL.
Po kliknięciu na Dalej, istnieje możliwość wybrania układu.
W zestawie Family, nie znajdziemy pozycji GAL. To są już przestarzałe układy, toteż konieczne jest zaznaczenie ptaszka „Show Obsolete Devices”. To daje możliwość wybrania różnych starych rodzin.
Więc wybieramy: GAL i układ GAL16V8. Przechodząc Dalej, w pewnym momencie mamy podsumowanie projektu:
W końcu dobijamy się do poprawnie zdefiniowanego projektu. Teraz należy wklepać, co układ ma robić. Tworzymy pusty plik zawierający specyfikację funkcji układu.
Po wybraniu „języka”, utworzony jest prawie pusty plik:
Wklepujemy tekst, opisując jakąś wyimaginowaną funkcję logiczną. Niech będzie to na pinach 1, 2 i 3 wejście sygnałów logicznych oraz na pinach 6, 7 i 8 wyjście sygnałów. W sumie realizowana funkcja nie tu istotnego znaczenia.
Maszynerię odpala się klikając prawym klawiszem myszki na Create Fuse Map. No to w drogę...
Wyszło... jak wyszło. Oprogramowanie ma jakieś uwagi do moich działań. Zapewne ma rację.
Zobaczmy czego chce...
Mówi, że pin 6, 7 i 8 nie może być pinem wyjściowym. Sprawdźmy. W dokumentacji do układu jest:
No tak. Rzeczywiście wybrane piny nie mogą być wyjściami. Nie należy nic robić na pałę, bo rzeczywistość to i tak zweryfikuje. Jak coś jest takie jakie jest, to tak musi być, nie da się inaczej. Gdybym realizował rzeczywisty projekt, to zapewne byłby bardziej przemyślany, a tak, tworzony ad hoc, w sposób nie do końca przemyślany minął się z rzeczywistością (tak kulą w płot).
Dobra, mała poprawka. Zmieniamy specyfikację pinów wejściowych i wyjściowych na: 2, 3 i 4 oraz 19, 18, 17.
Tym razem już bez pudła, prosto do celu.
Narządź twierdzi, że jest pełny sukces. Rzeczywiście, w kartotece przewidzianej na projekt powstał plik o rozszerzeniu JED (plik wynikowy w formacie JEDEC).
Ponieważ jest to plik tekstowy, można go podejrzeć dowolnym edytorem.
Wygląda jak powinien (swego czasu naoglądałem się trochę tych plików).
Jak wdusić zawartość tego pliku do środka układu GAL to inna bajka. Ja mam swój programator, co potrafi to robić. A jak się takiego nie ma? To można użyć układów typu isp (programowanych w układzie).
Obecne oprogramowanie, w stosunku do wręcz starożytnych rozwiązań bazujących na DOS (jak PALASM) to całkiem inny level. Może warto trochę odkurzyć te interesujące układy o całkiem fajnych możliwościach zamiast odesłać je na śmietnik historii. Uratujmy ich ile się tylko da, bo tak trzeba.
projekt dla układu kombinacyjnego
Najprostszy przykład wykorzystania układu GAL, to czysta logika kombinacyjna. Może to znaleźć zastosowanie w wielu miejscach, ot, choćby w zespole do generowania sygnałów typu chip select na magistrali mikroprocesorowej do aktywacji różnych portów. Typowym rozwiązaniem jest użycie układu 74HC138. Ma on wszystko co potrzeba, 3 linie do selekcji oraz kilka linii do aktywacji samego dekodera. Wyjścia ma w tzw. logice ujemnej (stan aktywny jest zerem logicznym). Jednak zdarzyło mi się , gdzie wyjścia dekodera w kilku przypadkach wymagały logiki dodatniej (tj. stanem aktywnym jest jedynka logiczna). Można, rzecz jasna dać w torze negator, albo... użyć układu GAL i zaprogramować właściwe warianty. Poniżej przedstawię jakiś wyimaginowany projekt, w którym układ GAL będzie pełnił czystą funkcję kombinacyjną. Przykładowo niech to będzie trzy linie wejściowe (dane wejściowe to trzy sygnały logiczne) i oczekiwane są trzy wyniki różnych funkcji kombinacyjnych. W sumie nie jest istotne jaką funkcję realizuje układ. Zapewne każdy jest w stanie bazując na bieżącym przykładzie utworzyć takie zapisy, jakie są mu niezbędne. W ogólnym przypadku może być inna liczba linii wejściowych oraz inna liczba linii wyjściowych. Tutaj jest jakiś abstrakcyjny projekt.
Odpalamy rakietę o nazwie ispLEVER i tworzymy nowy projekt: File → New project.
W odpowiednich polach należy wprowadzić nazwę projektu, jego lokalizację na dysku (np. microgeek/gal/ezample1) i określić, że projekt będzie w języku ABEL.
Po kliknięciu na Dalej, istnieje możliwość wybrania układu.
W zestawie Family, nie znajdziemy pozycji GAL. To są już przestarzałe układy, toteż konieczne jest zaznaczenie ptaszka „Show Obsolete Devices”. To daje możliwość wybrania różnych starych rodzin.
Więc wybieramy: GAL i układ GAL16V8. Przechodząc Dalej, w pewnym momencie mamy podsumowanie projektu:
W końcu dobijamy się do poprawnie zdefiniowanego projektu. Teraz należy wklepać, co układ ma robić. Tworzymy pusty plik zawierający specyfikację funkcji układu.
Po wybraniu „języka”, utworzony jest prawie pusty plik:
Wklepujemy tekst, opisując jakąś wyimaginowaną funkcję logiczną. Niech będzie to na pinach 1, 2 i 3 wejście sygnałów logicznych oraz na pinach 6, 7 i 8 wyjście sygnałów. W sumie realizowana funkcja nie tu istotnego znaczenia.
Kod: Zaznacz cały
MODULE logic1
Title 'Logika bramkowa'
"library 'lattice';
InpSig1, InpSig2, InpSig3 pin 1, 2, 3;
OutSig1, OutSig2, OutSig3 pin 6, 7, 8;
equations
OutSig1 = InpSig1 & InpSig2 ;
OutSig2 = InpSig2 $ InpSig3 ;
OutSig3 = ( InpSig1 & InpSig3 ) $ ( InpSig2 & InpSig3 ) ;
END
Maszynerię odpala się klikając prawym klawiszem myszki na Create Fuse Map. No to w drogę...
Wyszło... jak wyszło. Oprogramowanie ma jakieś uwagi do moich działań. Zapewne ma rację.
Zobaczmy czego chce...
Mówi, że pin 6, 7 i 8 nie może być pinem wyjściowym. Sprawdźmy. W dokumentacji do układu jest:
No tak. Rzeczywiście wybrane piny nie mogą być wyjściami. Nie należy nic robić na pałę, bo rzeczywistość to i tak zweryfikuje. Jak coś jest takie jakie jest, to tak musi być, nie da się inaczej. Gdybym realizował rzeczywisty projekt, to zapewne byłby bardziej przemyślany, a tak, tworzony ad hoc, w sposób nie do końca przemyślany minął się z rzeczywistością (tak kulą w płot).
Dobra, mała poprawka. Zmieniamy specyfikację pinów wejściowych i wyjściowych na: 2, 3 i 4 oraz 19, 18, 17.
Tym razem już bez pudła, prosto do celu.
Narządź twierdzi, że jest pełny sukces. Rzeczywiście, w kartotece przewidzianej na projekt powstał plik o rozszerzeniu JED (plik wynikowy w formacie JEDEC).
Ponieważ jest to plik tekstowy, można go podejrzeć dowolnym edytorem.
Wygląda jak powinien (swego czasu naoglądałem się trochę tych plików).
Jak wdusić zawartość tego pliku do środka układu GAL to inna bajka. Ja mam swój programator, co potrafi to robić. A jak się takiego nie ma? To można użyć układów typu isp (programowanych w układzie).
Obecne oprogramowanie, w stosunku do wręcz starożytnych rozwiązań bazujących na DOS (jak PALASM) to całkiem inny level. Może warto trochę odkurzyć te interesujące układy o całkiem fajnych możliwościach zamiast odesłać je na śmietnik historii. Uratujmy ich ile się tylko da, bo tak trzeba.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse
Re: GAL'e - technologia obróbki
Układy GAL
projekt dla układu kombinacyjnego
opisany jako schemat
Do obróbki GAL'i nie jest konieczna znajomość jakiegokolwiek języka typu HDL. Równie dobrze funkcjonalność układu cyfrowego może zostać narysowana. Program ispLEVER umożliwia narysowanie schematu bloku cyfrowego, jaki ma być realizowany przez układ GAL. Tradycyjnie należy odpalić nawigator projektu. Zaczynamy od utworzenia nowego projektu.
W okienku dialogowym wklepujemy podstawowe informacje dotyczące projektu: jego nazwę i lokalizację plików projektowych. Po kliknięciu na Dalej w następnym kroku określany jest docelowy układ.
Po zaznaczeniu ptaszkiem „Show Obsolete Devices”, wybieramy pozycję GAL i układ GAL18V8 (to już nie jest Gal Anonim ). Dodajemy nowy plik źródłowy do projektu.
Tym razem specyfikując szczegóły należy wskazać, że będzie to schemat.
Zaowocuje to otwarciem programu do obróbki schematów. Zanim oddamy się radosnej twórczości związanej z wymyślaniem czegokolwiek lub innych niestworzonych rzeczy, plik należy nazwać. Drogi dojścia do finalnego schematu mogą być różne. Ja zacząłem od położenia na schemacie „nóżek układu”. Wybrałem z zasobnika narzędziowego funkcję „Add symbol”. Klik otwiera całą gamę dostępnych dla wybranego GAL'a elementów.
Z zasobnika wybieram: iopads.lib a następnie G_INPUT.
Powstaje kawałek schematu. Wybierając „Add Wire” dorysowuję kilka drutów na wejściach.
Nazywam nóżki układu. Wybieram „Add Net Name”, na dole ekranu wklepuję z klawiatury nazwę sygnału i po Enter etykietę „kładę” na początek druta.
Analogicznie pozostałe. W dalszej kolejności analogicznie tworzę piny wyjściowe układu (tym razem wybrane są elementy G_OUTPUT).
Jak się zrobi Save, to program ponazywa nowe elementy. Przywiązanie utworzonych pinów do wyprowadzeń fizycznych układu scalonego realizowane jest poprzez edycję atrybutów elementu. Po kliknięciu na „Edit Symbol Attribute” kolejnym klikiem należy wskazać edytowany element, co spowoduje otwarcie odpowiedniego okienka dialogowego, gdzie należy wybrać pozycję PinNumber i w okienku wpisać numer wyprowadzenia rzeczywistego układu.
Analogicznie pozostałe elementy. Powstaje:
Teraz jest faza radosnej twórczości związanej z realizowaną logiką dla układu GAL. Tym razem z biblioteki wybrane są elementy GATES.
Dodając „druty” tworzymy jakąś „fikcję” ( w sumie do prezentacji nie ma to żadnego znaczenia, w końcu jest to całkowicie wyspekulowana koncepcja nie mająca nic wspólnego z rzeczywistością, chodzi o zasady).
Analogicznie wyjścia układu.
Z wprowadzonych etykiet sygnałów należy zrobić wejścia i wyjścia. Z zasobnika narzędziowego należy wybrać „Add I/O Marker”, ewentualnie kliknąć, na „Input”, trzymając lewy klawisz myszki zaznaczyć obszar nad etykietą. Po puszczeniu klawisza przerobi się to na swoisty port.
Analogicznie wyjścia układu.
Wracając do programu nawigatora projektu należy uruchomić maszynerię klikając prawym klawiszem na pozycję „Create Fuse Map” i wybierając „Start”. Świsnęło, błysnęło i...
jest plik JEDEC.
projekt dla układu kombinacyjnego
opisany jako schemat
Do obróbki GAL'i nie jest konieczna znajomość jakiegokolwiek języka typu HDL. Równie dobrze funkcjonalność układu cyfrowego może zostać narysowana. Program ispLEVER umożliwia narysowanie schematu bloku cyfrowego, jaki ma być realizowany przez układ GAL. Tradycyjnie należy odpalić nawigator projektu. Zaczynamy od utworzenia nowego projektu.
W okienku dialogowym wklepujemy podstawowe informacje dotyczące projektu: jego nazwę i lokalizację plików projektowych. Po kliknięciu na Dalej w następnym kroku określany jest docelowy układ.
Po zaznaczeniu ptaszkiem „Show Obsolete Devices”, wybieramy pozycję GAL i układ GAL18V8 (to już nie jest Gal Anonim ). Dodajemy nowy plik źródłowy do projektu.
Tym razem specyfikując szczegóły należy wskazać, że będzie to schemat.
Zaowocuje to otwarciem programu do obróbki schematów. Zanim oddamy się radosnej twórczości związanej z wymyślaniem czegokolwiek lub innych niestworzonych rzeczy, plik należy nazwać. Drogi dojścia do finalnego schematu mogą być różne. Ja zacząłem od położenia na schemacie „nóżek układu”. Wybrałem z zasobnika narzędziowego funkcję „Add symbol”. Klik otwiera całą gamę dostępnych dla wybranego GAL'a elementów.
Z zasobnika wybieram: iopads.lib a następnie G_INPUT.
Powstaje kawałek schematu. Wybierając „Add Wire” dorysowuję kilka drutów na wejściach.
Nazywam nóżki układu. Wybieram „Add Net Name”, na dole ekranu wklepuję z klawiatury nazwę sygnału i po Enter etykietę „kładę” na początek druta.
Analogicznie pozostałe. W dalszej kolejności analogicznie tworzę piny wyjściowe układu (tym razem wybrane są elementy G_OUTPUT).
Jak się zrobi Save, to program ponazywa nowe elementy. Przywiązanie utworzonych pinów do wyprowadzeń fizycznych układu scalonego realizowane jest poprzez edycję atrybutów elementu. Po kliknięciu na „Edit Symbol Attribute” kolejnym klikiem należy wskazać edytowany element, co spowoduje otwarcie odpowiedniego okienka dialogowego, gdzie należy wybrać pozycję PinNumber i w okienku wpisać numer wyprowadzenia rzeczywistego układu.
Analogicznie pozostałe elementy. Powstaje:
Teraz jest faza radosnej twórczości związanej z realizowaną logiką dla układu GAL. Tym razem z biblioteki wybrane są elementy GATES.
Dodając „druty” tworzymy jakąś „fikcję” ( w sumie do prezentacji nie ma to żadnego znaczenia, w końcu jest to całkowicie wyspekulowana koncepcja nie mająca nic wspólnego z rzeczywistością, chodzi o zasady).
Analogicznie wyjścia układu.
Z wprowadzonych etykiet sygnałów należy zrobić wejścia i wyjścia. Z zasobnika narzędziowego należy wybrać „Add I/O Marker”, ewentualnie kliknąć, na „Input”, trzymając lewy klawisz myszki zaznaczyć obszar nad etykietą. Po puszczeniu klawisza przerobi się to na swoisty port.
Analogicznie wyjścia układu.
Wracając do programu nawigatora projektu należy uruchomić maszynerię klikając prawym klawiszem na pozycję „Create Fuse Map” i wybierając „Start”. Świsnęło, błysnęło i...
jest plik JEDEC.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse
Re: GAL'e - technologia obróbki
Układy GAL
projekt w VHDL
Funkcjonalność układów GAL można również wyprodukować w moim ulubionym wariancie, czyli w VHDL. By to uczynić, tradycyjnie należy odpalić nawigator projektu i utworzyć nowy projekt. Tym razem w specyfikacji projektu należy wskazać wariant VHDL.
Dodajemy nowy plik do projektu.
Otworzy się okienko do wprowadzenia kolejnych szczegółów.
Poza, rzecz naturalna, podaniem nazwy pliku można wklepać listę sygnałów. Jeżeli tworzony moduł jest „top'owy”, to wprowadzona lista identyfikatorów będzie nazwami nóżek.
To taki wariant dla trochę leniwych, gdyż z wprowadzonych informacji zostanie utworzony fragment pliku źródłowego w języku VHDL. Pozostanie jedynie wypełnić środek. Ja teraz wpiszę co „serce mi dyktuje” gdyż jest to w kategoriach prezentacji, jednak w rzeczywistych rozwiązaniach trzeba wszystko dokładnie przemyśleć a generalnie zawsze należy myśleć co się robi.
Powstaje opis o przykładowej treści:
No to w drogę...
Pomiędliło dyskiem...
i powiedziało, że zrobiło. Rzeczywiście, powstał plik JEDEC.
projekt w VHDL
Funkcjonalność układów GAL można również wyprodukować w moim ulubionym wariancie, czyli w VHDL. By to uczynić, tradycyjnie należy odpalić nawigator projektu i utworzyć nowy projekt. Tym razem w specyfikacji projektu należy wskazać wariant VHDL.
Dodajemy nowy plik do projektu.
Otworzy się okienko do wprowadzenia kolejnych szczegółów.
Poza, rzecz naturalna, podaniem nazwy pliku można wklepać listę sygnałów. Jeżeli tworzony moduł jest „top'owy”, to wprowadzona lista identyfikatorów będzie nazwami nóżek.
To taki wariant dla trochę leniwych, gdyż z wprowadzonych informacji zostanie utworzony fragment pliku źródłowego w języku VHDL. Pozostanie jedynie wypełnić środek. Ja teraz wpiszę co „serce mi dyktuje” gdyż jest to w kategoriach prezentacji, jednak w rzeczywistych rozwiązaniach trzeba wszystko dokładnie przemyśleć a generalnie zawsze należy myśleć co się robi.
Powstaje opis o przykładowej treści:
Kod: Zaznacz cały
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity logic3 is port ( A: in std_logic ;
B: in std_logic ;
C: in std_logic ;
D: in std_logic ;
Y1: out std_logic ;
Y2: out std_logic ;
Y3: out std_logic ;
Y4: out std_logic );
end ;
architecture behavioral of logic3 is
begin
Y1 <= A and B ;
Y2 <= C nand D ;
Y3 <= A or C ;
Y4 <= B xor D ;
end behavioral ;
No to w drogę...
Pomiędliło dyskiem...
i powiedziało, że zrobiło. Rzeczywiście, powstał plik JEDEC.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość