szekvenciÁlis logikai modulok tervezÉsi lehetŐsÉgei...

54
1 SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI VERILOG NYELVEN Felhasználói primitívek (UDP) Viselkedési leírás időzítésvezérléssel Könyvtári elemek használata Meglévő modulok használata Szekvenciális UDP-k Élvezérelt Flip-flop-ok Latch-ek Explicit vezérlők (FSM-ek) Implicit vezérlők (FSM-ek) Mealy-Moore automaták

Upload: others

Post on 30-Dec-2019

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

1

SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI VERILOG NYELVEN

Felhasználói primitívek (UDP)Viselkedési leírás időzítésvezérlésselKönyvtári elemek használataMeglévő modulok használata

Szekvenciális UDP-kÉlvezérelt Flip-flop-okLatch-ekExplicit vezérlők (FSM-ek)Implicit vezérlők (FSM-ek)Mealy-Moore automaták

Page 2: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

2

SZEKVENCIÁLIS UDP-k SZINTÉZISE

A nyelv nem tartalmaz beépített szekvenciális elemeket, viszont támogatja a felhasználó által defininiált szekvenciális primitívek használatát.

A szekvenciális UDP-k csak egyetlen órajel portot tartalmazhatnak. A szintézis eszközök felismerik a primitív adat, esetleges engedélyezés, órajel és az aszinkron set, reset vezérlő bemeneteit. A szinkron vezérlő bemenetek nem mindig alkalmazhatók.

Page 3: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

3

PÉLDA JK - FLIP FLOP SZINTÉZISÉRE

Ha például egy technológiai könyvtár nem tartalmaz J-K flip-flop-ot, akkor a szintézis program az alábbi UDP leírás alapján a szükséges kombinációs

logika és egy D flip-flop felhasználásával valósítja meg azt.

model jk_flop (q, clk, j, k, clr); output q; input clk, j, k, clr; jk_udp (q, clk, j, k, clr); endmodule primitive jk_udp (q, clk, j, k, clr); output q; input clk, j, k, clr; reg q;

table // clk, j k clr q next_q ? ? ? 0 : ? : 0; f 0 0 1 : ? : -; f 0 1 1 : ? : 0; f 1 0 1 : ? : 1; f 1 1 1 : 0 : 1; f 1 1 1 : 1 : 0; r ? ? ? : ? : -; ? * ? ? : ? : -; ? ? * ? : ? : -; ? ? ? * : ? : -; endtable endprimitive

Page 4: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

4

SZEKVENCIÁLIS LOGIKÁK SZINTÉZISE

UDP-k LATCH-ek ÉLVEZÉRELT FLIP-FLOP-ok VÉGES ÁLLAPOTÚ VEZÉRLŐK (EXPLICIT és IMPLICIT) MEALY-MOORE AUTOMATÁK

Page 5: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

5

LATCH-ek

SZABÁLYOK • Minden olyan viselkedési leírás, amelynek végrehajtása során a

változók nem minden esetben kapnak új értéket, a szintézis eszközök értelmezése szerint latch tároló regiszterek alkalmazását teszi szükségessé.

• A viselkedési leírás elágazási feltételjele lesz a latch engedélyező jele. • Latch-ek alkalmazására csak a nem teljesen specifikált ’case’ és más

feltételes utasítások (if, ? :) esetében kerül sor. • Az egyéb utasítások vagy közvetlen kapuszintű leírások alapján

keletkező visszacsatolt hurkok realizálására nem alkalmaznak latch-eket.

Page 6: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

6

PÉLDA ASZINKRON LATCH SZINTÉZISÉRE

module asynch_latch (latch_out, latch_in, set, clear, enable); input latch_in, enable, set, clear; output latch_out; reg latch_out; always @ (enable or set or clear) case ({enable, set, clear}) 3'b000: assign latch_out = latch_in; // Transparens mód 3'b110: assign latch_out = 1'b1; 3'b010: assign latch_out = 1'b1; 3'b101: assign latch_out = 1'b0; 3'b001: assign latch_out = 1'b0; default: deassign latch_out; // Korábbi érték tartása endcase endmodule

Page 7: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

7

LATCH SZINTÉZIS AZ "assign ... deassign" UTASÍTÁSSAL

LEÍRÁSI STÍLUS: assign/deassign UTASÍTÁS

module latch_syn1 (data_out, data_in, latch_enable); input [7:0] data_in; output [7:0] data_out; input latch_enable; reg [7:0] data_out; always @ (latch_enable) if (latch_enable) assign data_out = data_in; else

latch_enable

data_outputdata_input

8 8

deassign data_out; // Korábbi érték tartása. endmodule

Page 8: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

8

LATCH SZINTÉZIS NEM TELJESEN DEFINIÁLT ELÁGAZÁS UTASÍTÁSSAL

