Strona Główna
FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy RegulaminRegulamin  GrupyGrupy
RejestracjaRejestracja  ZalogujZaloguj




mikrosterowniki.pl

Przyszłość jest w naszych rękach...
...bo przyszłość to robotyka.





Poprzedni temat «» Następny temat
Przesunięty przez: daniel93
24 Cze 08 10:45
Pokrótce o co tu chodzi ;)
Autor Wiadomość
zaquadnik 
Expert PLD



Pomógł: 1 raz
Posty: 50
Otrzymał 2 piw(a)
Skąd: Gdańsk
Wysłany: 28 Lut 07 07:46   Pokrótce o co tu chodzi ;)

Cóż, zasygnalizowałem potrzebę stworzenia na forum działu dotyczącego logiki programowalnej. Tutaj będą umieszczane posty dotyczące układów GAL, CPLD i FPGA. Jeśli ktos z was miał z tym do czynienia niech zasygnalizuje mi na forum lub na priva. Wkrótce postaram się napisać trochę o układach programowalnych :) Takie informacje ogólne na temat architektury i z czym to się je ;)
_________________
Życie byłoby prostsze, gdybyśmy mieli do niego kod źródłowy ;) A BASCOMem się brzydzę :P :P:P
Postaw piwo autorowi tego posta
 
 
zaquadnik 
Expert PLD



Pomógł: 1 raz
Posty: 50
Otrzymał 2 piw(a)
Skąd: Gdańsk
Wysłany: 28 Lut 07 10:44   

Dawno dawno temu, kiedy ludziki męczyły się ze składaniem układów ze scalakó TTL Intel wymyślił mikroprocesor i nagle pojawiły się nowe możliwości, bo powstał układ uniwersalny. Ale szybko okazało się, że programowe wykonywanie pewnych zadań jest dużo wolniejsze niż sprzętowe. Pojawił się pomysł, aby stworzyć uniwersalne układy cyfrowe, które dałoby się "zaprogramować" na wykonanie określonej funkcji. Tak powstały pierwsze układy, czyli PAL,PLA i GAL (Generic Array Logic). Składały się z programowalnej matrycy iloczynów logicznych z doprowadzonymi wejściami oraz komórek wyjściowych wyposarzonych w przerzutniki. Połączenia w matrycy a także wewnątrz komórek można było programować. Następnie układy programowalne ewoluowały w SPLD, CPLD i FPGA. Różnią się one między sobą nie tylko liczbą bramek, ale także architekturą. Z czasem jednak powstał problem sposobu implementacji układów logicznych w coraz bardziej złożonych układach PLD. Rysowanie schematów jest bardzo żmudne, więc leniwi ludzie wymyślili specjalne języki opisu sprzętu - HDL (Hardware Description Language). Chodzi w nich o to, że w języku przypominającym nieco język programowania dokonujemy precyzyjnego, behawioralnego (czyli tego jak się zachowuje) opisu sprzętu. Jednak należy pamiętać o tym, że nie jest to programowanie i filozofia pisania takiego opisu jest nieco inna niż filozofia programowania. Najpopularniejszymi językami HDL są VHDL i Verilog. Do programowania układów GAL stosuje się raczej język ABEL a nawet specjalną odmianę języka C (pisałem w czymś takim). Zamieszczam fragment wykładu dotyczący akurat układow PLD, powinien on nieco wyjaśnić. A poniżej kod w Verilogu opisujący licznik 74192 :)
Kod:

