Wykład 5. 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 5. 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 , Proceduralne przypisanie ciągłe Wykład październik 2019 Operatory w Verilogu Dyrektywy kompilatora Instrukcje sterujące (warunki, rozgałęzienia i pętle) Wnioskowanie zatrzasku i enkoder priorytetowy AGH WFiIS Informatyka Stosowana Języki Opisu Sprzętu 1

2 Proceduralne przypisanie ciągłe module xx (...); reg [4:0] komb_out; wire [4:0] c; reg [4:0] a, b; assign komb_out = a (b & c); endmodule Taka składnia jest także poprawna ale znaczenie jest odmienne. 2

3 Proceduralne przypisanie ciągłe Jest to przypisanie ciągłe do: Zmiennej rejestrowej, Pozostaje ważne tylko przez czas określony jego odwołaniem, Jest nadrzędne w stosunku do zwykłego przypisania proceduralnego. W sposób ciągły przypisuje wartość do zmiennej rejestrowej z priorytetem wyższym niż zwykłe przypisanie proceduralne. Po jego odwołaniu przez deassign zmienna rejestrowa nadal utrzymuje uzyskaną wartość, aż do chwili wystąpienia zwykłego przypisania proceduralnego. assign zmienna_reg = wyrazenie;... deassign zmienna_reg; Lewa strona przypisania może być zmienną lub połączeniem zmiennych. Nie może być słowem pamięci lub tablicy i nie może być bitem lub grupą bitów wektora. 3

4 module assigntry(input clk, rst, set, d, output reg q); Przy przejściu rst w stan niski wyjście q otrzyma stan niski. if(~rst) assign q = 1'b0; else Przy przejściu set w stan niski wyjście q otrzyma stan wysoki. if(~set) assign q = 1'b1; else deassign q; clk) q <= d; endmodule Jeżeli żadne z wejść set, rst nie jest w stanie niskim wyjście zostanie uwolnione i kontrolę nad nim przejmie zwykłe przypisanie proceduralne w drugim always. Komunikaty o błędach w czasie syntezy za pomocą RTL Compiler (Cadence): if(~rst) assign q = 1'b0; Error : Unsupported procedural assignment. [VLOGPT-39] [read_hdl] : Procedural assign in file 'assign.v' on line 7, column 16. : 'assign' and 'deassign' statements within a sequential statement are not supported for synthesis. Synteza jest poprawna w XST w nawigatorze ISE: Process "Synthesize - XST" completed successfully XST, Xilinx Encounter RTL Compiler, Cadence 4

5 module assigntry(input clk, rst, set, d, output reg q); clk) q <= d; if(~rst) assign q = 1'b0; else if(~set) assign q = 1'b1; else deassign q; endmodule Symulacja RTL (behavioral) ISim, Xilinx 5

6 XST, Xilinx module assigntry (input clk, rst, d, set, output q); wire rst_inv; wire set_inv; wire VCC; X_FF #(.INIT ( 1'b0 )) q_1 (.CLK(clk),.RST(rst_inv),.I(d),.SET(set_inv),.O(q),.CE(VCC)); X_INV X_INV X_ONE endmodule ISim, Xilinx set_inv1_inv_0 (.I(set),.O(set_inv)); rst_inv1_inv_0 (.I(rst),.O(rst_inv)); NlwBlock_assigntry_VCC (.O(VCC)); Symulacja Post-Translate module tb; reg clk, rst, set, d; wire q; assigntry uut (.clk(clk),.rst(rst),.set(set),.d(d),.q(q)); wire GSR = glbl.gsr; initial begin clk = 0; forever #40 clk = ~clk; end initial GSR); rst = 1'b1; set = 1'b1; d = 1'b1; #100 rst = 1'b0; #120 rst = 1'b1; #110 set = 1'b0; #110 set = 1'b1; #150 set = 1'b0; #10 rst = 1'b0; #100 rst = 1'b1; #10 set = 1'b1; #100 d = 1'b0; end initial #1000 $finish; endmodule 6

7 Proceduralne przypisanie ciągłe Są to konstrukcje przeznaczone do tworzenie modeli symulacyjnych i pisania modułów testowych (test-bench). Dwa rodzaje: Do zmiennej rejestrowej uważana za zły styl kodowania, assign... deassign ; Do zmiennej węzłowej lub rejestrowej force... release ; zastosowanie ograniczone do generacji wymuszeń i dubugowania. 7

8 Proceduralne przypisanie ciągłe force zmienna_reg_net = wyrazenie;... release zmienna_reg_net; Na zmiennych rejestrowych działa tak jak assign ale ma jeszcze wyższy priorytet. Na zmiennych węzłowych nadpisuje przypisania ciągłe i wyjścia instancji na czas określony przez wystąpienie instrukcji release. 8