LEÍRÁSI STÍLUS: NEM TELJESEN SPECIFIKÁLT ELÁGAZÁS UTASÍTÁS

module latch_syn2 (data_out, data_in, latch_enable); input [7:0] data_in; output [7:0] data_out; input latch_enable; reg [7:0] data_out;

always @ (latch_enable or data_in) if (latch_enable) data_out = data_in; endmodule

Page 9: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

9

SZEKVENCIÁLIS LOGIKÁK SZINTÉZISE

UDP-k LATCH-ek ÉLVEZÉRELT FLIP-FLOP-ok VÉGES ÁLLAPOTÚ VEZÉRLŐK (EXPLICIT és IMPLICIT) MEALY-MOORE AUTOMATÁK

Page 10: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

10

FLIP-FLOP-ok

SZABÁLYOK

A szintézis eszközök mindazokban az esetekben, amikor egy ’reg’ típusú változóra történik értékadás egy viselkedési leírásban élvezérelt eseménykifejezéssel, a változót egy flip-flop-al realizálják.

PÉLDA

module data_swap (data_a, data_b, clk) output data_a, data_b; input clk; reg data_a, data_b; always @ (posedge clk) begin // esetleges egyéb utasítások data_b <= data_a; data_a <= data_b; end endmodule;

Page 11: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

11

FLIP-FLOP-ok FELISMERÉSE

ÁLTALÁNOS SZABÁLY: A változót a szintézis program flip-flop-ként realizálja, ha az értékadás egy más jel élváltásával szinkron módon történik.

R

QD

R

QD

R

QD

R

QD

Data_out[3] Data_out[2] Data_out[1] Data_out[0]

Data_in[0]Data_in[1]Data_in[2]Data_in[3]

reset

clock

module D_reg4 (Data_in, clock, reset, Data_out); input [3:0] Data_in; input clock, reset; output [3:0] Data_out; reg [3:0] Data_out;

always @ (posedge reset or posedge clock) begin if (reset == 1’b1) Data_out <= 4’b0; else Data_out <= Data_in; end endmodule

Page 12: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

12

PÉLDA JK FLIP-FLOP SZINTÉZISÉRE (1. verzió)

module jk_flop_1 (j, k, rst, clock, q, qb); input j, k, rst, clock; output q, qb; reg q; assign qb = ~q; //Invertált kimenet always @ (posedge rst or posedge clock) begin if (rst == 1’b1) q:= 1’b0; else //Aszinkron reset if ((j == 1’b0 && k == 1’b0) q = q; else //Tartás if ((j == 1’b0 && k == 1’b1) q = 1’b0; else //Törlés if ((j == 1’b1 && k == 1’b0) q = 1’b1; else //Beírás if ((j == 1’b1 && k == 1’b1) q = ~q; //Invertálás end endmodule

j

k

q

qb

clk

rst

jk_flop

Page 13: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

13

PÉLDA JK FLIP-FLOP SZINTÉZISÉRE (2. verzió)

module jk_flop_2 (j, k, clock, q, qb); input j, k, clock; output q, qb; reg q;

j

k

q

qb

clk

jk_flop

assign qb = ~q; always @ (posedge clock) begin case {j, k} 2’b01: q = 1’b0; 2’b10: q = 1’b1’; 2’b11: q = ~q; 2’b00: q = q; endcase; end endmodule

Page 14: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

14

A REGISZTERES LOGIKÁK SZNTÉZISÉNEK SZABÁLYAI

A KOMBINÁCIÓS LOGIKA KIMENETE REGISZTERES LESZ (AZ ÉRTÉKET EGY

FLIP-FLOP TÁROLJA), HA VISELKEDÉSI LEÍRÁSBAN AZ ESEMÉNY VEZÉRLÉS ÉLÉRZÉKENY MŰKÖDÉST ÍR ELŐ.

PÉLDA

module reg_and (a, b, c, clk, y); input a, b, c, clk; output y; reg y; always @ (posedge clk) begin y <= a & b & c; end endmodule

a

y

clk

d_flop

cb

Page 15: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

15

PÉLDA REGISZTERES KIMENETŰ KOMBINÁCIÓS LOGIKA SZINTÉZISÉRE

A kombinációs logika, ha egy szinkron viselkedési leíráson belül definiáljuk, akkor szintézis során regiszteres kimenetet kap.

PÉLDA

ba

select

y

cd

8

8

8

8

clock

8

module mux_reg (a, b, c, d, y, select, clock); input [7:0] a, b, c, d; output [7:0] y;

input [1:0] select; reg [7:0] y; always @ (posedge clock) case (select) 0: y <= a; // A nem-blokkoló 1: y <= b; // értékadás itt 2: y <= c; // azonos a sima 3: y <= d; // = jel hatásával default y <= 8'bx; endcase endmodule

