Wykład 3. Języki Opisu Sprzętu. Prowadzący: dr inż. Andrzej Skoczeń Współrzędne: D , tel. w ,

Wielkość: px
Rozpocząć pokaz od strony:

Download "Wykład 3. Języki Opisu Sprzętu. Prowadzący: dr inż. Andrzej Skoczeń Współrzędne: D , tel. w ,"

Transkrypt

1 Języki Opisu Sprzętu Prowadzący: dr inż. Andrzej Skoczeń Współrzędne: D , tel. w , Tablice i wektory Reguły łączenia portów Wykład październik 2018 Przykład opóźnień Sterowanie przebiegiem czasu Modelowanie na poziomie przepływu danych Modelowanie na poziomie behawioralnym AGH WFiIS Informatyka Stosowana Języki Opisu Sprzętu 1

2 Wektor a Tablica Porównanie struktur danych: reg [3:0] val; reg val [3:0]; ERROR: ISim, Xilinx Line 28: Cannot assign to memory val directly Line 28: Cannot assign a packed type to an unpacked type Line 30: Cannot assign to memory val directly Line 30: Cannot access memory val directly Line 30: Illegal operand for operator + Line 30: Unpacked value/target cannot be used in assignment AGH, WFiIS, HDL 2

3 Wektor a Tablica Porównanie struktur danych: reg [3:0] val; reg val [3:0]; ISim, Xilinx ERROR: Line 22: Port val must not be declared to be an array Tablica może być portem w VHDL-u i SystemVerilog-u AGH, WFiIS, HDL 3

4 Tablica przypisania, odwołania ERROR: ISim, Xilinx Line 36: Cannot assign to memory array1 directly Line 36: Range is not allowed in a prefix Line 36: Unpacked value/target cannot be used in assignment ERROR: XST, Xilinx line 25: XST does not support arrays over 2 dimensions. AGH, WFiIS, HDL 4

5 Reguły łączenia portów Port należy sobie wyobrazić jako złożony z dwóch części: wewnętrznej i zewnętrznej. Części te są ze sobą połączone. Istnieją reguły łączenia portów, które muszą być spełnione kiedy moduł jest urealniany. Rozmiary portów wewnątrz i na zewnątrz mogą być różne, ale zgłaszane jest ostrzeżenie. Port może pozostać w stanie nie podłączonym. Jest to przydatne do celów testowania. Należy wtedy przy urealnianiu pozostawić wolne miejsce na liście portów. Reguły łączenia portów typ portu wewnętrznie zewnętrznie input węzeł rejestr, węzeł output rejestr, węzłowy węzeł inout węzeł węzeł Porty węzeł węzeł inout instancja moduł rejestr węzeł input węzeł rejestr węzeł węzeł output AGH WFiIS, IS, st.ii, sem.2 5

6 module Top; wire C_OUT; reg SUM; reg [3:0] A, B; reg C_IN; Porty Przykład nie poprawnego podłączenia wyjścia sumatora fulladd4 do zmiennej rejestrowej. fulladd4 fa0(sum, C_OUT, A, B, C_IN);... endmodule AGH WFiIS, IS, st.ii, sem.2 deklaracja zmiennych łączonych do urealnienia fa0 modułu fulladd4 Encounter RTL Compiler, Cadence fulladd4 fa0(sum, C_OUT, A, B, C_IN); ncelab: *W,CUVMPW (./error.v,6 15): port sizes differ in port connection. fulladd4 fa0(sum, C_OUT, A, B, C_IN); ncelab: *E,CUVMOT (./error.v,6 15): illegal output port specification. ncverilog: *E,ELBERR: Error during elaboration (status 1), exiting. module fulladd4(output [3:0] sum, output c_out, input [3:0] a, b, input c_in);... <wnętrze modułu>... endmodule Błąd związany ze złamaniem reguł łączenia końcówek. Kompilacja przebiegnie poprawnie ale w czasie elaboracji tzn. podczas łączenia modułów z urealnieniami występuje błąd wywołany tym, że zmienna SUM musi być typu wire. Dodatkowo pojawił o się ostrzeżenie związane z deklaracją SUM jako skalara. 6

7 Podłączanie portów przez kolejność Przy urealnianiu sygnały muszą wystąpić w tej samej kolejności jak na liście portów. module Top; //deklaracja zmiennych połączeń wire C_OUT; reg [3:0] A, B; wire SUM; reg C_IN; //urealnienie fulladd4 pod nazwą fa_ordered przez kolejność fulladd4 fa_ordered(sum, C_OUT, A, B, C_IN);... endmodule module fulladd4(output [3:0] sum, output c_out, input [3:0] a, b, input c_in);... <wnętrze modułu>... endmodule przypomnienie AGH WFiIS, IS, st.ii, sem.2 7

8 Podłączanie portów przez nazwę Pamiętanie kolejności jest nie praktyczne. Można dowolnie zmieniać kolejność na liście portów ale trzeba podać obie nazwy wg. następującej składni:.name_module(name_instance) Nazwa portu w definicji modułu Nazwa sygnału, do którego port ma być połączony w module urealniającym //urealnienie fulladd4 pod nazwą fa_byname przez nazwę fulladd4 fa_byname(.c_out(c_out),.sum(sum),.b(b),.c_in(c_in),.a(a)); Porty nie podłączane w ogóle nie muszą występować w urealnieniu. //urealnienie fulladd4 pod nazwą fa_byname przez nazwę fulladd4 fa_byname(.sum(sum),.b(b),.c_in(c_in),.a(a)); AGH WFiIS, IS, st.ii, sem.2 8

9 Nazwy hierarchiczne Nazwa hierarchiczna Jest to lista identyfikatorów oddzielonych kropkami, która umożliwia jednoznaczne zlokalizowanie urealnienia, sygnału lub zmiennej w pełnej hierarchii projektu. stimulus top-level n1 nand m1 SR_latch n2 nand Q, Qbar, S, R sygnały stimulus q, qbar, set, reset zmienne stimulus.q stimulus.qbar stimulus.set A, b sygnały stimulus.reset stimulus.m1.q stimulus.m1 stimulus.m1.qbar stimulus.m1.s stimulus.m1.r stimulus.m1.n1 stimulus.m1.n2 stimulus.m1.n1.a stimulus.m1.n1.b AGH WFiIS, IS, st.ii, sem.2 9

10 Opóźnienia bramek i węzłów module buf3del(); reg i, ctrl; bufif1 #(2) b1 (o1, i, ctrl); bufif1 #(2,3) b2 (o2, i, ctrl); bufif1 #(2,3,1) b3 (o3, i, ctrl); Incisive, Cadence initial begin i = 1'b0; ctrl = 1'b0; #2 ctrl = 1'b1; #6 i = 1'b1; #4 i = 1'b0; #6 i = 1'b1; #7 ctrl = 1'b0; end endmodule ctrl i o1 o2 o3 AGH, WFiIS, IS, st.i, HDL 10