module licznik(P,Q,PL,TCU,TCD,CPU,CPD,MR);
   
    input [3:0] P;
    input PL,TCU,TCD,CPU,CPD,MR;
   
    output [3:0] Q;
   
    wire [3:0] P;
    wire PL,TCU,TCD,CPU,CPD,MR;
    wire general_clk;
   
    reg [3:0] Q;
   
    assign general_clk = (CPD) ? TCD : ((CPU) ? TCU : 1'b0);
   
    always @(negedge general_clk or negedge MR or posedge CPU or negedge PL or posedge CPD)
        begin
            if(~MR) Q = 4'b0000;
            else
                begin
                    if(CPU && PL)
                        begin
                            Q = Q + 1;
                            if (Q >= 4'b1010) Q = 4'b0000;
                        end
                    else if (CPD && PL)
                        begin
                            Q = Q - 1;
                            if (Q == 4'b1111) Q    = P;
                        end
                    else if(~PL) Q = P;
                    else Q = 4'b0000;
                end
        end

    endmodule


PLD.pdf
Pobierz Plik ściągnięto 384 raz(y) 292,47 KB

_________________
Życie byłoby prostsze, gdybyśmy mieli do niego kod źródłowy ;) A BASCOMem się brzydzę :P :P:P
Postaw piwo autorowi tego posta
 
 
Frubi 


Pomógł: 2 razy
Posty: 33
Skąd: Z siedziby GTW!
Wysłany: 01 Mar 07 08:05   

Dobrze, ale czym różni się taki układ od takiego mikroprocka? Czy to coś to jest to samo co te zwykłe mikroprocki tylko że ma własny język? I czy to coś da się programować w jakieś odmianie assemblera?
_________________
www.pajacyk.pl www.google.pl pl.wikipedia.org www.coderscity.net dioda.com.pl
Kontakt:
GG: 8738123
Jabber: frubi@chrome.pl
Tlen.pl: ---
Skype: ---
Postaw piwo autorowi tego posta
 
 
daniel93 



Pomógł: 11 razy
Posty: 390
Otrzymał 19 piw(a)
Skąd: Wujskie
Wysłany: 01 Mar 07 11:46   

Masz tablice bramek i możesz je dowolnie łączyć...
Postaw piwo autorowi tego posta
 
 
zaquadnik 
Expert PLD



Pomógł: 1 raz
Posty: 50
Otrzymał 2 piw(a)
Skąd: Gdańsk
Wysłany: 01 Mar 07 05:32   

Otóż logika programowalna różnie się od procesora tym, że w procesorze jego strukturę masz zdefiniowaną "na sztywno", nie możesz nic w sprzęcie zmienić. Przykładowo, jeśli procesor jest 8-mio bitowy to taki już pozostanie. Procesor jest tak zaprojektowany aby reagoewać na określone zbiory bitów zwane rozkazami. Może wykonywać program najczęściej tylko sekwencyjnie, przykładowo 1 mnożenie w procesorze 8051 trwa chyba 3 cykle maszynowe i tego nie przeskoczysz. Natomiast FPGA można wyobrazić sobie jako taki "pusty" scalak, w którym projektujesz sobie dowolny układ cyfrowy, może to być także dowolny procesor :) Dzięki temu można zaprojektować układ taki, który w jednym cylku zegara wykonuje 16 mnożeń (w wypadku XC3S400) :) Języki HDL polegają na tym, że Ty mówisz jak ma działać ukłąd, który masz na myśli. Przykładowo przerzutnik D słownie możemy opisać jako: jeśli linia rst (reset) jest w stanie niskim, to przerzutnik ma przyjąć wartość logiczną 0 w przeciwnym wypadku na narastającym zboczu zegara (clk) ma wczytać daną. Opis w VHDL tego będzie wyglądał mniej więcej tak:
Kod:


Przerzutnik_D : process (clk,rst) is
begin
       if rst = '0' then
             wyjscie <= '0';
       eslif rising_edge(clk) then
             wyjscie <= wejscie;
       end if;
end process przerzutnik_D;

Słowo komentarza do kodu. Pominąłem tu deklaracje portów, jest jednak ona bardzo ważna. Jeśli ktoś miałby ochotę zgłąbiać VHDL mogę trochę poprowadzić :)
W oprogramowaniu dostarczonym przez producenta FPGA znajduje się program zwany syntezerem. Jego zadaniem jest interpretacja tego, co mu nabazgraliśmy (w tym wypadku opisu przerzutnika D) i zamianie go na schemat układu cyfrowego. W tym wypadku oczywiście syntezer od razu zobaczy, że to jest przerzutnik D i w FPGA zostanie użyty jeden z przerzutników. Oczywiście każdy układ FPGA ma ograniczoną liczbę bramek, przerzutników, linii I/O i innych typu sprzętowe mnożniki, pamięci SRAM, interfejsy.
Po syntezie mamy gotowy schemat logiczny układu, który możemy sobie podejrzeć, o ile oprogramowanie takie coś umożliwia. Dalej następuje implementacja układu w konkretną matrycę FPGA. Program rozmieszcza poszczególne elementy w matrycy, a następnie wykonuje trasowanie połączeń. Po implementacji mamy gotowy plik binarny, który wgrywamy do FPGA celem ustawienia odpowiednich połączeń. Gwoli ścisłości, elementy w FPGA rozmieszczone są na sztywno, program do implementacji decyduje tylko których z nich użyć i ustawia odpowiednie połączenia.
_________________
Życie byłoby prostsze, gdybyśmy mieli do niego kod źródłowy ;) A BASCOMem się brzydzę :P :P:P
Postaw piwo autorowi tego posta
 
 
Ewin 


Posty: 13
Skąd: Chodzież
Wysłany: 01 Mar 07 05:48   

Ej ale tak serio moglbys wyjasnic jak takie uklady sie programoje za pomocą czego i link do jakiegoś kursu :) ew. książki?

