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
|
|
- Judyta Piekarska
- 6 lat temu
- Przeglądów:
Transkrypt
1 Języki Opisu Sprzętu Prowadzący: dr inż. Andrzej Skoczeń Składnia Veriloga: Komórki prymitywne użytkownika Wykład listopad 2017 Zadania systemowe Obsługa plików Interfejs do innych języków Sterowanie przebiegiem czasu Proceduralne przypisania ciągłe AGH WFiIS Informatyka Stosowana Języki Opisu Sprzętu 1
2 Własne komórki podstawowe primitive nazwa_udp(output reg <nazwa_wyjścia>, input <nazwy_wejść> ); initial <nazwa_wyjścia>=<wartość>; table <wiersze tablicy> endtable endprimitive dla sekwencyjnych UDP Format jednego wiersza tabeli table : dla układu kombinacyjnego: <input1> <input2>... <inputn> : <output>; dla układu sekwencyjnego: gate level UDP User Defined Primitives incjalizacja możliwa w sekwencyjnych UDP <input1> <input2>... <inputn> : <stan_bieżący> : <stan_następny>; 2
3 Własne komórki podstawowe Reguły tworzenia UDP: Dozwolone są tylko skalarne wejścia. Dozwolone jest tylko jedno skalarne wyjście. Jego nazwa musi być pierwsza na liście. Dla sekwencyjnych UDP wyjście dodatkowo musi być zadeklarowane jako reg. Pozycje tabeli zawierają 0, 1, x (z jest traktowane jak x). Porty inout są niedozwolone. gate level Z poziomu innych modułów traktowane są tak samo jak komórki predefiniowane. 3
4 Własne komórki podstawowe prinitive udp_and(output out, input a, b); //tablica stanów table //a b : out; 0 0 : 0; 0 1 : 0; 1 0 : 0; 1 1 : 1; endtable endprinitive gate level Jeśli w tabeli stanów brakuje linii np. (x 0) to na wyjściu podawany jest stan x. Dlatego specyfikacja bramki and jest w naszym przykładzie nie kompletna. Można stosować symbol? dla skrócenia notacji, który oznacza stan dowolny czyli 0 lub 1 lub x. 4
5 Własne komórki podstawowe prinitive udp_or(output out, input a, b); gate level //tablica stanów table //a b : out; 0 0 : 0; 1? : 1;? 1 : 1; 0 x : x; x 0 : x; endtable endprinitive 5
6 Sekwencyjne UDP gate level Symbol Znaczenie Opis? 0, 1, x Nie może być użyty w polu wyjściowym b 0, 1 Nie może być użyty w polu wyjściowym - Bez zmian Tylko dla sekwencyjnych UDP r (01) Narastające zbocze sygnału f (10) Opadające zbocze sygnału p (01), (0x), (x1) Narastające zbocze potencjału sygnału n (10), (1x), (x0) Opadające zbocze potencjału sygnału * (??) Dowolna zmiana sygnału 6
7 Sekwencyjne UDP gate level primitive dlatch ( output reg q, input d, gate, clear); initial q = 0; //initialize output table UDP czuły na poziom modelujący zatrzask D // d gate clear : q : q+?? 1 :? : 0; //clear :? : 1; //latch :? : 0; //latch 0? 0 0 :? : -; //no change endtable endprimitive primitive d_ff (output reg q, input clk, d); initial q = 0; //initialize output table UDP czuły na zbocze modelujący przerzutnik D // clk d : q : q+ r 0 :? : 0; //synchr reset r 1 :? : 1; //synchr set f? :? : -; //no change? * :? : -; //no cahnge endtable endprimitive 7
8 // ASYNCHRONOUS CLEAR ( Q OUTPUT UDP ). primitive U_FD_P_RB_NO (output reg Q, input D, CP, RB, NOTIFIER_REG); table Taka sama kolejność wejść // D CP RB NOTIFIER_REG : Qt : Qt+1 1 (01) 1? :? : 1; // clocked data 0 (01)?? :? : 0; 1 (?1) 1? : 1 : 1; // reducing pessimism 0 (?1)?? : 0 : 0; 1 (0?) 1? : 1 : 1; 0 (0?)?? : 0 : 0;? (?0) 1? :? : -; // ignore falling clock? (1?) 1? :? : -; // ignore falling clock?? 0? :? : 0; // asynchronous clear?? x? :? : x; // pessimism *? 1? :? : -; // ignore the edges on data?? (?1)? :? : -; // ignore the edges on clear??? * :? : x; endtable endprimitive Przerzutnik jako UDP gate level Przy dowolnej zmianie NOTIFIER_REG, czyli przy łamaniu krórejkolwiek kontroli czasowej wyjście przechodzi w stan nieokreślony niezależnie od stanów na innych wejściach. Format jednej lini tabeli table: <input1> <input2>... <inputn> : <stan_biezacy> : <stan_nastepny>; 8
9 Zadania systemowe Wywołuje się je w postaci: $<słowo_kluczowe> Zatrzymywanie symulacji $stop; Zawiesza symulację i wprowadza tryb interaktywny np. w celu analizy sygnałów w projekcie. Zakańczanie symulacji $finish; Kończy symulację. 9
10 Zadania systemowe Wyświetlanie informacji $display(p1, p2,..., pn); $write(p1, p2,..., pn); p1, p2,..., pn zmienne, wyrażenia, ciągi znaków ujęte w cudzysłów. Różnica między $display a $write polega na tym, że pierwszy na końcu ciągu znaków domyślnie wstawia koniec linii a drugi nie. Dla wyświetlenia kilku ciągów znaków w jednej linii używamy $write. Monitorowanie informacji $monitor(p1, p2,..., pn); p1, p2,..., pn zmienne, nazwy sygnałów, ciągi znaków ujęte w cudzysłów. W sposób ciągły monitoruje wartości zmiennych i sygnałów i wyświetla ich wartości w momentach zmiany choć jednego z parametrów. Zadanie to wystarczy wywołać tylko raz. Drugie wystąpienie zadania $monitor powoduje deaktywację poprzedniego. Dwa pomocnicze zadania systemowe: $monitoron; aktywacja zadania $monitor (domyślne) $monitoroff; deaktywacja zadania $monitor 10
11 Zadania systemowe Formatowanie ciągów znakowych: %h lub %H heksadecymalnie %d lub %D dziesiątkowo %o lub %O oktalnie %b lub %B binarnie %c lub %C znak ASCII %v lub %V moc sygnału w węźle %m lub %M nazwy hierarchiczne %s lub %S ciągi znaków (string) %t lub %T bieżący czas %f lub %F liczby rzeczywiste w sposób dziesiętny %e lub %E liczby rzeczywiste w sposób wykładniczy %g lub %G liczby rzeczywiste w sposób dziesiętny lub wykładniczy, tak aby było krócej 11
12 Zadania systemowe module disp; initial begin $display("\\\t%%\n\"\123"); end endmodule $display ncsim> run \ % "S module printval; reg [11:0] r1; initial begin r1 = 12 d10; $display("printing with maximum size - :%d: :%h:",r1,r1 ); $display("printing with minimum size - :%0d: :%0h:",r1,r1 ); end endmodule ncsim> run Printing with maximum size - : 10: :00a: Printing with minimum size - :10: :a: 12
13 Zadania systemowe $display module disp; reg [31:0] rval; pulldown (pd); initial begin rval = 32 d101; $display("rval = %h hex %d decimal",rval,rval); $display("rval = %o octal %b binary",rval,rval); $display("rval has %c ascii character value",rval); $display("pd strength value is %v",pd); $display("current scope is %m"); $display("%s is ascii value for 101",101); $display("simulation time is %t", $time); end endmodule ncsim> run rval = hex 101 decimal rval = octal binary rval has e ascii character value pd strength value is StX current scope is disp e is ascii value for 101 simulation time is 0 13
14 Zadania systemowe $monitor `timescale 1ns / 1ns module top; reg clock, reset; initial begin clock = 1'b0; forever #5 clock = ~clock; end initial begin reset = 1'b0; #1 reset = 1'b1; #3 reset = 1'b0; end //monitorowanie wartości czasu i sygnałów zegara i resetu initial $monitor($time, "ns Wartosci sygnałow clock = %b reset = %b", clock, reset); initial #20 $finish; endmodule 0ns Wartosci sygnałow clock = 0 reset = 0 1ns Wartosci sygnałow clock = 0 reset = 1 4ns Wartosci sygnałow clock = 0 reset = 0 5ns Wartosci sygnałow clock = 1 reset = 0 10ns Wartosci sygnałow clock = 0 reset = 0 15ns Wartosci sygnałow clock = 1 reset = 0 14
15 Funkcja systemowa $random Generacja liczb losowych jest konieczna dla tworzenia losowych wymuszeń w modułach testujących. Służy do tego funkcja systemowa: $random(<seed>) Zwraca ono 32-bitową losową liczbę całkowitą ze znakiem. Standard nie określa algorytmu. Parametr seed (posiew) sprawia, że różne strumienie losowe są generowane dla różnych jego wartości. Może być zadeklarowany jako: integer, reg, lub time. Przypisanie wartości do zmiennej seed musi być wykonane przed wywołaniem. $random % b reg [23:0] rand; rand = $random % 60; Daje liczby losowe z zakresu [(-b+1): (b-1)]. Generacja liczb losowych z zakresu od -59 do 59. reg [23:0] rand; rand = {$random} % 60; Nawiasy klamrowe oznaczają utworzenie modułu wylosowanej wartości co ogranicza zakres do wartości dodatnich tzn. od 0 do 59. reg serdata; serdata = {$random} % 2; Generacja losowego strumienia zer i jedynek. 15
16 Funkcje systemowe konwersji Składnia real real_val; integer $rtoi(real_val); reg [63:0] int_val; real $itor(int_val); real real_val; [63:0] $realtobits(real_val); real $bitstoreal(bit_val); Opis Konwersja odbywa się przez obcięcie części ułamkowej Konwersja odbywa się przez dołaczenie zerowej części ułamkowej converts from a real number to the 64-bit representation (vector) of that real number converts from the bit pattern to a real number Liczby rzeczywiste akceptowane (generowane) przez te funkcje muszą być (są) zgodne z reprezentacją liczby rzeczywistych wprowadzoną przez standard IEEE Standard for Binary Floating-Point Arithmetic (ANSI)
17 Funkcja systemowa $bitstoreal Generacja rzeczywistych liczb losowych w terminach znaku sgn, wykładnika exp i mantysy man. Potrzebne jest użycie funkcji systemowej $bitstoreal. module Tb(); reg sgn; reg [10:0] exp; reg [51:0] man; real r_num; initial begin repeat(5) begin sgn = $random; exp = $random; man = $random; r_num = $bitstoreal({sgn,exp,man}); $display("r_num = %e",r_num); end end endmodule r_num = e+193 r_num = e-73 r_num = e-149 r_num = e-196 r_num = e
18 Zadanie systemowe $readmemb, $readmemh Zadania do inicjowania pamięci zawartością pliku. $readmemb wczytuje zmienne binarne $readmemh wczytuje zmienne heksadecymalne module test; reg [7:0] memory [0:7]; integer i; initial begin $readmemb( init.dat, memory); for(i=0; i<8; i=i+1) $display( memory[%0d]=%b,i, memory[i]); end endmodule $readmemb( <nazwa_pliku>, <zmienna_pam>, <start_adres>, <finish_adres>); Plik init.dat zzzz memory[0]= xxxxxxxx memory[1]= xxxxxxxx memory[2]= memory[3]= memory[4]= memory[5]= memory[6]= 1111zzzz memory[7]=
19 Zadania systemowe linii komend Składnia $test$plusargs(string) $value$plusargs(user_string, variable) Opis This system function searches the list of plusargs for the provided string This system function searches the list of plusargs for a user specified plusarg string. The string is specified in the first argument to the system function as either a string or a register which is interpreted as a string. If the string is found, the remainder of the string is converted to the type specified in the user_string and the resulting value stored in the variable provided. 19
20 Zadanie systemowe initial if ($test$plusargs( test01 )) $readmemh( test01.dat,stim_mem); if ($test$plusargs( test02 )) $readmemh( test02.dat,stim_mem); if ($test$plusargs( test03 )) $readmemh( test03.dat, stim_mem); if ($test$plusargs( test04 )) $readmemh( test04.dat, stim_mem); % ncsim snapshot_name +test01 & % ncsim snapshot_name +test02 & % ncsim snapshot_name +test03 & % ncsim snapshot_name +test04 & % isim snapshot_name plusargs test01 & % isim snapshot_name plusargs test02 & % isim snapshot_name plusargs test03 & % isim snapshot_name plusargs test04 & Incisive, Cadence ISim, Xilinx 20
21 Zadanie systemowe Synteza pamięci stałej ISim, Xilinx 21
22 Zadanie systemowe Synteza pamięci stałej ISim, Xilinx 22
23 Zadania obsługi plików Obsługa plików poprzez zadania systemowe: Otwarcie pliku: <uchwyt_pliku>=$fopen( <nazwa_pliku>,tryb); <uchwyt_pliku> - 32-bitowa wartość z MSB = 1; Deskryptory predefiniowane: STDIN STDOUT STDERR 32 h8000_ h8000_ h8000_002 Pisanie do pliku: $fdisplay(<uchwyt_pliku>, p1, p2,..., pn); $fmonitor(<uchwyt_pliku>, p1, p2,..., pn); p1, p2,..., pn zmienne, sygnały lub łańcuchy znakowe w cudzysłowie tak samo jak dla zwykłych zadań $display, $monitor tryb sposób otwarcia pliku: r odczyt, w zapis, a kontynuacja. Odczyt z pliku: $fgetc, $ungetc, $fgets, $fscanf, $fread Zamknięcie pliku: $fclose(<uchwyt_pliku>); 23
24 Zadania obsługi plików - odczyt Zadanie $fgetc $ungetc $fgets $fscanf $fread Opis Czyta jedne znak Wstawia znak c z powrotem do bufora określonego deskryptorem pliki fd Czyta jedną linię Czyta formatowane dane Czyta dane binarne 24
25 module str(); integer fptr, c; reg [8*12:1] nazwa_plik, buffer; initial nazwa_plik = "datafile.txt"; initial begin fptr = $fopen(nazwa_plik,"r"); if(!fptr ) $stop; $display("otwarto plik %s do czytania o deskryptorze %b", nazwa_plik, fptr); c = 1; Bufor o długosci 12 bajtów while ( c!= 0 ) begin c = $fgets(buffer, fptr); $write(" number=%0d data:%s", c, buffer); end $fclose(fptr); end endmodule Zadanie obsługi plików - odczyt Otwarto plik datafile.txt do czytania o deskryptorze number=12 Data:abababababa number=12 Data:xxxxbbbbcccc number=1 Data: number=9 Data: ccccdddd number=12 Data:mmmmmmmmmmmm number=2 Data: number=0 Data: m m abababababa xxxxbbbbcccc ccccdddd mmmmmmmmmmmmm Incisive, Cadence Napotkano koniec pliku, więc bufor buffer nie został zaktualizowany. 25
26 Zadanie obsługi plików - zapis module strout(); reg [255:0] v; reg [7:0] xb; integer fptr; initial begin xb = {8{1'b1}}; v = {32{xb}}; fptr = $fopen("output_data.txt", "w"); if(!fptr) begin $display("blad!"); $stop; end $display("otwarto plik output_data.txt o deskryptorze %b", fptr); $fwrite(fptr, "Value of v is: %b", v); $fwrite(fptr, "Some string."); $fclose(fptr); end endmodule Wynik symulacji: Value of v is: Some string. Incisive, Cadence Otwarto plik output_data.txt o deskryptorze
27 Wielokanałowy deskryptor: służy tylko do zapisu Zadanie obsługi plików powstaje w nieobecności argumentu tryb ma MSB=0 i LSB=0 zawiera tylko jeden bit ustawiony na 1. Zapis do wielu plików równocześnie jest możliwy poprzez alternatywę deskryptorów wielokanałowych. 27
28 Zapis wielokanałowy module mcdtry; integer mcd1, mcd2, cluster, all; initial begin mcd1 = $fopen("plik1.dat"); if(mcd1 == 0) $display("blad otwarcia pliku!"); mcd2 = $fopen("plik2.dat"); if(mcd2 == 0) $display("blad otwarcia pliku!"); cluster = mcd1 mcd2; //uzupelnij o stdout all = cluster 1'b1; $display("mcd1\t=%b\nmcd2\t=%b\ncluster\t=%b\nall\t=%b", mcd1,mcd2,cluster,all); $fdisplay(all,"czas: %0d ns", $time); #10 $fdisplay(cluster,"xxxxxxxx", $time); forever #10 $fdisplay(mcd2, "tylko do plik2.txt"); end initial #100 $finish; endmodule 28
29 Zapis wielokanałowy Wyniki z symulacji kodu na poprzednim slajdzie: Incisive, Cadence Czas: 0 ns plik2.txt XXXXXXXX 10 tylko do plik2.txt tylko do plik2.txt tylko do plik2.txt tylko do plik2.txt tylko do plik2.txt tylko do plik2.txt tylko do plik2.txt tylko do plik2.txt Czas: 0 ns plik1.txt XXXXXXXX 10 ncsim> run stdout mcd1 = mcd2 = cluster = all = Czas: 0 ns Simulation complete via $finish(1) at time 100 NS + 0./mcd.v:18 initial #100 $finish; 29
30 Interfejsy do języków programowania Dwa sposoby dostępu do struktury danych projektu napisanego w Verilogu: Programming Language Interface PLI standard proceduralnego dostępu z poziomu języka C i mechanizmów interfejsu C-Verilog, Verilog Procedural Interface VPI - dostarczający zorientowanych obiektowo sposobów dostępu do obiektów Verilog-a z poziomu języka C, TCL - dostęp do obiektów Verilog-a z poziomu języka skryptowego. 30
31 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: 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 control Timing controls i timing checks to są dwie zupełnie odmienne rodziny konstrukcji Veriloga 31
32 Sterowanie przebiegiem czasu Opóźnieniowe Zdarzeniowe Czułe na poziom wait zwykłe wewnątrz przypisań zerowe zwykłe z nazwą wielokrotne 32
33 Sterowanie opóźnieniowe 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) delay-based Trzy rodzaje: zwykłe (regular) wewnątrz przypisań (intra-assignment) zerowe (zero delay) Konstrukcja ta jest niesyntezowalna 33
34 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 34
35 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 35
36 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 36
37 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 37
38 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 38
39 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) 39
40 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 40
41 Sterowanie zdarzeniowe z nazwą event received; //deklaracja zdarzenia received named 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 bufor danych przechowuje dane po przybyciu ostatniego pakietu danych 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 41
42 Sterowanie zdarzeniowe wielokrotne 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 or clock, d) begin if (reset) q = 1 b0; else if(clock) q = d; end Verilog
43 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 43
44 Układ sekwencyjny Układ kombinacyjny Przypisania ciągłe module xx (...); wire [4:0] komb_out; wire [4:0] c; reg [4:0] a, b; assign komb_out = a (b & c); endmodule Przypisania proceduralne module xx (...); reg [4:0] komb_out; wire [4:0] c; reg [4:0] a, b; komb_out = a (b & c); endmodule module xx (...); reg [4:0] seq_out; wire [4:0] c; reg [4:0] a, b; clk) seq_out <= a (b & c); endmodule 44
45 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. 45
46 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. 46
47 module assigntry(input clk, rst, set, d, output reg q); if(~rst) assign q = 1'b0; else if(~set) assign q = 1'b1; else deassign q; clk) q <= d; endmodule Przy przejściu rst w stan niski wyjście q otrzyma stan niski. Przy przejściu set w stan niski wyjście q otrzyma stan wysoki. 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 Encounter RTL Compiler, Cadence XST, Xilinx 47
48 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 48
49 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 49
50 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 assign... deassign ; uważana za zły styl kodowania, Do zmiennej węzłowej lub rejestrowej force... release ; zastosowanie ograniczone do generacji wymuszeń i dubugowania. 50
51 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. 51
52 `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 52
53 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 53
Wykład 6. 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 Zadania systemowe Wykład 6 2018 22 październik 2018 Konstrukcja symulatora
Bardziej szczegółowoWykł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ółowoWykł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ółowoProjektowanie 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ółowoKonwencje językowe Verilog-a APSC
Konwencje językowe Verilog-a APSC Podstawowe konwencje są takie same jak w C. Elementami języka są: komentarze, ograniczniki, liczby, ciągi znaków, identyfikatory i słowa kluczowe. Verilog rozróżnia małe
Bardziej szczegółowoWykł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ółowoJę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ółowo1 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ółowoWykł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ółowoJę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ółowoPrzykł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ółowoLaboratorium 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ółowoWykł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ółowoSynteza 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ółowoUkł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ółowoProgramowalne 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ółowo1. 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ółowoProjektowanie 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ółowoSystemy 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ółowobocznej 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ółowoLaboratorium 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ółowoWydział 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ółowoProgramowanie 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ółowoModelowanie 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ółowoPojedyncze 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ółowoUwagi 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ółowoKró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ółowoProjektowanie Systemów Cyfrowych. Październik 2017 Symulacja na różnych poziomach Biblioteki komórek standardowych i modele symulacyjne
Projektowanie Systemów Cyfrowych Prowadzący: dr inż. Andrzej Skoczeń, System ISE Xilinx: Dodatek 1 2017 Październik 2017 Symulacja na różnych poziomach Biblioteki komórek standardowych i modele symulacyjne
Bardziej szczegółowoAutomat 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ółowoAby w pełni przetestować układ o trzech wejściach IN_0, IN_1 i IN_2 chcemy wygenerować wszystkie możliwe kombinacje sygnałów wejściowych.
Generowanie sygnałów testowych VHDL Wariant współbieżny (bez procesu): sygnał
Bardziej szczegółowoAHDL - 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ółowoProjektowanie 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ółowoProjektowanie 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ółowoModelowanie 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ółowoJęzyk programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści
Język programowania DELPHI / Andrzej Marciniak. Poznań, 2012 Spis treści Przedmowa 11 Przyjęta notacja 13 Rozdział 1. Wprowadzenie 15 1.1. Ogólne zasady programowania zorientowanego obiektowo 15 1.2. Historia
Bardziej szczegółowo(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ółowoProgramowalne 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ółowoProgramowanie 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ółowoProjektowanie Systemów Cyfrowych. Październik 2014 Symulacja na różnych poziomach Biblioteki komórek standardowych i modele symulacyjne
Projektowanie Systemów Cyfrowych Prowadzący: dr inż. Andrzej Skoczeń, System ISE Xilinx: Dodatek 1 2014 Październik 2014 Symulacja na różnych poziomach Biblioteki komórek standardowych i modele symulacyjne
Bardziej szczegółowoPascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:
Zmienna i typ Pascal typy danych Zmienna to obiekt, który może przybierać różne wartości. Typ zmiennej to zakres wartości, które może przybierać zmienna. Deklarujemy je w nagłówku poprzedzając słowem kluczowym
Bardziej szczegółowoOpis: 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ółowoINFORMATYKA Studia Niestacjonarne Elektrotechnika
INFORMATYKA Studia Niestacjonarne Elektrotechnika Wydział Elektrotechniki i Informatyki dr inż. Michał Łanczont Wydział Elektrotechniki i Informatyki p. E419 tel. 81-538-42-93 m.lanczont@pollub.pl http://lanczont.pollub.pl
Bardziej szczegółowoUkł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ółowoProjektowanie 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ółowoProste 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ółowoPLC1: Programowanie sterowników logicznych SIEMENS SIMATIC S7-300/400 - kurs podstawowy
PLC1: Programowanie sterowników logicznych SIEMENS SIMATIC S7-300/400 - kurs podstawowy DZIEŃ 1 Idea sterowania procesu lub maszyny: Sterowanie za pomocą przekaźników Sterowanie dedykowane Sterowanie za
Bardziej szczegółowoProgramowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.
Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni Wykład 6 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Wskaźnik do pliku Dostęp do pliku: zapis, odczyt,
Bardziej szczegółowoProgramowalne 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ółowoPolitechnika 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ółowoLaboratorium 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ółowoJę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ółowoInformatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki
Informatyka I Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 1 Plan wykładu
Bardziej szczegółowoPodstawy 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ółowoObsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013
Laboratorium Podstaw Informatyki Strona 1 Laboratorium Podstaw Informatyki Kierunek Elektrotechnika Obsługa plików Kraków 2013 Laboratorium Podstaw Informatyki Strona 2 Obsługa plików Zanim będziemy mogli
Bardziej szczegółowoProgramowanie Niskopoziomowe
Programowanie Niskopoziomowe Wykład 2: Reprezentacja danych Dr inż. Marek Mika Państwowa Wyższa Szkoła Zawodowa im. Jana Amosa Komeńskiego W Lesznie Plan Kilka ciekawostek Zapisy binarny, oktalny, decymalny
Bardziej szczegółowoSumatory 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ółowo1 Przygotował: mgr inż. Maciej Lasota
Laboratorium nr 1 1/7 Język C Instrukcja laboratoryjna Temat: Programowanie w powłoce bash (shell scripting) 1 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do programowania w powłoce Skrypt powłoki
Bardziej szczegółowoBiblioteka standardowa - operacje wejścia/wyjścia
Biblioteka standardowa - operacje wejścia/wyjścia Przemysław Gawroński D-10, p. 234 Wykład 6 15 stycznia 2019 (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 1 / 14 Outline
Bardziej szczegółowoPodstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH
Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH Michał Bujacz bujaczm@p.lodz.pl B9 Lodex 207 godziny przyjęć: środy i czwartki 10:00-11:00 http://www.eletel.p.lodz.pl/bujacz/ 1 Pytania weryfikacyjne:
Bardziej szczegółowoProgramowany układ czasowy
Programowany układ czasowy Zbuduj na płycie testowej ze Spartanem-3A prosty ośmiobitowy układ czasowy pracujący w trzech trybach. Zademonstruj jego działanie na ekranie oscyloskopu. Projekt z Języków Opisu
Bardziej szczegółowoISO/ANSI C dostęp do plików ISO/ANSI C. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików
Plik to uporządkowany ciąg danych Dostęp do danych w pliku jest sekwencyjny, tj. istnieje pojęcie elementu aktualnego (tzw. wskaźnika pliku). Możliwy dostęp do danych w pliku jest tylko tam, gdzie wskazuje
Bardziej szczegółowoJęzyki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.
Typy, operatory, wyrażenia. Wejście i wyjście. Typy, operatory, wyrażenia Zmienna: [] [ '[' ']' ] ['=' ]; Zmienna to fragment pamięci o określonym
Bardziej szczegółowoLaboratorium 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ółowoCzęść 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ółowoUkł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ółowoKurs Podstawowy S7. Spis treści. Dzień 1
Spis treści Dzień 1 I System SIMATIC S7 - wprowadzenie (wersja 1401) I-3 Rodzina sterowników programowalnych SIMATIC S7 firmy SIEMENS I-4 Dostępne moduły i ich funkcje I-5 Jednostki centralne I-6 Podstawowe
Bardziej szczegółowoPliki. 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ółowoPracownia Komputerowa wykład VI
Pracownia Komputerowa wykład VI dr Magdalena Posiadała-Zezula http://www.fuw.edu.pl/~mposiada 1 Przypomnienie 125 (10) =? (2) Liczby całkowite : Operacja modulo % reszta z dzielenia: 125%2=62 reszta 1
Bardziej szczegółowoElementy języków programowania
Elementy języków programowania Olsztyn 2007-2012 Wojciech Sobieski Języki programowania wymyślono po to, by można było dzięki nim tworzyć różnorodne programy komputerowe. Oczekuje się również, że tworzone
Bardziej szczegółowoProgramowalne 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ółowoOrganizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej
Struktura stanowiska laboratoryjnego Na rysunku 1.1 pokazano strukturę stanowiska laboratoryjnego Z80 z interfejsem częstościomierza- czasomierz PFL 21/22. Rys.1.1. Struktura stanowiska. Interfejs częstościomierza
Bardziej szczegółowoUkł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Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.
Laboratorium Podstaw Informatyki Strona 1 Laboratorium Podstaw Informatyki Kierunek Elektrotechnika Ćwiczenie 4 Obsługa plików Kraków 2010 Laboratorium Podstaw Informatyki Strona 2 Obsługa plików Zanim
Bardziej szczegółowoSkrypty 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ółowoCyfrowy zapis informacji
F1-1 Cyfrowy zapis informacji Alfabet: uporządkowany zbiór znaków, np. A = {a,b,..., z} Słowa (ciągi) informacyjne: łańcuchy znakowe, np. A i = gdtr Długość słowa n : liczba znaków słowa, np. n(sbdy) =
Bardziej szczegółowoISO/ANSI C dostęp do plików ISO/ANSI C. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików
Plik to uporządkowany ciąg danych Dostęp do danych w pliku jest sekwencyjny, tj. istnieje pojęcie elementu aktualnego (tzw. wskaźnika pliku). Możliwy dostęp do danych w pliku jest tylko tam, gdzie wskazuje
Bardziej szczegółowoStruktury, unie, formatowanie, wskaźniki
Struktury, unie, formatowanie, wskaźniki 1. Napisz aplikację, która na wejściu dostaje napis postaci W Roku Pańskim 1345, władca Henryk 12, na rzecz swoich 143209 poddanych uchwalił dekret o 20 procentowej
Bardziej szczegółowoProgramowanie w języku Python. Grażyna Koba
Programowanie w języku Python Grażyna Koba Kilka definicji Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i
Bardziej szczegółowoPython wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA
Python wprowadzenie Warszawa, 24 marca 2017 Python to język: nowoczesny łatwy w użyciu silny można pisać aplikacje Obiektowy klejący może być zintegrowany z innymi językami np. C, C++, Java działający
Bardziej szczegółowoSpis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal
Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO Rozdział 1. Wybór i instalacja kompilatora języka Pascal 1.1. Współczesne wersje kompilatorów Pascala 1.2. Jak zainstalować
Bardziej szczegółowoAltera 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ółowoPrzerzutnik 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ółowoJĘZYK SHELL JEST PEŁNYM JĘZYKIEM PROGRAMOWANIA
JĘZYK SHELL JEST PEŁNYM JĘZYKIEM PROGRAMOWANIA, który zawiera: zmienne, konstrukcje warunkowe i iteracyjne (IF-THEN-ELSE, CASE, DO WHILE, DO UNTIL), konfigurowane środowisko użytkownika. METAZNAKI zestaw
Bardziej szczegółowoAdresowanie 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ółowoProgramowany układ czasowy APSC
Programowany układ czasowy APSC Ośmiobitowy układ czasowy pracujący w trzech trybach. Wybór trybu realizowany jest przez wartość ładowaną do wewnętrznego rejestru zwanego słowem sterującym. Rejestr ten
Bardziej szczegółowoPodstawowe 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ółowoLiteratura. 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ółowoPodstawy działania układów cyfrowych...2 Systemy liczbowe...2 Kodowanie informacji...3 Informacja cyfrowa...4 Bramki logiczne...
Podstawy działania układów cyfrowych...2 Systemy liczbowe...2 Kodowanie informacji...3 Informacja cyfrowa...4 Bramki logiczne...4 Podział układów logicznych...6 Cyfrowe układy funkcjonalne...8 Rejestry...8
Bardziej szczegółowoProgramowanie 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ółowoProgramowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop
Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop. 2010 Spis treści Wstęp 11 Część I PASCAL - wprowadzenie do programowania strukturalnego
Bardziej szczegółowoJĘ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ółowoPodstawy Informatyki. Metalurgia, I rok. Wykład 3 Liczby w komputerze
Podstawy Informatyki Metalurgia, I rok Wykład 3 Liczby w komputerze Jednostki informacji Bit (ang. bit) (Shannon, 1948) Najmniejsza ilość informacji potrzebna do określenia, który z dwóch równie prawdopodobnych
Bardziej szczegółowoPodstawy 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ółowoDIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0
Uwaga: DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0 1. Zostały pominięte diagramy: CYFRA, CYFRA SZESNASTKOWA, ZNAK i LITERA. Nie została uwzględniona możliwość posługiwania się komentarzami. 2. Brakuje
Bardziej szczegółowoPodstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD
Podstawy programowania Wykład: 9 Łańcuchy znaków 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Rodzaje plików Dane przechowywane w pliku mogą mieć reprezentację binarną (taką samą, jak
Bardziej szczegółowoElżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki
Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki Turbo Pascal jest językiem wysokiego poziomu, czyli nie jest rozumiany bezpośrednio dla komputera, ale jednocześnie jest wygodny dla programisty,
Bardziej szczegółowoWstęp do programowania
Wstęp do programowania wykład 2 Piotr Cybula Wydział Matematyki i Informatyki UŁ 2012/2013 http://www.math.uni.lodz.pl/~cybula Język programowania Każdy język ma swoją składnię: słowa kluczowe instrukcje
Bardziej szczegółowoLICZNIKI LABORATORIUM. Elektronika AKADEMIA GÓRNICZO-HUTNICZA IM. STANISŁAWA STASZICA W KRAKOWIE. Wydział Informatyki, Elektroniki i Telekomunikacji
AKADEMIA GÓRNICZO-HUTNICZA IM. STANISŁAWA STASZICA W KRAKOWIE Wydział Informatyki, Elektroniki i Telekomunikacji Katedra Elektroniki LABORATORIUM Elektronika LICZNIKI Rev.1.0 1. Wprowadzenie Celem ćwiczenia
Bardziej szczegółowoWstęp do informatyki. stęp do informatyki Polecenia (cz.2)
Wstęp do informatyki stęp do informatyki Polecenia (cz.2) Lista procesów top Pokaż listę procesów polecenie interaktywne Procesy Uruchamianie w tle. shell nie czeka na zakończenie procesu, można wydawać
Bardziej szczegółowoProgramowanie 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