Title: VLSI ??? ?? Project
1VLSI ??? ?? Project
2Motion Estimation (ME)
- ??? ??? ??
- ?? ?? 8 x 8 Block
- ?? ??? 16 x 16 Block
- ?? ???? Full Search
- ?? ?? ???
- ??? ?? MVx, MVy
3Full search (1)
-
4Full search (2)
- current block? ?? ??? ?? ?? ?? ??? ?? SAD ?? ???
?? ????. - ?? ??
- ? ?? ???? ?? ?? ?? ??? ????.
- ? ??? ?? ?? ???? 4x1 block ??.
1 clk
1 clk
4 clk? 4x4 block ? SAD ? ??
1 clk
1 clk
5Frame ??
- ??? ??? ??
- 32 x 32 Block
- ? ?? ??
?? ?? - - 8 bit
6Frame ??
255
? ? ?
12
11
10
? ? ?
2
1
70
0
32 bit
7? ? ? ? ?
- Sum of Absolute Differences(SAD) UNIT
8TOP Block Diagram (ME)
9TOP Block (ME)
10TOP Block (ME)
AGU module
11SAD Top Block Diagram
SAD unit Block Diagram
12Ripple Carry Adder
- n-?? ?? ?? ???(RCA Ripple Carry Adder)? ??
????? -
- n?? full adder(FA)? ??? ???? ??
- ? carry-out? ?????? ??? ???? ???? ?? ???????
????? ??
13Carry 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?? ???
? ???? ??
14Carry Lookahead Adder (2)
- i ?? stage??? ???
- i ?? stage??? carry-out
- Pi ? Gi ? ??? Si? Ci? ???
- Pi ? Gi ? ?? ??? ????? ?? stage? carry-out?
stage?? ?? ?? ?? ??
15Carry Lookahead Adder (3)
- 16-?? CLA? ?? ??
- CLA ???? carry-in? ???? ?? ???? fan-in? ?????
4-?? BCLU (Block CLU)? 8-?? CLU? ??? ???
16Carry Lookahead Adder (4)
- ?? ???? ? ???? ???(PGU)
- ?? 16??? P, G ?? ??? ??
module name pgu_16bit Input (16bit) a,
b Output (16bit) p, g
17Carry Lookahead Adder (5)
Input a, b
Output p, g
a 0011110110111011 b 1010001110111101
p 1001111000000110 g 0010000110111001
a 1100011000101011 b 0011011110111110
p 1111000110010101 g 0000011000101010
18Carry Lookahead Adder (6)
- ?? ?? ??? (BCLU)
- 16-?? CLU? fan-in ??? ??,
- 4?? 4-?? BCLU? 1?? CLU? ??, 2-??? ??
19Carry Lookahead Adder (7)
module name bclu_16bit Input (1bit)
cin Input (4bit) p, g Output (3bit) c Output
(1bit) ps, gs
- BCLU unit? 4 ???? P? G, ??? 1 ???
- Cin? ???? ??? 3??? ?? (C)? ?? ??
- ?? (ps)? ?? ?? ?? (gs)? ??? ???.
- cn gn pncn-1
- ps p0 p1 p2 p3
- gs g3 g2 p3 g1 p3 p2 g0 p3 p2
p3
Input cin 1b0, p, g
Output c, ps, gs
20Carry Lookahead Adder (8)
- CLU unit? ?? 16 ?? ???? ???? 4??
- BCLU??? ?? ps? gs? ???? ?? ?
- 3??? ?? ??? ?????.
- c4k3 gsk gsk-1psk-1
gs0pskpsk-1 ps1 - cin psk ps0
module name clu_16bit Input (1bit) cin Input
(4bit) ps, gs Output (3bit) c
Input cin, ps, gs
Output c
21Carry Lookahead Adder (9)
module name su_16bit Input (15bit) c Input
(1bit) cin Input (16bit) p Output (16bit) s
- SU unit? 16?? p? 16?? c? ??? ??
- 16?? ?? ?? ???? ??.
- s p xor c
Input cin, c, p
Output s
22Carry Lookahead Adder (10)
module name cla_16bit Input (16bit) a,
b Input (1bit) cin Output (16bit) s
- Top block? 16??? ? ??? ?? 16???
- ?? ??? ????. ?? ?? ??? ????
- ???. ?? block diagram? ???? ???
- ??? ????.
Input a, b, cin
Output s
Carry out
23Register File (1)
module name reg_file Input (1bit) clk,
reset, cur_start Input (64bit) data_in Output
(64bit) cur_data, ref_data Output cnt1, cnt2
- Register ??? 64??? ???? ?? ???
- 8 ?? ?? current block ???? register? ??
- ?? ? ??? current block ???? reference
- block ???? ???? ????.
24Register File (2)
???? ?? ? cnt, cnt0 ? ?? ??? ???? cnt? 07?? ??
??? ??? current register 8?? ????, cnt0? 816??
?? ??? ??? ?? ??? ??? ???? ????. ? ? 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? ???? ????.
25Register File (3)
Input clk, reset, cur_start, data_in
Output cur_data, ref_data
Hiz output
262s Complement
module name twos_com Input (8bit)
ref_data_8bit Output (16bit) com_out
- ???? ???? 8bit unsigned ??
- DATA?? 16bit signed ??? ????
- ? ?? ?? ?? ???.
Input ref_data_8bit
146 ? -146
23 ? -23
200 ? -200
Output com_out
27Absolute Block
module name abs_mode Input (10bit)
abs_in Output (10bit) abs_out
- ? ?? ADDER??? ?? DATA ?
- (10?? ??? ??)? ???? ???.
Input abs_in
-393 ? 393
362 ? 362
-118 ? 118
Output abs_out
28SAD 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_start Input (64bit) data_in Output
(1bit) sig_sad_out Output (14bit) sad_out
29SAD Top Block (2)
Input clk, reset, cur_start, data_in
Output sad_out, sig_sad_out
Reference block data
SAD Value
Current block data
30? ? ? ? ?
31MV generation block
MV generation
clk
count
MV_gen
reset
Count 60
MV_X 30
en
MV_Y 30
Compare
SAD 130
exch
- SAD? ??? ??? Search Window ??? SAD ?? ?? ?? ???
MV ?? ??.
32Counter (1)
- ?? Search Window ???? MB? ?? ??? ?
- ?? ?? clk, reset, en
- en ? ?? SAD? ??? ???? ??? SAD? ??? ??? ???,
en ??? ??? ??? count - ?? ?? count60
33Counter (2)
- ??? Search Window ??? MB? ?? ? ? ?? ??? count
- ??? Search Window ??? ? 81?? MV? ??
- MB? Search Window ??? ?? ? ???? ??? ?? ??? ? ???
count? 1? ?? ??? ??? Search Window? ??? ??? ????
??? count? 81? ?
34Counter (3)
1. ? 81?? count?? ??? ?
2. Counter? ?? ?? 0? ?? ?? ??? en ??? ??? ? count
35Compare (1)
- ?? ? MB? Search Window?? ????? ???? ??? SAD?
???? ?? - ?? ?? clk, reset, en, SAD130
- en ? ?? SAD? ??? ???? ??? SAD? ??? ??? ???
en ??? ??? ??? count - SAD130 ? ??? ???? SAD ?,
- ?? ?? exch
- exch ?? ??? SAD ?? compare?? ??? ?? ?? ???
????? ??? exch ??? ???? mv ?? ????
36Compare (2)
- ???? SAD?? ??
- Compare_old? ??? ???? ??? ??
- -gt? Search Window? ? SAD? ???? compare_old? SAD??
?? ?? - -gtSearch Window? ??? ?? ????? ??
- Compare block?? ?? ??? SAD? compare_old? ?? ??
- SAD? ? ??? compare_old update, exch ?? high
- SAD? ? ?? compare_old ??? ??, exch ?? low
37Compare (3)
1. Compare? ??? ???? ??? ??.
2. Compare? Search Window? ??? ?? ??? ?? ?????
??. -gt ?? Search Window? ?? SAD ??? ???? update
?? ??
38Compare (4)
3. ????? SAD ?? ?? exch ?? high, ???? SAD ???
update.
4. ????? SAD ?? ?? exch ?? low, ???? ??? ??.
39MV_generation (1)
- ?? ? ???? count? exch ??? ?? ?? ?? MV? ??.
- MB? Search Window? ?? ??? ??? ??? ?? ?? -4, -4?
?? - ?? ?? clk, reset, count60, exch
- Count count? ?? MV ?? ??
- Exch MV ?? ??.
- ?? ?? MV_X30, MV_Y30
40MV_generation (2)
- Compare ???? ?? exch ??? Counter ???? ?? count
??? ??? MV ?? ?? - Exch ??? SAD ?? ?? ? ??? high? ??, ? ? count? ??
MB? Search Window? ??? ???? ? ? ?? - Search Window ??? ???? MV ?? ??? ??? ???? ????
???? MV ?? ???
41MV_generation(3)
- MV? ?? ??
- exch ?? high? ? ??? count? ?? ???? MV?? ??(case?
??) - ?) count? 1? ?? (-4,-4), count? 9? ??
(-4,4), count? 81? ?? (4,4) - SAD? ?? ??? ??? ????? MV?? (0,0)??? ?
-4,4, count9
-4,2, count7
-4,0, count5
-4,-4, count1
42MV_generation (4)
1. ???(-4,-4), exch ??? high?? ? ?? count ?? ???
MV ? ??
2. Count? 81? ?? ??? Search Window? ??? ??? MV?
??? ?
43? ? ? ? ?
- Address Generation Unit(AGU)
44Memory (1)
- ??? ??? ???
- current frame
- CLK ??
- WE write enable (1 ?? ??, 0 ?? ??)
- A ??
- D ???? ? data
- SPO ????? ??? data
45Memory (2)
- ??? ??? ???
- reference frame
- CLK ??
- WE write enable (1 ?? ??, 0 ?? ??)
- A ??
- D ???? ? data
- SPO ????? ??? data
46Address Generation Unit (AGU) (1)
- ?????? ???? ?? ?? ?? ?? ??
- ??? ???? ???? ???? ?? ??? ??? ?? ???? ?? ???
- ??? ??? ??.
- clk posedge? ????? ??
- rst set ?? ???
- enable set ???? ?? ??
- data_bus 4 x 1 ??? ??? (64bit) ? clk ? ??
- start_tran ?? ??? ???? ?? ?? ?? set
47Address Generation Unit (AGU) (2)
48Address Generation Unit (AGU) (3)
- data_bus 4 x 1 ?? ??
- start_tran ? ?? ??
- ???? ?? ?? ??
- set ???? ??? current block ???? ??.
- clear ???? ??? reference block ???? ??.
- ?? ???? ??? ???? ??? SAD ?? ????.
-
49AGU ??
- AGU ??? ??? ??
- ??? ???? ?? ???? ??.
- SAD ??? ?? data? ?? ?? ??.
50?? ??? ?? ?? (1)
- ?? (I)
- ???? ?? ??? ???? ?? ??? ?? ??
clk
ctrl_cur_addr_gen
get_cur_row_block
rst
cur_block_cnt
enable
cnt_1block
- get_cur_row_block ???? ?? ???.
- cur_block_cnt ???? ?? ?? ??.
- cnt_1block current? ? ??? ???? ??? ???.
- ???? ???? ????.
???? ???? ? ??? ??
51?? ??? ?? ?? (2)
- ctrl_cur_regAB ??
- ??? ???? A,B (32bit x 8)? ??.
- ? ? ????? current block ? ???? ??? ??.
- ??? ??? ??? ? ????? ??? ?? ????.
0
0
1
1
2
2
3
3
4
4
5
5
6
6
7
7
A
B
52?? ??? ?? ?? (3)
- ?? ??? ???? ??
- ? ?? ??? ??? ????? ??? ?? ? 672 clk
- ?? 16 clk ?? ?? ??? ?? ??? ?? ??.
- ?? ??? ????? ? ? ??? ??? ?? ??.
- ?? ?? ??? ???? ??.
- ?? ??? ?? ?? ??? ?? ?? ??.
- ???? ????? ??? ? ??? ??? ??? ?? ??? ???
C
D
E
F
???? ???? ? ??? ??
A
B
53?? ??? ?? ?? (4)
- ?? ???? ?? ?? (cur_block_cnt)
- ? ??? ??? ?? ? ?? ??? ?? ???.
- ? ?? ?? ? ??? ?? ? 672 clk
54?? ??? ?? ?? (5)
- ?? (II)
- ??? ??? ???? ?? ?? ?? ??
clk
cur_block_addr_gen
rst
cur_addr
get_cur_row_block
cur_block_cnt
- cur_block_cnt ???? ?? ?? ??.
- get_cur_row_block ?? ?? ???.
- cur_addr ??? ??? ??? ? ?? ??? ?? ?? ??.
???? ???? ??
55?? ??? ?? ?? (6)
- ?? ?? ??
- ??? 8? ???? ?? ??
- current ? ? ?? 8x8
- 0, 8, 16 ... 56, 1, 9 ...
16 clk, ?? ?? ??? ??
56?? ??? ??? ?? (I)
- ?? (III)
- cnt_1block? ??? ???? ????AB? ?? ? ??? ?? ?? ??
???? ???? ? ??
- data_bus_cur cnt_1block ?? ???? ?? ??? ??
??????? ?? ?? ??
57?? ??? ??? ?? (II)
- ??? ?? ??
- ??? 8? ???? ?? ??
- current ? ? ?? 8x8
- 0, 8, 16 ... 56, 1, 9 ...
16 clk, ?? ?? ??? ?? reg AB
8 clk, ?? ?? ??? ??
58 ?? ??? ?? ?? (1)
- ?? (IV)
- ?? ??? ?????? ?? ? ???? ?? ??? ?? ??
clk
get_ref_row_block
ctrl_ref_addr_gen
rst
get_bottom_ref_row_block
enable
ref_x
cur_block_cnt
( -4, -4 )
ref_y
cnt_1block
- get_ref_row_block ???? ?? ??? 1
- get_bottom_row_block ???? ?? ??? 2
- ref_x, ref_y get ?? ??? ???? ??? ? ?? ??
??????? ?? ??
??????? ?? ?? ??? 1
59?? ??? ?? ?? (2)
- ?? ???
- ??? ? ?? ?? ref_x, ref_y
-4 , -4
- get_xxx ??? ??? ? ??? ??? ? ?? ?? ? ?? ??.
- ?? ???? ? ?? ??? ????? ????? ??? ??.
60?? ??? ?? ?? (3)
- ?? ?? ???
- ?? 1? ??? get_ref_row_block ??.
- ?? 2? ??? get_bottom_row_block ?? ?? ???.
32 clk, ??? ??1
4 clk, ??? ??2
61 ?? ??? ?? ?? (4)
- ?? (V)
- ??? ??? ???? ???? ?? ?? ??
clk
ref_block_addr_gen
rst
get_bottom_ref_block
ref_addr
get_ref_row_block
overflow
ref_x
ref_y
- ref_addr ??? ??? ??? ? ?? ??? ?? ???? ??.
- overflow ??? ????? ???? ??? ?? ?? ??? set ??
??.
?? ???? ? ? ?? ??
???? ??? ??? overflow ??
62?? ??? ?? ?? (5)
- Overflow ?
- ???? ??? ??
- overflow ? ? ??? ?? ?? ?? 0 ?? ??.
overflow ? ??
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
64?? ??? ??? ?? (I)
- ?? (IV)
- cnt_1block ? ??? ?? ?? ??? 4x1 ??? ?? ?? ??
clk
ctrl_ref_regCDEF
rst
overflow
data_bus_ref
cnt_1block
ref_data_from_mem
- ref_data_from_mem ???? ?? ?? ???
- data_bus_ref cnt_1block ?? ???? ?? ???? ????.
- ??? ? ?? ???? ?? (C,D,E,F)? ??? ?? ?? ???? ?? ???
??? ??? ????.
65?? ??? ??? ?? (II)
???? ??? ??? ???
?? ???? CDEF ?? ???
66?? ??? ??? ?? (2)
D
E
F
D
E
F
C
C
- ? ?? ????? ?? ??? ???? ???? ?????.
- ???? ????? ??? ? ??.
- 8 x 8 ??? ??? ? ? ?? ?????.
- ?? 8 x 8 ??? ??? ? ? ?? ?????.
- 9?? ??? ????.
67?? ??? ???? (1)
- ??? ??? ??
- ??? ???? C,D,E,F (32bit x 8)? ??.
- ? ? ????? ?? ???? reference block ? ???? ??? ??.
- ??? ??? ??? ? ????? ??? ?? ????.
C
D
E
F
68?? ??? ???? (2)
- ??? ??? ??
- 1 row? ??? ??? ??? 2 row? ??? ?? ??.
- ??? ??? ??? ?? ?? ??? ?? ? ?? ???? ?? ?? ??.
D
E
F
C
tF
tC
tD
tE
69?? ??? ???? (3)
- ??? ??? ??
- ? ?? row ??? ??? ?? ? ??? ?? ??? ??.
- ??, ??? ????? ?? ?? ? ? ??? ?? ????.
D
E
F
C
tF
tC
tD
tE
70?? ??? ???? (4)
- tC, tD, tE, tF ???? ??? ?? ???
???? ??? ??? ???
?? ???? CDEF ?? ???
71?? ??? ?? ??
- ?? ?? ??
- data_bus_cur ? data_bus_ref ? AGU? ?? data_bus?
???? - start_tran ??? ???? ?? ??? ??.
data_bus_cur
data_bus
data_bus_ref
start_tran
72Next 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 ??)
73Next 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)