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 |
|
|
|
 |
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 |
|
|
|
 |
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: --- |
|
|
|
 |
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ć... |
|
|
|
|
 |
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 |
|
|
|
 |
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 |
|
|
|
 |
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 |
|
|
|
 |
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: --- |
|
|
|
 |
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 |
| Ostatnio zmieniony przez zaquadnik 01 Mar 07 07:02, w całości zmieniany 2 razy |
|
|
|
 |
Frubi

Pomógł: 2 razy Posty: 33 Skąd: Z siedziby GTW!
|
|
|
|
 |
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 |
|
|
|
 |
pawel


Pomógł: 5 razy Posty: 145 Otrzymał 4 piw(a) Skąd: Rybnik

|
|
|
|
 |
|
|