Page 16: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

16

MEGFIGYELÉS

A szintézis során generált hardver mérete nem feltétlenül arányos a forráskód méretével!

always @ (posedge clock) begin data_register <= data_bus; end

Az értékadásban szereplő data_register lehet akár egy bites, de akár 32 bites regiszter is.

Page 17: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

17

SHIFT REGISZTER SZINTÉZISE

R

QD

R

QD

R

QD

R

QDData_outData_in

reset

clock

module Shift_reg4 (Data_out, Data_in, clock, reset); input Data_in, clock, reset; output Data_out; reg [3:0] Data_reg; assign Data_out = Data_reg[0];

always @ (posedge reset or negedge clock) begin if (reset == 1’b1) Data_reg <= 4’b0; else Data_reg <= {Data_in, Data_reg[3:1]}; end endmodule Megjegyzés: A példában a regiszter változó a kifejezés jobb oldalán a láncolás műveletben is szerepel, a szinkron értékadást megelőzően. Ezért a szintézis flip-flop-ot generál.

Page 18: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

18

PÁRHUZAMOS TÖLTÉSŰ SHIFT REGISTER

R

QD

R

QD

R

QD

R

QD

Data_out[3] Data_out[2] Data_out[1] Data_out[0]

Data_in[0]Data_in[1]Data_in[2]Data_in[3]

reset

clock

load

mux mux muxmux

module Par_load_reg4 (Data_out, Data_in, load, reset, clock);

input [3:0] Data_in; input load, reset, clock; output [3:0] Data_out; reg [3:0] Data_out;

always @ (posedge reset or posedge clock) begin if (reset == 1’b1) Data_out = 4’b0; else if (load == 1’b1) Data_out <= Data_in; end endmodule

Page 19: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

19

PÉLDA: BARREL SHIFTER (BITFORGATÓ)

module barrel_shifter (Data_out, Data_in, load, reset, clock); input [7:0] Data_in; input load, reset, clock; output [7:0] Data_out; reg [7:0] Data_out; always @ (posedge reset or posedge clock) begin if (reset == 1’b1) Data_out <= 8’b0; else if (load == 1’b1) Data_out <= Data_in; else Data_out <= {Data_out[6:0], Data_out[7]}; end endmodule

6 5 4 3 2 1 07

1 0 0 0 1 1 01

6 5 4 3 2 1 07

1 0 0 0 1 1 0 1

Page 20: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

20

ASZINKRON SZÁMLÁLÓ

R

QT

R

QT

R

QT

R

QT

count(1)

reset

clock

count(0) count(3)count(2)toggle

module ripple_counter (clock, toggle, reset, count); // Aszinkron számláló input clock, toggle, reset; output [3:0] count; reg [3:0] count; always @ (posedge reset or posedge clock) if (reset == 1’b1) count[0] <= 1’b0; else if (toggle == 1’b1) count[0] <= ~count[0]; always @ (posedge reset or negedge count[0]) if (reset == 1’b1) count[1] <= 1’b0; else if (toggle == 1’b1) count[1] <= ~count[1];

always @ (posedge reset or negedge count[1]) if (reset == 1’b1) count[2] <= 1’b0; else if (toggle == 1’b1) count[2] <= ~count[2]; always @ (posedge reset or negedge count[2]) if (reset == 1’b1) count[3] <= 1’b0; else if (toggle == 1’b1) count[3] <= ~count[3]; endmodule Nem ajánlott szintézishez!!

Page 21: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

21

GYŰRŰS (JOHNSON) SZÁMLÁLÓ

module ring_counter (enable, reset, clock, count); input enable, reset, clock; output [7:0] count; reg [7:0] count; always @ (posedge reset or posedge clock) if (reset == 1’b1) count <= 8’b00000001; else if (enable == 1’b1) count <= {count[6:0], count[7]}; endmodule

0 0 0 0 0 0 1

0 0 0 0 0 01

0 0 0 0 001

0 0 0 0001

0 0 1 0 0 0 0

0 1 0 0 0 0 0

01 0 0 0 0 0

count [7:0]

Page 22: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

22

SZINKRON TÖLTHETŐ, ELŐRE/HÁTRA SZÁMLÁLÓ

module up_down_counter (clk, reset, load, count_up, count_en, Data_in, Count); input clk, reset, load, count_up, count_en; input [3:0] Data_in; output [3:0] Count; reg [3:0] Count; always @ (posedge reset or posedge clk) if (reset == 1’b1) Count = 4’b0; else if (load == 1’b1) Count = Data_in; else if (count_en == 1’b1) begin if (count_up == 1’b1) Count = Count +1; else Count = Count –1; end endmodule