11 Sterowanie przebiegiem czasu Jest to metoda określania chwil czasu symulacji, w których ma nastąpić wykonanie instrukcji proceduralnych. Verilog posiada trzy rodzaje sterowania przebiegiem czasu: timing control opóźnieniowy (delay-based) - określa czas upływający od napotkania instrukcji do jej wykonania (symbol: #) zdarzeniowy (event-based) - zdarzenie polegające na zmianie wartości rejestru lub węzła wyzwala wykonanie instrukcji or). Rozróżnia się sterowanie: zwykłe, z nazwą i wielokrotne czułe na poziom (level-sensitive) - wykonanie instrukcji czeka na wystąpienie określonego na sygnałach warunku (słowo kluczowe wait) Konstrukcje sterowania czasem są niesyntezowalne Timing controls i timing checks to są dwie zupełnie odmienne rodziny konstrukcji Veriloga AGH, WFiIS, HDL 11

12 Sterowanie przebiegiem czasu Opóźnieniowe Zdarzeniowe Czułe na poziom wait zwykłe wewnątrz przypisań zerowe zwykłe z nazwą wielokrotne AGH, WFiIS, HDL 12

13 Sterowanie opóźnieniowe delay-based Określa odstęp czasu między napotkaniem instrukcji, a je wykonaniem. Trzy sposoby specyfikowania: #<liczba> #<identyfikator> #<min:typ:max> użyta przez elaborator gdzie liczba określa liczbę jednostek czasu symulacji gdzie identyfikator określa parametr lub zmienną gdzie opcja linii komend decyduje, która z trzech liczb jest irun -maxdelays nazwa.v (-mindelays lub -typdelays) Trzy rodzaje: zwykłe (regular) wewnątrz przypisań (intra-assignment) zerowe (zero delay) Konstrukcja ta jest niesyntezowalna AGH, WFiIS, HDL 13

14 Opóźnienie zwykłe Określane dla lewej strony przypisania proceduralnego. //deklaracje parametrów localparam latency = 20, delta = 2; //deklaracje zmiennych rejestrowych reg a, y, z, p, q; initial begin a = 1 b0; //bez opóźnienia #10 y = 1 b1; //opóźnienie z liczbą; przypisanie po 10 //jednostkach czasu #latency z = 1 b0; //opóźnienie z identyfikatorem o 20 jedn. #(latency+delta) p = 1 b1;//opóźnienie z wyrażeniem o 22 jedn. #y a = a + 1 b1; //opóźnienie z identyfikatorem o wartość y #(4:5:6) q = 1 b0; //min:typ:max w zależności od opcji linii komend end initial $monitor($time," a=%d y=%d z=%d p=%d q=%d",a,y,z,p,q); initial #60 $finish; regular Incisive, Cadence Wynik symulacji: irun -mindelay regular.v 0 a=0 y=x z=x p=x q=x 10 a=0 y=1 z=x p=x q=x 30 a=0 y=1 z=0 p=x q=x 52 a=0 y=1 z=0 p=1 q=x 53 a=1 y=1 z=0 p=1 q=x 57 a=1 y=1 z=0 p=1 q=0 AGH, WFiIS, HDL 14

15 Opóźnienie zwykłe Przykład popsuty tak aby y było nie zainicjowane y=x w momencie gdy służy ono do wyznaczenia opóźnienia: //deklaracje parametrów localparam latency = 20, delta = 2; //deklaracje zmiennych rejestrowych reg a, y, z, p, q; initial begin a = 1 b0; //bez opóźnienia #latency z = 1 b0; //opóźnienie z identyfikatorem o 20 jedn. #(latency+delta) p = 1 b1;//opóźnienie z wyrażeniem o 22 jedn. #y a = a + 1 b1; //opóźnienie z identyfikatorem o wartość y #(4:5:6) q = 1 b0; //min:typ:max w zależności od opcji linii komend #10 y = 1 b1; //opóźnienie z liczbą; przypisanie po 10 //jednostkach czasu end initial $monitor($time," a=%d y=%d z=%d p=%d q=%d",a,y,z,p,q); initial #60 $finish; regular Incisive, Cadence Wynik symulacji: irun -typdelay regular.v 0 a=0 y=x z=x p=x q=x 20 a=0 y=x z=0 p=x q=x 42 a=1 y=x z=0 p=1 q=x 47 a=1 y=x z=0 p=1 q=0 57 a=1 y=1 z=0 p=1 q=0 AGH, WFiIS, HDL 15

16 Opóźnienie zwykłe Przykład z zamienionym blokiem sekwencyjnym na blok równoległy: //deklaracje parametrów localparam latency = 20, delta = 2; //deklaracje zmiennych rejestrowych reg a, y, z, p, q; initial fork a = 1 b0; //bez opóźnienia #latency z = 1 b0; //opóźnienie z identyfikatorem o 20 jedn. #(latency+delta) p = 1 b1;//opóźnienie z wyrażeniem o 22 jedn. #y a = a + 1 b1; //opóźnienie z identyfikatorem o wartość y #(4:5:6) q = 1 b0; //min:typ:max w zależności od opcji linii komend #10 y = 1 b1; //opóźnienie z liczbą; przypisanie po 10 //jednostkach czasu join initial $monitor($time," a=%d y=%d z=%d p=%d q=%d",a,y,z,p,q); initial #25 $finish; regular Incisive, Cadence Wynik symulacji: irun -maxdelay regular.v 0 a=1 y=x z=x p=x q=x 6 a=1 y=x z=x p=x q=0 10 a=1 y=1 z=x p=x q=0 20 a=1 y=1 z=0 p=x q=0 22 a=1 y=1 z=0 p=1 q=0 AGH, WFiIS, HDL 16

17 Opóźnienie wewnątrz przypisań Określane dla prawej strony przypisania proceduralnego. intra-assignmet //opóźnienie wewnątrz przypisań initial begin x = 0; z = 0;... y = #5 x + z; end //metoda równoważna za pomocą opóźnienia zwykłego initial begin x = 0; z = 0; temp_xz = x + z;... #5 y = temp_xz; end Konstrukcja ta jest niesyntezowalna od razu weź x i z i dodaj je; następnie czekaj 5 jednostek czasu i dopiero wykonaj przypisanie wartość x+z w chwili bieżącej wstaw do zmiennej tymczasowej nawet jeśli x i z uległy zmianie pomiędzy chwila 0 i 5, to nie ma to wpływu na wartość y AGH, WFiIS, HDL 17

18 Opóźnienie zerowe Jest metodą na określenie, które instrukcje spośród tych, które wykonują się w tej samej chwili czasu symulacji, mają być wykonane jako ostatnie. initial begin x = 0; y = 0; end initial begin #0 x = 1; //zerowe opóźnienie #0 y = 1; end //czyli x i y będą mieć wartości 1 Konstrukcja ta jest niesyntezowalna AGH, WFiIS, HDL 18

19 Sterowanie zdarzeniowe event-based Zdarzenie jest zmianą wartości rejestru lub węzła. Zdarzenia mogą wyzwalać wykonanie instrukcji lub bloku instrukcji. Są trzy rodzaje sterowania zdarzeniowego: zwykłe (regular) z nazwą (named) wielokrotne (or) AGH, WFiIS, HDL 19

20 Zwykłe sterowanie zdarzeniowe Jest określane za pomocą który umożliwia sterowanie wrażliwe na zbocze sygnału. regular //przypisanie q = d wykonuje się q = d; //każdej zmianie sygnału clock) q = d; //narastającym zboczu sygnału clock) q = d; //opadającym zboczu sygnału clock q clock) d; //narastającym zboczu sygnału clock //jednak obliczenie jego wartości jest wykonane natychmiast Uwagi: posedge narastające zbocze sygnału to zmiana jego wartości z do 0 1, x, z x 1 z 1 Konstrukcja ta jest niesyntezowalna negedge opadające zbocze sygnału to zmiana jego wartości z do 1 0, x, z x 0 z 0 AGH, WFiIS, HDL 20

21 Sterowanie zdarzeniowe z nazwą W Verilogu można zadeklarować zdarzenie i potem wyzwalać i rozpoznawać jego zajście. Zdarzenie nie przechowuje danych. Deklarowane jest za pomocą słowa kluczowego event. Wyzwalane jest za pomocą symbolu ->, a rozpoznawane named event received; bufor danych przechowuje dane po przybyciu ostatniego pakietu danych //deklaracja zdarzenia received clock) //wykonaj na zboczach narastających begin if (last_data_packet) ->received; jeśli to ostatni pakiet wyzwól zdarzenie received end //oczekuj na zdarzenie received data_buf={data_pkt[0],data_pkt[1],data_pkt[2],data_pkt[3]}; jeśli zdarzenie received zostało wyzwolone to zapisz wszystkie cztery pakiety w buforze danych za pomocą operatora konkatenacji Konstrukcja ta jest niesyntezowalna AGH, WFiIS, HDL 21

22 Sterowanie zdarzeniowe wielokrotne or Umożliwia wyzwalanie zmianą jednego z wielu sygnałów lub zdarzeń rozdzielonych słowem kluczowym or lub przecinkiem,. Lista tych sygnałów lub zdarzeń jest też nazywana listą wrażliwości. Verilog-1995 //zatrzask czuły poziomem z asynchronicznym kasowaniem or clock or d) //czekaj na zmianę tych sygnałów begin if (reset) //jeśli reset=1, q ustaw na 0 q = 1 b0; else if(clock) // jeśli clock=1, zatrzaśnij wejście q = d; end clock, d) begin if (reset) q = 1 b0; else if(clock) q = d; end Verilog-2001 AGH, WFiIS, HDL 22

23 Sterowanie poziomem wait Polega na oczekiwaniu aż spełniony zostanie pewien warunek zanim instrukcja lub ich grupa zostanie wykonana. Do tego celu używa się słowa kluczowego wait. //jeśli count_enable=0 to count nie zmienia się //jeśli count_enable=1 to count jest inkrementowane co 20 jed. always wait (count_enable) #20 count = count + 1; Konstrukcja ta jest niesyntezowalna AGH, WFiIS, HDL 23

24 Modelowanie przepływu danych Verilog pozwala na projektowanie w terminach przepływu danych między rejestrami i jakim procesom dane podlegają. Przypisanie ciągłe Jest podstawowym poleceniem modelowania na poziomie przepływu danych używanym do sterowania (ustawiania) wartości w węzłach. Przypisanie ciągłe zastępuje więc bramki. assign <opóźnienia> <zmienna_węzłowa> = <wyrażenie> Charakterystyka przypisania ciągłego: Po lewej stronie występuje skalar lub wektor węzłów. lub ich połączenie (concatenation). Jest obliczane tuż po wystąpieniu zmiany jednego z argumentów po stronie prawej i uzyskana wartość jest przypisywana do strony lewej. Argumenty po prawej stronie mogą być rejestrami lub węzłami lub wywołaniami funkcji. Mogą być skalarne lub wektorowe. Opóźnienia określają moment przypisania obliczonej wartości. data flow level AGH, WFiIS, HDL 24

25 Przypisanie ciągłe - przykłady //przypisanie ciągłe; out, i1, i2 - to węzły skalarne assign out = i1 & i2; data flow level //przypisanie ciągłe dla wektorów węzłów; //addr to 16-bitowy wektor węzłów, //addr1 i addr2 to 16-bitowe wektory rejestrowe assign addr[15:0] = addr1[15:0] ^ addr2[15:0]; //lub assign addr = addr1 ^ addr2; // przypisanie ciągłe z wykorzystaniem operatora //dołączania po stronie prawej assign {out,addr} = 17 h1ffff; //niejawne przypisanie ciągłe wire a = b && c; AGH, WFiIS, HDL 25

26 module mux2to1 (output out, input i0, i1, s); endmodule assign out = ~s & i0 s & i1; module mux2to1 (output out, input i0, i1, s); endmodule Multiplekser assign out = s?i1:i0; module mux4to1 (output out, input i0, i1, i2, i3, s1, s0); endmodule assign out = s1?(s0?i3:i2):(s0?i1:i0); module mux4to1 #(parameter nb=4) (output [nb-1:0] out, input [nb-1:0] i0, i1, i2, i3, input [1:0] adr); assign out = adr[1]?(adr[0]?i3:i2):(adr[0]?i1:i0); endmodule AGH, WFiIS, HDL 26

27 Projektowanie układów kombinacyjnych Sumator pełny a b c_in sum c_out c_out = a b c_in + a b c_in + a b = a^b c_in + a b c_in a b sum = a^b^c_in c_in a b AGH, WFiIS, HDL 27

28 Sumator pełny 1 bitowy gate level module fulladd1(output sum, c_out, input a, b, c_in); wire s1, c1, c2; endmodule xor (s1, a, b); and (c1, a, b); xor (sum, s1, c_in); and (c2, s1, c_in); or (c_out, c2, c1); AGH, WFiIS, HDL 28

29 Sumator pełny 1 bitowy data flow level //1-bitowy sumator pełny przy użyciu dataflow module fulladd4 (output sum, output c_out, input a, b, input c_in); endmodule //funkcja sumatora pełnego assign {c_out, sum} = a + b +c_in; AGH, WFiIS, HDL 29

30 Sumator pełny 4 bitowy module fulladd4(output [3:0] sum, output c_out, input [3:0] a, b, input c_in); wire c1, c2, c3; fulladd1 fa0( sum[0], c1, a[0], b[0], c_in); fulladd1 fa1(sum[1], c2, a[1], b[1], c1); fulladd1 fa2(sum[2], c3, a[2], b[2], c2); fulladd1 fa3(sum[3], c_out, a[3], b[3], c3); endmodule gate level a[0] b[0] a[1] b[1] a[2] b[2] a[3] b[3] c_in fulladd1 fa0 c1 fulladd1 fa1 c2 fulladd1 fa2 c3 fulladd1 fa3 c_out sum[0] sum[1] sum[2] sum[3] AGH, WFiIS, HDL 30

31 Sumator pełny 4 bitowy //4-bitowy sumator pełny przy użyciu dataflow module fulladd4 (output [3:0] sum, output c_out, input [3:0] a, b, input c_in); endmodule //funkcja sumatora pełnego assign {c_out, sum} = a + b +c_in; data flow level a[0] b[0] a[1] b[1] a[2] b[2] a[3] b[3] c_in fulladd1 fa0 c1 fulladd1 fa1 c2 fulladd1 fa2 c3 fulladd1 fa3 c_out sum[0] sum[1] sum[2] sum[3] AGH, WFiIS, HDL 31

32 Zatrzask d 1 0 q Aktywny stanem niskim sygnału bramki g module latchn (input d, g, output q); assign q = g?q:d; endmodule g Incisive, Cadence d g q XST, Xilinx WARNING: Found 1-bit latch for signal <qm>. Latches may be generated from incomplete case or if statements. We do not recommend the use of latches in FPGA/CPLD designs, as they may lead to timing problems. AGH, WFiIS, HDL 32

33 Przerzutnik Master negative 1 qm Slave positive 0 1 q Aktywny zboczem narastającym sygnału zegara clk module ffms (input d, clk, output q); //master assign qm = clk?qm:d; d 0 //slave assign q = clk?qm:q; clk endmodule Incisive, Cadence d clk q AGH, WFiIS, HDL 33

34 Instrukcja initial Określa blok initial zawierający pojedynczą lub wiele zgrupowanych instrukcji behawioralnych ujętych w blok sekwencyjny lub równoległy. Nie posiada żadnych parametrów. Wykonanie bloku initial rozpoczyna się w chwili zerowej i odbywa się tylko jeden raz (nigdy potem nie jest powtarzane). Jeśli występuje wiele bloków initial to wszystkie rozpoczynają się wykonywać równocześnie w chwili zerowej. Wykonanie każdego z nich odbywa się niezależnie. Blok initial jest używany w symulacji do inicjalizacji, monitorowania, generowania przebiegów i innych procesów wykonywanych tylko raz. Przykład bloku initial : initial begin a = 1'b1; forever #10 a = ~a; end Konstrukcja ta jest niesyntezowalna AGH, WFiIS, HDL 34

35 Instrukcja always Określa blok always zawierający pojedynczą lub wiele zgrupowanyvch instrukcji behawioralnych ujętych w blok sekwencyjny lub równoległy. Parametrem jest lista zdarzeń, które wyzwalają aktywność opisaną w bloku należącym do tej instrukcji. Listę tą nazywamy listą czułości lub wrażliwości procesu. Wykonanie bloku always zaczyna się w chwili zerowej i jest wykonywany cały czas jak pętla, której kolejny cykl rozpoczynany jest w chwili zajścia zdarzenia opisanego na liście wrażliwości. Blok always używany jest do modelowania stale powtarzanej aktywności układu cyfrowego. W zależności od sposobu użycia może służyć do modelowania układów kombinacyjnych lub sekwencyjnych. Każda konstrukcja initial i always reprezentuje oddzielny strumień aktywności rozpoczynający się w zerowej chwili czasu symulacji. Konstrukcje te nie mogą być zagnieżdżane. AGH, WFiIS, HDL 35

36 Instrukcja always Przykład bloku always: clk, posedge rst) if(rst) q <= 1 b0; else q <= d; Jest to podstawowy model przerzutnika D z kasowaniem asynchronicznym. AGH, WFiIS, HDL 36

