Top Banner
VLSI 시시시 시시 © 시시시시 , 2008 시 1 VLSI 시시시 시시 Project Motion Estimator 시시
73

VLSI 시스템 설계 Project

Jan 20, 2016

Download

Documents

nodin

VLSI 시스템 설계 Project. Motion Estimator 설계. Motion Estimation (ME). 블록별 움직임 추정 기본 블록 : 8 x 8 Block 탐색 윈도우 : 16 x 16 Block 탐색 알고리즘 : Full Search 최종 출력 데이터 움직임 벡터 : MVx, MVy. Full search (1). 탐색 방법. -. Full search (2). - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 1

VLSI 시스템 설계 Project

Motion Estimator 설계

Page 2: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 2

Motion Estimation (ME)

• 블록별 움직임 추정– 기본 블록 : 8 x 8 Block– 탐색 윈도우 : 16 x 16 Block– 탐색 알고리즘 : Full Search

• 최종 출력 데이터– 움직임 벡터 : MVx, MVy

Page 3: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 3

Full search (1)

• 탐색 방법

-

Page 4: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 4

Full search (2)

• current block 과 탐색 윈도우 내에 있는 모든 블록들 과의 SAD 값을 구하는 탐색 방법이다 .

• 계산 구조– 매 클럭 데이터를 처리 하기 위한 구조로 설계한다 .– 한 클럭에 처리 되는 데이터는 4x1 block 이다 .

1 clk

1 clk

1 clk

1 clk

4 clk 당 4x4 block의 SAD 값 계산

Page 5: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 5

Frame 정보

• 실습에 사용된 영상 – 32 x 32 Block

한 픽셀 정보 표시 비트- 8 bit

Page 6: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 6

Frame 정보

• 메모리에 저장된 방법

012

●●●

101112

●●●

255

32 bit

[7:0]

Page 7: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 7

실 습 과 제 Ⅰ

Sum of Absolute Differences(SAD) UNIT

Page 8: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 8

TOP Block Diagram (ME)

Mem_cur Mem_ref

AGU

Top_sad_unit

CC

cur_data ref_data

start_tran data_bus

sig_sad_out sad_out

clk reset enable

cur_addr ref_addr

mvx mvy

Mem_cur moduleMem_ref module

AGU moduleSAD moduleCC module

MODULE

8 bit : cur_addr, ref_addr32 bit : cur_data, ref_data

1 bit : start_tran64 bit : data_bus

1 bit : sig_sad_out14 bit : sad_out4 bit : mvx, mvy

SIGNAL

Page 9: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 9

TOP Block (ME)

INPUT - Clock, Reset, EnableOUTPUT - mvx : Motion Vector X - mvy : Motion Vector Y

TOP module

INPUT - cur_addr : 현재 블록 주소 정보OUTPUT - cur_data : 현재 블록 데이터

Mem_cur module

INPUT - ref_addr : 참조 블록 주소 정보OUTPUT - ref_data : 참조 블록 데이터

Mem_ref module

INPUT - cur_data : 현재 블록 데이터 - ref_data : 참조 블록 데이터OUTPUT - start_tran : 현재 블록 데이터 전달 신호 - data_bus : 현재 블록 데이터와 참조 블록 데이터 출력 - cur_addr : 현재 블록 주소 정보 - ref_addr : 참조 블록 주소 정보

AGU module

Page 10: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 10

TOP Block (ME)

INPUT - start_tran : 현재 블록 데이터 전달 신호 - data_bus : 현재 블록 데이터와 참조 블록 데이터OUTPUT - sig_sad_out : SAD 연산 결과 출력 신호 - sad_out : SAD 연산 결과

SAD module

INPUT - sig_sad_out : SAD 연산 결과 출력 신호 - sad_out : SAD 연산 결과OUTPUT - mvx : Motion Vector X - mvy : Motion Vector Y

CC module

AGU module

Page 11: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 11

SAD Top Block Diagram

SAD unit Block Diagram

2's complement

Reg_file

Carry Lookahead Adder

Absolute unit

Carry Lookahead Adder

Carry Lookahead Adder

