Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Układ programowalny zamiast płyty z ttl-ami. Jak zacząć?

Bruum 12 Wrz 2007 22:39 3390 18
  • #1 12 Wrz 2007 22:39
    Bruum
    Poziom 23  

    Witam! Prośba jak w temacie. Jak zacząć, na ile jest to wykonalne i czego szukać? Czy postępując krok po kroku to zrobię? Chcę w jednej kości "upchać" parędziesiąt bramek, kilka przerzutników i multiplekserów/dekoderów. Jakie ew. koszty?

    Przeniosłem z Mikrokontrolery. [c_p]

  • Pomocny post
    #2 13 Wrz 2007 13:25
    marihires
    Poziom 29  

    Do takich potrzeb polecam użycie programowalnych układów logicznych PLD np typu GAL22V10 (ATF22V10C-15PC)

    Układy PLD stanowią grupę wysoce funkcjonalnych, cyfrowych układów scalonych typu programowalnego, a więc takich, w których realizowana funkcja nie jest określana w sposób jednoznaczny na etapie produkcji lecz może zostać dowolnie zaprogramowana przez użytkownika.
    W oparciu o większość z aktualnie oferowanych przez przemysł struktur PLD można tworzyć własne układy zarówno kombinacyjne jak i sekwencyjne, a stopień ich złożoności może być porównywalny z takimi układami cyfrowymi jak na przykład procesory.
    Podstawowe elementy typowego układu PLD przedstawia rysunek
    Układ programowalny zamiast płyty z ttl-ami. Jak zacząć?
    Są to:
    • obwody wejściowe zawierające bufory, inwertery sygnałów wejściowych oraz opcjonalnie przerzutniki
    • matryca bramek AND
    • matryca bramek OR
    • obwody wyjściowe zawierające bufory, inwertery sygnałów wyjściowych oraz również opcjonalnie przerzutniki.
    Matryce bramek AND oraz OR mogą posiadać stałą lub programowaną sieć połączeń sygnałów wejściowych. W zależności od zastosowanej opcji układy PLD dzielą się na:
    • PROM (Programable Read Only Memory), posiadające stałą matrycę połączeń wejść bramek AND w postaci dekodera adresów oraz programowaną matrycę połączeń wejść bramek OR (uwaga: PROM to pierwotnie rodzaj pamięci trwałej i przynależność tego rodzaju ukłądu do grupy pamięci ROM lub układów PLD zależy od jego konkretnej aplikacji),
    • PLA (Programmable Logic Array), posiadające programowaną matrycę połączeń wejść bramek AND oraz programowaną matrycę połączeń wejść bramek OR,
    • PAL (Programmable Array Logic), posiadające programowaną matrycę połączeń wejść bramek AND oraz stałą matrycę połączeń wjeść bramek OR,
    • GAL (Generic Array Logic), stanowiące rozszerzenie podstawowej architektury układów PAL, polegające na zaopatrzeniu każdego z wyjść układu w programowaną makrokomórkę logiczną OLMC (Output Logic Macro-Cell), zawierającą bramki, przerzutnik i bufor trójstanowy na wyjściu.

    Najprostszym układem GAL jest układ scalony o oznaczeniu GAL16V8, opracowany przez firmę Lattice Semiconductor. Układ umieszczony jest w małej obudowie dwurzędowej DIL20 i umożliwia najczęściej zastąpienie kilku tradycyjnych cyfrowych układów scalonych małej i średniej skali integracji. Posiada osiem uniwersalnych wejść (wyprowadzenia: 2, 3, .... 9), oraz dwa wejścia dedykowane: wejście zegarowe CK (wyprowadzenie 1) i wejście kontrolujące trójstanowe wyjścia OE/ (wyprowadzenie 11). Wejścia dedykowane mogą być również wykorzystane jako wejścia uniwersalne. Na wyjściach (wyprowadzenia 12, 13, .... 19) układ posiada osiem makrokomórek logicznych OLMC, z których każda zawiera:




    • ośmiowejściową bramkę OR, stanowiacą jeden z ośmiu elementów matrycy o ustalonej konfiguracji połączeń wejść.

    Struktura wewnętrznych połączeń układu GAL16V8
    • bramkę XOR sterującą funkcją polaryzacji,
    • przerzutnik typu D flip-flop,
    • zespół programowanych rejestrów określających przepływ sygnałów logicznych w różnych konfiguracjach makrokomórki OLMC.
    Każda makrokomórka może być skonfigurowana jako wyjście zwykłe proste lub zanegowane (w układach kombinacyjnych) lub jako wyjście przerzutnikowe proste lub zanegowane (w układach sekwencyjnych).

    Programowana matryca bramek AND układu GAL16V8 zawiera 64 bramki AND, z których każda posiada 32 wejścia (plus jedno dodatkowe wejście umożliwiające blokadę całej bramki).

    Najprostszy z układów, układ GAL16V8 ma 2048 możliwych połączeń. W bardziej rozbudowanym projekcie może okazać się konieczne wykonanie kilkuset z nich i jest bardzo mało prawdopodobna bezbłędna realizacja tego zadania bez pomocy komputera. Z tego względu wykonanie w postaci układu PLD nawet średnio skomplikowanego układu cyfrowego wymaga komputerowego wspomagania podczas projektowania. Przykładem programu wspomagającego projektowanie ukladów cyfrowych realizowanych w oparciu o PLD jest kompilator CUPL (Universal Compiler for Programmable Logic), który jest światowym standardem w dziedzinie układów programowalnych.

    Układ trzeba zaprogramowować programatorem...
    Język programowania jest bardzo prosty,przykładowo napisany dekoder "1z10":

    Code:
    Name     dekoder ;
    
    PartNo   00 ;
    Date     2007-06-01 ;
    Revision 01 ;
    Designer KBo ;
    Company  IMEiA ;
    Assembly None ;
    Location  ;
    Device   G22V10 ;

    /* *************** INPUT PINS *********************/


    PIN    2 =  we1      ; /*                                 */
    PIN    3 =  we2      ; /*                                 */
    PIN    4 =  we3      ; /*                                 */
    PIN    5 =  we4      ; /*                                 */

    /* *************** OUTPUT PINS *********************/
    PIN   23 = wy01      ; /*                                 */
    PIN   22 = wy02      ; /*                                 */
    PIN    21 = wy03      ; /*                                 */
    PIN    20 = wy04      ; /*                                 */
    PIN    19 = wy05      ; /*                                 */
    PIN    18 = wy06      ; /*                                 */
    PIN    17 = wy07      ; /*                                 */
    PIN    16 = wy08      ; /*                                 */
    PIN    15 = wy09      ; /*                                 */
    PIN    14 = wy10      ; /*                                 */

    /* opis funkcji logicznych */
    wy01 = we1 & !we2 & !we3 & !we4;
    wy02 = !we1 & we2 & !we3 & !we4;
    wy03 = we1 & we2 & !we3 & !we4;
    wy04 = !we1 & !we2 & we3 & !we4;
    wy05 = we1 & !we2 & we3 & !we4;
    wy06 = !we1 & we2 & we3 & !we4;
    wy07 = we1 & we2 & we3 & !we4;
    wy08 = !we1 & !we2 & !we3 & we4;
    wy09 = we1 & !we2 & !we3 & we4;
    wy10 = !we1 & we2 & !we3 & we4;


    Pozdrawiam...i polecam zagłębienie się w ten temat :)

  • Pomocny post
    #3 13 Wrz 2007 14:33
    J.A
    Poziom 27  

    Cytat:
    Jak zacząć, na ile jest to wykonalne i czego szukać?

    nie znam rynku, bo wlasnorecznie nic nie kupuje, ale skoro
    procz mini wykladu z pld jeszcze nic nie dostales, to napisze
    pare slow;
    po pierwsze po co ci to ? to co masz obecnie nie dziala ?
    jesli dziala, to zostaw tak jak jest, po co ci klopoty ?
    jesli musisz zmienic, i czas goni, to znajdz kogos,
    kto juz przynajmniej raz zmontowal i zaprogramowal pld/fpga;
    to o czym piszesz jest bardzo proste dla osoby majacej jakies
    doswiadczenie, startujacego od zera czekaja jednak tygodnie
    nauki i prob;
    zakladam oczywiscie, ze masz pelny opis tej plytki z ttl-ami :)

    chcesz zmienic dla zabawy/nauki ?
    na rynku sa dwie dominujace firmy oferujace uklady programowalne
    i software do programowania tychze - altera i xilinx;
    darmowa wersja quartusa, software altery, umozliwia programowanie
    mniejszych [az nadto duzych dla twoich biezacych potrzeb] kostek
    tej firmy, a w sieci mozna znalezc schematy prostych programatorow;
    xilinx tez daje za free 'student version' swojego oprogramowania,
    ale z xilinxem nie pracuje, wiec sprawdz jak sie sprawy maja na ich
    stronie; [moze lada moment odezwie sie jakis expert od x.]
    gale o ktorych pisze marihires, popularne w latach 80-90,
    to obecnie niszowe uklady, choc ciagle przydatne dla hobbystow;

    porozgladaj sie na stronach altery i xilinxa by mniej wiecej
    wiedziec o co chodzi, a na bardziej szczegolowe czy techniczne
    pytania z pewnoscia ci tutaj ktos odpowie;

    JA

  • #4 13 Wrz 2007 16:25
    Bruum
    Poziom 23  

    Witam i wielkie dzięki za odpowiedzi! Czy nie wpadł nikt dotąd na pomysł programu działającego na zasadzie projektowania płytek drukowanych? "Wrysowujemy" schemat(bramki, przerzutniki etc.) a program produkuje plik do wrzucenia do programatora. Czy willem poradzi sobie z zaprogramowaniem takiej kostki? Może polecilibyście coś do poczytania w necie a może jakąś sensowną książkę?

  • #5 13 Wrz 2007 18:29
    mreq
    Poziom 21  

    Witam

    Oczywiście, że można równirz w ten sposób "programować" PLD sam robiłem taki projekt w Orcadzie dołączało się bibliotekę z bramkami rysowało schemat kompilowało ale wyleciała mi nazwa ( robiłem to parę lat temu ).
    A w ISE ( dla XILNXa ) też można oprócz VHDLa rysować schemat.

  • #6 13 Wrz 2007 22:13
    J.A
    Poziom 27  

    Cytat:
    "Wrysowujemy" schemat(bramki, przerzutniki etc.) a program produkuje plik do wrzucenia do programatora.

    zarowno ise xilinxa jak i quartus altery oferuja edytor schematow;
    ale powiedz sobie sam szczerze, chcialbys programowac '51 czy
    jakiegos arma rysujac schemat ? dalo by sie, ale po co ...
    niestety nie znam literatury, ja sie uczylem korzystajac z helpa
    narzedzia i projektujac proste bramki, liczniki itd;

    JA

  • #7 14 Wrz 2007 00:01
    Bruum
    Poziom 23  

    [/quote]

    ale powiedz sobie sam szczerze, chcialbys programowac '51 czy
    jakiegos arma rysujac schemat ? dalo by sie, ale po co ...

    JA[/quote]
    Witam i dziękuję! Wydaje mi się to najprostsze-"kopiuję" schemat układu bez wnikania w jego funkcje logiczne, pisania tabelek itp. rozrywek niosących ryzyko pomyłki. Prosto rozumując sądzę, że program mógłby to zrobić sprawniej, analizując funkcję wrysowanego układu a następnie realizując ją za pomocą bramek istniejących w danej kostce programowalnej. Zgadzacie się z moim tokiem rozumowania?

  • #8 14 Wrz 2007 01:16
    J.A
    Poziom 27  

    Cytat:
    Wydaje mi się to najprostsze-"kopiuję" schemat układu bez wnikania w jego
    funkcje logiczne, pisania tabelek itp. rozrywek niosących ryzyko pomyłki.

    temat na kilka wieczorow dyskusji;

    ale postaram sie zamknac a kilku/nastu/ linijkach; :)
    - rysowanie schematow nie jest wolne od ryzyka pomylki, rowniez trudnej do wykrycia;
    po polaczeniu ze soba prostokatow o nieznanym/slabo znanym wnetrzu mozesz
    byc zaskoczony efektem dzialania;
    - aby narysowac schemat, tez trzeba sie nauczyc regul, nie ma tak dobrze, ze napacka
    sie prostokaty z biblioteki i pociagnie linie miedzy nimi;
    oceniam to mniej wiecej tak: by sporzadzic jakis prosty choc niebanalny projekt
    na edytor schematow trzeba poswiecic 2-3 dni nauki, na verilog tydzien, na vhdl
    poltora tygodnia;
    - narysowany schemat dla fpga jednego producenta jest nieprzenoszalny na kostki
    innego producenta, najczesciej rowniez z jednego edytora na inny, program
    w vhdl/verilog jest; [o ile nie uzywa sie specyficznych dla vendora makr jak ram,
    czy pll, ale na to tez jest sposob]
    - stosunkowo latwo jest napisac skrypty ulatwiajace/automatyzujace projektowanie,
    ktore operuja na plikach tekstowych, jak to zrobic dla projektu bedacego schematem ?
    - efektywnosc, laczac ze soba bloczki z biblioteki nie wycisniemy z fpga ostatnich
    mozliwosci, a cena fpga bardzo szybko rosnie wraz z iloscia elementow;

    JA

  • #9 16 Wrz 2007 08:33
    mreq
    Poziom 21  

    W nowszym protelu 98 i wyższych jest ta możliwość rysowania schematu i kompilacji ( też używa się specjalnej biblioteki a nie byle jakie bramki )

  • #10 16 Wrz 2007 19:56
    Bruum
    Poziom 23  

    Witam i dziękuję za odpowiedzi. Z możliwością pomyłki przy rysowaniu schematu to ja się tego obawiam. Dziwi Was panowie moje podejście do tematu. Wy zaczynacie od funkcji, którą chcecie zrealizować. A ja tej funkcji nie mam, mam za to schemat, który chcę zastąpić czymś mniejszym i znacznie mniej prądożernym. Wasze posty i kilka godzin sciągania i mam ise xilinxa. Ma on edytor schematów. O jakich zasadach mówisz kolego Ja? Myślałem, że wrysowanie bramek i ich połączeń wystarczy. Spisałem układy i ich ilość w oryginalnym wykonaniu. Mógłby ktoś rzucić okiem i ocenić w jaką kostkę to się może zmieścić?
    7400---17
    7401---15
    7402---2
    7404---11
    7408---9
    7410---5
    7420---3
    7421---2
    7423---1
    7430---1
    7442---5
    7451---1
    7474---2
    7483---1
    7485---1
    7486---3
    7489---1
    7490---1
    74121--2
    74123--5
    74140--4
    74145--2
    74151--8
    74155--1
    74157--2
    74175--8
    74192--9
    74193--1
    74452--2
    To trzeba by upchać. A może jest program analizujący, który na podstawie schematu znajduje funkcję realizowaną wynik daje w postaci akceptowalnej przez różne programy projektujące pld a może nawet mikrokontroler? Może to jest droga? Pytam, żeby nie pchać się w jakąś ślepą uliczkę.

  • #11 16 Wrz 2007 21:48
    firefox_PL
    Poziom 17  

    wystarczy, że zrealizujesz schemat i zrobisz syntezę, dostaniesz wtedy wynik zajętości twojego schematu na układzie, musisz go wybrać wcześniej na etapie tworzenia projektu, najlepiej poszukaj jakie są u nas dostępne CPLD Xilinx'a (CPLD "trzyma" konfigurację po odłączeniu zasilania), zacznij od największego i zobaczysz ile % zajmuje twój układ, będziesz mógł sprawdzić czy możesz wziąć coś mniejszego, trochę toporna metoda ale przynajmniej nie musisz czekać aż ktoś oceni ile to mniej więcej będzie zajmować (a rysowania schematu i tak nie unikniesz, więc będziesz to już miał z głowy)

  • #12 17 Wrz 2007 00:04
    J.A
    Poziom 27  

    Bruum napisał:
    /.../O jakich zasadach mówisz kolego Ja? Myślałem, że wrysowanie bramek i ich połączeń wystarczy.

    poprawne wrysowanie wystarczy;
    mialem na mysli zasady poslugiwania sie edytorem;

    Bruum napisał:
    Mógłby ktoś rzucić okiem i ocenić w jaką kostkę to się może zmieścić?

    quartus ma opcje 'docelowy uklad: auto', wtedy software sam wybiera
    najmniejsza mozliwa kostke, w ktorej zmiesci sie twoj projekt, ise powinno
    miec cos podobnego;

    jesli nie, pozostaje metoda opisana przez firefox_PL;

    JA

  • #13 17 Wrz 2007 09:21
    firefox_PL
    Poziom 17  

    J.A. napisał:
    quartus ma opcje 'docelowy uklad: auto', wtedy software sam wybiera
    najmniejsza mozliwa kostke, w ktorej zmiesci sie twoj projekt, ise powinno
    miec cos podobnego;
    rzeczywiście ISE też ma taką opcję, wybiera się jedynie rodzinę np. CoolRunner2 CPLD i jako Device: Automatic

  • #14 17 Wrz 2007 22:55
    Bruum
    Poziom 23  

    Witam i dziękuję za odpowiedzi! Jak zwykle-im dalej w las, tym więcej drzew. Już zacząłem się martwić, że pole edycji schematu jest stosunkowo małe w ise, ale wyczytałem, że może być tu struktura hierarchiczna i można łączyć całość z częściowych schematów. W moim przypadku nawet lepiej-mam sześć płytek połączonych ze sobą i z otoczeniem. Czy jest możliwość powiększenia biblioteki programu o więcej "elementów"? Konkretnie brakuje mi jakoś multiwibratorów w stylu 121 i 123. A może realizuje się je w inny sposób?

  • #15 17 Wrz 2007 23:29
    PiRoman2
    Poziom 20  

    Układów czasowych (121, 123) nie znajdziesz, możesz zrealizować opóźnienie taktując licznik z jakiegoś generatora.

  • #16 18 Wrz 2007 07:04
    Bruum
    Poziom 23  

    Witam. Dzięki kolego PIRoman2-czułem coś takiego przez skórę. Czy w verilogu czy innym vhdl jest możliwość zdefiniowania funkcji, jaką realizuje taki 121? Jeśli program projektujący jest dość "mądry" to sam powinien proponowany przez Ciebie układ wygenerować. Mądra książka wspomina o behawioralnym podejściu do definiowania układu.

  • #17 19 Wrz 2007 20:00
    J.A
    Poziom 27  

    Bruum napisał:
    Czy w verilogu czy innym vhdl jest możliwość zdefiniowania funkcji, jaką realizuje taki 121?


    wszystko /prawie/ mozna, jesli dostatecznie dobrze znasz architekture
    fpga /architekture wlasnie, nie vhdl czy verilog/;
    taki ´puls generator` jakim jest 121 mozesz zrobic licznikiem, pod
    warunkiem, ze dlugosc impulsu jest kilkakrotnie wieksza od okresu
    twojego zegara;
    ewentualnie mozna zwiekszyc czestotliwosc clocka uzywanego
    do odmierzania impulsu za pomoca pll, o ile jest dostepna w fpga;
    ograniczenie - dlugosc impulsu bedzie wielokrotnoscia
    polowy okresu zegara;

    kilku-kilkunasto nanosekundowe impulsy mozna produkowac
    wzywalajac przerzutnik i resetujac go wlasnym wyjsciem;
    o ile nie zalezy ci na zbyt wielkiej stabilnosci dlugosci trwania
    impulsu;

    JA

  • #18 19 Lis 2007 18:07
    lud_wik
    Poziom 9  

    Witam!
    Z zainteresowaniem przeczytałem Wasze wypowiedzi nt FPGA i mam podobny problem co Kolega jeśli chodzi o "upakowanie" elementów(kilkanaście) z jeszcze jedną kwestią, otóż:
    Otóż mój układ ma za zadanie odebrać nastawę czasową (w postaci ciągu
    impulsów) po czasie 3ms od restartu układu (po włączeniu zasilania) i w bardzo krótkim przedziale czasu, natomiast z artykułu o układach np. SPARTAN Xilinx'a wynika, że czas restartu FPGA wynosi od kilku do kilkunastu ms.
    Proszę o krótką wskazówkę, czy jest wogóle sens takiej realizacji i jeśli tak jak to rozwiązać. Dziękuję i pozdrawiam.
    Grzesiek

  • #19 19 Lis 2007 23:53
    J.A
    Poziom 27  

    lud_wik napisał:
    /.../Proszę o krótką wskazówkę, czy jest wogóle sens takiej realizacji
    i jeśli tak jak to rozwiązać

    sprawdz czas startu ukladow cpld takich jak seria max altery,
    xilinx na pewno ma ich odpowiednik, te kostki nie laduja swojego
    programu z zew. pamieci;
    ew. sprawdz, czy nie ma mozliwosci opoznienia startu
    zrodla nastawy czasowej, moze mozna go jakos przyblokowac
    po wlaczeniu zasilania;
    J.A

 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME