background image

1

I

T
P

W

ZPT

Układ

sterujący

(kontroler

)

Dane wyjściowe

Dane

wejściowe

Sygnały

sterujące

Stan części

operacyjnej

Układ operacyjny

(Datapath)

System cyfrowy

0

1

0

1

0

1

0

1

0

1

0

1

0

1

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

Mikrooperac
je 

wywoływane przez

sygnały sterujące

background image

2

I

T
P

W

ZPT

System cyfrowy - realizacja

UO – z bloków funkcjonalnych

US – automat lub (coraz rzadziej stosowany) 
         układ mikroprogramowany 

X

Z

X

P

Z

Y

Z

D

F

US

UO

background image

3

I

T
P

W

ZPT

Przykład syntezy strukturalnej

W kodzie BCD (Binary Coded Decimal) każda 

cyfra liczby zapisanej w kodzie dziesiętnym 

jest przedstawiana  czterobitową liczbą 

binarną 

Np. liczba 489 zostanie zapisana jako 

wektor  binarny z wykorzystaniem 12 bitów 

(3  4 bity) 

          4        8        9

      0100   1000  1001

Konwerter kodu binarnego na kod 

BCD

1)

:

1)

Przykład ten dokładnie omówiony jest w 
książce:

background image

4

I

T
P

W

ZPT

Konwerter Bin2BCD

BIN/BCD

Wejście

Wyjście

0  liczby  99

(00011011)

BIN

(00100111)

BCD

background image

5

I

T
P

W

ZPT

0

0

0 0 0 0 0 0

0

0

0 1 1 0 1 1

27

LDA

LDB

LB

=

0

0

0 0 0 0 0 0

LDB  5

LDB := LDB+3

NIE

TAK

LDB := LDB

 8

Metoda +3

background image

6

I

T
P

W

ZPT

0

0

0 1 1 0 1 1

LDA

LDB

LB

0

0

0 0 0 0 0 0

0

0

0

0

0 0 0 0 0 0

0

0

0

0 0 0 0 0 0

0

0

0 0 0 0 0 0

0

0

0 0 0 0 0 1

0

0

0 0 0 0 1 1

0

0

0 0 0 1 1 0

0 0 1 1

0

0

0 0 1 0 0 1

0 1 1

0

0

0 1 0 0 1 1

0

0

1 0 0 1 1 1

LDB < 5

LDB < 5

LDB < 5

LDB < 5

LDB < 5

LDB < 5

LDB  5

+

LDB < 5

1

2

3

4

5

6

7

8

1 1 0 1 1

1 1 0 1 1

1 1 0 1 1

1 0 1 1

1 1

1

0

0

1 0 0 1 1 1

LD

BCD

 =

2

7

 = 27

background image

7

I

T
P

W

ZPT

Algorytm 
konwersji
 z kodu BIN na 
BCD

KONIEC

LOAD (LB)

LDA := 0
LDB := 0

LK := 8

LDB  5

LDB := LDB + 3

LDA := LDA + 3

LDA  5

START

LDA := SHL(LDA,LDB

7

)

LDB := SHL(LDB,LB

7

)

LB := SHL(LB)

LK := DEC(LK)

LD := LDA 

 LDB

LK = 

0

NIE

TAK

NIE

NIE

TAK

TAK

background image

8

I

T
P

W

ZPT

Opis strukturalny

R3

R2

R1

K

S3

S2

S1

A

B

8

4

4

4

„3”

„5”

 5

LK

4

„8”

LOAD1
DEC

LK = 0

R4

LOAD2

8

Y = LD

UO

LB

Y

LK = 0

10

US

S

 5

MUX

1

0

MUX

4

A

B

4

LB

background image

9

I

T
P

W

ZPT

Sieć działań

z uwzględnieniem UO

LK = 0

0

0

SHL 1, SHL 2, SHL 3,

DEC (LK)

MUX := 0

MUX := 1

LOAD 4

LOAD 2

LOAD 3

S

0

1

1

0

1

1

LOAD 1

CLEAR 2,3

LOAD (LK)

K  >  5

K  >  5

A

0

A

1

A

3

A

4

A

5

A

6

A

7

A

2

background image

10

I

T
P

W

ZPT

Automat sterujący

LK = 0

0

0

SHL 1, SHL 2, SHL 3,

DEC (LK)

MUX := 0

MUX := 1

LOAD 4

LOAD 2

LOAD 3

S

0

1

1

0

1

1

LOAD 1

CLEAR 2,3

LOAD (LK)

K  >  5

K  >  5

A

0

A

1

A

2

A

3

A

4

A

5

A

6

A

7

A

0

/Z

0

A

1

/Z

1

A

2

/Z

2

A

3

/Z

3

A

4

/Z

6

A

6

/Z

4

A

7

/Z

5

A

5

/Z

7

x

1

x

1

x

0

x

2

0

x

1

x

1

x

2

x

background image

11

I

T
P

W

ZPT

Automat sterujący

x

2

x

1

x

0

S

00
0

00
1

01
1

01
0

11
0

11
1

10
1

10
0

Z

A

0

Z

0