Carry Lookahead Adder

Acc_adderCarry

LookaheadAdder

clk reset cur_startdata_in[63:0]

sig_sad_out sad_out[13:0]

counter

Page 12: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 12

Ripple Carry Adder

• n- 비트 캐리 전파 덧셈기 (RCA : Ripple Carry Adder) 의 블록 다이어그램

• n 개의 full adder(FA) 를 직렬로 연결하여 구성• 각 carry-out 의 지연시간으로 인하여 비트수가 증가함에 따라

계산지연시간이 선형적으로 증가

FA

A0 B0

C0

S0

FAFA

An-1 Bn-1

Sn-1

A1 B1

C1

S1

. . .

. . .

Cn-2

Page 13: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 13

Carry Lookahead Adder (1)

• Carry Lookahead Adder (CLA) – FA 의 캐리를 미리 예측하여 계산 결과를 구하는 덧셈기 (RCA

의 단점 극복 )

• i 번 째 stage 에 서 의 carry generate function(Pi), carry

propagate function(Gi):

– Gi : i 번째 stage 에서의 carry-in 에 관계없이 발생하는 주캐리 (primary carry) 의 유무를 나타내는 함수

– Pi : i 번째 stage 에서의 carry-in 이 carry-out 으로 되는지 를 나타내는 함수

iii BAG

iii BAP

Page 14: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 14

Carry Lookahead Adder (2)

• i 번째 stage 에서의 덧셈합

• i 번째 stage 에서의 carry-out

• Pi 와 Gi 를 이용한 Si 와 Ci 의 재표현

• Pi 와 Gi 는 동시 발생이 가능하므로 모든 stage 의 carry-out 은 stage간의 전달 지연 없이 구함

1 iiii CBAS

1 iiiiii CBABAC

1 iii CPS

1 iiii CPGC

Page 15: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 15

Carry Lookahead Adder (3)

• 16- 비트 CLA 의 설계 트리

– CLA 블록에서 carry-in 의 입력수가 통상 허용되는 fan-in 을 초과하므로 4- 비트 BCLU (Block CLU) 와 8- 비트 CLU 로 나누어 모델링

TOP_CLA

PGU BCLU CLU SU

PGU

BCLU

CLU

SUa

b

cinc

s

cout

c

p

gps

gs

Page 16: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 16

Carry Lookahead Adder (4)

• 캐리 전달함수 및 발생함수 발생기 (PGU)– 각각 16 비트의 P, G 신호 동시에 출력

PGU a

b

p

g16

16

16

16

module name : pgu_16bit

Input (16bit) : a, bOutput (16bit) : p, g

iii BAG

iii BAP

Page 17: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 17

Carry Lookahead Adder (5)

Input a, b

Output p, g

a : 0011110110111011b : 1010001110111101

a : 1100011000101011b : 0011011110111110

p : 1001111000000110g : 0010000110111001

p : 1111000110010101g : 0000011000101010

• PGU

Page 18: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 18

Carry Lookahead Adder (6)

• 블록 캐리 예측기 (BCLU)– 16- 비트 CLU 의 fan-in 문제를 고려 ,

– 4 개의 4- 비트 BCLU 와 1 개의 CLU 를 이용 , 2- 레벨로 구성

4bit BCLU

CLU

4bit BCLU·····

·····

c0c1c2

c3c7

c4c5c6

ps0 gs0ps1 gs1

Page 19: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 19

Carry Lookahead Adder (7)

module name : bclu_16bit

Input (1bit) : cinInput (4bit) : p, g

Output (3bit) : cOutput (1bit) : ps, gs

• BCLU

•BCLU unit 은 4 비트씩의 P 와 G, 그리고 1 비트의Cin 을 입력으로 취하여 3 비트의 캐리 (C) 와 블록 전달함수 (ps) 와 블록 발생 함수 (gs) 의 출력을 가진다 .

cn = gn + pn·cn-1

ps = p0 · p1 · p2 · p3

gs = g3 + g2 · p3 + g1 · p3 · p2 + g0 · p3 · p2 · p3

Input cin = 1’b0, p, g