37 Bloki Aby initial i always mogły działać na większych fragmentach kodu niż jedna linia potrzebne są bloki służące do zgrupowaniu pojedynczych instrukcji aby mogły działać jak jedna. Są dwa rodzaje bloków: Sekwencyjny begin - end Równoległy fork - join AGH, WFiIS, HDL 37

38 Blok sekwencyjny Poszczególne instrukcje są wykonywane w kolejności ich napotkania. Następna może być wykonana tylko po ukończeniu poprzedniej. Jeśli stosowane są opóźnienia lub zdarzenia, czas jest obliczany względem chwili ukończenia wykonania poprzedniej instrukcji. //bez opóźnień reg x, y; reg [1:0] z, w; initial begin x = 1 b0; y = 1 b1; z = {x, y}; w = {y, x}; end //z opóźnieniami reg x, y; reg [1:0] z, w; initial begin x = 1 b0; //zakończono dla time=0 #5 y = 1 b1; //zakończono dla time=5 #10 z = {x, y}; //zakończono dla time=15 #20 w = {y, x}; //zakończono dla time=35 end W obu przypadkach wyniki są takie same: x=1 b0, y=1 b1, z=2 b01, w=2 b10. W pierwszym przypadku dla czasu symulacji time=0, a w drugim time=35. AGH, WFiIS, HDL 38

39 Blok sekwencyjny - przykład module stimulus; reg x, y, a, b, m; initial m = 1 b0; //jedna instrukcja; nie wymaga grupowania initial begin #5 a = 1 b1; //wiele instrukcji; wymaga grupowania #25 b = 1 b0; end Kolejność wykonania initial begin #10 x = 1 b0; #25 y = 1 b1; end initial #50 $finish endmodule Jednostka czasu Wykonana instrukcja 0 m = 1 b0; 5 a = 1 b1; 10 x = 1 b0; 30 b = 1 b0; 35 y = 1 b1; 50 $finish AGH, WFiIS, HDL 39

40 Blok równoległy Poszczególne instrukcje są wykonywane równocześnie. Kolejność instrukcji jest określona przez sterowanie opóźnieniami i zdarzeniami przypisanymi do każdej instrukcji. Jeśli stosowane są opóźnienia lub zdarzenia, czas jest obliczany względem chwili wejścia do bloku. Porządek napisania poszczególnych instrukcji jest bez znaczenia. reg x, y, [1:0] z, w; initial begin x = 1 b0; //zakończono dla time=0 #5 y = 1 b1; //zakończono dla time=5 #10 z = {x, y}; //zakończono dla time=15 #20 w = {y, x}; //zakończono dla time=35 end reg x, y, [1:0] z, w; initial fork x = 1 b0; //zakończono dla time=0 #5 y = 1 b1; //zakończono dla time=5 #10 z = {x, y}; //zakończono dla time=10 #20 w = {y, x}; //zakończono dla time=20 join W obu przypadkach wyniki są takie same: x=1 b0, y=1 b1, z=2 b01, w=2 b10. W pierwszym przypadku dla czasu symulacji time=35, a w drugim time=20. Konstrukcja ta jest niesyntezowalna 40 AGH, WFiIS, HDL

41 Blok równoległy Blok równoległy zawsze powoduje powstanie hazardu, ponieważ wszystkie instrukcje wykonywane są równocześnie więc od symulatora zależy kiedy naprawdę procesor wykona poszczególne instrukcje. //bez opóźnień reg x, y; reg [1:0] z, w; initial fork join x = 1 b0; y = 1 b1; z = {x, y}; w = {y, x}; Jeśli najpierw wykona x=1 b0 i y=1 b1 to wynik będzie taki sam jak dla bloku sekwencyjnego. Jednak wynik będzie z=2 bxx i w=2 bxx jeśli przypisania x=1 b0 i y=1 b1 wykonają się na końcu. Tego nie można przewidzieć. AGH, WFiIS, HDL 41

42 initial begin Zagnieżdżanie bloków Bloki mogą być dowolnie zagnieżdżane. Praktyczne znaczenie może mieć umieszczenie bloku równoległego wewnątrz bloku sekwencyjnego. end x = 1 b0; fork #5 y = 1 b1; #10 z = {x, y}; join #20 w = {y, x} Blok fork zostanie zakończony po 10 jednostce czasu więc przypisanie do w zajdzie w 30 jednostce czasu. AGH, WFiIS, HDL 42

43 Blokom można nadawać nazwy. Stają się wtedy częścią hierarchii projektu. Odwołania do zmiennych mogą być wykonywane za pomocą nazw hierarchicznych. Bloki z nazwą umożliwiają: definiowanie zmiennych lokalnych, przerywanie wykonania kodu instrukcją disable, tworzenie pętli generate. module top; initial begin: block1 //blok sekwencyjny o nazwie block1 integer i; to jest zmienna statyczna i lokalna w block1... end initial fork: block2 //blok równoległy o nazwie block2 reg i; to jest zmienna statyczna i lokalna w block2... join endmodule Blok z nazwą AGH, WFiIS, HDL 43