A

1

Z

1

A

2

Z

2

A

3

Z

3

A

4

Z

6

A

5

Z

7

A

6

Z

4

A

7

Z

5

A

0

/Z

0

A

1

/Z

1

A

2

/Z

2

A

3

/Z

3

A

4

/Z

6

A

6

/Z

4

A

7

/Z

5

A

5

/Z

7

x

1

x

1

x

0

x

2

0

x

1

x

1

x

2

x

A

0

A

0

A

0

A

0

A

1

A

1

A

1

A

1

A

2

A

2

A

2

A

2

A

2

A

2

A

2

A

2

A

6

A

6

A

6

A

6

A

3

A

3

A

3

A

3

A

4

A

4

A

7

A

7

A

7

A

7

A

4

A

4

A

2

A

5

A

5

A

2

A

2

A

5

A

5

A

2

A

0

A

0

A

0

A

0

A

0

A

0

A

0

A

0

A

3

A

3

A

3

A

3

A

3

A

3

A

3

A

3

A

4

A

4

A

4

A

4

A

4

A

4

A

4

A

4

background image

12

I

T
P

W

ZPT

 

IN

CLK

CK

IN

LB[7..0]

STOP]

OUT

CLOK

L[3..0]

OUT

OUT

LOAD

START

LOAD

LOAD

LOAD

CLK

DA[3..0]

LOAD

STOP

DB[3..0]

RB[7..0]

LD[7..0]

CK

STOP

CK

CK

QDB[3..0]

QDA[3..0]

r3_v

Us_v

r2_v

r1_v

r4_v

Lk_v

LB[7..0]

CK

CLK

START

CLOK

STOP

LD[7..0]

INPUT

INPUT

INPUT

INPUT

OUTPUT

OUTPUT

OUTPUT

Konwerter Bin2BCD

Konwerter Bin2BCD w systemie 

Altery

background image

13

I

T
P

W

ZPT

Realizacja wg języka VHDL

 ** DEVICE SUMMARY **
Chip/                     Input Output Bidir  Memory  Memory  

 LCs

POF       Device          Pins  Pins   Pins   Bits % Utilized  LCs  % Utilized
bin2bcd   EPF10K20RC240-3  10     9      0    0         0  %    72       6  %
User Pins:                 10     9      0  

background image

14

I

T
P

W

ZPT

SUBDESIGN bin2bcd
(

lb[7..0], start, zegar

: INPUT;

ld[7..0], koniec

: OUTPUT;

)
VARIABLE

lda[3..0], ldb[3..0]

: DFF;

lb_r[7..0], lk[3..0]

: DFF;

ld[7..0], koniec

: DFF;

BEGIN

(lda[], ldb[], lb_r[], lk[]).clk = zegar;
(ld[], koniec).clk = zegar;
IF start THEN

lb_r[] = lb[];
lk[] = 8;

ELSE

IF lk[] > 0 THEN

IF ldb[] >= 5 THEN

lda[] = (lda[2..0], B"1"); -- bit lb[3] 

= 1

ldb[] = (ldb[2..0] + 3, lb_r[7]);

ELSE

lda[] = (lda[2..0], B"0"); -- bit lb[3] 

= 0

ldb[] = (ldb[2..0], lb_r[7]);

END IF;
lb_r[] = (lb_r[6..0], B"0"); -- przesun w lewo
lk[] = lk[] - 1; -- zmniejsz lk

ELSE

lda[] = lda[];
ldb[] = ldb[];
ld[] = (lda[], ldb[]);
koniec = B"1";

END IF;

END IF;

END;

Bin2BCD – specyfikacja behawioralna w 

języku AHDL

background image

15

I

T
P

W

ZPT

Opis behawioralny (AHDL)

background image

16

I

T
P

W

ZPT

Opis behawioralny (AHDL)

 ** DEVICE SUMMARY **
Chip/                     Input Output Bidir  Memory  Memory  

 LCs

POF       Device          Pins  Pins   Pins   Bits % Utilized  LCs  % Utilized
bin2bcd   EPF10K20RC240-3  10     9      0    0         0  %    41       3  %
User Pins:                 10     9      0  

Wynik otrzymujemy po 8 taktach zegara 

więc jedna liczba konwertowana jest w 

około 127 ns,

czyli szybkość konwersji wynosi 7,8 mln 

liczb na sekundę

background image

17

I

T
P

W

ZPT

Opis behawioralny

background image

18

I

T
P

W

ZPT

Opis behawioralny

LDA

LDB

LB

0000

0000

00011011

0000

0000

00110110

0000

0000

01101100

0000

0000

11011000

0000

0001

10110000

0000

0011

01100000

0000

0110

11000000

+

0011

0000

1001

0001

0011

10000000

0010

0111

00000000

background image

19

I

T
P

W

ZPT

Opis behawioralny...

Spisuje się doskonale, ale czy 

rzeczywiście jest to zawsze najlepsza 

metoda syntezy. Są podobno 

doskonałe procedury syntezy 

logicznej, np. Espresso

background image

I

T
P

W

ZPT