Output c, ps, gs

Page 20: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 20

Carry Lookahead Adder (8)

• 캐리 예측기 (CLU)

module name : clu_16bit

Input (1bit) : cinInput (4bit) : ps, gs

Output (3bit) : c

•CLU unit 은 전체 16 비트 덧셈기의 캐리인과 4 개의 BCLU 로부터 출력 ps 와 gs 를 입력으로 하며 총 3 비트의 캐리 신호를 출력시킨다 .

c4k+3 = gsk + gsk-1·psk-1 + · · · + gs0·psk·psk-1· · ·ps1 + cin · psk · · · ps0

Input cin, ps, gs

Output c

Page 21: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 21

Carry Lookahead Adder (9)

• 덧셈 블록 (SU)

module name : su_16bit

Input (15bit) : cInput (1bit) : cinInput (16bit) : p

Output (16bit) : s

•SU unit 은 16 비트 p 와 16 비트 c 의 입력을 받아 16 비트 덧셈 합을 출력으로 한다 .

s = p xor c

Input cin, c, p

Output s

Page 22: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 22

Carry Lookahead Adder (10)

• CLA top block

module name : cla_16bit

Input (16bit) : a, bInput (1bit) : cin

Output (16bit) : s

•Top block 은 16 비트의 두 입력을 받아 16 비트의덧셈 결과를 출력한다 . 전체 캐리 아웃은 고려하지않았다 . 전체 block diagram 을 참고하여 각각의모듈을 연결한다 .

Input a, b, cin

Output sCarry out

Page 23: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 23

Register File (1)

•Register file

module name : reg_file

Input (1bit) : clk, reset, cur_startInput (64bit) : data_in

Output (64bit) : cur_data, ref_dataOutput : cnt1, cnt2

•Register 모듈은 64 비트의 데이터를 입력 받아서 8 클럭 동안 current block 데이터를 register 에 저장하고 이 후에는 current block 데이터와 referenceblock 데이터를 출력으로 내보낸다 .

CurrentData

register

ReferenceData

register

Counter

Register fileclk

reset

cur_start

data_in

cnt1

cnt2

cur_data

ref_data

Page 24: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 24

Register File (2)

카운터의 출력 중 cnt, cnt0 두 개의 출력을 사용하여 cnt 가 0~7 까지 현재 블록의 정보를 current register 8 개에 저장하고 , cnt0 가 8~16 까지 현재 블록의 정보와 참조 블록의 정보를 출력으로 내보낸다 . 이 때 register file 에 들어오는 입력을dat_in_tmp 에 저장하여 한 클럭 후에 current register 에 저장하고 register file 의 출력으로 사용한다 .count_16

input : clk, reset, load(cur_start) output : cnt_out(cnt), cnt_out0(cnt0), cnt_out1(cnt1), cnt_out2(cnt2)

cnt0 값에 의해 register file 의 출력 값이 정해지지 않을 경우에는 Hiz 를 출력으로 내보낸다 .

•Register file

Page 25: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 25

Register File (3)

Input clk, reset, cur_start, data_in

Output cur_data, ref_data Hiz output

•Register file

Page 26: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 26

2’s Complement

module name : twos_com

Input (8bit) : ref_data_8bit

Output (16bit) : com_out

•입력으로 들어오는 8bit unsigned 참고 DATA 값을 16bit signed 값으로 전환하고 이 값의 보수 값을 구한다 .

• 2’s complement

Input ref_data_8bit

Output com_out 146 → -146 23 → -23 200 → -200

Page 27: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 27

Absolute Block

module name : abs_mode

Input (10bit) : abs_in

Output (10bit) : abs_out

•첫 번째 ADDER 로부터 얻은 DATA 값(10 비트 값만을 취함 ) 의 절대값을 구한다 .

• Absolute

Input abs_in

Output abs_out -393 → 393 362 → 362 -118 → 118

Page 28: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 28

SAD Top Block (1)

Register file 의 입 · 출력과 top block 을 연결한 후 , 이 값을 complement unit 에 연결 한다 . 전체 Adder 에 대해서 캐리인은 ‘ 0’ 으로 정해주고 complement unit 의결과값을 첫 번째 Adder (8 개 ) 에 연결한다 . 이 결과를 Absolute unit 에 연결하여절대 값을 구하고 , 이 결과를 두 번째 Adder(4 개 ) 에 연결하여 덧셈 결과를 구한다 .이 값을 세 번째 Adder(2 개 ) 에 연결하고 이 결과를 네 번째 Adder(1 개 ) 에 연결하여8 X 1 의 결과를 얻는다 . 이렇게 얻은 결과 (8 X 1 의 결과 8 개 ) 를 더하여 8 X 8 에 대한 SAD 값을 구하여 출력한다 . 카운터로부터 얻은 두 개의 카운터 값 (cnt1, cnt2) 를 이용하여 최종 SAD 결과가출력될 때마다 CC Block 의 입력이 되는 enable (sig_sad_out) 신호를 생성한다 .

module name : top_sad_unit

Input (1bit) : clk, reset, cur_startInput (64bit) : data_in

Output (1bit) : sig_sad_outOutput (14bit) : sad_out

• SAD top

Page 29: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 29

SAD Top Block (2)

Input clk, reset, cur_start, data_in

Output sad_out, sig_sad_out

Current block dataReference block data SAD Value

• SAD top

Page 30: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 30

실 습 과 제 Ⅱ

Motion Vector Generation

Page 31: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 31

MV generation block

clk

reset

en

SAD

[13:0]

MV_X

[3:0]

MV_Y

[3:0]

MV generation

count

Compare

MV_gen

Count

[6:0]

exch

SAD 의 입력을 받아서 Search Window 내에서 SAD 값이 가장 적은 부분의 MV 값을 생성 .

Page 32: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 32

용도 : Search Window 내에서의 MB 의 이동 횟수를 셈 입력 신호 : clk, reset, en

en : 전 단인 SAD 를 구하는 블록에서 새로운 SAD 가 유효할 때마다 전송됨 ,

en 신호가 들어올 때마다 count

출력 신호 : count[6:0]

Counter (1)

clk

reset

en

Counter

Count

[6:0]

Page 33: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 33

Counter (2)

하나의 Search Window 내에서 MB 가 이동 할 수 있는 횟수를 count 하나의 Search Window 내에서 총 81 개의 MV 가 나옴 MB 가 Search Window 내에서 왼쪽 윗 부분부터 이동을 하기 때문에 이 부분의

count 가 1 이 되고 이동을 하면서 Search Window 의 마지막 부분에 도달했을 때에는 count 가 81 이 됨

Count : 81

Count : 1

Search Window16x16

Current MB8x8

Page 34: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 34

Counter (3)

1. 총 81 개를 count 하고 초기화 됨

2. Counter 는 초기 상태 0 을 유지 하고 있다가 en 신호가 들어올 때 count

Page 35: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 35

Compare (1)

clk

reset

en

SAD [13:0]

Compareexch

용도 : 현 MB 가 Search Window 에서 이동하면서 계산되어 나오는 SAD 의 최소값을 구함

입력 신호 : clk, reset, en, SAD[13:0] en : 전 단인 SAD 를 구하는 블록에서 새로운 SAD 가 유효할 때마다 전송됨

en 신호가 들어올 때마다 count SAD[13:0] : 전 단에서 들어오는 SAD 값 ,

출력 신호 : exch exch : 새로 들어온 SAD 값이 compare 에서 가지고 있던 이전 블록의

최소값보다 작다면 exch 신호를 내보내서 mv 값을 변경시킴

Page 36: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 36

Compare (2)

입력으로 SAD 값을 받음 Compare_old 는 처음에

최대값을 가지고 있음-> 현 Search Window 의 첫

SAD 가 들어오면 compare_old 에 SAD 값을 넣기 위함

->Search Window 가 바뀌면 다시 최대값으로 변함

Compare block 에서 새로 들어온 SAD 와 compare_old 를 서로 비교 SAD 가 더 작으면

compare_old update, exch 신호 high

SAD 가 더 크면 compare_old 그대로 유지 , exch 신호 low

compareold

SADSAD [13:0]

compare

exch

Page 37: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 37

Compare (3)

1. Compare 는 초기에 최대값을 가지고 있음 .

2. Compare 는 Search Window 가 바뀌기 전에 비교할 값을 최대값으로 바꿈 .-> 다음 Search Window 의 처음 SAD 값으로 비교값을 update 하기 위함

Page 38: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 38

Compare (4)

3. 비교값보다 SAD 값이 크면 exch 값이 high, 비교값은 SAD 값으로 update.

4. 비교값보다 SAD 값이 크면 exch 값이 low, 비교값은 그대로 유지 .

Page 39: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 39

MV_generation (1)

용도 : 전 블록에서 count 와 exch 입력을 받아 그에 맞는 MV 를 생성 .

MB 가 Search Window 의 왼쪽 위부터 검색을 하므로 초기 값은 -4, -4 를 가짐

입력 신호 : clk, reset, count[6:0], exch Count : count 에 따라 MV 위치 변화 Exch : MV 교체 신호 .

출력 신호 : MV_X[3:0], MV_Y[3:0]

MV_X

[3:0]

MV_Y

[3:0]

MVgeneration

Count

[6:0]

exch

clk

reset

Page 40: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 40

Compare 블록에서 나온 exch 신호와 Counter 블록에서 나온 count 신호를 이용해 MV 값을 생성

Exch 신호는 SAD 값이 생성 될 때마다 high 가 되며 , 그 때 count 로 현재 MB 가 Search Window 의 어디에 있는지를 알 수 있음

Search Window 내에서 갱신되는 MV 값을 가지고 있다가 카운트가 마지막에 도달하면 MV 값을 전송함

MV_generation (2)

MV_X

[3:0]

MV_Y

[3:0]

MVgeneration

Count

[6:0]

exch

clk

reset

Page 41: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 41

MV_generation(3)

• MV 값 생성 원리– exch 값이 high 가 될 때마다 count 의 값을 참조해서 MV 값을 생성

(case 문 이용 )• 예 ) count 가 1 일 경우 (-4,-4),

count 가 9 일 경우 (-4,4), count 가 81 일 경우 (4,4)

– SAD 가 모든 블록에 대해서 동일하다면 MV 값은 (0,0) 이어야 함

Count : 81

Count : 1

Search Window16x16

Current MB8x8

-4,4, count9

-4,2, count7

-4,0, count5

-4,-4, count1

Page 42: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 42

MV_generation (4)

1. 초기값 (-4,-4), exch 신호가 high 이면 그 때의 count 수에 따라서 MV 값 결정

2. Count 가 81 이 되면 하나의 Search Window 가 끝났기 때문에 MV 가 초기화 됨

Page 43: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 43

실 습 과 제 Ⅲ

Address Generation Unit(AGU)

Page 44: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 44

Memory (1)

• 실습에 사용된 메모리– current frame

mem_cur

CLK

WE

A

SPO

D

– CLK : 클럭– WE : write enable (1 이면 쓰기 , 0 이면 읽기 )– A : 주소– D : 메모리에 쓸 data– SPO : 메모리에서 읽어온 data

Page 45: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 45

Memory (2)

• 실습에 사용된 메모리– reference frame

mem_ref

CLK

WE

A

SPO

D

– CLK : 클럭– WE : write enable (1 이면 쓰기 , 0 이면 읽기 )– A : 주소– D : 메모리에 쓸 data– SPO : 메모리에서 읽어온 data

Page 46: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 46

Address Generation Unit (AGU) (1)

• 메모리로부터 데이타를 읽기 위한 주소 생성 유닛

주소를 생성해서 메모리의 데이타를 받고 필요한 데이타 값을 가공하여 다음 모듈로 넘기는 동작을 한다 .

– clk : posedge 에 동기화하여 동작– rst : set 경우 초기화– enable : set 유지되는 동안 동작

– data_bus : 4 x 1 블록의 데이터 (64bit) 가 clk 당 전송– start_tran : 현재 블록의 데이터가 전송 되는 동안 set