9 `timescale 1 ns / 100 ps module force_release_tb; reg w, x, y; wire f; and and_1 (f, w, x, y); initial begin $monitor("%d ns, f=%b", $time,f); end endmodule w = 1 b1; x = 1 b0; y = 1 b1; #10 force f = w x y; #10 release f; #10 $finish; Bramka and na 10 jednostek czasu zostaje zastąpiona przez funktor LUB modelowany przypisaniem force Wynik symulacji : 0 ns, f=0 10 ns, f=1 20 ns, f=0 Incisive, Cadence 9

10 Zestawienie różnych przypisań Typ danych Wyjście instancji Ciągłe Proceduralne priorytet Proceduralne ciągłe assign force Węzłowe X X Rejestrowe X X 10

11 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. 11

12 Modelowanie za pomocą bloku always Modelowanie układów sekwencyjnych Na liście wrażliwości znajduje się aktywne zbocze sygnału zegarowego i ewentualnie aktywne zbocze asynchronicznego sygnału kasowania: clk, posedge rst) Zatrzaski Są sekwencyjne gdyż trudno nie przyznać, że są to elementy pamięciowe Są kombinacyjne, gdyż powstają przy błędnym modelowaniu układów kombinacyjnych Modelowanie układów kombinacyjnych Na liście wrażliwości znajdują się zmiany wartości wszystkich sygnałów występujących po stronie prawej przypisań w tym bloku: 12

13 Operatory arytmetyczne Operatory dwuargumentowe: (**) potęgowanie, (*) mnożenie, (/) dzielenie, (+) dodawanie, (-) odejmowanie, (%) modulo. Jeśli jakikolwiek bit argumentów ma wartość nieokreśloną x to cały wynik jest nieokreślony. Operatory jednoargumentowe (+) i (-) określają znak argumentu. reg [3:0] A, B; integer D, E; //A = 4 b0011; B = 4 b0100; D = 6; E = 4; A + B //wynik 4 b0111 D/E //wynik 1; obcina czesc ułamkową A * B //wynik 4 b1100 B A //wynik 4b 0001 Wynikiem operacji będzie real jeśli jeden z argumentów jest real. Jeśli obydwa argumenty są bez znaku to wynik także jest bez znaku. data flow level 13

14 Operatory logiczne data flow level Operatory dwuargumentowe: ( ) logiczne-lub, (&&) logiczne-i. Operatory jednoargumentowe: (!) logiczne-nie. Wynikiem zawsze jest wartość jednobitowa: 0 fałsz, 1 prawda lub x nieokreślony. Wynik różny od zera jest traktowany jak prawda. //A = 3; B = 0; A && B //daje falsz A B //daje prawda!a //daje falsz!b //daje prawda //A = 2 b0x; B = 2 b10; A && B //daje x 14

15 Operatory relacyjne data flow level (>) większy, (<) mniejszy, (>=) większy-lub-równy, (>=) mniejszy-lub-równy. Jeśli argument jest x lub z to wynik jest x. //A = 4; B = 3; X = 4 b1010; Y = 4 b1101; Z = 4 b1xxx; A <= B A > B Y >= X Y < Z //wynik 0-falsz //wynik 1-prawda //wynik 1-prawda //wynik x 15

16 Operatory równości Operatory dwuargumentowe: (==) równość, (!=) nierówność oraz wersje z uwzględnieniem x i z (===) i (!==). Wynikiem zawsze jest wartość jednobitowa: 0 fałsz, 1 prawda, a wartość x nieokreślony może się pojawić tylko w przypadkach (==) i (!=). //A = 4; B = 3; //X = 4 b1010; Y = 4 b1101; //Z = 4 b1xxz; M = 4 b1xxz; N = 4 b1xxx; A == B A!= B X == Z Z === M Z === N M!== N //daje falsz //daje prawda //daje x //daje prawda //daje falsz //daje prawda data flow level Używać oszczędnie w zastosowaniu do syntezy: reg a; if (a == 1 b1)... ; //jest równoważne if(a)... ; 16

17 Operatory bitowe Operatory dwuargumentowe: ( ) bitowe-lub, (&) bitowe-i, (^) bitowe-xor, (~^ lub ^~) bitowe-xnor. data flow level Operatory jednoargumentowe: (~) bitowe-nie. Jeśli argumenty są różnych rozmiarów to krótszy uzupełniany jest zerami z przodu. & 0 1 x x x 0 x x 0 1 x x x x 1 x ^ 0 1 x x x x x x x ^~ 0 1 x x x x x x x //X = 4 b1010; Y = 4 b1101; z jest traktowane jak x. //Z = 4 b10x1; ~X //daje 4 b0101 X & Y //daje 4 b1000 X Y //daje 4 b1111 a X Y daje 1 b1 X ^ Y //bitowy xor daje 4 b0111 X ~^ Y //bitowy xnor daje 4 b1000 X & Z //daje 4 b10x0 ~ x x 17

18 Operatory redukcyjne Operatory jednoargumentowe : ( ) or, (&) and, (^) xor, (~ ) nor, (~&) nand, (~^ lub ^~) xnor. data flow level //X = 4 b1010; &X //1 & 0 & 1 & 0 daje 1 b0 X // daje 1 b1 ^X //1 ^ 0 ^ 1 ^ 0 daje 1 b0 18

19 Operatory przesunięć Operatory dwuargumentowe: (>>) w prawo, (<<) w lewo. data flow level działają na wektorach, przesuwają określoną w drugim argumencie ilość bitów, powstające miejsce zapełniają zawsze zerami (nie ma zawijania). //X = 4 b1100; Y = X >> 1; //daje 4 b0110 Y = X << 1; //daje 4 b1000 Y = X << 2; //daje 4 b

20 Operator dołączania Operatory wieloargumentowy: ({}) łączenie. Działa na argumentach o znanym rozmiarze. data flow level //A=1 b1, B=2 b00, C=2 b10, D=3 b110 reg [3:0] Y0; reg [10:0] Y1; reg [2:0] Y2; Y0 = {B,C}; //daje 4 b0010 Y1 = {A,B,C,D,3 b001}; //daje 11 b Y2 = {A,B[0],C[1]}; //daje 3 b101 20

21 Operator powtarzania data flow level Polega na wielokrotnym łączeniu tyle razy ile określono w stałej replikacji {stala_repli{arg}} reg A; reg [1:0] B, C; reg [2:0] D; //A=1 b1; B=2 b00; C=2 b10; reg [3:0] Y0; reg [7:0] Y1; reg [9:0] Y2; Y0 = { 4{A} }; //daje 4 b1111 Y1 = { {4{A}}, {2{B}} }; //daje 8 b Y2 = { {4{A}}, {2{B}}, C}; //daje 10 b

22 Operator warunkowy Zastępuje instrukcję if, Dostarcza konstrukcji multipleksera 2 do 1: data flow level warunek? wyraz_prawda : wyraz_falsz //bufor trójstanowy trzy-bitowego wire [2:0] addr_bus, adrr_out; assign addr_bus = driver_enable? adrr_out : 3 bz; //2-do-1 mux assign out = control? in1 : in2; //zagniezdzanie assign out = (A==3)? (control?x:y) : (control?m:n); 22

23 Dyrektywy kompilatora Definiuje się w postaci : `<słowo_kluczowe> Słowa kluczowe: omówimy `define `undef `include `ifdef `else `elsif `endif `ifndef `timescale niektóre inne: `celldefine `endcelldefine `line `default_nettype `unconnected_drive `unconnected_drive `resetall 23