44 Wykonanie bloków z nazwą można zatrzymywać. Służy do tego słowo kluczowe disable. Za pomocą tej instrukcji można: przerwać wykonywanie pętli, obsłużyć błąd lub sterować wykonaniem fragmentu kodu. reg [15:0] flag; integer i; //indeks Blok z nazwą znajdź pierwszy bit o wartości 1 w zmiennej flag initial begin flag = 16 b 0010_0000_0000_0000; i = 0; begin: block1 //blok główny o nazwie block1 while (i < 16) begin if (flag[i]) begin $display( natrafiono bit 1 na pozycji %d,i); disable block1; end i=i+1; end end end AGH, WFiIS, HDL 44

45 Przypisanie proceduralne Służy do zmiany wartości zmiennych typu reg, integer, real i time. Takie zmienne mogą zmienić swoją wartość tylko przez kolejne przypisanie proceduralne. <lwartość> = <wyrażenie> <lwartość> - jest to: zmienna typu reg, integer, real lub time lub element pamięci; pojedynczy bit (np. Addr[0]); grupa bitów zmiennej wektorowej (np. Addr[31:16]); połączenie kilku powyższych. Są dwa rodzaje przypisań proceduralnych: blokujące, nieblokujące. AGH, WFiIS, HDL 45

46 Blokujące przypisania proceduralne Zwane też sekwencyjnymi Są wykonywane w kolejności w jakiej pojawiają się w bloku sekwencyjnym. reg x, y, z; reg [15:0] reg_a, reg_b; integer count; initial begin x = 1 b0; y = 1 b1; z = 1 b1; //przypisania skalarne count = 0; //przypisanie do zmiennej integer reg_a = 16 b0; reg_b = reg_a; //inicjacja wektorów #15 reg_a[2] = 1 b1; //przypisanie do jednego bitu z opóźnieniem #10 reg_b[15:13] = {x,y,z}; //przypisanie wyniku konkatenacji //do części wektora count = count + 1; //ponowne przypisanie do zmiennej integer end W tym przykładzie przypisania: od x = 1 b0 do reg_b = reg_a są wykonywane w chwili 0, reg_a[2] = 1 b1 w chwili 15, reg_b[15:13] = {x,y,z} i inkrementacja count w chwili 25. AGH, WFiIS, HDL 46

47 Przypisania blokujące Przypisania blokujące nazywają się tak, gdyż blokują wykonanie następnej instrukcji proceduralnej w bloku sekwencyjnym do chwili, aż przypisanie rzeczywiście zostanie wykonane. Jest to tak jak spodziewamy się w typowym języku proceduralnym jak C. Jeśli użyjemy opóźnienia to wykonanie będzie blokowane aż określony czas opóźnienia upłynie. Jest to bezużyteczne przy syntezie ale bardzo potrzebne przy tworzeniu modułów testujących. Z punktu widzenia syntezy lepszą nazwą jest przypisanie natychmiastowe. AGH, WFiIS, HDL 47

48 Nieblokujące przypisania proceduralne Zwane też równoczesnymi lub kolejkowanymi Pozwalają na kolejkowanie przypisań bez powstrzymywania wykonywania instrukcji występujących w bloku sekwencyjnym. Do zapisu nieblokujących dla mniejszy lub równy ). przypisań stosuje się operator <= (taki sam jak Koniecznie należy je stosować przy modelowaniu elementów sekwencyjnych (przerzutników). AGH, WFiIS, HDL 48

49 Przypisania nieblokujące Przypisania nieblokujące nazywają się tak, gdyż nie blokują wykonania następnej instrukcji proceduralnej w bloku sekwencyjnym. Niezależnie od tego czy użyto opóźnienia czy nie wykonanie jest kontynuowane dalej. Jest to inaczej niż w typowym języku proceduralnym jak C. Prawa strona przypisania jest obliczana natychmiast, ale uzyskana wartość nie jest przypisywana do strony lewej aż dopiero po zakończeniu wykonania całego bloku. Z punktu widzenia syntezy lepszą nazwa byłoby przypisanie trochę odłożone lub przypisanie późne. AGH, WFiIS, HDL 49

50 Nieblokujące przypisania proceduralne reg x, y, z; reg [15:0] reg_a, reg_b; integer count; initial begin x = 1 b0; y = 1 b1; z = 1 b1; //przypisania skalarne count = 0; //przypisanie do zmiennej integer reg_a = 16 b0; reg_b = reg_a; //inicjacja wektorów reg_a[2] <= #15 1 b1; //przypisanie do jednego bitu z opóźnieniem reg_b[15:13] <= #10 {x,y,z}; //przypisanie wyniku dołączania //do części wektora count <= count + 1; //ponowne przypisanie do zmiennej integer end W tym przykładzie przypisania: od x = 0 do reg_b = reg_a są wykonywane sekwencyjnie w chwili 0. Następnie wykonywane są trzy przypisania nieblokujące. Symulator wstawia je do kolejki i nie czekając na ich wykonanie przechodzi do następnej instrukcji. Przypisanie: reg_a[2] = 1 b1 zostanie wykonane w chwili 15, reg_b[15:13] = {x,y,z} w chwili 10, inkrementacja count w chwili 0 ale dopiero po wykonaniu przypisań blokujących przewidzianych na chwile 0. AGH, WFiIS, HDL 50

51 Reguły stosowania przypisań blokujących i nieblokujących Podstawowe zasady syntezowalności kodu Zawsze używaj przypisań blokujących (=) w blokach always przeznaczonych do tworzenia układów kombinacyjnych, Zawsze używaj przypisań nieblokujących (<=) w blokach always przeznaczonych do tworzenia układów sekwencyjnych, Nie mieszaj obu typów przypisań w jednym bloku always, Nie wykonuj przypisań do tej samej zmiennej w dwóch różnych blokach always. AGH, WFiIS, HDL 51

52 reg x, y,z; initial begin x = #5 1'b0; //x otrzymuje wartość 0 w chwili 5 y = #3 1'b1; //y otrzymuje wartość 1 w chwili 8 z = #6 1'b0; //z otrzymuje wartość 0 w chwili 14 end x y z Incisive, Cadence AGH, WFiIS, HDL 52

53 reg x, y,z; initial begin x <= #5 1'b0; //x otrzymuje wartość 0 w chwili 5 y <= #3 1'b1; //y otrzymuje wartość 1 w chwili 3 z <= #6 1'b0; //z otrzymuje wartość 0 w chwili 6 end x y z Incisive, Cadence AGH, WFiIS, HDL 53

54 reg a, b,c, d; initial begin a <= #5 1'b0; //a otrzymuje wartość 0 w chwili 5 b = #3 1'b1; //b otrzymuje wartość 1 w chwili 3 c <= #6 1'b0; //c otrzymuje wartość 0 w chwili 9 d = #7 1'b0; //d otrzymuje wartość 0 w chwili 10 end a b c d Incisive, Cadence AGH, WFiIS, HDL 54

55 reg a, b,c, d; initial begin a = #5 1'b0; //a otrzymuje wartość 0 w chwili 5 b <= #3 1'b1; //b otrzymuje wartość 1 w chwili 8 c = #6 1'b0; //c otrzymuje wartość 0 w chwili 11 d <= #7 1'b0; //d otrzymuje wartość 0 w chwili 18 end a b c d Incisive, Cadence AGH, WFiIS, HDL 55

56 Nieblokujące przypisanie proceduralne (c.d.) Stosowane są jako metoda modelowania równoczesnego transferu danych kilkoma różnymi drogami zachodzącego w momencie wystąpienia pewnego zdarzenia. (posedge clock) begin reg1 <= #1 in1; reg2 clock) in2 ^ in3; reg3 <= #1 reg1; //stara wartość reg1 end Przy każdym narastającym zboczu zegara zachodzi następująca sekwencja zdarzeń: Odczytane zostają wartości zmiennych in1, in2, in3, reg1 występujących po stronie prawej przypisań. Wyrażenia występujące z prawej strony są obliczane, a ich wyniki zapamiętywane w tymczasowych zmiennych symulatora. Operacje wpisania uzyskanych wyników do strony lewej są umieszczane w kolejce wykonania pod czasami określonymi w instrukcjach. Tzn. zapis zmiennych reg1 i reg3 jest zaplanowany na chwilę czasu 1 po narastającym zboczu zegara, a zapis zmiennej reg2 odbędzie się w chwili wystąpienia opadającego zbocza zegara. Operacje przypisania są wykonywane w przewidzianym czasie. Faktyczna kolejność przestaje być istotna gdyż przypisywane wartości są już obliczone i czekają. W ten sposób wiadomo, że w reg3 znajdzie się stara wartość reg1 nawet jeśli przypisanie do reg1 nastąpi wcześniej. AGH, WFiIS, HDL 56

57 Nieblokujące przypisanie proceduralne (c.d.) Dwa równoczesne bloki always z przypisaniami sekwencyjnymi clock) a = b; clock) b = a; Występuje hazard. Nie wiemy, która z operacji zostanie wykonana wcześniej. Zawartości rejestrów nie zostaną wymienione, ale w obydwu znajdzie się ta sama wartość tzn. początkowa wartość a lub b, zależnie od konkretnej implementacji Veriloga. AGH, WFiIS, HDL 57

58 Nieblokujące przypisanie proceduralne (c.d.) Dwa równoczesne bloki always z przypisaniami równoczesnymi clock) a <= b; clock) b <= a; Zawartości zmiennych a i b zostaną zamienione na każdym narastającym zboczu zegara, gdyż operacje są wykonywane z pośredniczeniem przez zmienne tymczasowe. To samo można osiągnąć inaczej, ale dłużej przy użyciu zmiennych tymczasowych. AGH, WFiIS, HDL 58