AGUenable

cur_addr

ref_addr

data_bus

start_tran

clk

rst

cur_data

ref_data

Page 47: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 47

Address Generation Unit (AGU) (2)

• 메모리와의 연결

AGUenable

cur_addr

ref_addr

data_bus

start_tran

clk

rst

cur_data

ref_data

mem_cur

CLK

WE

A

SPO

D

mem_ref

CLK

WE

A

SPO

D

Page 48: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 48

Address Generation Unit (AGU) (3)

• 출력 데이타

– data_bus : 4 x 1 블록 전송– start_tran : 세 가지 의미

• 데이터가 전송 시작 알림• set 되어있는 동안은 current block 데이터가 전송 .• clear 되어있는 동안은 reference block 데이터가 전송 .

– 다음 모듈에서 전송된 데이타를 가지고 SAD 값을 생성한다 .

Page 49: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 49

AGU 구조

• AGU 모듈의 두가지 기능– 메모리 액세스를 위한 어드레스 생성 .

– SAD 계산을 위한 data 를 다음 단에 전송 .

Page 50: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 50

현재 프레임 주소 생성 (1)

• 실습 (I)– 메모리로 부터 읽어올 타이밍을 발생 시키는 모듈 설계

ctrl_cur_addr_genenable

get_cur_row_block

cur_block_cnt

cnt_1block

clk

rst

– get_cur_row_block : 어드레스 생성 타이밍 .– cur_block_cnt : 처리중인 현재 블록 번호 .– cnt_1block : current 의 한 블록을 처리하는 동안의 카운트 .

모듈간의 동기화를 담당한다 .

설계에서 만들어야 할 타이밍 시기

Page 51: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 51

현재 프레임 주소 생성 (2)

• ctrl_cur_regAB 모듈– 내부에 레지스터 A,B (32bit x 8) 를 둔다 .

– 이 두 레지스터에 current block 의 데이터를 저장해 둔다 .

– 데이터 전송이 필요할 때 레지스터의 내용을 읽어 전송한다 .

01234567

A

01234567

B

Page 52: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 52

현재 프레임 주소 생성 (3)

• 현재 블록을 읽어오는 시기– 한 개의 블록에 대해서 탐색하는데 걸리는 클럭 수 : 672 clk

• 최초 16 clk 동안 현재 블록에 대한 정보를 읽어 온다 .

• 이와 동시에 탐색윈도우 내 첫 블록의 정보를 읽어 온다 .

• 현재 블록 정보를 전송하기 시작 .

• 이와 동시에 다음 참조 블록을 읽어 오기 시작 .

• 데이터를 재사용하기 위해서 한 픽셀씩 쉬프트 하면서 참조 블록을 재전송

설계에서 만들어야 할 타이밍 시기

C D E F

0 1A B

Page 53: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 53

현재 프레임 주소 생성 (4)

• 현재 프레임의 블록 넘버 (cur_block_cnt)– 한 블록에 연산을 마친 후 블록 넘버를 증가 시킨다 .’

– 한 블록 탐색 시 걸리는 클럭 수 : 672 clk

0 1 2 3

4 5 6 7

8 9 10 11

12 13 14 15

Page 54: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 54

현재 프레임 주소 생성 (5)

• 실습 (II)– 타이밍 신호를 기준으로 주소 생성 모듈 설계

cur_block_addr_genget_cur_row_block

cur_addr

clk

rst

cur_block_cnt

– cur_block_cnt : 처리중인 현재 블록 번호 .– get_cur_row_block : 주소 생성 타이밍 .– cur_addr : 타이밍 신호가 들어올 때 블록 번호에 맞게 주소 출력 .

설계에서 만들어야 주소

Page 55: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 55

현재 프레임 주소 생성 (6)

• 주소 생성 방법– 세로로 8 씩 증가하는 점을 이용– current 의 한 블록 8x8

– 0, 8, 16 ... 56, 1, 9 ...

16 clk, 현재 블록 데이터 읽기

Page 56: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 56

현재 프레임 데이터 전송 (I)