clk

ldrstcnt

u/d

4

D_in

4Count

Page 23: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

23

SOROS SHIFT REGISZTER (KÉSLELTETŐ) SZINTÉZISE

Shift_in

reset

clock

reg_a reg_b reg_c reg_d

R

QD

R

QD

R

QD

R

QD

always @ (posedge clock) begin: Shift_register_1 if (reset == 1’b1) begin reg_a <= 1’b0; reg_b <= 1’b0; reg_c <= 1’b0; reg_d <= 1’b0; end

else begin reg_a <= Shift_in; reg_b <= reg_a; reg_c <= reg_b; reg_d <= reg_c; end

A SZINTÉZIS EREDMÉNE: Shift regiszter aszinkron törlésse.

Megjegyzés: A “=” értékadás a “<=” helyett hibás működést eredményez.

Page 24: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

24

A REGISZTERES LOGIKÁK ÁLTALÁNOS SZABÁLYAI

always @ (posedge reset or posedge clock) begin if (reset == 1’b1) begin sig_a <= ‘0’; sig_b <= ‘0’; sig_c <= ‘0’; sig_d <= ‘0’; pulse <= 1’b0; end

shift_input

reset

sig_a sig_b sig_c sig_d

clock

pulse

else begin sig_a <= shift_input; sig_b <= sig_a; sig_c <= sig_b; sig_d <= sig_c; pulse <= (~ sig_a) & sig_b; end end

Az élérzékeny viselkedési leíráson belüli szinkron értékadások flip-flop vagy latch szintézisét eredményezik.

Page 25: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

25

NEM KÍVÁNT REGISZTEREK ELKERÜLÉSE

Mindazok az értékadások, amelyek a viselkedési blokkokon kívül vannak, vagy olyan viselkedési blokkban, amely nem használ szinkronizáló eseményvezérlést, tisztán kombinációs logikát eredményeznek. always @ (posedge reset or posedge clock) begin if (reset == 1’b1) begin sig_a <= 1’b0; sig_b <= 1’b0; sig_c <= 1’b0; sig_d <= 1’b0; end

shift_input

reset

sig_a sig_b sig_c sig_d

clockpulse

else begin sig_a <= shift_input; sig_b <= sig_a; sig_c <= sig_b; sig_d <= sig_c; end end assign pulse = (~ sig_b) & sig_c;

Megjegyzés: A pulzust kombinációs logika realizálja. Az időzítési pozíció megőrzésé-hez a bemenőjeleket módosítani kellett. A kimeneti jel késleltetése nagyobb!!!

Page 26: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

26

SZEKVENCIÁLIS LOGIKÁK SZINTÉZISE

UDP-k LATCH-ek ÉL-VEZÉRELT FLIP-FLOP-ok VÉGES ÁLLAPOTÚ VEZÉRLŐK (EXPLICIT és IMPLICIT) MEALY-MOORE AUTOMATÁK

Page 27: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

27

SZINKRON ÁLLAPOTVEZÉRLŐK

Input (n)Next

State(n)

State(n)

Output(n)

Reg_Output(n)NextStateLogic

OutputLogic

OutputRegister

StateRegister

Szinkron állapotvezérlő

Page 28: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

28

SZINKRON ÁLLAPOTVEZÉRLŐ (2. verzió)

Input (n)Next

State(n)

State(n)Output(n)

Reg_Output(n)

NextStateLogic

OutputLogic

OutputRegister

StateRegister

Szinkron állapotvezérlő késleltetett kimeneti visszacsatolással

DataRegisters

Page 29: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

29

MEALY ÉS MOORE AUTOMATÁK

OutputLogicInputs

Outputs

StateStateRegister

Next StateLogic

MEALY AUTOMATA Next_State(t) = g(State(t), Input(t)) Output(t) = h(state(t), Input(t)) MOORE AUTOMATA Next_State(t) = g(State(t), Input(t)) Output(t) = h(state(t))

Page 30: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

30

VÉGES ÁLLAPOTÚ VEZÉRLŐK (FSM) IMPLEMENTÁCIÓS LEHETŐSÉGEI

A SZINTÉZIS ESZKÖZÖK KÉTFÉLE FSM LEÍRÁST KÉPESEK KEZELNI: EXPLICIT FSM

• Az állapotok sorrendje specifikált. • Állapotregiszter tartja az állapotok kódolt reprezentációját. • Explicit állapotátmenet előírások vezérlik az állapotsorrendet.

IMPLICIT FSM

• Az állapotok sorrendje specifikált. • Nincs egyértelműen definiált állapotregiszter. • A viselkedési leírás eseményei határozzák meg az állapotsorrendet.

Page 31: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

31

EXPLICIT FSM DEFINÍCIÓ TIPIKUS FORMÁJA