59 Nieblokujące przypisanie proceduralne (c.d.) Stosowanie przypisań nie blokujących wyklucza potrzebę używania zmiennych tymczasowych. clock) begin temp_a = a; temp_b = b; a = temp_b; b = temp_a; end Stosowanie przypisań równoczesnych jest rekomendowane gdyż zabezpiecza przed powstaniem hazardu tzn. rezultat nie zależy od kolejności wykonania operacji. Z drugiej strony przypisania równoczesne mogą spowodować spowolnienie symulacji i większe zużycie pamięci. AGH, WFiIS, HDL 59

60 Przypisania z opóźnieniami Pięć przypadków: #d a = b; LHS Blocking Left Hand Side a = #d b; RHS Blocking Right Hand Side #d a <= b; LHS Nonblocking Left Hand Side a <= #d b; RHS Nonblocking Right Hand Side assign #d a = b; Continuous AGH, WFiIS, HDL 60

Projektowanie Scalonych Systemów Wbudowanych VERILOG

Projektowanie Scalonych Systemów Wbudowanych VERILOG Projektowanie Scalonych Systemów Wbudowanych VERILOG OPIS BEHAWIORALNY proces Proces wątek sterowania lub przetwarzania danych, niezależny w sensie czasu wykonania, ale komunikujący się z innymi procesami.

Bardziej szczegółowo

Język HDL - VERILOG. (Syntetyzowalna warstwa języka) Hardware Description Language Krzysztof Jasiński PRUS PRUS

Język HDL - VERILOG. (Syntetyzowalna warstwa języka) Hardware Description Language Krzysztof Jasiński PRUS PRUS Język HDL - VERLOG Hardware Description Language (Syntetyzowalna warstwa języka) RUS RUS VERLOG rzegląd zagadnień RUS RUS prowadzenie do języka Reprezentacja układu cyfrowego w Verilogu opis strukturalny

Bardziej szczegółowo

Wykład 4. Języki Opisu Sprzętu

Wykład 4. Języki Opisu Sprzętu Języki Opisu Sprzętu Prowadzący: dr inż. Andrzej Skoczeń Współrzędne: D-10 222, tel. w. 28-72, e-mail: skoczen@fis.agh.edu.pl Wprowadzenie do Veriloga Przypisania proceduralne (c. d.) Wykład 4 2017 8 listopad

Bardziej szczegółowo

Wykład 4. Języki Opisu Sprzętu. Prowadzący: dr inż. Andrzej Skoczeń Współrzędne: D , tel. w ,

Wykład 4. Języki Opisu Sprzętu. Prowadzący: dr inż. Andrzej Skoczeń Współrzędne: D , tel. w , Języki Opisu Sprzętu Prowadzący: dr inż. Andrzej Skoczeń Współrzędne: D-10 222, tel. w. 28-72, e-mail: skoczen@fis.agh.edu.pl Przypisania nieblokujące Stosowanie opóźnień w przypisaniach Wykład 4 2018

Bardziej szczegółowo

Język HDL - VERILOG. (Syntetyzowalna warstwa języka) Hardware Description Language Krzysztof Jasiński PRUS PRUS

Język HDL - VERILOG. (Syntetyzowalna warstwa języka) Hardware Description Language Krzysztof Jasiński PRUS PRUS Język HDL - VERLOG Hardware Description Language (Syntetyzowalna warstwa języka) RUS RUS Język VERLOG w praktyce RUS RUS VERLOG Specyfikacja układów kombinacyjnych RUS RUS Operator warunkowy Conditional_expression?

Bardziej szczegółowo

Wykład 2. Języki Opisu Sprzętu. Prowadzący: dr inż. Andrzej Skoczeń Współrzędne: D , tel. w ,

Wykład 2. Języki Opisu Sprzętu. Prowadzący: dr inż. Andrzej Skoczeń Współrzędne: D , tel. w , Języki Opisu Sprzętu Prowadzący: dr inż. Andrzej Skoczeń Współrzędne: D-10 222, tel. w. 28-72, e-mail: skoczen@fis.agh.edu.pl Dwa oblicza systemu cyfrowego Opcje projektowe dla systemu cyfrowego Wykład

Bardziej szczegółowo

Systemy wbudowane. Projektowanie systemów wbudowanych na bazie układów CPLD/FPGA Język opisu sprzętu Verilog cz.1

Systemy wbudowane. Projektowanie systemów wbudowanych na bazie układów CPLD/FPGA Język opisu sprzętu Verilog cz.1 Systemy wbudowane Projektowanie systemów wbudowanych na bazie układów CPLD/FPGA Język opisu sprzętu Verilog cz.1 System Quartus II Opis projektu Tekstowy (język opisu sprzętu np. Verilog) Graficzny Wykresy

Bardziej szczegółowo

Laboratorium Podstaw Techniki Cyfrowej

Laboratorium Podstaw Techniki Cyfrowej Laboratorium Podstaw Techniki Cyfrowej Ćwiczenie 5: Wprowadzenie do języków opisu sprzętu 1. Języki opisu sprzętu Języki opisu sprzętu(hdl Hardware Description Language) to języki słuŝące do opisu układów

Bardziej szczegółowo

Wykład 7. Języki Opisu Sprzętu. Prowadzący: dr inż. Andrzej Skoczeń. Obsługa plików. Składnia Veriloga: Komórki prymitywne użytkownika

Wykład 7. Języki Opisu Sprzętu. Prowadzący: dr inż. Andrzej Skoczeń. Obsługa plików. Składnia Veriloga: Komórki prymitywne użytkownika Języki Opisu Sprzętu Prowadzący: dr inż. Andrzej Skoczeń Składnia Veriloga: Komórki prymitywne użytkownika Wykład 7 2017 29 listopad 2017 Zadania systemowe Obsługa plików Interfejs do innych języków Sterowanie

Bardziej szczegółowo

Przykładowe pytania z części PSPICE. 1. Podaj zasady tworzenia pliku symulacyjnego. 2. Czy składnia PSPICE jest czuła na wielkość liter? 3.

Przykładowe pytania z części PSPICE. 1. Podaj zasady tworzenia pliku symulacyjnego. 2. Czy składnia PSPICE jest czuła na wielkość liter? 3. Przykładowe pytania z części PSPICE. 1. Podaj zasady tworzenia pliku symulacyjnego. 2. Czy składnia PSPICE jest czuła na wielkość liter? 3. Jak umieszcza się komentarze w pliku symulacyjnym PSPICE? 4.

Bardziej szczegółowo

Programowalne układy logiczne kod kursu: ETD Podstawy języka Verilog W

Programowalne układy logiczne kod kursu: ETD Podstawy języka Verilog W Programowalne układy logiczne kod kursu: ETD008270 Podstawy języka Verilog W2 2.03.2018 mgr inż. Maciej Rudek 2 Tematyka kursu wykład Poziom abstrakcji systemów opisu sprzętu Historia Verilog został stworzony

Bardziej szczegółowo

Projektowanie scalonych systemów wbudowanych VERILOG. VERLIOG - historia

Projektowanie scalonych systemów wbudowanych VERILOG. VERLIOG - historia Projektowanie scalonych systemów wbudowanych VERILOG VERLIOG - historia Początki lat 80 XX w. Phil Moorby Gateway Design Automation symulator Verilog XL 1987 Synopsys Verilog jako język specyfikacji projektu

Bardziej szczegółowo

Programowalne układy logiczne kod kursu: ETD Układy kombinacyjne, przypisania, blokujące i nieblokujące cz.2 W

Programowalne układy logiczne kod kursu: ETD Układy kombinacyjne, przypisania, blokujące i nieblokujące cz.2 W Programowalne układy logiczne kod kursu: ETD008270 Układy kombinacyjne, przypisania, blokujące i nieblokujące cz.2 W4 23.03.2018 mgr inż. Maciej Rudek UKŁADY KOMBINACYJNE Układy kombinacyjne Układ kombinacyjny

Bardziej szczegółowo

Pojedyncze wartości zadeklarowanego typu Ustawiane przed rozpoczęciem symulacji bez moŝliwości

Pojedyncze wartości zadeklarowanego typu Ustawiane przed rozpoczęciem symulacji bez moŝliwości Stałe - constant Pojedyncze wartości zadeklarowanego typu Ustawiane przed rozpoczęciem symulacji bez moŝliwości późniejszych zmian Deklarowane w ciele architektury Widoczne dla całej architektury architecture

Bardziej szczegółowo

Układy reprogramowalne i SoC Język VHDL (część 4)

Układy reprogramowalne i SoC Język VHDL (część 4) Język VHDL (część 4) Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń - zintegrowany rozwój Politechniki

Bardziej szczegółowo

Wykład 5. Języki Opisu Sprzętu. Prowadzący: dr inż. Andrzej Skoczeń Współrzędne: D , tel. w ,

Wykład 5. Języki Opisu Sprzętu. Prowadzący: dr inż. Andrzej Skoczeń Współrzędne: D , tel. w , Języki Opisu Sprzętu Prowadzący: dr inż. Andrzej Skoczeń Współrzędne: D-10 222, tel. w. 28-72, e-mail: skoczen@fis.agh.edu.pl Proceduralne przypisanie ciągłe Wykład 5 2019 16 październik 2019 Operatory

Bardziej szczegółowo

Proste układy sekwencyjne

Proste układy sekwencyjne Proste układy sekwencyjne Układy sekwencyjne to takie w których niektóre wejścia są sterowany przez wyjściaukładu( zawierają sprzężenie zwrotne ). Układy sekwencyjne muszą zawierać elementy pamiętające

Bardziej szczegółowo

Sumatory H D L. dr inŝ. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska

Sumatory H D L. dr inŝ. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska Sumatory 1 Sumator 1-bitowy full adder Równanie boolowskie sumy: s k = a k XOR b k XOR c k = a k b k c k Równanie boolowskie przeniesienia: c k+1 = (a k AN b k ) OR (a k AN c k ) OR (b k AN c k ) = (a

Bardziej szczegółowo

Programowalne układy logiczne

Programowalne układy logiczne Programowalne układy logiczne Przerzutniki Szymon Acedański Marcin Peczarski Instytut Informatyki Uniwersytetu Warszawskiego 20 maja 2013 Przerzutnik synchroniczny Układ synchroniczny wyzwalany ustalonym

Bardziej szczegółowo

Automat skończony FSM Finite State Machine

Automat skończony FSM Finite State Machine Automat skończony FSM Finite State Machine Projektowanie detektora sekwencji Laboratorium z Elektroniki Współczesnej A. Skoczeń, KOiDC, WFiIS, AGH, 2019 AGH, WFiIS, Elektronika Współczesna 1 Deterministyczny

Bardziej szczegółowo

Języki projektowania HDL

Języki projektowania HDL Języki projektowania HDL Wykład dr inż. Marek Wójcikowski Ver: 2015-03-11 1 Zasady zaliczenia Wykład 2 kolokwia: 22.5+22.5 punktów=45 punktów Obecność na wykładzie 5 punktów Laboratorium 50 punktów Warunek

Bardziej szczegółowo

Projektowanie Scalonych Systemów Wbudowanych VERILOG

Projektowanie Scalonych Systemów Wbudowanych VERILOG Projektowanie Scalonych Systemów Wbudowanych VERILOG VERLIOG - historia Początki lat 80 XX w. Phil Moorby Gateway Design Automation symulator Verilog XL 1987 Synopsys Verilog jako język specyfikacji projektu

Bardziej szczegółowo

Projektowanie Scalonych Systemów Wbudowanych VERILOG

Projektowanie Scalonych Systemów Wbudowanych VERILOG Projektowanie Scalonych Systemów Wbudowanych VERILOG VERLIOG - historia Początki lat 80 XX w. Phil Moorby Gateway Design Automation symulator Verilog XL 1987 Synopsys Verilog jako język specyfikacji projektu

Bardziej szczegółowo

Sposoby projektowania systemów w cyfrowych

Sposoby projektowania systemów w cyfrowych Sposoby projektowania systemów w cyfrowych Top-down Idea całości projektu Dekompozycja na mniejsze bloki Projekt i rafinacja podbloków Łączenie bloków w całość PRZYKŁAD (sumator kaskadowy) zdefiniowanie

Bardziej szczegółowo

Część 3. Układy sekwencyjne. Układy sekwencyjne i układy iteracyjne - grafy stanów TCiM Wydział EAIiIB Katedra EiASPE 1

Część 3. Układy sekwencyjne. Układy sekwencyjne i układy iteracyjne - grafy stanów TCiM Wydział EAIiIB Katedra EiASPE 1 Część 3 Układy sekwencyjne Układy sekwencyjne i układy iteracyjne - grafy stanów 18.11.2017 TCiM Wydział EAIiIB Katedra EiASPE 1 Układ cyfrowy - przypomnienie Podstawowe informacje x 1 x 2 Układ cyfrowy

Bardziej szczegółowo

Język Verilog w projektowaniu układów FPGA

Język Verilog w projektowaniu układów FPGA POLITECHNIKA ZIELONOGÓRSKA Wydział Elektryczny Język Verilog w projektowaniu układów FPGA Jacek Bieganowski Grzegorz Wawrzyniak Promotor: dr inż. Marek Węgrzyn Zielona Góra, czerwiec 2001 Spis treści 1.

Bardziej szczegółowo

1. ISE WebPack i VHDL Xilinx ISE Design Suite 10.1 VHDL Tworzenie projektu Project Navigator Xilinx ISE Design Suite 10.1 File

1. ISE WebPack i VHDL Xilinx ISE Design Suite 10.1 VHDL Tworzenie projektu Project Navigator Xilinx ISE Design Suite 10.1 File 1. ISE WebPack i VHDL Celem ćwiczenia jest szybkie zaznajomienie się ze środowiskiem projektowym Xilinx ISE Design Suite 10.1 oraz językiem opisu sprzętu VHDL. Tworzenie projektu Uruchom program Project

Bardziej szczegółowo

1 Wstęp. 2 Proste przykłady. 3 Podstawowe elementy leksykalne i typy danych. 6 Opis strukturalny. 7 Moduł testowy (testbench)

1 Wstęp. 2 Proste przykłady. 3 Podstawowe elementy leksykalne i typy danych. 6 Opis strukturalny. 7 Moduł testowy (testbench) Wstęp SYSTEMY WBUDOWANE Układy kombinacyjne c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 c Dr inż. Ignacy Pardyka (Inf.UJK) Systemy wbudowane Rok akad. 2011/2012

Bardziej szczegółowo

Modelowanie złożonych układów cyfrowych (1)

Modelowanie złożonych układów cyfrowych (1) Modelowanie złożonych układów cyfrowych () funkcje i procedury przykłady (przerzutniki, rejestry) style programowania kombinacyjne bloki funkcjonalne bufory trójstanowe multipleksery kodery priorytetowe

Bardziej szczegółowo

Języki projektowania HDL

Języki projektowania HDL Języki projektowania HDL Wykład dr hab. inż. Marek Wójcikowski Ver: 2019-02-22 1 Zasady zaliczenia Wykład 2 kolokwia: 25+25 punktów=50 punktów Obecność na wykładzie +5 punktów Laboratorium 50 punktów (kierunkowy

Bardziej szczegółowo

Cyfrowe układy sekwencyjne. 5 grudnia 2013 Wojciech Kucewicz 2

Cyfrowe układy sekwencyjne. 5 grudnia 2013 Wojciech Kucewicz 2 Cyfrowe układy sekwencyjne 5 grudnia 2013 Wojciech Kucewicz 2 Układy sekwencyjne Układy sekwencyjne to takie układy logiczne, których stan wyjść zależy nie tylko od aktualnego stanu wejść, lecz również

Bardziej szczegółowo

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre) Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie

Bardziej szczegółowo

(przykład uogólniony)

(przykład uogólniony) Serial Peripheral Interface (przykład uogólniony) Brak standardu. Inne stosowane nazwy: Synchronous Serial Port (SSP), 4 wire SSI (Synchronous Serial Interface, Texas Instrument), Microwire (National Semiconductor).

Bardziej szczegółowo

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 4 (3h) Przerzutniki, zatrzaski i rejestry w VHDL

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 4 (3h) Przerzutniki, zatrzaski i rejestry w VHDL Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki ĆWICZENIE Nr 4 (3h) Przerzutniki, zatrzaski i rejestry w VHDL Instrukcja pomocnicza do laboratorium z przedmiotu Synteza układów

Bardziej szczegółowo

Krótkie wprowadzenie do ModelSim i Quartus2

Krótkie wprowadzenie do ModelSim i Quartus2 Krótkie wprowadzenie do ModelSim i Quartus2 wersja 04.2011 1 Plan Oprogramowanie Pliki źródłowe Scenariusze użycia 2 Programy Programy w wersji darmowej do pobrania ze strony www.altera.com ModelSim-Altera

Bardziej szczegółowo

Programowanie Układów Logicznych kod kursu: ETD6203 W dr inż. Daniel Kopiec. Pamięć w układach programowalnych

Programowanie Układów Logicznych kod kursu: ETD6203 W dr inż. Daniel Kopiec. Pamięć w układach programowalnych Programowanie Układów Logicznych kod kursu: ETD623 Pamięć w układach programowalnych W6 6.4.26 dr inż. Daniel Kopiec Plan wykładu Pamięć w układach programowalnych Zasada działania, podział pamięci Miara

Bardziej szczegółowo

Układy reprogramowalne i SoC Implementacja w układach FPGA

Układy reprogramowalne i SoC Implementacja w układach FPGA Układy reprogramowalne i SoC Implementacja w układach FPGA Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez

Bardziej szczegółowo

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI Wprowadzenie do środowiska Matlab 1. Podstawowe informacje Przedstawione poniżej informacje maja wprowadzić i zapoznać ze środowiskiem

Bardziej szczegółowo

Przerzutnik ma pewną liczbę wejść i z reguły dwa wyjścia.

Przerzutnik ma pewną liczbę wejść i z reguły dwa wyjścia. Kilka informacji o przerzutnikach Jaki układ elektroniczny nazywa się przerzutnikiem? Przerzutnikiem bistabilnym jest nazywany układ elektroniczny, charakteryzujący się istnieniem dwóch stanów wyróżnionych

Bardziej szczegółowo

Modelowanie liczników w języku Verilog i ich implementacja w strukturze FPGA

Modelowanie liczników w języku Verilog i ich implementacja w strukturze FPGA Modelowanie liczników w języku Verilog i ich implementacja w strukturze FPGA Licznik binarny Licznik binarny jest najprostszym i najpojemniejszym licznikiem. Kod 4 bitowego synchronicznego licznika binarnego

Bardziej szczegółowo

Architektura komputerów Wykład 2

Architektura komputerów Wykład 2 Architektura komputerów Wykład 2 Jan Kazimirski 1 Elementy techniki cyfrowej 2 Plan wykładu Algebra Boole'a Podstawowe układy cyfrowe bramki Układy kombinacyjne Układy sekwencyjne 3 Algebra Boole'a Stosowana

Bardziej szczegółowo

Synteza logiczna APSC

Synteza logiczna APSC Jest to proces tłumaczenia opisu projektu przygotowanego na wysokim poziomie abstrakcji na zoptymalizowaną reprezentację na poziomie bramek logicznych w oparciu o zadaną technologiczną bibliotekę komórek

Bardziej szczegółowo

Układy mnoŝące H D L. dr inŝ. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska

Układy mnoŝące H D L. dr inŝ. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska Układy mnoŝące 1 MnoŜenie w układzie sekwencyjnym P = A X = N 1 k = 0 k a k 2 X MnoŜenie szeregowo-równoległe równoległe Czynnik X jest przesuwany o k pozycji: jeŝeli a k 0 to X*2 k jest dodawane i zapisywane

Bardziej szczegółowo

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu Programowanie strukturalne Opis ogólny programu w Turbo Pascalu STRUKTURA PROGRAMU W TURBO PASCALU Program nazwa; } nagłówek programu uses nazwy modułów; } blok deklaracji modułów const } blok deklaracji

