predavanje za podiplomce 2008 · 3 5 huffmanovo kodiranje/dekodiranje (vld) Črka verjetnost koda k...

12
1 NAČRTOVANJE KOMPLEKSNIH DIGITALNIH SISTEMOV V TEHNOLOGIJI FPGA VEZIJ NA PRIMERU VIDEO DEKODIRNIKA MPEG-4 Matjaž Verderber, Asystelectronic Trzin, Slovenija [email protected] [email protected] 2 Vsebina predstavitve Zasnovali bomo kompleksen digitalni sistem video dekodirnika MPEG-4 (QCIF-144x176 video format, 8-bitni elementi slike, frekvenca slik 25 Hz, ciljna bitna hitrost 64 kb/s). MPEG-4 dekodirnik bomo realizirali v FPGA vezju kot kombinacijo RISC mikroprocesorja in strojnih pospeševalnikov (koprocesorjev). Spoznali bomo potek načrtovanja (opisa sistema in simulacije strojnega/programskega dela sistema dekodirnika). Sistem bomo realizirali v enem samem FPGA vezju in preizkusili njegovo delovanje.

Upload: others

Post on 19-Oct-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: predavanje za podiplomce 2008 · 3 5 Huffmanovo kodiranje/dekodiranje (VLD) Črka Verjetnost Koda K 0.05 10101 l 0.2 01 u 0.1 100 w 0.05 10100 e 0.3 11 r 0.2 00

1

NAČRTOVANJE KOMPLEKSNIH DIGITALNIH SISTEMOV V TEHNOLOGIJI

FPGA VEZIJ NA PRIMERU VIDEO DEKODIRNIKA

MPEG-4

Matjaž Verderber, AsystelectronicTrzin, Slovenija

[email protected]@asystelectronic.si

2

Vsebina predstavitve• Zasnovali bomo kompleksen digitalni sistem video

dekodirnika MPEG-4 (QCIF-144x176 video format, 8-bitni elementi slike, frekvenca slik 25 Hz, ciljna bitna hitrost 64 kb/s).

• MPEG-4 dekodirnik bomo realizirali v FPGA vezju kot kombinacijo RISC mikroprocesorja in strojnih pospeševalnikov (koprocesorjev).

• Spoznali bomo potek načrtovanja (opisa sistema in simulacije strojnega/programskega dela sistema dekodirnika).

• Sistem bomo realizirali v enem samem FPGA vezju in preizkusili njegovo delovanje.

Page 2: predavanje za podiplomce 2008 · 3 5 Huffmanovo kodiranje/dekodiranje (VLD) Črka Verjetnost Koda K 0.05 10101 l 0.2 01 u 0.1 100 w 0.05 10100 e 0.3 11 r 0.2 00

2

3

MPEG-4 dekodirnik (ISOIEC 14496-2 )

4

MPEG-4 dekodirnik (ISOIEC 14496-2 )

- Y

- U , V

0, 229 0,587 0,1140,1687 0,3313 0,50,5 0,4187 0,0813

Y RU GV B

⎡ ⎤ ⎡ ⎤ ⎡ ⎤⎢ ⎥ ⎢ ⎥ ⎢ ⎥= − −⎢ ⎥ ⎢ ⎥ ⎢ ⎥⎢ ⎥ ⎢ ⎥ ⎢ ⎥− −⎣ ⎦ ⎣ ⎦ ⎣ ⎦

Page 3: predavanje za podiplomce 2008 · 3 5 Huffmanovo kodiranje/dekodiranje (VLD) Črka Verjetnost Koda K 0.05 10101 l 0.2 01 u 0.1 100 w 0.05 10100 e 0.3 11 r 0.2 00

3

5

Huffmanovo kodiranje/dekodiranje (VLD)Črka Verjetnost Koda K 0.05 10101 l 0.2 01 u 0.1 100 w 0.05 10100 e 0.3 11 r 0.2 00 ? 0.1 1011

Korak 1 korak 2 korak 3 korak 4 korak 5 korak6 k 0.05 e 0.3 e 0.3 e 0.3 e 0.3 l,r 0.4 k,w,?,u,e 0.6 l 0.2 l 0.2 l 0.2 l 0.2 k,w,?,u 0.3 e 0.3 l,r 0.4 u 0.1 r 0.2 r 0.2 r 0.2 l 0.2 k,w,?,u 0.3 w 0.05 u 0.1 u 0.1 k,w,? 0.2 r 0.2 e 0.3 ? 0.1 ? 0.1 u 0.1 r 0.2 k 0.05 k,w 0.1 ? 0.1 w 0.05

w

?

r