module mod_name ( …); input … ; output … ; parameter size = … ; reg [size-1 ;0] state, next_state;

`define state_0 2’b00 `define state_1 2’b01 …

assign the_outputs = … // a bemenetek és az állapot függvényében assign next_state = … // a bemenetek és az állapot függvényében /* always @ (state or inputs) //A következő állapot előírása begin //viselkedési leírással // next_state dekódolása case vagy if utasítással end */ always @ (negedge reset or posedge clk) begin if (reset == 1’b0) state = state_0; else state <= next_state; endmodule

Page 32: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

32

PÉLDA: EGYSZERŰ SEBESSÉG VEZÉRLŐ

low

highmedium

stopped

brake = 1 accelerator = 1brake =0

brake = 1brake = 1

accelerator = 1brake = 0

accelerator = 1brake = 0

accelerator = 1brake = 0

brake = 1accelerator

brakeclock

speed

Page 33: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

33

SEBESSÉGVEZÉRLŐ, MINT EXPLICIT FSM

module speed_machine_1 (clock, accelerator, brake, speed); // Explicit FSM, szinkron állapot értékadás, a bemenetek és az állapot teljes dekódolásával input clock, accelerator, brake; output [1:0] speed; reg [1:0] state, next_state; `define stopped 2'b00 `define low 2'b01 `define medium 2'b10 `define high 2'b11 always @ (posedge clock) state <= next_state; always @ (state or accelerator or brake) if (brake == 1’b1) case (state) `stopped: next_state <= `stopped; `low: next_state <= `stopped; `medium: next_state <= `low; `high: next_state <= `medium; default: next_state <= `stopped; endcase

else if (accelerator == 1’b1) case (state) `stopped: next_state <= `low; `low: next_state <= `medium; `medium: next_state <= `high; `high: next_state <= `high; default: next_state <= `stopped; endcase else next_state <= state; assign speed = state; endmodule

MEGJEGYZÉSEK: Biztonsági autó. 1. A fékpedál erősebb hatású. 2. Bármely illegális állapotból vészfékkel leáll. 3. Inaktív pedálok esetén tartja a sebességet. A next_state változó nem lesz regiszter!!

Page 34: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

34

SEBESSÉGVEZÉRLŐ, MINT IMPLICIT FSM

module speed_machine_2 (clock, accelerator, brake, speed); // Implicit FSM, a bemenetek és az állapot dekódolása a szinkron viselkedésen belül történik // A modell nem tartalmaz explicit állapotregisztert, jelen esetben a kimenet implikálja az állapotot input clock, accelerator, brake; output [1:0] speed; reg [1:0] speed; `define stopped 2’b00 `define low 2'b01 `define medium 2'b10 `define high 2'b11 always @ (posedge clock) if (brake == 1’b1) case (speed) `stopped: speed <= `stopped; `low speed <= `stopped; `medium: speed <= `low; `high: speed <= `medium; default: speed <= `stopped; endcase

else if (accelerator == 1’b1) case (speed) `stopped: speed <= `low; `low: speed <= `medium; `medium: speed <= `high; `high: speed <= `high; default: speed <= `stopped; endcase else speed <= speed; endmodule

MEGJEGYZÉSEK: Az előző megjegyzések

érvényesek

Page 35: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

35

SEBESSÉGVEZÉRLŐ SZINTÉZIS, TOVÁBBI ALTERNATÍVA

module speed_machine_3 (clock, accelerator, brake, speed); // Implicit FSM, az állapot teljes dekódolásával, majd a bemenetek (prioritásos) kiértékelésével. // A modell nem tartalmaz explicit állapotregisztert, jelen esetben a kimenet implikálja az állapotot input clock, accelerator, brake; output [1:0] speed; reg [1:0] speed; `define stopped 2’b00 `define low 2'b01 `define medium 2'b10 `define high 2'b11

always @ (posedge clock) case (speed ) `stopped: if (brake == 1’b1) speed <= `stopped; else if (accelerator == 1’b1) speed <= `low; `low: if (brake == 1’b1) speed <= `slow; else if (accelerator = 1’b1) speed <= `medium; `medium: if (brake == 1’b1) speed <= `low; else if (accelerator == 1’b1) speed <= `high; `high: if (brake == 1’b1) speed <= `medium; default: speed <= `stopped; endcase endmodule

Page 36: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

36

EXPLICIT VÉGES ÁLLAPOTÚ VEZÉRLŐK (FSM)

• A tervező egyértelműen megadja az állapotok sorrendjének leírását. • Egy deklarált állapotváltozó (’reg’ típus) tartalmazza az állapotok kódolt

reprezentációját. • Explicit értékadások biztosítják az állapotregiszter módosítását, az

