Język VERILOG w praktyce

Preview:

DESCRIPTION

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. - PowerPoint PPT Presentation

Citation preview

2004 Krzysztof Jasiński PRUS PRUS

Język VERILOG w praktyce

2004 Krzysztof Jasiński PRUS PRUS

Język VERILOG

Przykładysyntezy blokowej

32004 Krzysztof Jasiński

ITPW PRUS – W6

Elementy systemu cyfrowegomagistrala danych

Elementy systemu cyfrowegomagistrala danych

Rys. 7.60. System cyfrowy złożony z k-rejestrów połączonych z magistralą danych

R 1 in Rkin

magistrala

zegar

R 1 out R 2 in R 2 out Rkout

Układ sterujący funkcja

R 1 R 2 Rk

DaneExtern

42004 Krzysztof Jasiński

ITPW PRUS – W6

Elementy systemu cyfrowegomagistrala danych cd.

Elementy systemu cyfrowegomagistrala danych cd.

Rys. 7.61. Połączenie rejestrów z magistralą z użyciem buforów trójstanowych

52004 Krzysztof Jasiński

ITPW PRUS – W6

Elementy systemu cyfrowegomagistrala danych cd.

Elementy systemu cyfrowegomagistrala danych cd.

Rys. 7.66. Specyfikacja n-bitowego rejestru (konstrukcja jak na rys. 7.61)

module regn (R, Rin, Clock, Q);parameter n = 8;input [n-1:0] R;input Rin, Clock; // Rin - zezwolenieoutput [n-1:0] Q;reg [n-1:0] Q;

 always @(posedge Clock) if (Rin)

Q <= R;

endmodule 

62004 Krzysztof Jasiński

ITPW PRUS – W6

Elementy systemu cyfrowegomagistrala danych cd.

Elementy systemu cyfrowegomagistrala danych cd.

Rys. 7.67. Specyfikacja n-bitowego modułu trójstanowego

module trin (Y, E, F);parameter n = 8;input [n-1:0] Y; input E; // zezwolenieoutput [n-1:0] F;wire [n-1:0] F;

 assign F = E ? Y : 'bz; // bz – stan „trzeci”

endmodule

72004 Krzysztof Jasiński

ITPW PRUS – W6

Elementy systemu cyfrowegomagistrala danych cd.

Elementy systemu cyfrowegomagistrala danych cd.

Rys. 7.62. Rejestr przesuwający - przykład układu sterującego wymianą danych w systemie z rys. 7.60

D Q

Q Zegar

D Q

Q

D Q

Q

w

R 2 out R 3 in

Reset

R 1 out R 2 in R 3 out R 1 in

82004 Krzysztof Jasiński

ITPW PRUS – W6

Elementy systemu cyfrowegomagistrala danych cd.

Elementy systemu cyfrowegomagistrala danych cd.

Rys. 7.68. Specyfikacja rejestru z rys. 7.62

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

92004 Krzysztof Jasiński

ITPW PRUS – W6

Elementy systemu cyfrowegomagistrala danych cd.

Elementy systemu cyfrowegomagistrala danych cd.

Rys. 7.69. Specyfikacja systemu cyfrowego z rys. 7.60

102004 Krzysztof Jasiński

ITPW PRUS – W6

Elementy systemu cyfrowegomagistrala danych cd.

Elementy systemu cyfrowegomagistrala danych cd.

Rys. 7.65. Magistrala danych z multiplekserami

Dane

R 1 in

Multipleksery

R 2 in Rkin

Magistrala

Zegar

S j 1 –

S 0

R 1 R 2 Rk

112004 Krzysztof Jasiński

ITPW PRUS – W6

Elementy systemu cyfrowegomagistrala danych cd.

Elementy systemu cyfrowegomagistrala danych cd.

Rys. 7.70. Specyfikacja magistrali danych z multiplekserami

122004 Krzysztof Jasiński

ITPW PRUS – W6

Elementy systemu cyfrowegomagistrala danych cd.

Elementy systemu cyfrowegomagistrala danych cd.

Rys. 7.71. Uproszczona wersja specyfikacji z rys. 7.70

132004 Krzysztof Jasiński

ITPW PRUS – W6

Przykład systemu cyfrowego:prosty procesor

Przykład systemu cyfrowego:prosty procesor

Rys. 7.73. Schemat blokowy prostego procesora

142004 Krzysztof Jasiński

ITPW PRUS – W6

Przykład systemu cyfrowego:prosty procesor

Przykład systemu cyfrowego:prosty procesor

Tablica 7.2. Operacje wykonywane przez procesor

Operacja Realizowana funkcja

Load Rx, Data

Move Rx, Ry

Add Rx, Ry

Sub Rx, Ry

Rx Data

Rx Ry

Rx Rx Ry

Rx Rx Ry_

+

152004 Krzysztof Jasiński

ITPW PRUS – W6

Przykład systemu cyfrowego:prosty procesor cd.

Przykład systemu cyfrowego:prosty procesor cd.

Rys. 7.74. Fragment układu sterowania – fazy taktowania

Reset

Licznik (up)Clear

w 0 En

y 0

w 1