• 실습 (III)– cnt_1block 에 맞추어 데이터를 레지스터 AB 에 저장 및 데이터 전송 모듈 설계

ctrl_cur_regABcur_data_from_mem

data_bus_cur

clk

cnt_1block

– data_bus_cur : cnt_1block 보고 타이밍에 맞춰 데이터 출력설계에서 전송해야 할 시기

설계에서데이터 입력 받는 시기

Page 57: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 57

현재 프레임 데이터 전송 (II)

• 데이터 전송 방법– 세로로 8 씩 증가하는 점을 이용– current 의 한 블록 8x8

– 0, 8, 16 ... 56, 1, 9 ...

8 clk, 현재 블록 데이터 전송

16 clk, 현재 블록 데이터 입력 reg AB

Page 58: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 58

참조 프레임 주소 생성 (1)

• 실습 (IV)– 참조 블록을 메모리로부터 읽어 올 타이밍을 발생 시키는 모듈 설계

ctrl_ref_addr_genenable

get_ref_row_block

ref_x

ref_y

clkrst

– get_ref_row_block : 어드레스 생성 타이밍 1– get_bottom_row_block : 어드레스 생성 타이밍 2– ref_x, ref_y : get 신호 발생시 레퍼런스 블록의 첫 픽셀 좌표

cnt_1blockcur_block_cnt

get_bottom_ref_row_block

( -4, -4 )

설계에서출력할 픽셀 좌표 설계에서출력할 주소 출력 타이밍 1

Page 59: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 59

참조 프레임 주소 생성 (2)

• 참조 프레임– 블록의 첫 픽셀 좌표 : ref_x, ref_y

-4 , -4

– get_xxx 신호가 발생할 때 원하는 블록의 첫 픽셀 좌표 를 출력 한다 .

– 다음 모듈에서 이 값을 가지고 순차적으로 어드레스를 만들어 낸다 .

Page 60: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 60

참조 프레임 주소 생성 (3)

• 주소 생성 타이밍– 읽기 1 의 신호는 get_ref_row_block 으로 .– 읽기 2 의 신호는 get_bottom_row_block 으로 발생 시킨다 .

32 clk, 데이터 읽기 1

4 clk, 데이터 읽기 2

Page 61: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 61

참조 프레임 주소 생성 (4)

• 실습 (V)– 타이밍 신호를 기준으로 어드레스 생성 모듈 설계

ref_block_addr_genref_x

ref_addr

clkrst

ref_y

– ref_addr : 타이밍 신호가 들어올 때 블록 번호에 맞게 어드레스 출력 .– overflow : 생성된 어드레스가 프레임을 벗어나 있을 경우 신호를 set 시켜 둔다 .

get_ref_row_blockget_bottom_ref_block

overflow

이전 모듈에서 준 첫 픽셀 좌표

설계에서 출력할 주소와 overflow 신호

Page 62: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 62

참조 프레임 주소 생성 (5)

• Overflow 란– 프레임을 벗어난 부분– overflow 가 난 부분의 픽셀 값은 모두 0 으로 한다 .

overflow 난 부분

Page 63: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 63

참조 프레임 주소 생성 (6)

• 좌표로부터 주소 생성하는 방법– overflow 가 난 부분의 주소는 0 으로 한다 .

– 입력으로 들어온 ref_x, ref_y 의 값을 임시 변수 tref_x, tref_y 에 복사 .

– 좌표를 변경 시켜 가면서 아래 식으로 주소 생성 . ref_addr = 8 * (tref_y) + tref_x/4

• (x, y)• (0, 0) = 0• (4, 0) = 1 • (8, 8) = 8 * 8 + 2 = 66

• (-4, 0) = 0• (0, -4) = 0

x

y

Page 64: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 64

참조 프레임 데이터 전송 (I)

• 실습 (IV)– cnt_1block 에 동기화 시켜 참조 블럭의 4x1 데이터 전송 모듈 설계

ctrl_ref_regCDEFcnt_1block

data_bus_ref

clk

overflow

– ref_data_from_mem : 메모리로 읽어 들인 데이터– data_bus_ref : cnt_1block 보고 타이밍에 맞춰 데이터를 내보낸다 .