állapot átmeneti gráf (STG) előírásainak megfelelően. • Az állapotregiszter minden lehetséges értékadása előre ismert és

specifikált. • A kombinációs logika az állapotkódolásnak függvényében

optimalizálható. • Az állapot értékadások a követelményeknek megfelelően optimálisan

kódolhatóak. • Tipikus nyelvi konstrukciók: teljes ’case’ utasítás az állapotátmenetekre. • A modell külön logikát tartalmaz az állapotátmenetekhez és a kimenethez.

Page 37: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

37

AZ EXPLICIT FSM SZINTÉZISÉNEK KRITÉRIUMAI

• A viselkedési leírás csak egyetlen időzítés vezérlési kifejezést

tartalmazhat. • Az egyik viselkedési modul regiszterét egyértelműen állapotregiszterként

kell deklarálni. • A vezérlőben csak egyetlen állapotregiszter deklarálható. • Az állapotregiszter minden értékadása a teljes regiszterre vonatkozzon.

(Egyes bitjeinek vagy bitcsoportoknak külön nem adhatunk értéket). • Az állapotregiszter értékadásokban csak konstans kifejezések, vagy

olyan változók szerepelhetnek, amelyek statikus kiértékelése után konstans értékre vezetnek.

state_reg = data; // Nem legális state_reg = state_reg + 1; // Legális

Page 38: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

38

EXPLICIT FSM LOGIKÁK TÍPUSAI

• KÖVETKEZŐ ÁLLAPOT LOGIKA, ÁLLAPOTÁTMENET

MEGHATÁROZÁSA next_state = mem_op ? (read ? `reading : `writing) : `start_state; next_state = state + 1; next_state = state << 2; • KIMENETI DEKÓDER LOGIKA, ADATMŰVELETEK MEGHATÁROZÁSA if (state == `start_state && mem_op && !read) internal_bus <= data; • PÉLDÁK ÁLLAPOTÁTMENET ÉRTÉKADÁSRA @ (posedge clk) state = `start_state; @ (posedge clk1) state = next_state;

Page 39: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

39

@ (posedge clk2) state = state + 1;

Page 40: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

40

KOMBINÁCIÓS LOGIKAI MODULOK MEGVALÓ-SÍTÁSI LEHETŐSÉGEI EXPLICIT FSM-EKBEN

AZ EXPLICIT FSM-EKBEN A KOMBINÁCIÓS LOGIKAI MODULOK MODELLEZHETŐK:

• KOMBINÁCIÓS BLOKKOKKAL • FÜGGVÉNNYEKKELL (FUNCTION) • FOLYTONOS ÉRTÉKADÁSSAL (CONT. ASSIGN.) • KÜLSŐ MODULOKKAL (A MODULHATÁROKAT A

SZINTÉZIS NEM FELTÉTLENÜL ŐRZI MEG) A következő állapotot meghatározó, a felsorolt módokon megadott feltételes értékadásoknak mindig teljesen specifikáltaknak kell lenniük.

Page 41: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

41

MEALY FSM – BITSOROZAT DETEKTOR, SZINKRON KIMENET

Felismer két egymást követő 0 vagy 1 bitet a soros bitfolyamban.

SequenceDetector

in_bit out_bit

module seq_det_mealy_1 (clock, in_bit, out_bit); input clock, in_bit; output out_bit; reg [1:0] state_reg; reg out_bit;

State0

State1

State2

1 / 0

Input_bitOutput_bit

0 / 0

1 / 0

0 / 1 1 / 1

0 / 0

Page 42: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

42

MEALY FSM - SZINKRON KIMENET

State

0

State1

State2

1 / 0

Input_bitOutput_bit

0 / 0

1 / 0

0 / 1 1 / 1

0 / 0

always @ (posedge clock) case (state_reg) 2'b00 : if (in_bit ==0) begin state_reg = 2'b01; out_bit = 0; end else if (in_bit ==1) begin state_reg = 2'b10; out_bit = 0; end 2'b01 : if (in_bit ==0) begin state_reg = 2'b01; out_bit = 1; end else if (in_bit ==1) begin state_reg = 2'b10; out_bit = 0; end 2'b10 : if (in_bit ==0) begin state_reg = 2'b01; out_bit = 0; end else if (in_bit ==1) begin state_reg = 2'b10; out_bit = 1; end default: begin state_reg = 2'b00; out_bit = 0; end endcase endmodule Megjegyzés: A kimenet regiszteres, azaz szinkron lesz.

Page 43: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

43

MEALY FSM - BITSOROZAT DETEKTOR, ASZINKRON KIMENET (1. verzió)

Felismer két egymást követő 0 vagy 1 bitet a soros bitfolyamban.

SequenceDetector

in_bit out_bit

module seq_det_mealy_2 (clock, in_bit, out_bit); input clock, in_bit; output out_bit; reg [1:0] state_reg; reg [1:0] next_state; reg out_bit;

State0

State1

State2

1 / 0

Input_bitOutput_bit

0 / 0

1 / 0

0 / 1 1 / 1

0 / 0

Page 44: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

44

MEALY FSM – ASZINKRON KIMENET (1. verzió)

always @ (posedge clock) state_reg = next_state;

State0

State1

State2

1 / 0

Input_bitOutput_bit

0 / 0

1 / 0

0 / 1 1 / 1

0 / 0

always @ (state_reg or in_bit) // Következő állapot és kimeneti logika case (state_reg) 2'b00 : if (in_bit ==0) begin next_state = 2'b01; out_bit = 0; end else if (in_bit ==1) begin next_state = 2'b10; out_bit = 0; end 2'b01 : if (in_bit ==0) begin next_state = 2'b01; out_bit = 1; end else if (in_bit ==1) begin next_state = 2'b10; out_bit = 0; end 2'b10 : if (in_bit ==0) begin next_state = 2'b01; out_bit = 0; end else if (in_bit ==1) begin next_state = 2'b10; out_bit = 1; end default: next_state = 2’b00; out_bit = 0; endcase endmodule Megjegyzés: A kimenet nem regiszteres.

Page 45: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

45

MEALY FSM - BITSOROZAT DETEKTOR, ASZINKRON KIMENET (2. verzió)

Felismer két egymást követő 0 vagy 1 bitet a soros bitfolyamban.

SequenceDetector

in_bit out_bit

module seq_det_mealy_3 (clock, in_bit, out_bit); input clock, in_bit; output out_bit; reg [1:0] state_reg;

State

0

State1

State2

1 / 0

Input_bitOutput_bit

0 / 0

1 / 0

0 / 1 1 / 1

0 / 0

Page 46: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

46

MEALY FSM - ASZINKRON KIMENET (2. verzió) always @ (posedge clock) state_reg = next_state;

State0

State1

State2

1 / 0

Input_bitOutput_bit

0 / 0

1 / 0

0 / 1 1 / 1

0 / 0

// Következő állapot és kimeneti logika assign next_state[1] = ((!state_reg[1]) & (!state_reg[0]) & ( in_bit)) | (( state_reg[1]) & (!state_reg[0]) & ( in_bit)) assign next_state[0] = ((!state_reg[1]) & (!state_reg[0]) & (!in_bit)) | ((!state_reg[1]) & ( state_reg[0]) & (!in_bit)) assign out_bit = ((!state_reg[1]) & ( state_reg[0]) & (!in_bit)) | (( state_reg[1]) & !state_reg[0] & (in_bit)); endmodule

Page 47: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

47

MOORE FSM - BITSOROZAT DETEKTOR

module moore_det_1 (clock, in_bit, out_bit); input clock, in_bit; output out_bit; reg [2:0] state_reg, next_state; `define start_state 3’b000 `define read_1_zero 3’b001 `define read_1_one 3’b010 `define read_2_zero 3’b011 `define read_2_one 3’b100