0

l e

u

k

0

0

0

0

0

1

1

1

1

1

1

Začetek kode

Korak 1

Korak 2

Korak 3

Korak 4

Korak 5

Korak 6

∑= iipovprecna plL *Ideja: simbole z večjo verjetnostjo pojavljanja kodiramo z manj biti, simbole z manjšo verjetnostjo pa z več biti. Postopek: kodiranje začnemo pri simbolih z najmanjšo verjetnostjo. V posameznih korakih simbole združujemo v dvojice po naraščajoči verjetnosti.

Entropija z Huffmanovim kodiranjem

Entropija brez Huffmanovega

kodiranja 2.6 3 (dolzina

vsakega od sedmih simbolov

bi morala biti najmanj 3)

L - Entropija li – dolžina kodiranega simbola, pi – verjetnost simbola

6

Kvantizacija in urejanje podatkov

• Zmanjšanje števila bitov • Kvantizacijska napaka• Skaliranje kvant. koraka Q –

uravnavanje komresije

Cik cak zaporedje – ugodnejše razmere za kodiranje s spremenljivo dolžinoMatrika -> VektorUrejanje po frekvenčni razdelitvi posamezne slike (nizke frekvence so zbrane na vrhu vektorja, pomik proti desnemu spodnjemu kotu pomeni višjo frekvenco)

( , ) ...

( , ) ...

( , ) ...

( , )( , )( , )

F u v vrednost pred kvantizacijo

QF u v vrednost po kvantizaciji

Q u v kvantizacijski korak

F u vQF u v roundQ u v

=

Page 4: predavanje za podiplomce 2008 · 3 5 Huffmanovo kodiranje/dekodiranje (VLD) Črka Verjetnost Koda K 0.05 10101 l 0.2 01 u 0.1 100 w 0.05 10100 e 0.3 11 r 0.2 00

4

7

DCT/IDCT8x8 točk

DCT

DCT:

1 1

0 0

2 (2 1) (2 1)( , ) ( ) ( ) ( , ) cos cos2 2

N N

u v

x u y vf x y C u C v F u vN N N

π π− −

= =

+ +⎛ ⎞ ⎛ ⎞= ⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠

∑∑

( ) ( )1 1

0 0

2 1 2 12 ( ) ( )( , ) ( , ) cos cos2 2

N N

x y

x u y vC u C vF u v f x yN N N

π π− −

= =

+ +⎛ ⎞ ⎛ ⎞= ⎜ ⎟ ⎜ ⎟

⎝ ⎠ ⎝ ⎠∑∑

IDCT:

N=8, C(u), C(v) = 1/√2 za u, v = 0, sicer 1

8

Zasnova dekodirnika MPEG-4

Strojna izvedba VLD dekodirnika (Lei-Sun)

Strojni koprocesor

Strojna izvedba IDCT (Chen)

Strojni koprocesor

RISC procesor(izvajanje programske kode za osrednji

del dekodirnika in prenos izvajanjakompleksnejših delov na strojne

koprocesorje )

Ločitev sistema na:

- programski del (SW)

- strojni del (HW)

Page 5: predavanje za podiplomce 2008 · 3 5 Huffmanovo kodiranje/dekodiranje (VLD) Črka Verjetnost Koda K 0.05 10101 l 0.2 01 u 0.1 100 w 0.05 10100 e 0.3 11 r 0.2 00

5

9

Zasnova na nivoju FPGA vezja

Strojna pospešitev

Izpis napak in stanja

dekodiranja

Boot-up sekvenca in

kodiran MPEG-4 niz

Delovnispomin

Dostop donaprav izven FPGA vezja

Shranjevanjeprogramske

kode dekodirnika

Prikazdekodiranih

slik

- programski del (SW)

- strojni del (HW)

Programski deldekodirnika-

SWMPEG-4 decoder

10

Implementacija v FPGA vezju

Sporočila o napakah in opozorila

'DEBUG' 'UART''MC' enota za upravljanje s pomnilnikom

'VGA'

'IDCT' 'DEMUX''VLD'

WISHBONE POVEZOVALNO

OMREŽJE

VHODNO/IZHODNI PRIKLJUČKI

'JTAG' VMESNIK

CPU

D_W

B_S

CPU

I_W

B_S

UART_WB_M

CPE/DSP

'IMMU'

Upravljanje napajanja

DB I/F

'DEBUG'

ČASOVNIK

'PIC' 'DMMU'

WB_

I_M

'Dcache'16 KB

'Icache'16 KB

WB_

D_M

MC_WB_M VGA_WB_M

'CLKGEN'