Bardziej szczegółowo

PRZERZUTNIKI: 1. Należą do grupy bloków sekwencyjnych, 2. podstawowe układy pamiętające

PRZERZUTNIKI: 1. Należą do grupy bloków sekwencyjnych, 2. podstawowe układy pamiętające PRZERZUTNIKI: 1. Należą do grupy bloków sekwencyjnych, 2. podstawowe układy pamiętające Zapamiętywanie wartości wybranych zmiennych binarnych, jak również sekwencji tych wartości odbywa się w układach

Bardziej szczegółowo

Instrukcje sekwencyjne

Instrukcje sekwencyjne nstrukcje sekwencyjne nstrukcje sekwencyjne są stosowane w specyfikacji behawioralnej (behavioral description) rzede wszystkim w tzw. procesach (process) roces nstrukcja F nstrukcja CASE Z 1 rocesy Konstrukcja

Bardziej szczegółowo

Sterowniki Programowalne (SP)

Sterowniki Programowalne (SP) Sterowniki Programowalne (SP) Wybrane aspekty procesu tworzenia oprogramowania dla sterownika PLC Podstawy języka funkcjonalnych schematów blokowych (FBD) Politechnika Gdańska Wydział Elektrotechniki i

Bardziej szczegółowo

Altera Quartus II. Opis niektórych komponentów dostarczanych razem ze środowiskiem. Opracował: mgr inż. Leszek Ciopiński

Altera Quartus II. Opis niektórych komponentów dostarczanych razem ze środowiskiem. Opracował: mgr inż. Leszek Ciopiński Altera Quartus II Opis niektórych komponentów dostarczanych razem ze środowiskiem Opracował: mgr inż. Leszek Ciopiński Spis treści Opis wybranych zagadnień obsługi środowiska Altera Quartus II:...1 Magistrale:...

Bardziej szczegółowo

Lista tematów na kolokwium z wykładu z Techniki Cyfrowej w roku ak. 2013/2014

Lista tematów na kolokwium z wykładu z Techniki Cyfrowej w roku ak. 2013/2014 Lista tematów na kolokwium z wykładu z Techniki Cyfrowej w roku ak. 2013/2014 Temat 1. Algebra Boole a i bramki 1). Podać przykład dowolnego prawa lub tożsamości, które jest spełnione w algebrze Boole

Bardziej szczegółowo

Układy cyfrowe w Verilog HDL. Elementy języka z przykładami. wersja: cz.3

Układy cyfrowe w Verilog HDL. Elementy języka z przykładami. wersja: cz.3 Układy cyfrowe w Verilog Elementy języka z przykładami wersja: 10.2009 cz.3 1 Układy sekwencyjne Układy sekwencyjne mają pamięć Układy synchroniczne najczęściej spotykane wszystkie elementy są kontrolowane

Bardziej szczegółowo

Literatura. adów w cyfrowych. Projektowanie układ. Technika cyfrowa. Technika cyfrowa. Bramki logiczne i przerzutniki.

Literatura. adów w cyfrowych. Projektowanie układ. Technika cyfrowa. Technika cyfrowa. Bramki logiczne i przerzutniki. Literatura 1. D. Gajski, Principles of Digital Design, Prentice- Hall, 1997 2. C. Zieliński, Podstawy projektowania układów cyfrowych, PWN, Warszawa 2003 3. G. de Micheli, Synteza i optymalizacja układów

Bardziej szczegółowo

Wstęp do Techniki Cyfrowej... Synchroniczne układy sekwencyjne

Wstęp do Techniki Cyfrowej... Synchroniczne układy sekwencyjne Wstęp do Techniki Cyfrowej... Synchroniczne układy sekwencyjne Schemat ogólny X Y Układ kombinacyjny S Z Pamięć Zegar Działanie układu Zmiany wartości wektora S możliwe tylko w dyskretnych chwilach czasowych

Bardziej szczegółowo

Laboratorium Projektowania Systemów VLSI-ASIC Katedra Elektroniki Akademia Górniczo-Hutnicza

Laboratorium Projektowania Systemów VLSI-ASIC Katedra Elektroniki Akademia Górniczo-Hutnicza Laboratorium Projektowania Systemów VLSI-ASIC Katedra Elektroniki Akademia Górniczo-Hutnicza Projektowanie układów VLSI-ASIC za pomocą techniki komórek standardowych przy użyciu pakietu Cadence Programowanie,

Bardziej szczegółowo

AHDL - Język opisu projektu. Podstawowe struktury języka. Komentarz rozpoczyna znak i kończy znak %. SUBDESIGN

AHDL - Język opisu projektu. Podstawowe struktury języka. Komentarz rozpoczyna znak i kończy znak %. SUBDESIGN AHDL - Język opisu projektu. Podstawowe struktury języka Przykładowy opis rewersyjnego licznika modulo 64. TITLE "Licznik rewersyjny modulo 64 z zerowaniem i zapisem"; %------------------------------------------------------------

Bardziej szczegółowo

ZASADY PROGRAMOWANIA KOMPUTERÓW

ZASADY PROGRAMOWANIA KOMPUTERÓW POLITECHNIKA WARSZAWSKA Instytut Automatyki i i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW Język Język programowania: C/C++ Środowisko programistyczne: C++Builder 6 Wykład 9.. Wskaźniki i i zmienne dynamiczne.

Bardziej szczegółowo

Projektowanie układów VLSI-ASIC techniką od ogółu do szczegółu (top-down) przy użyciu pakietu CADENCE

Projektowanie układów VLSI-ASIC techniką od ogółu do szczegółu (top-down) przy użyciu pakietu CADENCE Katedra Elektroniki Akademia Górniczo-Hutnicza w Krakowie Projektowanie układów VLSI-ASIC techniką od ogółu do szczegółu (top-down) przy użyciu pakietu CADENCE opis układu w Verilog, kompilacja i symulacja

Bardziej szczegółowo

Podstawy programowania skrót z wykładów:

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

Programowalne układy logiczne

Programowalne układy logiczne Programowalne układy logiczne Układy synchroniczne Szymon Acedański Marcin Peczarski Instytut Informatyki Uniwersytetu Warszawskiego 26 października 2015 Co to jest układ sekwencyjny? W układzie sekwencyjnym,

Bardziej szczegółowo

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4 Dr inż. Dariusz JĘDRZEJCZYK Wskaźniki Dynamiczna alokacja pamięci Przykłady 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Wskaźnik to

Bardziej szczegółowo

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów Adresowanie obiektów Bit - stan pojedynczego sygnału - wejście lub wyjście dyskretne, bit pamięci Bajt - 8 bitów - wartość od -128 do +127 Słowo - 16 bitów - wartość od -32768 do 32767 -wejście lub wyjście

Bardziej szczegółowo

Język AHDL. Synteza strukturalna. dr inŝ. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska H D L

Język AHDL. Synteza strukturalna. dr inŝ. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska H D L Język A Synteza strukturalna 1 Synteza strukturalna icznik Rejestr B l o k i F u n k c j o n a l n e 1. Składamy układ z bloków funkcjonalnych 2. Odwzorowanie technologiczne 2 Komponent Wyboru odpowiedniej

Bardziej szczegółowo

Podstawy Programowania C++

Podstawy Programowania C++ Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:

Bardziej szczegółowo

Programowanie w Turbo Pascal

Programowanie w Turbo Pascal Skróty: ALT + F9 Kompilacja CTRL + F9 Uruchomienie Struktura programu: Programowanie w Turbo Pascal Program nazwa; - nagłówek programu - blok deklaracji (tu znajduje się VAR lub CONST) - blok instrukcji

Bardziej szczegółowo

Projektowanie Urządzeń Cyfrowych

Projektowanie Urządzeń Cyfrowych Projektowanie Urządzeń Cyfrowych Laboratorium 2 Przykład prostego ALU Opracował: mgr inż. Leszek Ciopiński Wstęp: Magistrale: Program MAX+plus II umożliwia tworzenie magistral. Magistrale są to grupy przewodów