@zaquadnik
nie nie tylko nie wyklad!!
_________________
3% procent tego forum to ja :)

http://bramki.freshh.com.pl <--> najlepsze bramki w sieci ;)
Ostatnio zmieniony przez Ewin 01 Mar 07 06:17, w całości zmieniany 1 raz  
Postaw piwo autorowi tego posta
 
 
zaquadnik 
Expert PLD



Pomógł: 1 raz
Posty: 50
Otrzymał 2 piw(a)
Skąd: Gdańsk
Wysłany: 01 Mar 07 05:58   

Cierpliwości, wieczorem napiszę co nieco. Szukam wykładu z podstaw VHDL. Bo na pewno gdzieś mam go w formie elektronicznej.
_________________
Życie byłoby prostsze, gdybyśmy mieli do niego kod źródłowy ;) A BASCOMem się brzydzę :P :P:P
Postaw piwo autorowi tego posta
 
 
Frubi 


Pomógł: 2 razy
Posty: 33
Skąd: Z siedziby GTW!
Wysłany: 01 Mar 07 06:32   

Wydaje się idealne, ale gdzie jest haczyk takiego cudeńka? I ile takie cudeńko kosztuje i ponawiam pytanie czy można jakimś assemblerem to obsłużyć? Tak że "ręcznie" się połączy wszystko w całość, np 1 operacja 1 połączenie itp. Wiesz na czym polegają assemblery?
_________________
www.pajacyk.pl www.google.pl pl.wikipedia.org www.coderscity.net dioda.com.pl
Kontakt:
GG: 8738123
Jabber: frubi@chrome.pl
Tlen.pl: ---
Skype: ---
Postaw piwo autorowi tego posta
 
 
zaquadnik 
Expert PLD



Pomógł: 1 raz
Posty: 50
Otrzymał 2 piw(a)
Skąd: Gdańsk
Wysłany: 01 Mar 07 06:36   

Ludzie, google istnieje i jest bardzo przydatne !!! Ewin, a co Ci nie pasuje w wykładzie ?? W skrypcie, który zamieszczę są wszystkie podstawowe informacje. Ale czytać się nie chce, co ? :> Za dużo literek, za mało obrazków ? :>
Okej, tu jest link do skryptu o VHDL:
VHDL
Tu linki do producentów FPGA:
Xilinx
Altera
Actel
Lattice

Link do zbioru darmowych IPcoers, czyli kodów HDL opisujących różne układy:
Opencores

Furbi, ja programuję tylko w asemblerze. Asembler to wydawanie rozkazów procesorowi, nie tworzenie połączeń ! Poza tym spójrz, że opis w VHDL jest przejrzysty i wygodny. Wyobrażasz sobie projektowanie procesora tworząc ręcznie połączenia ? :>
Co do kosztów, tu jest link do firmy, która robi moduły z FPGA : Propox
_________________
Życie byłoby prostsze, gdybyśmy mieli do niego kod źródłowy ;) A BASCOMem się brzydzę :P :P:P
Ostatnio zmieniony przez zaquadnik 01 Mar 07 07:02, w całości zmieniany 2 razy  
Postaw piwo autorowi tego posta
 
 
Frubi 


Pomógł: 2 razy
Posty: 33
Skąd: Z siedziby GTW!
Wysłany: 01 Mar 07 06:49   

Super, ale jak otworzyć plik *.ppt?
_________________
www.pajacyk.pl www.google.pl pl.wikipedia.org www.coderscity.net dioda.com.pl
Kontakt:
GG: 8738123
Jabber: frubi@chrome.pl
Tlen.pl: ---
Skype: ---
Postaw piwo autorowi tego posta
 
 
zaquadnik 
Expert PLD



Pomógł: 1 raz
Posty: 50
Otrzymał 2 piw(a)
Skąd: Gdańsk
Wysłany: 01 Mar 07 06:51   

Poprawiłem, pod linkiem VHDL znajduje się teraz plik .pdf :]
_________________
Życie byłoby prostsze, gdybyśmy mieli do niego kod źródłowy ;) A BASCOMem się brzydzę :P :P:P
Postaw piwo autorowi tego posta
 
 
pawel 



Pomógł: 5 razy
Posty: 145
Otrzymał 4 piw(a)
Skąd: Rybnik
Wysłany: 04 Mar 07 06:42   

polecam książkę "Układy programowalne" z wydawnictwa btc
_________________
www.robotyka.net.pl
www.peakoil.pl
Postaw piwo autorowi tego posta
 
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  


website uptime

Powered by phpBB modified by Przemo © 2003 phpBB Group - mangi
REKLAMAPorównywarka cen elektronikiLove and Lighttaniec z gwiazdamitaniec nowoczesny Warszawakredyt przez internetneroBearShare