UART_WB_S MC_WB_S VGA_WB_SRISC_DBG

DEM

UX_

WB_

S

SRAMvmesnikD

EMU

X_W

B_M

IDCT_WB_M MV-VLD_WB_M

MV-VLD_WB_SIDCT_WB_S

GO

SPO

DAR

VO

DIL

A

SUŽNJI VODILA

SUŽN

JI VOD

ILA

SUŽNJI VODILA

OR1200

MPEG-4DEKODIRNIK

Strojni del

Programski delDelovni spomin

Dostop do zunanjih naprav

Prikaz dekodiranihsekvenc

Kodiran MPEG-4 bitni niz

Page 6: predavanje za podiplomce 2008 · 3 5 Huffmanovo kodiranje/dekodiranje (VLD) Črka Verjetnost Koda K 0.05 10101 l 0.2 01 u 0.1 100 w 0.05 10100 e 0.3 11 r 0.2 00

6

11

Zgradba FPGA vezja

IO Pads

IO P

ads

IO P

ads

IO Pads

Boundary Scan TAP Controller

Embedded System Bus

MemoryArray

CPUcore

IPCore

CustomCore

ICON

ILA

ILA

ILA

IBACustomLogic

ILA

Jedro predstavlja množica t.i. Slice-ov2x Slice na CLB2x LUT na CLB

Vgrajena logika/pomnilnik:Možnost uporabe že razvitih IP jeder

(primer: komun. Vmesnika za RS232, CRT)Možnost razvoja lastnih jeder

(koprocesorja za IDCT, VLD)Uporaba procesorskih elementov

(primer: RISC)Vgrajen/distriburiran pomnilnik

Do 128-bitni Block/LUT RAMMožnost verifikacije direktno na FPGA vezju

Virtex 2 PRO

CIN

SwitchMatrix

TBUFTBUFCOUTCOUT

Slice S0

Slice S1

Fast Connects

Slice S2

Slice S3

CIN

SHIFTCLBjedro

12

Zgradba FPGA vezja

Page 7: predavanje za podiplomce 2008 · 3 5 Huffmanovo kodiranje/dekodiranje (VLD) Črka Verjetnost Koda K 0.05 10101 l 0.2 01 u 0.1 100 w 0.05 10100 e 0.3 11 r 0.2 00

7

13

• Prototipni FPGA sistem proizvajalca Flextronics

• Množica strojnih struktur (procesorska jedra, UART, VGA, MEMC) in

pomnilniških elementov (FLASH, SDRAM, SRAM).

• Uporabljen MPEG-4 video model MoMuSys.

• Opis in implementacija strojnih arhitektur v programskih paketih Synplify(Synplicity) in ISE Foundation (Xilinx).

VIRTEX 1600E BG560

- 2188742 sistemskih vrat

- 72x108 (7776) CLB blokov

- 724 vhodno/izhodnih blokov

- 589824 bitov RAM pomnilnika

Razvojno FPGA okolje

4 Mbyte SRAM

Xilinx Virtex 1600E (2188742 systemgates, 72x108 CLBs, 589824 bits of RAM, ...)

64 Mbyte SDRAM

32 Mbyte Flash

14

Postopek načrtovanja sistema

C/C++ prevajalnik

Povezovalnik (linker)

Vnos izvorne kode

Razhroščevanje (debugger)

Arhitekturni simulator

HW verifikacija

Orodja za opisStrojnega in

programskega dela

Potek načrtovanja programskega dela sistema

Potek načrtovanja strojnegadela sistema

FPGA prototipni sistem

Simulacija

Implementacija

Sinteza

HDL opis

Simulacijakode na

simulatorju? ?

Prenos v FPGA vezje Prenos v FPGA vezje

Page 8: predavanje za podiplomce 2008 · 3 5 Huffmanovo kodiranje/dekodiranje (VLD) Črka Verjetnost Koda K 0.05 10101 l 0.2 01 u 0.1 100 w 0.05 10100 e 0.3 11 r 0.2 00

8

15

Načrtovanje strojnega dela sistema

Primer sinteze dekodirnika MPEG-4 s programskim paketom SynplifyPro

Hierarhičen pogled na sistem dekodirnika

z najvišjega nivoja

Sinteza dekodirnika izvisokonivojskega opisa(VHDL, Verilog, ...) na

nivo logičnih vrat – RTL nivo

16

Načrtovanje strojnega dela sistema

Primer sinteze dekodirnika MPEG-4 s programskim paketom SynplifyPro

Analiza maksimalnihzakasnitev na nivoju

logičnih vrat