Bardziej szczegółowo

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h> Szablon programu: /* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include /* opcjonalne: deklaracja typów o rozmiarze jednego i dwóch

Bardziej szczegółowo

Asynchroniczne statyczne układy sekwencyjne

Asynchroniczne statyczne układy sekwencyjne Asynchroniczne statyczne układy sekwencyjne Układem sekwencyjnym nazywany jest układ przełączający, posiadający przynajmniej jeden taki stan wejścia, któremu odpowiadają, zależnie od sygnałów wejściowych

Bardziej szczegółowo

bocznej Tabela stanów sterownika Światła na drodze:

bocznej Tabela stanów sterownika Światła na drodze: Sterownik świateł na skrzyżowaniu APSC Specyfikacja: Sygnały świetne dla drogi głównej mają wyższy priorytet tzn. światła dla drogi głównej są domyślnie zielone Od czasu do czasu pojazdy z drogi bocznej

Bardziej szczegółowo

L E X. Generator analizatorów leksykalnych

L E X. Generator analizatorów leksykalnych L E X Generator analizatorów leksykalnych GENERATOR L E X Zadaniem generatora LEX jest wygenerowanie kodu źródłowego analizatora leksykalnego (domyślnie) w języku C; Kod źródłowy generowany jest przez

Bardziej szczegółowo

Wykład 8: klasy cz. 4

Wykład 8: klasy cz. 4 Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD

Bardziej szczegółowo

Język VERILOG w praktyce

Język VERILOG w praktyce Język VERLOG w praktyce RUS RUS Język VERLOG rzykłady syntezy blokowej RUS RUS Elementy systemu cyfrowego magistrala danych cd. module swap (Data, Resetn, w, Clock, Extern, RinExt, Busires); input [7:0]

Bardziej szczegółowo

Język C++ zajęcia nr 2

Język C++ zajęcia nr 2 Język C++ zajęcia nr 2 Inicjalizacja Definiowanie obiektu może być połączone z nadaniem mu wartości początkowej za pomocą inicjalizatora, który umieszczany jest po deklaratorze obiektu. W języku C++ inicjalizator

Bardziej szczegółowo

Projektowanie układów na schemacie

Projektowanie układów na schemacie Projektowanie układów na schemacie Przedstawione poniżej wskazówki mogą być pomocne przy projektowaniu układach na poziomie schematu. Stałe wartości logiczne Aby podłączyć wejście do stałej wartości logicznych

Bardziej szczegółowo

Podstawowe elementy układów cyfrowych układy sekwencyjne Rafał Walkowiak Wersja

Podstawowe elementy układów cyfrowych układy sekwencyjne Rafał Walkowiak Wersja Podstawowe elementy układów cyfrowych układy sekwencyjne Rafał Walkowiak Wersja 0.1 29.10.2013 Przypomnienie - podział układów cyfrowych Układy kombinacyjne pozbawione właściwości pamiętania stanów, realizujące

Bardziej szczegółowo

Numeryczne rozwiązywanie równań i układów równań

Numeryczne rozwiązywanie równań i układów równań Lekcja Strona z 2 Numeryczne rozwiązywanie równań i układów równań Rozwiązywanie pojedynczego równania - funkcja root Do rozwiązywania jednego równania z jedną niewiadomą służy funkcja root(f(z), z), gdzie:

Bardziej szczegółowo

Laboratorium 10 Temat: Zaawansowane jednostki testowe. Operacje na plikach. Funkcje.

Laboratorium 10 Temat: Zaawansowane jednostki testowe. Operacje na plikach. Funkcje. Laboratorium 10 Temat: Zaawansowane jednostki testowe. Operacje na plikach. Funkcje. 1. W języku VHDL zdefiniowano mechanizm odczytywania i zapisywania danych z i do plików. Pliki te mogą być wykorzystywane

Bardziej szczegółowo

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6 JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona

Bardziej szczegółowo

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. ABAP/4 Instrukcja IF Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. [ELSEIF warunek. ] [ELSE. ] ENDIF. gdzie: warunek dowolne wyrażenie logiczne o wartości

Bardziej szczegółowo

LABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35

LABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35 LABORATORIUM TECHNIKA CYFROWA Pamięci Rev.1.35 1. Cel ćwiczenia Praktyczna weryfikacja wiedzy teoretycznej z projektowania modułów sterowania oraz kontroli pamięci 2. Kolokwium Kolokwium wstępne sprawdzające

Bardziej szczegółowo

Podstawy programowania w języku C i C++

Podstawy programowania w języku C i C++ Podstawy programowania w języku C i C++ Część czwarta Operatory i wyrażenia Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu,

Bardziej szczegółowo

Układy kombinacyjne 1

Układy kombinacyjne 1 Układy kombinacyjne 1 Układy kombinacyjne są to układy cyfrowe, których stany wyjść są zawsze jednoznacznie określone przez stany wejść. Oznacza to, że doprowadzając na wejścia tych układów określoną kombinację

Bardziej szczegółowo

Kurs Verilog cz.1 wstęp

Kurs Verilog cz.1 wstęp Kurs Verilog cz.1 wstęp Złożoność układów cyfrowych zgodnie z prawem Moore a, podwaja się co około 18 miesięcy. Liczba tranzystorów znajdujących się w układzie scalonym sięga już dziesiątek, a nawet setek

Bardziej szczegółowo

Statyczne badanie przerzutników - ćwiczenie 3

Statyczne badanie przerzutników - ćwiczenie 3 Statyczne badanie przerzutników - ćwiczenie 3. Cel ćwiczenia Zapoznanie się z podstawowymi strukturami przerzutników w wersji TTL realizowanymi przy wykorzystaniu bramek logicznych NAND oraz NO. 2. Wykaz

Bardziej szczegółowo

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki Informatyka I Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli Dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Operacje relacji (porównania) A

Bardziej szczegółowo

Układy kryptograficzne z uŝyciem rejestrów LFSR

Układy kryptograficzne z uŝyciem rejestrów LFSR Układy kryptograficzne z uŝyciem rejestrów FSR Algorytmy kryptograficzne uŝywane w systemach telekomunikacyjnych własność modulo 2 funkcji XOR P K K = P = P 2 Rejestr z liniowym sprzęŝeniem zwrotnym FSR

Bardziej szczegółowo

7. Pętle for. Przykłady

7. Pętle for. Przykłady . Pętle for Przykłady.1. Bez użycia pętli while ani rekurencji, napisz program, który wypisze na ekran kolejne liczby naturalne od 0 do pewnego danego n. 5 int n; 6 cin >> n; 8 for (int i = 0; i

Bardziej szczegółowo

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady Pętle i tablice. Spotkanie 3 Dr inż. Dariusz JĘDRZEJCZYK Pętle: for, while, do while Tablice Przykłady 11/26/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Pętla w największym uproszczeniu służy

Bardziej szczegółowo

Pliki. Operacje na plikach w Pascalu

Pliki. Operacje na plikach w Pascalu Pliki. Operacje na plikach w Pascalu ścieżka zapisu, pliki elementowe, tekstowe, operacja plikowa, etapy, assign, zmienna plikowa, skojarzenie, tryby otwarcia, reset, rewrite, append, read, write, buforowanie

Bardziej szczegółowo

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem. Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje 1 dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD programowania w C++ Typy c.d. 2 Typy zmiennych Instrukcja typedef -

Bardziej szczegółowo

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD programowania Wykład: 4 Instrukcje sterujące, operatory 1 programowania w C++ Instrukcje sterujące 2 Pętla for for ( instrukcja_ini ; wyrazenie_warunkowe ; instrukcja_krok ) tresc_petli ; instrukcja_ini

Bardziej szczegółowo

Podstawy Elektroniki dla Elektrotechniki. Liczniki synchroniczne na przerzutnikach typu D

Podstawy Elektroniki dla Elektrotechniki. Liczniki synchroniczne na przerzutnikach typu D AGH Katedra Elektroniki Podstawy Elektroniki dla Elektrotechniki Liczniki synchroniczne na przerzutnikach typu D Ćwiczenie 7 Instrukcja do ćwiczeń symulacyjnych 2016 r. 1 1. Wstęp Celem ćwiczenia jest

Bardziej szczegółowo

Laboratorium przedmiotu Technika Cyfrowa

Laboratorium przedmiotu Technika Cyfrowa Laboratorium przedmiotu Technika Cyfrowa ćw.3 i 4: Asynchroniczne i synchroniczne automaty sekwencyjne 1. Implementacja asynchronicznych i synchronicznych maszyn stanu w języku VERILOG: Maszyny stanu w

Bardziej szczegółowo

Pętla for. Matematyka dla ciekawych świata -19- Scilab. for i=1:10... end. for k=4:-1:1... end. k=3 k=4. k=1. k=2

Pętla for. Matematyka dla ciekawych świata -19- Scilab. for i=1:10... end. for k=4:-1:1... end. k=3 k=4. k=1. k=2 Pętle wielokrotne wykonywanie ciągu instrukcji. Bardzo często w programowaniu wykorzystuje się wielokrotne powtarzanie określonego ciągu czynności (instrukcji). Rozróżniamy sytuacje, gdy liczba powtórzeń

Bardziej szczegółowo

Projekt prostego procesora

Projekt prostego procesora Projekt prostego procesora Opracowany przez Rafała Walkowiaka dla zajęć z PTC 2012/2013 w oparciu o Laboratory Exercise 9 Altera Corporation Rysunek 1 przedstawia schemat układu cyfrowego stanowiącego

Bardziej szczegółowo

Języki opisu sprzętu VHDL Mariusz Rawski

Języki opisu sprzętu VHDL Mariusz Rawski CAD Języki opisu sprzętu VHDL rawski@tele.pw.edu.pl http://rawski.zpt.tele.pw.edu.pl/ Języki opisu sprzętu System cyfrowy może być opisany na różnych poziomach abstrakcji i z wykorzystaniem różnych sposobów

Bardziej szczegółowo

Pętle. Dodał Administrator niedziela, 14 marzec :27

Pętle. Dodał Administrator niedziela, 14 marzec :27 Pętlami nazywamy konstrukcje języka, które pozwalają na wielokrotne wykonywanie powtarzających się instrukcji. Przykładowo, jeśli trzeba 10 razy wyświetlić na ekranie pewien napis, to można wykorzystać

Bardziej szczegółowo

Układy VLSI Bramki 1.0

Układy VLSI Bramki 1.0 Spis treści: 1. Wstęp... 2 2. Opis edytora schematów... 2 2.1 Dodawanie bramek do schematu:... 3 2.2 Łączenie bramek... 3 2.3 Usuwanie bramek... 3 2.4 Usuwanie pojedynczych połączeń... 4 2.5 Dodawanie

Bardziej szczegółowo

Zmienne, stałe i operatory

Zmienne, stałe i operatory Zmienne, stałe i operatory Przemysław Gawroński D-10, p. 234 Wykład 2 4 marca 2019 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 1 / 21 Outline 1 Zmienne 2 Stałe 3 Operatory (Wykład 2) Zmienne, stałe

Bardziej szczegółowo

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Programowanie w C++ Wykład 2 Katarzyna Grzelak 4 marca 2019 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Na poprzednim wykładzie podstawy C++ Każdy program w C++ musi mieć funkcję o nazwie main Wcięcia

Bardziej szczegółowo