24 Dyrektywa `define Definiowanie makra tekstowego `define <nazwa_makra> <wartość> Rola i działanie podobne jak #define w C. Odwołanie: `<nazwa_makra> `define WORD_SIZE 32 definicja makra określającego domyślną długość słowa; wywołanie: `WORD_SIZE `define S $stop alias gdziekolwiek pojawi się `S wstawione zostanie $stop `define WORD_REG reg [WORD_SIZE-1:0] często używany ciąg znaków deklaracja 32-bitowego rejestru: `WORD_REG reg32; 24

25 Dyrektywa `include Wstawianie pliku źródłowego `include <nazwa_pliku> Rola i działanie podobne jak #include w C. //wstaw plik header.v zawierający deklaracje `include header.v... <kod Verilog a>... Należy unikać umieszczania modułów w plikach włączanych za pomocą dyrektywy `include. Najlepszym użyciem tej dyrektywy jest stosowanie jej do współdzielenia informacji sterującej zawartej w dyrektywach `define, `timescale, i im podobnych. 25

26 Dyrektywa `timescale `timescale <jednostka> / <dokładność> `timescale 10 ns / 1 ns module test #(parameter d = 1.55); reg set; initial begin end endmodule #d set = 1 b0; #d set = 1 b1; #d $finish; W tym przykładzie dyrektywa `timescale 10 ns / 1 ns określa jednostkę czasu dla modułu test na 10ns. W rezultacie wartości czasu w module są mnożone przez 10ns z zaokrągleniem do najbliższej 1ns. Parametr d jest typu real, gdyż taka stała jest do niego wpisana. Dlatego wartość parametru d jest skalowana do 16ns. Wartość 0 jest przypisywana do rejestru set w chwili czasu symulacji 16ns i wartość 1 w chwili 32ns. W argumentach dozwolone są tylko potęgi liczby 10: Dozwolone liczby całkowite: 1, 10, and 100. Dozwolone ciągi znaków określających jednostki pomiaru czasu: s, ms, us, ns, ps, fs. 26

27 Dyrektywy `ifdef, `else, `endif Kompilacja warunkowa umożliwia zastosowanie tego samego kodu w dwóch różnych sytuacjach indywidualizując go w czasie kompilacji projektu. initial begin `ifdef GL $shm_open("seqdetgl.shm"); `else $shm_open("seqdet.shm"); `endif $shm_probe("as"); #220 $shm_close(); $finish; end Makro GL może być zdefiniowane dyrektywą `define w pliku lub opcją define w linii poleceń. Przy wywołaniu symulatora: $ irun define GL test.v... będą wykonane te linie matomiast jeśli zrobimy to tak: $ irun test.v... wykonana będzie tylko ta linie initial begin `ifdef GL $sdf_annotate("seqdet.sdf",test,,"seqdet_sdf.log","maximum",,); `endif end Incisive, Cadence Sposób na to żeby dokładnie ten sam moduł testowy używać do symulacji przed i po syntezie. 27

28 Instrukcje sterujące Instrukcja warunkowa: if Instrukcja wyboru: case, casex, casez Pętle: while, for, repeat, forever 28

29 Instrukcja warunkowa Używana do podejmowania decyzji. Są trzy rodzaje: if... else Prosta - bez else, Z jednym else, Z wielokrotnym zagnieżdżeniem if-else-if, Prosta (bez else). Kod instrukcje wykonuje się gdy <wyrażenie> ma wartość logiczna 1. if (<wyrażenie>) instrukcje ; if(!lock) buffer = data; if(enable) out = in; 29

30 Instrukcja warunkowa Z jednym else. Kod instrukcje1 wykonuje się gdy <wyrażenie> ma wartość logiczną 1. Jeśli ta wartość jest 0 lub jest nieokreślona (x lub z) wykonuje się kod instrukcje0. if (<wyrażenie>) instrukcje1 ; else istrukcje0 ; if (number_queued < MAX_Q_DEPTH) begin data_queue = data; number_queued = number_queued +1 end else $display( Kolejka pełna. Próbuj ponownie. ); if... else 30

31 Instrukcja warunkowa Z wielokrotnym zagnieżdżeniem if-else-if. if (<wyrażenie1>) instrukcje1 ; else if (<wyrażenie2>) instrukcje2 ; else if (<wyrażenie3>) instrukcje3 ; else instrukcje_domyślne //wykonanie instrukcji w oparciu //o wartość sygnału sterującego ALU if (alu_control == 0) y = x + z; else if (alu_control == 1) y = x - z; else if (alu_control == 2) y = x * z; else $display( Błędna wartość sygnału sterującego ALU ); if... else 31

32 Instrukcja wyboru Instrukcja ta zastępuje trzeci typ instrukcji warunkowej if. case (wyrażenie) alternatywa1: instrukcje1 alternatywa2: instrukcje2 alternatywa3: instrukcje3 default: instrukcje_domyślne endcase Lista pozycji identyfikowanych wzorcami bitowymi dopasowywanymi do wyniku wyrażenia. //wykonanie instrukcji w oparciu //o wartość sygnału sterującego ALU reg [1:0] alu_control;... case (alu_control) 2 d0 : y = x + z; 2 d1 : y = x - z; 2 d2 : y = x * z; default : $display( Błędny sygnał sterujący ALU ); endcase case 32

33 Instrukcja wyboru Przykład użycia case do modelowania multipleksera 4-do-1: module mux4_to_1 (output reg out, input [3:0] in, input s1, s0); s0, in) case ({s1, s0}) //konkatencja adresów 2 d0 : out = in[0]; 2 d1 : out = in[1]; 2 d2 : out = in[2]; 2 d3 : out = in[3]; default : $display( Zły sygnał sterujący ); endcase endmodule case 33

34 Instrukcja wyboru Przykład użycia case do modelowania demultipleksera 1-do-4: module demux1to4 (output reg out0, out1, out2, out3, input in, s1, s0); s0, in) case ({s1, s0}) 2 b00: begin out0=in; out1=1 bz; out2=1 bz; out3=1 bz; end 2 b01: begin out0=1 bz; out1=in; out2=1 bz; out3=1 bz; end 2 b10: begin out0= 1 bz; out1=1 bz; out2=in; out3=1 bz; end 2 b11: begin out0= 1 bz; out1=1 bz; out2=1 bz; out3=in; end case 2 bx0, 2 bx1, 2 bxz, 2 bxx, 2 b0x, 2 b1x, 2 bzx: begin out0=1 bx; out1=1 bx; out2=1 bx; out3=1 bx; end Jeden bit adresu jest nieokreślony 2 bz0, 2 bz1, 2 bzz, 2 b0z, 2 b1z: to wszystkie wyjścia są nieokreślone begin out0=1 bz; out1=1 bz; out2=1 bz; out3=1 bz; end Jeden bit adresu jest niepodłączony default : $display( Zły sygnał sterujący ); to wszystkie wyjścia są niepodłączone endcase endmodule 34