read_2_one

101

0

01

0

1

0

11

0

start_state

read_1_one

read_2_zero

read_1_zero

00 1

output value

input bit

Page 48: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

48

MOORE FSM - BITSOROZAT DETEKTOR

always @ (posedge clock) state_reg = next_state; assign out_bit = ((state_reg == ‘read_2_zero) || (state_reg == `read_2_one)) ? 1 : 0; always @ (state_reg or in_bit) case (state_reg) `start_state: if (in_bit == 0) next_state = `read_1_zero; else if (in_bit == 1) next_state = `read_1_one; else next_state = `start_state; `read_1_zero: if (in_bit == 0) next_state = `read_2_zero else if (in_bit == 1) next_state = `read_1_one; else next_state = `start_state; `read_2_zero: if (in_bit == 0) next_state = `read_2_zero; else if (in_bit == 1) next_state = `read_1_one; else next_state = `start_state; `read_1_one: if (in_bit == 0) next_state = `read_1_zero; else if (in_bit == 1) next_state = `read_2_one; else next_state = `start_state; `read_2_one: if (in_bit == 0) next_state = `read_1_zero else if (in_bit == 1) next_state = `read_2_one; else next_state = `start_state; default: next_state = `start_state; endcase endmodule Megjegyzés: A kimenet csak az állapottól függ.

Page 49: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

49

IMPLICIT VÉGES ÁLLAPOTÚ VEZÉRLŐK (FSM)

LEÍRÁSI STÍLUS: Elhagyjuk az állapotregiszter explicit deklarációját. Többszörös élvezérelt eseményvezérlés használunk ugyanabban a viselkedési leírásban. Ezen feltételek mellett a szintézis eszközök implicit vezérlőt valósítanak meg. • MINDEN ESEMÉNYVEZÉRLÉS MEGFELEL EGY ÁLLAPOTÁTMENETNEK. • A KÓD VÉGREHAJTÁSÁNAK FOLYAMATA MAGÁBAN HORDOZZA AZ

ÁLLAPOTOK SORENDISÉGÉT.

MEGJEGYZÉS: Az implicit FSM-ek a vezérlőket magasabb szinten írják le, mint az explicit FSM-ek, ezért kevesebb utasítást, rövidebb kódot eredményeznek.

Page 50: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

50

PÉLDA IMPLICIT FSM SZINTÉZISRE

always @ (posedge clk) // Szinkronizáló esemény a kezdeti értékadások előtt begin reg_a = reg_b; // Végrehajtódik az első órajelciklusban reg_c = reg_d; // Végrehajtódik az első órajelciklusban @ (posedge clk) // Várakozás a második órajelciklusra begin reg_g = reg_f; // Végrehajtódik a második órajelciklusban reg_m = reg_r; // Végrehajtódik a második órajelciklusban end end

Az implicit FSM esetében az órajel élek definiálják a vezérlő állapotátmeneteinek határát.

Page 51: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

51

ÓRAJEL SZINKRONIZÁCIÓ AZ IMPLICIT FSM SZINTÉZISEKOR

SZABÁLYOK: Az implicit FSM-ek minden állapotváltozását ugyanazon órajel ugyanazon éléhez kell szinkronizálni. (ez lehet akár a posedge akár a negedge.) NEM MEGENGEDHEŐ VEZÉRLÉSI STRUKTÚRA

always @ (posedge clk) // Szinkronizáló esemény a kezdeti értékadások előtt begin reg_a = reg_b; // Végrehajtódik az első órajelciklusban reg_c = reg_d; // Végrehajtódik az első órajelciklusban @ (negedge clk) // Illegális órajelütemezési struktúra begin reg_g = reg_f; reg_m = reg_r; end end // A SZINTÉZIS SIKERTELEN

Page 52: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

52

AZ IMPLICIT ÉS EXPLICIT FSM ÖSSZEHSONLÍTÁSA

ÁLLAPOTOKSORRENDJE

EXPLICIT ÁLLAPOTREGISTER

ÁLLAPOTVEZÉRLÉS

ÁLLAPOTKÓDOLÁS

EXPLICIT FSM IMPLICIT FSM

IGEN NINCS

IGEN

SPECIFIKÁLT IMPLICIT

NINCS

A FORRÁSKÓD LEÍRÁSA SZABJA

MEG

EXPLICIT ÉRTÉKADÁS AZ ÁLLAPOT- REGISZTERRE

Page 53: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

53

ÁLLAPOTKÓDOLÁSI LEHETŐSÉGEK

• A SZINTÉZIS ESZKÖZÖK ÁLTAL AUTOMATIKUSAN GENERÁLT ÁLLAPOTKÓDOLÁS

NEM MINDIG OPTIMÁLIS. • SOKSZOR SZÜKSÉGES AZ ÁLLAPOTKÓDOLÁS MANUÁLIS MÓDOSÍTÁSA • AZ NYELV MINDKÉT MEGOLDÁST TÁMOGATJA: FELHASZNÁLÓI ÁLTALI KÖZVETLEN

ÁLLAPOTKÓDOLÁS ELŐÍRÁSA VAGY AUTOMATIKUS ÁLLAPOTKÓDOLÁS.

Page 54: SZEKVENCIÁLIS LOGIKAI MODULOK TERVEZÉSI LEHETŐSÉGEI …home.mit.bme.hu/~feher/verilog/P5Bhu.pdf · 2003-04-06 · 3 PÉLDA JK - FLIP FLOP SZINTÉZISÉRE Ha például egy technológiai

54

1 AZ N-BŐL (ONE-HOT) ÁLLAPOTKÓDOLÁS

• Az 1 az N-ből állapotkódolás minden állapothoz egy regiszterbitet rendel a vezérlőben. • Az 1 az N-ből kódolás nem kanonikus a flip-flop-ok számát illetően. • Előnye: Az 1 az N-ből kódolás jelentősen csökkenti a következő állapotlogika és a

kimeneti logika áramköri és huzalozási komplexitását.

PÉLDA

`define state_0 3’b001 `define state_1 3’b010 `define state_2 3’b100

FIGYELEM: AZ ÁLLAPOT DEKÓDOLÁSÁHOZ HASZNÁLJUNK ’if’ UTASÍTÁST

(A ’case’ utasítás implicit módon a teljes állapotregisztert teszteli, tehát a dekódolás során

szükségtelenül komplex logikához vezet.)