Page 9: predavanje za podiplomce 2008 · 3 5 Huffmanovo kodiranje/dekodiranje (VLD) Črka Verjetnost Koda K 0.05 10101 l 0.2 01 u 0.1 100 w 0.05 10100 e 0.3 11 r 0.2 00

9

17

Načrtovanje strojnega dela sistema

Vhodni RTL opis dekodirnika MPEG-4

(dekodirnik sintetiziran s paketom Synplify)

Prevajanje, mapiranje in povezovanje

z osnovnimi gradniki FPGA vezja

Programiranje FPGA vezja preko

JTAG protokola

Pregled porazdelitvedekodirnika znotraj FPGA

vezja

18

Načrtovanje strojnega dela sistema

Vpogled v porazdelitev dekodirnika MPEG-4 znotraj FPGA vezja

Osrednji-programski del dekodirnika MPEG-4

(RISC procesor)

Vezje strojnega koprocesorja

Hufmannovegadekodiranja

Page 10: predavanje za podiplomce 2008 · 3 5 Huffmanovo kodiranje/dekodiranje (VLD) Črka Verjetnost Koda K 0.05 10101 l 0.2 01 u 0.1 100 w 0.05 10100 e 0.3 11 r 0.2 00

10

19

Načrtovanje strojnega dela sistema

Vpogled v porazdelitev dekodirnika MPEG-4 znotraj FPGA vezja

Podroben vpogled v

poljuben gradnik FPGA vezja

20

Načrtovanje strojnega dela sistema

Časovna/funkcijska simulacija sistema dekodirnika s programskim paketom ModelSim SE

Page 11: predavanje za podiplomce 2008 · 3 5 Huffmanovo kodiranje/dekodiranje (VLD) Črka Verjetnost Koda K 0.05 10101 l 0.2 01 u 0.1 100 w 0.05 10100 e 0.3 11 r 0.2 00

11

21

Načrtovanje strojnega dela sistema

• Orodje ChipScope Pro razvijalcu omogoča dostop do poljubnega signala znotraj FPGA vezja

• Uporablja se za časovno spremljanje razmer v vezju

• Deluje po sistemu vzorčenja internih signalov FPGA-ja z internim/externimurinim signalom

• Ima vse osnovne značilnosti logičnih analizatorjev

Target Connection

IO Pads

IO P

ads

IO P

ads

IO Pads

Boundary Scan TAP Controller

Embedded System Bus

MemoryArray

PPC405Core

IPCore

CustomCore

ICON

ILA

ILA

ILA

IBACustomLogic

ILA

Prikaz verifikacije FPGA vezja v realnem času s programskim paketom ChipScope Pro proizvajalca Xilinx

22

Razvoj programskega dela sistema

Zagon razhroščevalnika

Prikaz orodja EDK za razvoj programske kode na vgrajenih mikroprocesorjih proizvajalca Xilinx

Zagon arhitekturnegasimulatorja

mikroprocesorja

Zagon prevajalnika,zbirnika, povezovalnika, ...

Page 12: predavanje za podiplomce 2008 · 3 5 Huffmanovo kodiranje/dekodiranje (VLD) Črka Verjetnost Koda K 0.05 10101 l 0.2 01 u 0.1 100 w 0.05 10100 e 0.3 11 r 0.2 00

12

23

Rezultati

• 40% izkoristek FPGA vezja Virtex 1600E• Maksimalna frekvenca delovanja 66 MHz

N um ber of: R ISC 1200 ID C T V LDS LIC E s 22% 8% 10%

B lockR A M s 12% 0 0IO B s 90% 20% 6%

G C LK s 75% 75% 25%G C LK IO B s 90% 25% 25%

Rezultati implementacije dekodirnika MPEG-4 decoder

• Uporabljena ločena programska orodja za sintezo strojnega dela (Synplicity SynplifyPro za sintezo in Xilinx ISE Foundation software za končno FPGA implementacijo) in razvoj programskega dela dekodirnika (GNU GCC prevajalnik, povezovalnik, …)

• Celoten sistem smo opisali le v enem programskem jeziku (Verilog)

24

Koristne povezave

Brezplačen program za opis, sintezo in celovito implementacijo FPGAsistema proizvajalca XILINX - ISE WebPACK:http://www.xilinx.com/products/design_resources/design_tool/

Brezplačen program za funkcionalno in časovno simulacijo FPGA sistemaproizvajalca Mentor Graphics – ModelSim SE:http://www.model.com/products/60/downloads.asp

Gradivo o postopkih načrtovanja, opisa sistema, simulacije inimplementacije FPGA sistemov, na straneh LNIV:http://lniv.fe.uni-lj.si/education.html