35 Instrukcje wyboru casex, casez Instrukcja case, porównuje wartości 0, 1, x i z w wyrażeniach i alternatywach. Są dwie inne wersje instrukcji case, które omijają porównywanie: casez - z-owych, casex - x-owych i z-owych pozycji bitowych w wyrażeniu i alternatywach. Przykład użycia casex do modelowania logiki stanu następnego automatu skończonego przy kodowaniu z gorącą jedynką: reg [3:0] state, next_state; casex (state) 4 b1xxx : next_state = 4 b0100; 4 bx1xx : next_state = 4 b0010; 4 bxx1x : next_state = 4 b0001; 4 bxxx1 : next_state = 4 b1000; default : next_state = 4 b0000; endcase Tylko jeden bit jest brany pod uwagę przy określaniu następnego stanu automatu. Jeśli np. state=4 b10xz to wykonana zostanie instrukcja next_state=4 b

36 casex Verilog posiada instrukcję casex, która jest wersją instrukcji case pozwalającą traktować wartości "z", "?" i "x" w czasie porównań jak pozycje nie podlegające porównywaniu ("don't care ). "z", "?" i "x" są traktowane jak nie wpływające na wynik gdy występują w wyrażeniu i/lub w pozycjach instrukcji. W kodzie syntezowalnym nie używaj instrukcji casex. Użycie instrukcji casex może powodować problemy projektowe. Instrukcja casex traktuje wartość x jak bit nie mający znaczenia ( don t care ) jeśli znajdują się w wyrażeniu lub alternatywach. Kłopot pojawia się kiedy sygnał testowany przez wyrażenie casex jest inicjowany do wartości nieokreślonej x. Symulacja kodu RTL, w którym użyto casex nie testuje nieokreślonych sygnałów. Skutkiem tego odpowiadająca symulacja modelu strukturalnego pochodzącego z syntezy będzie propagować wartości x gdy dojdzie do testowania tego sygnału. 36

37 casez Verilog posiada instrukcję casez, która jest wersją instrukcji case pozwalającą traktować wartości "z" i "?" w czasie porównań jak pozycje nie podlegające porównywaniu ("don't care ). "z" i "?" traktowane są jak nie wpływające na wynik gdy występują w wyrażeniu i/lub w pozycjach instrukcji. Użycie casez w kodzie syntezowalnym wymaga ostrożności. Kiedy używasz instrukcji case z wartościami "don't care stosuj instrukcję casez, i używaj znaków "?" zamiast "z" w pozycjach listy do wskazania bitów nieokreślonych. Użycie instrukcji casez może powodować takie same problemy projektowe jak w przypadku casex, ale przeoczenie niepoprawnego działania w czasie weryfikacji jest mniej prawdopodobne. Kłopot pojawia się kiedy sygnał testowany przez wyrażenie casez jest inicjowany do wartości wysokiej impedancji z. Jednak instrukcja casez jest krótką, zwięzłą, tabelaryczną metodą do modelowania użytecznych struktur: enkodery priorytetowe, dekodery adresu. Dlatego nie powinna być całkowicie eliminowana z inżynierskiego użycia. 37

38 Pętle W Verilogu są cztery rodzaje pętli: while for repeat forever Pętle mogą występować tylko wewnątrz bloków initial i always. Mogą zawierać opóźnienia. Pętle aby były syntezowalne muszą posiadać stałe ograniczenia i warunek zakończenia pętli musi być znany przed elaboracją. 38

39 Pętla while Jest wykonywana dopóki wyrażenie nie stanie się fałszem. //inkrementowanie zmiennej count od 0 do 127 //zakończenie na 128 //wyświetlanie zliczania integer count; initial begin count = 0; while (count < 128) begin $display( count = %d,count); count = count + 1; end end //wykonaj pętlę do chwili gdy //count osiągnie wartość 127 //zakończ gdy count będzie

40 Pętla while c.d. `define TRUE 1 b1; `define FALSE 1 b0; reg [15:0] flag; integer i; //indeks reg continue; znajdź pierwszy bit o wartości 1 w zmiennej flag initial begin flag = 16 b 0010_0000_0000_0000; i = 0; continue = `TRUE; while ((i < 16) && continue) begin if (flag[i]) begin $display( natrafiono bit 1 na pozycji %d,i); continue = `FALSE; end i=i+1; end end 40

41 Pętla for Składa się z trzech elementów: Warunku początkowego, Sprawdzenia kiedy warunek końcowy stanie się prawdą, Przypisania proceduralnego zmieniającego wartość zmiennej sterującej. Pętla for w wielu wypadkach zastępuje pętlę while w bardziej zwięzły sposób. Pętla while jest jednak bardziej ogólnym narzędziem. //inkrementowanie zmiennej count od 0 do 127 //zakończenie na 128 //wyświetlanie zliczania integer count; initial for ( count=0; count<128; count=count+1) $display( count = %d,count); 41

42 Pętla for c.d. //inicjalizacja elementów tablicy `define MAX_STATES 32 integer state [0:`MAX_STATES-1]; //32-elementowa tablica integer i; initial begin for ( i=0; i<32; i=i+2) //inicjuj parzyste komórki zerami state[i] = 0; for ( i=1; i<32; i=i+2) //inicjuj nieparzyste jedynkami state[i] = 1; end 42

43 Pętla repeat Wykonuje się taką ilość razy jaką określa stała, zmienna lub sygnał użyty w instrukcji repeat. Ta zmienna lub sygnał obliczana jest przed rozpoczęciem pętli nie może ulec zmianie w czasie jej wykonywania. Inkrementowanie zmiennej count od 0 do 127, zakończenie na 128, wyświetlanie zliczania. initial begin count = 0; repeat(128) begin $display( count = %d,count); count = count + 1; end end 43

44 Przykład: po otrzymaniu sygnału data_start czyta dane przez kolejne osiem cykli module data_buffer #(parameter cycle=8) (input data_start, clock, input [15:0] data,); reg [15:0] buffer [0:7]; integer i; clock) begin if (data_start) begin rozpocznij jeśli data_start jest 1 i = 0; repeat(cycle) begin zapisz dane na zboczu narastającym następnych 8 clock) czekaj na zbocze sygnału zegarowego clock buffer[i] = data; i = i + 1; end end end endmodule Pętla repeat Nowe wyzwolenie bloku always zajdzie dopiero po zakończeniu cyklu ośmiu zboczy narastających zagara clock Ten moduł jest niesyntezowalny ze względu na zastosowanie zdarzeniowego sterowania upływem czasu. Zastosowanie pętli repeat ze stałą liczbą powtórzeń jest syntezowalne. 44

45 buffer buffer Pętla repeat Dwa przykłady symulacji modułu z poprzedniego slajdu. Incisive, Cadence clock data data_start Krótki impuls data_start rozpoczynający transmisję clock data data_start Długi impuls data_start rozpoczynający transmisję 45

46 Pętla forever Pętla nieskończona, równoważna while(1). Zakończenie powoduje zadanie systemowe $finish. Można z niej wyjść za pomocą instrukcji disable. Musi być używana w połączeniu ze sterowaniem przebiegiem czasu gdyż w przeciwnym wypadku wykonywałaby się w nieskończoność bez upływu czasu, a reszta projektu nie byłaby wykonywana wcale. //generacja zegara reg clock; initial begin clock = 0; forever #10 clock = ~clock;... end Kod nieosiągalny //okres 20 jedn. //synchronizuj zawartość dwóch rejestrów //na każdym zboczu narastającym reg clock, x, y; initial clock) x = y; 46

47 Pełna instrukcja case Mówimy, że instrukcja case jest pełna (full) gdy wszystkie możliwe wzory bitowe mogą być dopasowane do pozycji na liście case lub do pozycji domyślnej default. Jeśli instrukcja case nie zawiera pozycji domyślnej i jeśli jest możliwe znalezienie wzorca binarnego, który nie pasuje do żadnej ze zdefiniowanych pozycji case, to instrukcja case nie jest pełna (full). module mux3a (output reg y, input [1:0] sel, input a, b, c); Raport z elaboracji : Linia 4 Encounter RTL Compiler, Cadence Line No Type Full Parallel case NO AUTO Done elaborating 'mux3a'. przy atrybucie hdl_report_case_info ustawionym na true b, c, sel) case (sel) 2'b00: y = a; 2'b01: y = b; 2'b10: y = c; endcase endmodule Brak pozycji z wzorcem 2 b11 47

48 Wnioskowanie zatrzasku Blok always jest wykonywany wielokrotnie. Jeśli w pewnym przejściu, do zmiennej out nie zostanie przypisana żadna wartość, to narzędzie do syntezy wywnioskuje (infer), że nie chcemy zmienić jej wartości, którą uzyskała w poprzednim przejściu przez ten blok. Syntezator stworzy więc element do przechowywania tej poprzedniej wartości czyli zatrzask utrzymujący poprzednią wartość zmiennej out, aż do momentu gdy zostanie ona ponownie zmodyfikowana. Zjawisko to rzadko jest pożądane przez projektanta i świadomie przez niego spowodowane. Zjawisko to nazywane jest wnioskowaniem zatrzasku (latch inferring). Unikanie tego zjawiska polega na przypisywaniu wartości każdej zmiennej w każdej możliwej ścieżce przejścia przez kombinacyjny blok always. 48

49 Jednym z najbardziej powszechnych sposobów prowadzących do stworzenia zatrzasku jest zrobienie przypisań do wielu wyjść z pojedynczej instrukcji case, ale zaniedbanie przypisania do wszystkich wyjść ze wszystkich pozycji case. Najłatwiejszym sposobem eliminacji zatrzasków jest wykonanie początkowych przypisań domyślnej wartości do wszystkich wyjść natychmiast poniżej listy wrażliwości procesu, tuż przed instrukcją case. module addrdecode1a ( output reg mce0_n, mce1_n, rce_n, input [31:30] addr); casez (addr) 2'b10: {mce1_n,mce0_n}=2'b10; 2'b11: {mce1_n,mce0_n}=2'b01; 2'b0?: rce_n=1'b0; endcase endmodule Wnioskowanie zatrzasku Syntezator użyje trzech zatrzasków, po jednym dla każdego z sygnałów: mce1_n, mce0_n, rce_n oraz utworzy logikę do sterowania wejściami bramkującymi tych zatrzasków. module addrdecode1a ( output reg mce0_n, mce1_n, rce_n, input [31:30] addr); begin {mce1_n,mce0_n,rce_n}=3'b111; casez (addr) 2'b10: {mce1_n,mce0_n}=2'b10; 2'b11: {mce1_n,mce0_n}=2'b01; 2'b0?: rce_n=1'b0; endcase end endmodule Moduł poprawiony 49

50 Encounter RTL Compiler, Cadence Wynik syntezy modułu mux3a. Wynik syntezy poprawionego modułu mux3a. module mux3a_fixed (output reg y, input [1:0] sel, input a, b, c); b, c, sel) begin y = 1 bx; case (sel) 2'b00: y = a; 2'b01: y = b; 2'b10: y = c; endcase end endmodule Wystarczyło przypisać wartość x przed case-em aby z układu zniknął zatrzask, dwa inwertery i bramka NOR. 50

