430 likes | 660 Views
Język VERILOG w praktyce. Język VERILOG Przykłady syntezy blokowej. Elementy systemu cyfrowego magistrala danych. Da ne. Extern. magistrala. zegar. R. 1. R. 2. Rk. R. 1. R. 1. R. 2. R. 2. Rk. Rk. in. out. in. out. in. out. Układ sterujący. funkcja.
E N D
Język VERILOG w praktyce
Język VERILOG Przykłady syntezy blokowej
Elementy systemu cyfrowegomagistrala danych Dane Extern magistrala zegar R 1 R 2 Rk R 1 R 1 R 2 R 2 Rk Rk in out in out in out Układ sterujący funkcja Rys.7.60.System cyfrowy złożony z k-rejestrów połączonych z magistralą danych
Elementy systemu cyfrowegomagistrala danych cd. Rys.7.61.Połączenie rejestrów z magistralą z użyciem buforów trójstanowych
Elementy systemu cyfrowegomagistrala danych cd. module regn (R, Rin, Clock, Q); parameter n = 8; input [n-1:0] R; input Rin, Clock;// Rin - zezwolenie output [n-1:0] Q; reg [n-1:0] Q; always @(posedge Clock) if (Rin) Q <= R; endmodule Rys.7.66.Specyfikacja n-bitowego rejestru (konstrukcja jak na rys. 7.61)
Elementy systemu cyfrowegomagistrala danych cd. module trin (Y, E, F); parameter n = 8; input [n-1:0] Y; input E;// zezwolenie output [n-1:0] F; wire [n-1:0] F; assign F = E ? Y : 'bz;// bz – stan „trzeci” endmodule Rys.7.67.Specyfikacja n-bitowego modułu trójstanowego
Elementy systemu cyfrowegomagistrala danych cd. , , , R 2 R 3 R 1 R 2 R 3 R 1 out in out in out in w Q Q Q D D D Zegar Q Q Q Reset Rys.7.62.Rejestr przesuwający - przykład układu sterującego wymianą danych w systemie z rys. 7.60
Elementy systemu cyfrowegomagistrala danych cd. module shiftr (Resetn, w, Clock, Q); parameter m = 4; input Resetn, w, Clock; output [1:m] Q; reg [1:m] Q; integer k; always @(negedge Resetn or posedge Clock) if (!Resetn) Q <= 0; else begin for (k = m; k > 1; k = k-1) Q[k] <= Q[k-1]; Q[1] <= w; end endmodule Rys.7.68.Specyfikacja rejestru z rys. 7.62
Elementy systemu cyfrowegomagistrala danych cd. Rys.7.69.Specyfikacja systemu cyfrowego z rys. 7.60
Elementy systemu cyfrowegomagistrala danych cd. Magistrala R 1 R 2 Rk in in in R 1 R 2 Rk Zegar Dane S 0 Multipleksery S j – 1 Rys.7.65.Magistrala danych z multiplekserami
Elementy systemu cyfrowegomagistrala danych cd. Rys.7.70.Specyfikacja magistrali danych z multiplekserami
Elementy systemu cyfrowegomagistrala danych cd. Rys.7.71.Uproszczona wersja specyfikacji z rys. 7.70
Przykład systemu cyfrowego:prosty procesor Rys.7.73.Schemat blokowy prostego procesora
Przykład systemu cyfrowego:prosty procesor Operacja Realizowana funkcja Rx Data Load Rx, Data Rx Move Rx, Ry Ry Rx Add Rx, Ry Rx Ry + _ Sub Rx, Ry Rx Rx Ry Tablica 7.2.Operacje wykonywane przez procesor
Przykład systemu cyfrowego:prosty procesor cd. T T T T 0 1 2 3 y y y y 0 1 2 3 dekoder2-na-4 w w En 1 0 1 Q Q 1 0 Zegar Licznik (up) Clear Reset Rys. 7.74.Fragment układu sterowania – fazy taktowania
Przykład systemu cyfrowego:prosty procesor cd. I I I I X X X X Y Y Y Y 0 1 2 3 0 1 2 3 0 1 2 3 y y y y y y y y y y y y 0 1 2 3 0 1 2 3 0 1 2 3 Dekoder 2-na-4 Dekoder 2-na-4 Dekoder 2-na-4 w w w w w w En En En 1 0 1 0 1 0 1 1 1 Zegar Rejestr funkcji FR in f f Rx Rx Ry Ry 1 0 1 0 1 0 Funkcja Rys. 7.75.Układu sterowania – pomocnicze sygnały wyboru funkcji
Przykład systemu cyfrowego:prosty procesor cd. Clear= wT0+ Done; FRin= wT0 Extern= I0T1 Done= (I0+ I1)T1+ (I2+ I3)T3 Ain= (I2+ I3) T1 Gin= (I2+ I3)T2 Gout= (I2+ I3) T3 AddSub= I3 ¯ Rys. 7.75a. Specyfikacja sygnałów sterujących procesora
Przykład systemu cyfrowego:prosty procesor cd. R0in= (I0+ I1)T1X0+ (I2+ I3)T3X0 R0out= I1T1Y0+ (I2+ I3)(T1X0+ T2Y0) Tablica. 7.3.Sygnały sterujące wymagane w każdej operacji/fazie działania
Przykład systemu cyfrowego:prosty procesor cd. module upcount (Clear, Clock, Q); input Clear, Clock; output [1:0] Q; reg[1:0] Q; always @(posedge Clock) if (Clear) Q <= 0; else Q <= Q + 1; endmodule Rys. 7.76.Pomocniczy licznik (up-count) z synchronicznym resetem
Przykład systemu cyfrowego:prosty procesor cd. Rys. 7.77.Specyfikacja procesora (część a)
Przykład systemu cyfrowego:prosty procesor cd. Rys. 7.77.Specyfikacja procesora (część b.)
Przykład systemu cyfrowego:prosty procesor cd. Rys. 7.78.Alternatywna specyfikacja procesora (część a)
Przykład systemu cyfrowego:prosty procesor cd. Rys. 7.78.Alternatywna specyfikacja procesora (część b)
Przykład systemu cyfrowego:prosty procesor cd. Rys. 7.78.Alternatywna specyfikacja procesora (część c)
Przykład systemu cyfrowego:miernik czasu reakcji Wyświetlacze 7-segmentowe V V DD DD przełącznik R R L LED c c c 9 1 0 a b g a b g w Konwertor Konwertor licznik 10-bitowy Zegar w w w w w w w w 0 1 2 3 0 1 2 3 0 Q D (a) Dzielnik zegara 1 1 c Q 9 BCD BCD 1 0 E Dwucyfrowy licznik BCD Zerowanie Clear (b) Przełącznik, dioda LED, wyświetlacz 7-segmentowy Rys. 7.80Układ do pomiaru czasu reakcji
Przykład systemu cyfrowego:miernik czasu reakcji cd. Rys. 7.81Specyfikacja dwucyfrowego licznika BCD
Reset w = 1 ¤ ¤ A z = 0 B z = 0 w = 0 w = 0 w = 1 w = 0 ¤ C z = 1 w = 1 VERILOG – specyfikacja automatów Rys. 8.3 Graf stanów prostego automatu (typ Moore’a)
VERILOG – specyfikacja automatów cd. module simple (Clock, Resetn, w, z); input Clock, Resetn, w; output z; reg [2:1] y, Y; parameter [2:1] A = 2'b00, B = 2'b01, C = 2'b10;// kodowanie stanów automatu // Określenie stanu następnego –część kombinacyjna always @(w or y) case (y) A: if(w) Y = B; elseY = A; B: if (w) Y = C; elseY = A; C: if (w) Y = C; elseY = A; default: Y = 2'bxx; endcase // Określenie bloku sekwencyjnego always @(negedge Resetn or posedge Clock) if (Resetn == 0) y <= A; elsey <= Y; // Określenie wyjścia assign z = (y == C); endmodule Rys. 8.29 Specyfikacja automatu z rys. 8.3
VERILOG – specyfikacja automatów cd. module simple (Clock, Resetn, w, z); input Clock, Resetn, w; output z; reg z; reg [2:1] y, Y; parameter [2:1] A = 2'b00, B = 2'b01, C = 2'b10;// Kodowanie stanów automatu // Określenie stanu następnego – część kombinacyjna always @(w or y) begin case (y) A: if (w) Y = B; else Y = A; B: if (w) Y = C; else Y = A; C: if (w) Y = C; else Y = A; default: Y = 2'bxx; endcase z = (y == C); //Określenie wyjścia end // Określenie bloku sekwencyjnego always @(negedge Resetn or posedge Clock) if (Resetn == 0) y <= A; else y <= Y; endmodule Rys. 8.33 Druga wersja specyfikacji automatu z rys. 8.3
VERILOG – specyfikacja automatów cd. module simple (Clock, Resetn, w, z); input Clock, Resetn, w; output z; reg [2:1] y; parameter [2:1] A = 2'b00, B = 2'b01, C = 2'b10;// Kodowanie stanów automatu // Określenie bloku sekwencyjnego always @(negedge Resetn or posedge Clock) if (Resetn == 0) y <= A; else case (y) A: if (w) y <= B; else y <= A; B: if (w) y <= C; else y <= A; C: if (w) y <= C; else y <= A; default: y <= 2'bxx; endcase // Określenie wyjścia assign z = (y == C); endmodule Rys. 8.34 Uproszczona wersja specyfikacji automatu z rys. 8.3
Reset ¤ w = 1 z = 0 ¤ ¤ w = 0 z = 0 w = 1 z = 1 A B ¤ w = 0 z = 0 VERILOG – specyfikacja automatów cd. Rys. 8.34 Specyfikacja automatu Mealy’ego z rys. 8.23
Przykład :sumator sekwencyjny A a Rejestr przes. QA s Automat Sterujący sumator Rejestr przesuw. Rejestr przes. QB b Sum A B = + B Zegar Rys. 8.39 Schemat sumatora sekwencyjnego
Przykład :sumator sekwencyjny cd. Rys. 8.40 Graf stanów automatu sterującego sumatora
Przykład :sumator sekwencyjny cd. Stan następny Wyjście Stan bieżący ab =00 01 10 11 00 01 10 11 y Y s (G) 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0 0 1 (H) 1 Y = ab + ay + by S = a b y Rys. 8.40 Zakodowana tablica p-w automatu sterującego
Przykład :sumator sekwencyjny cd. module shiftrne (R, L, E, w, Clock, Q); parameter n = 8; input [n-1:0] R;// Wejście równoległe input L, E, w, Clock;// L – ładowanie z we R, w – wejście szeregowe output [n-1:0] Q; reg [n-1:0] Q; integer k; always @(posedge Clock) if (L)// Ładowanie Q <= R; else if (E) begin for (k = n-1; k > 0; k = k-1) Q[k-1] <= Q[k];// Przesuwanie w prawo Q[n-1] <= w;// Wsuwanie do wejścia rejestru (Q[n-1]) end endmodule Rys. 8.48 Pomocniczy rejestr przesuwający w prawo z wejściem zezwolenia En
Przykład :sumator sekwencyjny cd. 1 0 0 0 a a D D D D 7 0 3 2 1 0 L Licznik E L w 0 Rejestr Q Q Q Q 3 2 1 0 1 E Automat sumatora b b 7 0 Run L 0 0 Rejestr w 0 1 E L Rejestr w E Zegar Reset Sum Sum 7 0 Rys. 8.50 Szczegółowy schemat funkcjonalny sumatora sekwencyjnego
Przykład :sumator sekwencyjny cd. Rys. 8.49 Specyfikacja sumatora sekwencyjnego
Przykład :licznik jedynek w słowie B = 0 ; while A 0 do a = 1 if then 0 B = B + 1 ; end if; A Right-shift ; end while; Rys. 10.9 Algorytm licznika jedynek i schemat funkcjonalny (część operacyjna)
Przykład :licznik jedynek w słowie cd. Rys. 10.9 Sieć działań układu sterującego licznika
Przykład :licznik jedynek w słowie cd. Rys. 10.13 Specyfikacja układu licznika jedynek cz. a.
Przykład :licznik jedynek w słowie cd. Rys. 10.13 Specyfikacja układu licznika jedynek cz. b.