y 1 y 2 y 3

1

T 1 T 2 T 3

dekoder2-na-4

Q 1 Q 0 Zegar

T 0

162004 Krzysztof Jasiński

ITPW PRUS – W6

Przykład systemu cyfrowego:prosty procesor cd.

Przykład systemu cyfrowego:prosty procesor cd.

Rys. 7.75. Układu sterowania – pomocnicze sygnały wyboru funkcji

Zegar

X 0

w 0 En

y 0

w 1

y 1 y 2 y 3

1

X 1 X 2 X 3

Dekoder 2-na-4

Rejestr funkcji

Y 0

w 0 En

y 0

w 1

y 1 y 2 y 3

1

Y 1 Y 2 Y 3 I 0

En

y 0 y 1 y 2 y 3

1

I 1 I 2 I 3

Dekoder 2-na-4

FRin

f 1 f 0 Rx1 Rx0 Ry1 Ry0

w 0 w 1

Funkcja

Dekoder 2-na-4

172004 Krzysztof Jasiński

ITPW PRUS – W6

Przykład systemu cyfrowego:prosty procesor cd.

Przykład systemu cyfrowego:prosty procesor cd.

Rys. 7.75a. Specyfikacja sygnałów sterujących procesora

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

¯

182004 Krzysztof Jasiński

ITPW PRUS – W6

Przykład systemu cyfrowego:prosty procesor cd.

Przykład systemu cyfrowego:prosty procesor cd.

Tablica. 7.3. Sygnały sterujące wymagane w każdej operacji/fazie działania

R0in = (I0 + I1)T1X0 + (I2 + I3)T3X0

R0out = I1 T1Y0 + (I2 + I3)(T1X0 +

T2Y0)

192004 Krzysztof Jasiński

ITPW PRUS – W6

Przykład systemu cyfrowego:prosty procesor cd.

Przykład systemu cyfrowego:prosty procesor cd.

Rys. 7.76. Pomocniczy licznik (up-count) z synchronicznym resetem

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

202004 Krzysztof Jasiński

ITPW PRUS – W6

Przykład systemu cyfrowego:prosty procesor cd.

Przykład systemu cyfrowego:prosty procesor cd.

Rys. 7.77. Specyfikacja procesora (część a)

212004 Krzysztof Jasiński

ITPW PRUS – W6

Przykład systemu cyfrowego:prosty procesor cd.

Przykład systemu cyfrowego:prosty procesor cd.

Rys. 7.77. Specyfikacja procesora (część b.)

222004 Krzysztof Jasiński

ITPW PRUS – W6

Przykład systemu cyfrowego:prosty procesor cd.

Przykład systemu cyfrowego:prosty procesor cd.

Rys. 7.78. Alternatywna specyfikacja procesora (część a)

232004 Krzysztof Jasiński

ITPW PRUS – W6

Przykład systemu cyfrowego:prosty procesor cd.

Przykład systemu cyfrowego:prosty procesor cd.

Rys. 7.78. Alternatywna specyfikacja procesora (część b)

242004 Krzysztof Jasiński

ITPW PRUS – W6

Przykład systemu cyfrowego:prosty procesor cd.

Przykład systemu cyfrowego:prosty procesor cd.

Rys. 7.78. Alternatywna specyfikacja procesora (część c)

252004 Krzysztof Jasiński

ITPW PRUS – W6

Przykład systemu cyfrowego:miernik czasu reakcji

Przykład systemu cyfrowego:miernik czasu reakcji

Rys. 7.80 Układ do pomiaru czasu reakcji

D Q

Q

Dwucyfrowy licznik BCD

w 0

a

w 1

b

w 2 w 3

g

w 0

a

w 1

b

w 2 w 3

g

BCD 0 BCD 1 E

Konwertor

c 9

V DD

R

w

V DD

R L

(b) Przełącznik, dioda LED, wyświetlacz 7-segmentowy

Zerowanie Clear

1 0

1 (a) Dzielnik zegara

licznik 10-bitowyZegar

c 0 c 1 c 9

przełącznik

LED

Konwertor

Wyświetlacze 7-segmentowe

262004 Krzysztof Jasiński

ITPW PRUS – W6

Przykład systemu cyfrowego:miernik czasu reakcji cd.

Przykład systemu cyfrowego:miernik czasu reakcji cd.

Rys. 7.81 Specyfikacja dwucyfrowego licznika BCD

272004 Krzysztof Jasiński

ITPW PRUS – W6

VERILOG – specyfikacja automatówVERILOG – specyfikacja automatów

Rys. 8.3 Graf stanów prostego automatu (typ Moore’a)

C z 1 =

Reset

B z 0 = A z 0 = w 0 =

w 1 =

w 1 =

w 0 =

w 0 = w 1 =

282004 Krzysztof Jasiński

ITPW PRUS – W6

VERILOG – specyfikacja automatów cd.VERILOG – specyfikacja automatów cd.

Rys. 8.29 Specyfikacja automatu z rys. 8.3

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ęść kombinacyjnaalways @(w or y)

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 bloku sekwencyjnego

always @(negedge Resetn or posedge Clock)if (Resetn == 0)y <= A;else y <= Y;// Określenie wyjścia