– 내부에 네 개의 레지스터 그룹 (C,D,E,F) 을 두어서 참조 블럭 데이터를 받어 기록해 두거나 출력을 내보낸다 .

rst

ref_data_from_mem

Page 65: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 65

참조 프레임 데이터 전송 (II)

• 파형 설계에서 출력이 나오는 타이밍

내부 레지스터 CDEF 읽는 타이밍

Page 66: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 66

참조 프레임 데이터 전송 (2)

• 데이터 전송 방법

C D E F

– 네 개의 레지스터를 임시 버퍼로 사용하여 데이터를 재사용한다 .– 데이터를 연속적으로 전송할 수 있다 .– 8 x 8 블록을 전송한 후 한 픽셀 쉬프트한다 .– 다시 8 x 8 블록을 전송한 후 한 픽셀 쉬프트한다 .– 9 개의 블록을 처리한다 .

C D E F

Page 67: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 67

참조 프레임 레지스터 (1)

• 데이터 재사용 방법– 내부에 레지스터 C,D,E,F (32bit x 8) 를 둔다 .

– 이 네 레지스터에 탐색 윈도우의 reference block 의 데이터를 저장해 둔다 .

– 데이터 전송이 필요할 때 레지스터의 내용을 읽어 전송한다 .

C D E F

Page 68: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 68

참조 프레임 레지스터 (2)

• 데이터 재사용 방법– 1 row 의 데이터 전송이 끝나면 2 row 의 전송을 시작 한다 . – 여기서 녹색의 부분이 다시 사용 되므로 아래 한 줄의 데이터만 읽어 오면 된다 .

C D E F

tC tD tE tF

Page 69: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 69

참조 프레임 레지스터 (3)

• 데이터 재사용 방법– 첫 번째 row 탐색이 끝나기 전에 한 픽셀씩 위로 복사해 두자 .– 주의 , 필요한 레지스터를 전부 보낸 후 한 픽셀씩 위로 복사한다 .

C D E F

tC tD tE tF

Page 70: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 70

참조 프레임 레지스터 (4)

• tC, tD, tE, tF 레지스터 데이터 받는 타이밍설계에서 출력이 나오는 타이밍

내부 레지스터 CDEF 읽는 타이밍

Page 71: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 71

참조 프레임 최종 출력

• 최종 출력 조합– data_bus_cur 와 data_bus_ref 를 AGU 의 출력 data_bus 에 연결하기– start_tran 신호로 구분하여 출력 하도록 한다 .

data_bus_cur

data_bus_ref

data_bus

start_tran

Page 72: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 72

Next Generation System Engines

• Wireless Modem Technology Trend– 과거 : Dedicated Modem H/W

– 현재 : DSP + Processor

– 미래 : ASDSP + Processor + Reconfigurable DSPs

• 개발 환경의 중요성– 새로운 Architecture 의 H/W 구현은 시간이 많이 요구– S/W 적 접근에서 바로 H/W 설계 가능한 새로운 개발환경 요구

• 새로운 Paradigm 의 S/W tool 필요 – Reconfigurable DSP 의 등장으로 S/W 개발 요소 중요성 증대

System 개발 환경 구축 (Simulator / DSP 개발 )

Page 73: VLSI  시스템 설계  Project

VLSI 시스템 설계 © 선우명훈 , 2008 년 73

Next Generation System Engines

• Future SOC Architecture

– Application-specific– Reconfigurable– Heterogeneous– Multi-CPU

– Multi-CPU, Multi-DSP 를 채택한 high performance SOC 구조– Flexible 한 시스템 구현 (Reconfigurable Logic)

– Multi-standard, Multi-carrier, Multi-service 지원 ( 다양한 Peripheral)

Peripheral(bluetooth, WLAN,USB, UART etc)

Peripheral(bluetooth, WLAN,USB, UART etc)

CPUCPU

ASDSPASDSP

BUS SystemBUS System

MemoryMemory

ReconfigurableLogic

ReconfigurableLogic

Multi CPU

Multi DSP