51 Równoległa instrukcja case Mówimy, że instrukcja case jest równoległa (parallel) gdy możliwe jest dopasowanie wyrażenia case do jednej i tylko jednej pozycji listy case. Jeśli możliwe jest znalezienie wartości wyrażenia, które pasuje do więcej niż jednej pozycji na liście wzorców case, to pasujące pozycje nazywa się pozycjami nakładającymi się (overlapping) i taka instrukcja case nie jest równoległa. module intctl1a ( output reg int2, int1, int0, input [2:0] irq); Raport z elaboracji : Linia 5 Encounter RTL Compiler, Cadence Line No Type Full Parallel casez NO NO Done elaborating 'intctl1a'. begin {int2, int1, int0} = 3'b0; casez (irq) 3'b1??: int2 = 1'b1; 3'b?1?: int1 = 1'b1; 3'b??1: int0 = 1'b1; endcase end endmodule Kiedy projekt ma nakładające się pozycje w instrukcji case funkcjonalność przed i po syntezie będzie odmienna. Spowoduje to powstanie enkodera priorytetowego. 51

52 Enkoder priorytetowy Enkoder to układ kombinacyjny służący do konwersji kodu 1 z n (1 z n ) na określony kod wyjściowy. Ma więc n wejść z czego tylko jedno jest w stanie aktywnym. Enkodery muszą jednak wytwarzać jednoznaczną odpowiedź gdy na wejściach jest więcej niż jedna jedynka tzn. mamy kod k z n (k z n ). Dlatego trzeba ustalić priorytety wejść tak, aby na wyjściu pojawiał się kod tego z aktywnych wejść, które ma najwyższy priorytet. Jest to enkoder priorytetowy. Priorytet wyższy dla bardziej znaczącego bitu D7 D6 D5 D4 D3 D2 D1 D0 Q2 Q1 Q0 any x x x x x x x x x x x x x x x x x x x x x x x x x x x x