# Konwerter 
bin2bcd
.type fr
.i 7
.o 8
.p 100
0000000  00000000
0000001  00000001
0000010  00000010
0000011  00000011
0000100  00000100
0000101  00000101
. . . ..........
1011111  10010101
1100000  10010110
1100001  10010111
1100010  10011000
1100011  10011001
.e

TITLE " Converted from PLA file:  bin2bcd";
%  Converter from PLA to ALtera HDL format %
%  Warsaw University of Technology         %
%  Institute of Telecommunications         %
SUBDESIGN bin2bcd-wkl
(

i[6..0] : INPUT;
o[7..0] : OUTPUT;

)
BEGIN
TABLE

(i[6..0]) => (o[7..0]);
B"0000000" => B"00000000";
B"0000001" => B"00000001";
B"0000010" => B"00000010";
B"0000011" => B"00000011";
B"0000100" => B"00000100";
B"0000101" => B"00000101";
........................
B"1011111" => B"10010101";
B"1100000" => B"10010110";
B"1100001" => B"10010111";
B"1100010" => B"10011000";
B"1100011" => B"10011001";

END TABLE;
END;

pla2ahdl

background image

21

I

T
P

W

ZPT

Tablica prawdy – bin2bcd

 Chip/                     Input Output Bidir  Memory  Memory  

 LCs

POF       Device          Pins  Pins   Pins   Bits % Utilized  LCs  % Utilized
binbcd99  EP1K10TC100-1    7      8      0    0         0  %    167      28 %
User Pins:                 7      8      0  

Rozwiązanie bardzo szybkie…
gdyby  nie  ta  ogromna  ilość  zasobów 
potrzebnych do realizacji

background image

22

I

T
P

W

ZPT

A jak sobie poradzi z tym 

konwerterem algorytm 

dekompozycji

background image

23

I

T
P

W

ZPT

Tablica prawdy – bin2bcd

TITLE " Decomposed project: bin2bcd ";
%   Translated from DEMAIN format   %
%  Warsaw University of Technology  %
%  Institute of Telecommunications  %
SUBDESIGN A
(
   in_1, in_2, in_3, in_4

   

:INPUT;

   in_5, in_6, in_7

   

:INPUT;

   out_1, out_2, out_3, out_4 :OUTPUT;
   out_5, out_6, out_7, out_8 :OUTPUT;
)
VARIABLE
   g1_1, g1_2, g1_3, g3_1

   :LCELL;

   g2_1, g2_2

   

   :LCELL;

BEGIN
---- Level 1 ----
TABLE
  (in_1, in_2, in_3, in_4) => (g1_1);
    B"1000" => B"0";
    B"0011" => B"0";
    .................
    B"0001" => B"1";
    B"1011" => B"1";
END TABLE;
TABLE
  (in_6, g1_1, g2_1, g2_2) => (out_7);
    B"0X10" => B"0";

    

.................

    B"1011" => B"1";
END TABLE;
END;

Demain 

+

ans2hdl

# Konwerter 
bin2bcd
.type fr
.i 7
.o 8
.p 100
0000000  00000000
0000001  00000001
0000010  00000010
0000011  00000011
0000100  00000100
0000101  00000101
. . . ..........
1011111  10010101
1100000  10010110
1100001  10010111
1100010  10011000
1100011  10011001
.e

background image

24

I

T
P

W

ZPT

o u t _ 1 o u t _ 2

in _ 1

in _ 1

in _ 6

in _ 5

in _ 7

in _ 2

in _ 2

in _ 3

in _ 3

in _ 4

in _ 4

o u t_ 4 o u t _ 5 o u t_ 6 o u t _ 7

o u t_ 3

o u t _ 8

g 1 _ 1

g 2 _ 1

g 1 _ 2

g 2 _ 2

g 1 _ 3

Realizacja Bin2bcd wg Demaina

background image

25

I

T
P

W

ZPT

 Bin2bcd wg Demaina i MAX+PLUSII

 Chip/                     Input Output Bidir  Memory  Memory 

 LCs

POF       Device          Pins  Pins   Pins   Bits % Utilized  LCs  % Utilized
binbcd99  EP1K10TC100-1    7      8      0    0         0  %    13       2  %
User Pins:                 7      8      0  

Rozwiązanie jeszcze 
lepsze i mało komórek

background image

26

I

T
P

W

ZPT

.type fr
.i 9
.o 8
.p 100
000000000  0000 
0000
000000001  0000 
0001
000000010  0000 
0010
000000011  0000 
0011
000000100  0000 
0100
000000101  0000 
0101
000000110  0000 
0110
000000111  0000 
0111
000001000  0000 
1000
000001001  0000 
1001
000001010  0001 
0000
000001011  0001 
0001
000001100  0001 
0010
000001101  0001 
0011
* * *
001100001  1001 
0111
001100010  1001 
1000
001100011  1001 
1001
.e

Konwerter Bin2BCD na poziomie 

Konwerter Bin2BCD na poziomie 

logicznym

logicznym

MAX+PLUSII 131komórek

AHDL/VHDL

DEMAIN   13 komórek (!!!)

DEMAIN


Document Outline