assign z = (y == C); 

endmodule

292004 Krzysztof Jasiński

ITPW PRUS – W6

VERILOG – specyfikacja automatów cd.VERILOG – specyfikacja automatów cd.

Rys. 8.33 Druga wersja specyfikacji automatu z rys. 8.3

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;

endcasez = (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

302004 Krzysztof Jasiński

ITPW PRUS – W6

VERILOG – specyfikacja automatów cd.VERILOG – specyfikacja automatów cd.

Rys. 8.34 Uproszczona wersja specyfikacji automatu z rys. 8.3

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 sekwencyjnegoalways @(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

312004 Krzysztof Jasiński

ITPW PRUS – W6

VERILOG – specyfikacja automatów cd.VERILOG – specyfikacja automatów cd.

Rys. 8.34 Specyfikacja automatu Mealy’ego z rys. 8.23

A

w 0 = z 0 =

w 1 = z 1 = B w 0 = z 0 =

Reset

w 1 = z 0 =

322004 Krzysztof Jasiński

ITPW PRUS – W6

Rys. 8.39 Schemat sumatora sekwencyjnego

Przykład :sumator sekwencyjny

Przykład :sumator sekwencyjny

Sum A B + =

Rejestr przes. QAAutomatSterującysumator

B

A

a

b

s

Zegar

Rejestr przes. QB

Rejestr przesuw.

332004 Krzysztof Jasiński

ITPW PRUS – W6

Rys. 8.40 Graf stanów automatu sterującego sumatora

Przykład :sumator sekwencyjny cd.

Przykład :sumator sekwencyjny cd.

G

00 1

11 1 10 0 01 0

H 10 1 01 1 00 0

carry-in 0 =

carry-in 1 = G:

H:

Reset

11 0 ab s

342004 Krzysztof Jasiński

ITPW PRUS – W6

Rys. 8.40 Zakodowana tablica p-w automatu sterującego

Przykład :sumator sekwencyjny cd.

Przykład :sumator sekwencyjny cd.

Stanbieżący

Stan następny Wyjście

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

Y = ab + ay + by

S = a b y

(H) 1

352004 Krzysztof Jasiński

ITPW PRUS – W6

Rys. 8.48 Pomocniczy rejestr przesuwający w prawo z wejściem zezwolenia En

Przykład :sumator sekwencyjny cd.

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łeinput L, E, w, Clock; // L – ładowanie z we R, w – wejście szeregoweoutput [n-1:0] Q;reg [n-1:0] Q;integer k;

 

always @(posedge Clock) if (L) // Ładowanie

Q <= R; else if (E)

beginfor (k = n-1; k > 0; k = k-1)

Q[k-1] <= Q[k]; // Przesuwanie w prawoQ[n-1] <= w; // Wsuwanie do wejścia rejestru (Q[n-1])

end 

endmodule

362004 Krzysztof Jasiński

ITPW PRUS – W6

Rys. 8.50 Szczegółowy schemat funkcjonalny sumatora sekwencyjnego

Przykład :sumator sekwencyjny cd.

Przykład :sumator sekwencyjny cd.

Automatsumatora

Zegar

E w L

E w L

b 7 b 0

a 7 a 0

E w L

E L

Q 3 Q 2 Q 1 Q 0

D 3 D 2 D 1 D 0

1 0 0 0

Licznik

0 0

Reset

Sum 7 Sum 0

0 1

0 1

Run

Rejestr

Rejestr

Rejestr

372004 Krzysztof Jasiński

ITPW PRUS – W6

Rys. 8.49 Specyfikacja sumatora sekwencyjnego

Przykład :sumator sekwencyjny cd.

Przykład :sumator sekwencyjny cd.

382004 Krzysztof Jasiński

ITPW PRUS – W6

Rys. 10.9 Algorytm licznika jedynek i schemat funkcjonalny (część operacyjna)

Przykład :licznik jedynek w słowie

Przykład :licznik jedynek w słowie

B = 0 ; while A 0 do

if a 0 = 1 thenB = B + 1 ;

end if;Right-shift A ;

end while;

L

E Counter

w

L

E Shift

LB

EBLA

EA

0

Clock

0

B z a 0

Data

n

A

n

(log2 n) + 1

(log2 n) + 1

392004 Krzysztof Jasiński

ITPW PRUS – W6

Przykład :licznik jedynek w słowie cd.

Przykład :licznik jedynek w słowie cd.

Rys. 10.9 Sieć działań układu sterującego licznika

EA

EB z

LB

s

a 0

Reset

S3

0

1

0

1

0

1 s

S2

S1

0

1

Done

402004 Krzysztof Jasiński

ITPW PRUS – W6

Przykład :licznik jedynek w słowie cd.

Przykład :licznik jedynek w słowie cd.

Rys. 10.13 Specyfikacja układu licznika jedynek cz. a.

412004 Krzysztof Jasiński

ITPW PRUS – W6

Przykład :licznik jedynek w słowie cd.

Przykład :licznik jedynek w słowie cd.

Rys. 10.13 Specyfikacja układu licznika jedynek cz. b.