53 Enkoder priorytetowy Bardziej znaczący bit ma wyższy priorytet Gdy chcemy zbudować enkoder priorytetowy to rekomendowane są następujące dwa rozwiązania: module priority_encoder (output reg [2:0] code, output reg any, input [7:0] encin); begin any=1'b1; if (encin[7]) code = 3'd7; else if (encin[6]) code = 3'd6; else if (encin[5]) code = 3'd5; else if (encin[4]) code = 3'd4; else if (encin[3]) code = 3'd3; else if (encin[2]) code = 3'd2; else if (encin[1]) code = 3'd1; else if (encin[0]) code = 3'd0; else begin code = 3'd0; any = 1'b0; end end endmodule module priority_encoder (output [2:0] code, output any, input [7:0] encin); assign code = (encin[7])? 3'd7 : (encin[6])? 3'd6 : (encin[5])? 3'd5 : (encin[4])? 3'd4 : (encin[3])? 3'd3 : (encin[2])? 3'd2 : (encin[1])? 3'd1 : 3'd0; assign any = ( encin)? 1'b1 : 1'b0; endmodule 53

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

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

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 Język VERLOG w praktyce RUS RUS VERLOG Specyfikacja układów kombinacyjnych RUS RUS Operator warunkowy Conditional_expression?

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

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

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

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

Mikrokontroler ATmega32. Język symboliczny

Mikrokontroler ATmega32. Język symboliczny Mikrokontroler ATmega32 Język symboliczny 1 Język symboliczny (asembler) jest językiem niskiego poziomu - pozwala pisać programy złożone z instrukcji procesora. Kody instrukcji są reprezentowane nazwami

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

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak Katedra Elektrotechniki Teoretycznej i Informatyki wykład 12 - sem.iii M. Czyżak Język C - preprocesor Preprocesor C i C++ (cpp) jest programem, który przetwarza tekst programu przed przekazaniem go kompilatorowi.

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

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

Wykład 3. 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 Tablice i wektory Reguły łączenia portów Wykład 3 2018 10 październik 2018

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

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

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory Poniżej pozwoliłem sobie za cytować za wikipedią definicję zmiennej w informatyce.

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

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

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

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

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

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

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

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

Podstawy programowania w języku C

Podstawy programowania w języku C Podstawy programowania w języku C WYKŁAD 1 Proces tworzenia i uruchamiania programów Algorytm, program Algorytm przepis postępowania prowadzący do rozwiązania określonego zadania. Program zapis algorytmu

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

Logika Temporalna i Automaty Czasowe

Logika Temporalna i Automaty Czasowe Modelowanie i Analiza Systemów Informatycznych Logika Temporalna i Automaty Czasowe (7) Automaty czasowe NuSMV Paweł Głuchowski, Politechnika Wrocławska wersja 2.3 Treść wykładu NuSMV NuSMV symboliczny

Bardziej szczegółowo

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5. Operatory w Javie W Javie występują następujące typy operatorów: Arytmetyczne. Inkrementacji/Dekrementacji Przypisania. Porównania. Bitowe. Logiczne. Pozostałe. Operacje wykonywane są na operandach (argumentach

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

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

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

Tranzystor JFET i MOSFET zas. działania

Tranzystor JFET i MOSFET zas. działania Tranzystor JFET i MOSFET zas. działania brak kanału v GS =v t (cutoff ) kanał otwarty brak kanału kanał otwarty kanał zamknięty w.2, p. kanał zamknięty Co było na ostatnim wykładzie? Układy cyfrowe Najczęściej

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

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

Instrukcje sterujące. Programowanie Proceduralne 1

Instrukcje sterujące. Programowanie Proceduralne 1 Instrukcje sterujące Programowanie Proceduralne 1 Przypomnienie: operatory Operator przypisania = przypisanie x = y x y Operatory arytmetyczne * mnożenie x * y x y x / dzielenie x / y y + dodawanie x +

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

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

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

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

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

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

Część 4 życie programu

Część 4 życie programu 1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część

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

Język C - podstawowe informacje

Język C - podstawowe informacje Język C - podstawowe informacje Michał Rad AGH Laboratorium Maszyn Elektrycznych 2014-12-05 Outline Program w języku C Funkcje Składnia Instrukcje sterujace Na koniec... Po kolei napisać program (zwykły

Bardziej szczegółowo

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych 1 Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych 1. Podstawowe operacje logiczne dla cyfr binarnych Jeśli cyfry 0 i 1 potraktujemy tak, jak wartości logiczne fałsz i prawda, to działanie

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

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

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch. Instrukcje warunkowe i skoku. Spotkanie 2 Dr inż. Dariusz JĘDRZEJCZYK Wyrażenia i operatory logiczne Instrukcje warunkowe: if else, switch Przykłady 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania

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

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak JAVA Wstęp do programowania w języku obiektowym Bibliografia: JAVA Szkoła programowania, D. Trajkowska Ćwiczenia praktyczne JAVA. Wydanie III,M. Lis Platforma JSE: Opracował: Andrzej Nowak JSE (Java Standard

Bardziej szczegółowo

Operatory. Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1

Operatory. Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1 Operatory Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1 Przypomnienie: operatory Operator przypisania = przypisanie x = y x y Operatory arytmetyczne

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

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1 Pętle Pętla jest konstrukcją sterującą stosowaną w celu wielokrotnego wykonania tego samego zestawu instrukcji jednokrotne

Bardziej szczegółowo

LABORATORIUM TECHNIKA CYFROWA LICZNIKI I REJESTRY. Rev.1.1

LABORATORIUM TECHNIKA CYFROWA LICZNIKI I REJESTRY. Rev.1.1 LABORATORIUM TECHNIKA CYFROWA LICZNIKI I REJESTRY Rev.1.1 1. Cel ćwiczenia Praktyczna weryfikacja wiedzy teoretycznej z zakresu projektowania układów kombinacyjnych oraz arytmetycznych 2. Projekty Przy

Bardziej szczegółowo

Podstawy Programowania Podstawowa składnia języka C++

Podstawy Programowania Podstawowa składnia języka C++ Podstawy Programowania Podstawowa składnia języka C++ Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 3 października 2013 r. Szablon programu w C++ Najprostszy program w C++ ma postać: #include #include

Bardziej szczegółowo

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje. Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include using

Bardziej szczegółowo

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń. Podstawy programowania Programowanie wyrażeń 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń. W językach programowania są wykorzystywane

Bardziej szczegółowo

Wykład 2 Składnia języka C# (cz. 1)

Wykład 2 Składnia języka C# (cz. 1) Wizualne systemy programowania Wykład 2 Składnia języka C# (cz. 1) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Budowa projektu 2 Struktura programu

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

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Poradnik programowania procesorów AVR na przykładzie ATMEGA8 Poradnik programowania procesorów AVR na przykładzie ATMEGA8 Wersja 1.0 Tomasz Pachołek 2017-13-03 Opracowanie zawiera opis podstawowych procedur, funkcji, operatorów w języku C dla mikrokontrolerów AVR

Bardziej szczegółowo

System operacyjny Linux

System operacyjny Linux Paweł Rajba pawel.rajba@continet.pl http://kursy24.eu/ Zawartość modułu 6 Język bash Pierwszy skrypt Rozwinięcia parametryczne Bloki instrukcji Dwa przydatne polecenia Tablice Sprawdzanie warunków Instrukcje

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

(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

Architektura systemów komputerowych Laboratorium 13 Symulator SMS32 Operacje na bitach

Architektura systemów komputerowych Laboratorium 13 Symulator SMS32 Operacje na bitach Marcin Stępniak Architektura systemów komputerowych Laboratorium 13 Symulator SMS32 Operacje na bitach 1. Informacje Matematyk o nazwisku Bool wymyślił gałąź matematyki do przetwarzania wartości prawda

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

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać MatLab część III 1 Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać komentarze poprzedzone znakiem % Skrypty

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

Logika Temporalna i Automaty Czasowe

Logika Temporalna i Automaty Czasowe Modelowanie i Analiza Systemów Informatycznych Logika Temporalna i Automaty Czasowe (7) Automaty czasowe NuSMV Paweł Głuchowski, Politechnika Wrocławska wersja 2.4 Treść wykładu NuSMV NuSMV symboliczny

Bardziej szczegółowo

Mikrooperacje. Mikrooperacje arytmetyczne

Mikrooperacje. Mikrooperacje arytmetyczne Przygotowanie: Przemysław Sołtan e-mail: kerk@moskit.ie.tu.koszalin.pl Mikrooperacje Mikrooperacja to elementarna operacja wykonywana podczas jednego taktu zegara mikroprocesora na informacji przechowywanej

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

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe Wydział Zarządzania AGH Katedra Informatyki Stosowanej Podstawy VBA cz. 1 Programowanie 1 Program wykładu Struktura programu Instrukcja przypisania Wprowadzanie danych Wyprowadzanie wyników Instrukcja

Bardziej szczegółowo

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI Dr inż. Grażyna KRUPIŃSKA Grazyna.Krupinska@fis.agh.edu.pl D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI Wyrażenia 2 Wyrażenia w języku C są bardziej elastyczne niż wyrażenia w jakimkolwiek innym języku

Bardziej szczegółowo

Wykład 2. Informatyka Stosowana. 8 października 2018, M. A-B. Informatyka Stosowana Wykład 2 8 października 2018, M. A-B 1 / 41

Wykład 2. Informatyka Stosowana. 8 października 2018, M. A-B. Informatyka Stosowana Wykład 2 8 października 2018, M. A-B 1 / 41 Wykład 2 Informatyka Stosowana 8 października 2018, M. A-B Informatyka Stosowana Wykład 2 8 października 2018, M. A-B 1 / 41 Elementy logiki matematycznej Informatyka Stosowana Wykład 2 8 października

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

Układy arytmetyczne. Joanna Ledzińska III rok EiT AGH 2011

Układy arytmetyczne. Joanna Ledzińska III rok EiT AGH 2011 Układy arytmetyczne Joanna Ledzińska III rok EiT AGH 2011 Plan prezentacji Metody zapisu liczb ze znakiem Układy arytmetyczne: Układy dodające Półsumator Pełny sumator Półsubtraktor Pełny subtraktor Układy

Bardziej szczegółowo

Stałe definiuje się używając funkcji define. Przykład: define( PODATEK, 22); define( INSTALACJAOS, 70); define( MS, Microsoft );

Stałe definiuje się używając funkcji define. Przykład: define( PODATEK, 22); define( INSTALACJAOS, 70); define( MS, Microsoft ); Stałe definiuje się używając funkcji define. Przykład: define( PODATEK, 22); define( INSTALACJAOS, 70); define( MS, Microsoft ); Dobrą praktyką jest używanie wielkich liter jako nazw stałych. Nie jest

Bardziej szczegółowo

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53: Instrukcje sterujące wer. 11 z drobnymi modyfikacjami! Wojciech Myszka 2017-07-05 10:53:09 +0200 Ala ma kota Część I Prosty przykład Problem 1. Zadanie polega na tym, żeby opracować algorytm który dla

Bardziej szczegółowo

LEKCJA. TEMAT: Funktory logiczne.

LEKCJA. TEMAT: Funktory logiczne. TEMAT: Funktory logiczne. LEKCJA 1. Bramką logiczną (funktorem) nazywa się układ elektroniczny realizujący funkcje logiczne jednej lub wielu zmiennych. Sygnały wejściowe i wyjściowe bramki przyjmują wartość

Bardziej szczegółowo

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk Podstawy informatyki Informatyka stosowana - studia niestacjonarne Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie, Materiał

Bardziej szczegółowo

Technika cyfrowa Synteza układów kombinacyjnych

Technika cyfrowa Synteza układów kombinacyjnych Sławomir Kulesza Technika cyfrowa Synteza układów kombinacyjnych Wykład dla studentów III roku Informatyki Wersja 2.0, 05/10/2011 Podział układów logicznych Opis funkcjonalny układów logicznych x 1 y 1

Bardziej szczegółowo

Szkoła programisty PLC : sterowniki przemysłowe / Gilewski Tomasz. Gliwice, cop Spis treści

Szkoła programisty PLC : sterowniki przemysłowe / Gilewski Tomasz. Gliwice, cop Spis treści Szkoła programisty PLC : sterowniki przemysłowe / Gilewski Tomasz. Gliwice, cop. 2017 Spis treści O autorze 9 Wprowadzenie 11 Rozdział 1. Sterownik przemysłowy 15 Sterownik S7-1200 15 Budowa zewnętrzna

Bardziej szczegółowo

Bloki anonimowe w PL/SQL

Bloki anonimowe w PL/SQL Język PL/SQL PL/SQL to specjalny język proceduralny stosowany w bazach danych Oracle. Język ten stanowi rozszerzenie SQL o szereg instrukcji, znanych w proceduralnych językach programowania. Umożliwia

Bardziej szczegółowo

Arytmetyka liczb binarnych

Arytmetyka liczb binarnych Wartość dwójkowej liczby stałoprzecinkowej Wartość dziesiętna stałoprzecinkowej liczby binarnej Arytmetyka liczb binarnych b n-1...b 1 b 0,b -1 b -2...b -m = b n-1 2 n-1 +... + b 1 2 1 + b 0 2 0 + b -1

Bardziej szczegółowo

Verilog HDL. Język Opisu Sprzętu Hardware Description Language Część I. Elementy języka. dr inż. Paweł Tomaszewicz H D L

Verilog HDL. Język Opisu Sprzętu Hardware Description Language Część I. Elementy języka. dr inż. Paweł Tomaszewicz H D L Verilog Język Opisu Sprzętu ardware escription anguage Część I. Elementy języka dr inż. Paweł Tomaszewicz 1 istoria krótko ata '80 potrzeba stworzenia jednego języka do symulacji na różnych poziomach opisu

Bardziej szczegółowo

Wstęp do informatyki- wykład 5 Instrukcja selekcji if-else Operatory arytmetyczne i logiczne

Wstęp do informatyki- wykład 5 Instrukcja selekcji if-else Operatory arytmetyczne i logiczne 1 Wstęp do informatyki- wykład 5 Instrukcja selekcji if-else Operatory arytmetyczne i logiczne Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion,

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

Algorytmika i Programowanie VBA 1 - podstawy

Algorytmika i Programowanie VBA 1 - podstawy Algorytmika i Programowanie VBA 1 - podstawy Tomasz Sokół ZZI, IL, PW Czas START uruchamianie środowiska VBA w Excelu Alt-F11 lub Narzędzia / Makra / Edytor Visual Basic konfiguracja środowiska VBA przy

Bardziej szczegółowo

Języki i paradygmaty programowania

Języki i paradygmaty programowania Języki i paradygmaty programowania Instytut Teleinformatyki ITI PK Kraków marzec 2012 Spis rzeczy 1 Operatory w C/C++ Operatory Operatory w C/C++ operator - rodzaj funkcji wbudowanej w język; różnica notacja

Bardziej szczegółowo

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne 1. Bit Pozycja rejestru lub komórki pamięci służąca do przedstawiania (pamiętania) cyfry w systemie (liczbowym)

Bardziej szczegółowo

Operatory AND, OR, NOT, XOR Opracował: Andrzej Nowak Bibliografia:

Operatory AND, OR, NOT, XOR Opracował: Andrzej Nowak Bibliografia: Operatory logiczne Komputery i ich logika AND - && Podstawy programowania w C++ Operatory AND, OR, NOT, XOR Opracował: Andrzej Nowak Bibliografia: CPA: PROGRAMMING ESSENTIALS IN C++ https://www.netacad.com

Bardziej szczegółowo

Ćwiczenie 01 - Strona nr 1 ĆWICZENIE 01

Ćwiczenie 01 - Strona nr 1 ĆWICZENIE 01 ĆWICZENIE 01 Ćwiczenie 01 - Strona nr 1 Polecenie: Bez użycia narzędzi elektronicznych oraz informatycznych, wykonaj konwersje liczb z jednego systemu liczbowego (BIN, OCT, DEC, HEX) do drugiego systemu

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

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

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

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h] 1. Typy. Java jest językiem programowania z silnym systemem kontroli typów. To oznacza, że każda zmienna, atrybut czy parametr ma zadeklarowany typ. Kompilator wylicza typy wszystkich wyrażeń w programie

Bardziej szczegółowo

Krótkie przypomnienie

Krótkie przypomnienie Krótkie przypomnienie Prawa de Morgana: Kod Gray'a A+ B= Ā B AB= Ā + B Układ kombinacyjne: Tablicy prawdy Symbolu graficznego Równania Boole a NOR Negative-AND w.11, p.1 XOR Układy arytmetyczne Cyfrowe

Bardziej szczegółowo

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 2. Programowanie komputerowe

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 2. Programowanie komputerowe Wydział Zarządzania AGH Katedra Informatyki Stosowanej Podstawy VBA cz. 2 Programowanie 1 Program wykładu Typy danych Wyrażenia Operatory 2 VBA Visual Basic dla aplikacji (VBA) firmy Microsoft jest językiem

Bardziej szczegółowo