paper dsp machine menggunakan systemc · 1 pendahuluan pada saat paper ini ... tujuan dari desain...

21
TRANSFORMASI WAVELET DAUBECHIES DENGAN MENGGUNAKAN SYSTEMC AWAL DARI DSP ENGINE Akhmad Mulyanto 23203097 Abstrak. Desain VLSI DSP dalam VHDL mempunyai kendala nilai floating point yang tidak friendly, mengakibatkan proses debug sulit dan lama. SystemC menawarkan solusi atas masalah ini dan juga mempunyai kemampuan untuk melakukan test numeric dalam usaha memenuhi suatu standard. Desain sistem pada level RTL dengan SystemC juga menghasilkan “VHDL RTL design look like”, sehingga desain dalam System dan desain dalam VHDL mudah saling dikonversikan. Transformasi Wavelet menawarkan kinerja yang tinggi dalam kompresi baik dalam ratio kompresi maupun dalam kecepatan kompresinya. 1 Pendahuluan Pada saat paper ini dibuat, DSP Engine dengan kemampuan Wavelet Transform, DCT Transform, Motion Estimator, dan Image Processing belum menjadi tujuan utama dari desain. Tujuan dari desain adalah membuat platform DSP engine dengan salah satu fungsinya adalah Wavelet Transform. Fungsi-fungsi dan algoritma-algoritma lainnya dapat ditambahkan dan dikembangkan dikemudian hari. Fitur dari fungsi Wavelet Transform pun masih terbatas pada satu dimensi panjang filter sama dengan 4 (Daubechies 4). Idealnya suatu Wavelet Transform pada DSP Engine mempunyai parameter dimensi dan panjang filter yang proggrammable. 2 Kecepatan Transformasi Wavelet Daubechies Empat Wavelet transform menawarkan kecepatan komputasi yang menarik. Untuk mentransformasikan n data, hanya diperlukan n akses ke n alamat memory. Selama proses pembacaan data, secara simultan data yang telah dibaca ditransformasikan. Sehingga hanya dibutuhkan n + m latency clock untuk menyelesaikan proses transformasi. Perhitungan komputasi lebih lanjut untuk melaksanakan suatu wavelet transform untuk suatu filter dengan panjang L dan suatu sinyal dengan panjang N=2k adalah sebagai berikut: Pada tingkat pertama, seluruh N data dilewatkan pada filter bank pertama. Pada tingkat kedua, separuh N data hasil filter bank pertama dilewatkan pada filter bank kedua. Pada tingkat berikutnya, seperempat N data hasil filter bank kedua dilewatkan pada filter bank berikutnya.

Upload: trandiep

Post on 03-Apr-2019

213 views

Category:

Documents


0 download

TRANSCRIPT

TRANSFORMASI WAVELET DAUBECHIES

DENGAN MENGGUNAKAN SYSTEMC AWAL DARI DSP ENGINE

Akhmad Mulyanto

23203097

Abstrak. Desain VLSI DSP dalam VHDL mempunyai kendala nilai floating point yang tidak friendly, mengakibatkan proses debug sulit dan lama. SystemC menawarkan solusi atas masalah ini dan juga mempunyai kemampuan untuk melakukan test numeric dalam usaha memenuhi suatu standard. Desain sistem pada level RTL dengan SystemC juga menghasilkan “VHDL RTL design look like”, sehingga desain dalam System dan desain dalam VHDL mudah saling dikonversikan. Transformasi Wavelet menawarkan kinerja yang tinggi dalam kompresi baik dalam ratio kompresi maupun dalam kecepatan kompresinya.

1 Pendahuluan

Pada saat paper ini dibuat, DSP Engine dengan kemampuan Wavelet Transform, DCT Transform, Motion Estimator, dan Image Processing belum menjadi tujuan utama dari desain. Tujuan dari desain adalah membuat platform DSP engine dengan salah satu fungsinya adalah Wavelet Transform. Fungsi-fungsi dan algoritma-algoritma lainnya dapat ditambahkan dan dikembangkan dikemudian hari. Fitur dari fungsi Wavelet Transform pun masih terbatas pada satu dimensi panjang filter sama dengan 4 (Daubechies 4). Idealnya suatu Wavelet Transform pada DSP Engine mempunyai parameter dimensi dan panjang filter yang proggrammable. 2 Kecepatan Transformasi Wavelet Daubechies Empat Wavelet transform menawarkan kecepatan komputasi yang menarik. Untuk mentransformasikan n data, hanya diperlukan n akses ke n alamat memory. Selama proses pembacaan data, secara simultan data yang telah dibaca ditransformasikan. Sehingga hanya dibutuhkan n + m latency clock untuk menyelesaikan proses transformasi. Perhitungan komputasi lebih lanjut untuk melaksanakan suatu wavelet transform untuk suatu filter dengan panjang L dan suatu sinyal dengan panjang N=2k adalah sebagai berikut:

Pada tingkat pertama, seluruh N data dilewatkan pada filter bank pertama. Pada tingkat kedua, separuh N data hasil filter bank pertama dilewatkan pada

filter bank kedua. Pada tingkat berikutnya, seperempat N data hasil filter bank kedua dilewatkan

pada filter bank berikutnya.

)1...21

21()...

22(cos

2log NNL

NNNNLt Npasslow

Kalkulasi untuk filter high pass adalah sama, sehingga :

LNNLNL

NLNL

NLt

ttt

k

k

k

M

k

m

k

passhighpasslow

22112

211

211

121

121

21

)2

1...21

211(cos

coscoscos

1

0

1

Untuk L = 4 dan N = 8 dapat diharapkan selesai kurang dari 64 clock. Untuk L = 4 dan N = 64 dapat diharapkan selesai kurang dari 512 clock Yang menarik adalah dengan membuat masing-masing filter bank terpisah dan suatu arsitektur yang effisien maka 8 x 8 data bahkan bisa diselesaikan dalam 64 clock + n clock seperti pada gambar 1 berikut :

STA MULTACC FILTER BANK 1

STA MULTACCFILTER BANK 2

STO

STO

STA MULTACCFILTER BANK 3 STO

STA MULTACC FILTER BANK 1

STA MULTACCFILTER BANK 2

STO

STO

STAMULTACC

FILTER BANK 3STO

8 CLOCK 4 CLOCK 4 CLOCK

Gambar 1. Diagram Timing Untuk Hardware Control Daubechies 4 Implementasi yang sudah dilakukan adalah seperti pada gambar 2. Dengan L = 4 dan N = 64, menghasilkan 8 data hasil pertama pada clock ke 42 dan 8 data hasil terakhir pada clock 120. Dapat disimpulkan nilai latency clock adalah 32. Memory data diakses dalam 8 clock pada 8 clock terakhir fasa EXECUTE, membuat memory available selama 3 clock berturut-turut pada fasa FETCH, DECODE dan EXECUTE clock pertama. Sehingga pada saat itu memory dapat digunakan untuk proses lain dengan suatu sistem perwasitan bus. Misalkan arsitektur didesain untuk dapat meload 64 data secara berurutan dalam 64 clock maka dapat diperkirakan waktu komputasi 64 data adalah 3 + 64 + 32 = 99 clock jauh lebih cepat dari DCT transform untuk 64 bit yang diperkirakan mempunyai

waktu komputasi tercepat 3 + 64 + 64 = 131 clock. Apalagi bila setiap filter bank pada transformasi wavelet daubechies menggunakan parallel multiplier, maka waktu komputasinya (estimasi) menjadi 3 + 64 + 15 = 82 clock!.

FEC

STA MULTACC FILTER BANK 1

STAMULTACC

FILTER BANK 2 STO

STO

STAMULTACC

FILTER BANK 3STO

DEC EXE

STA MULTACC FILTER BANK 1

STA MULTACCFILTER BANK 2

STO

STO

STAMULTACC

FILTER BANK 3STO

FEC DEC EXE

9 CLOCK 4 CLOCK 4 CLOCK

Gambar 2. Diagram Timing Untuk Software Control Daubechies 4 3. Transformasi Wavelet Daubechies Empat Transformasi wavelet Daubechies Empat menggunakan FIR empat tap dengan koefisien ternormalisasi :

22551260-0.12940952431]3[

80420130.224143862433]2[

37378080.836516302433]1[

31445340.482962912431]0[

c

c

c

c

sebagai low pass filter (LPF) dan FIR empat tap dengan koefisien ternormalisasi:

31445340.482962912431]0[]3[

37378080.836516302433]1[]2[

80420130.224143862433]2[]1[

22551260-0.12940952431]3[]0[

cd

cd

cd

cd

sebagai suatu high pass filter (HPF) untuk menguraikan sinyal. Kombinasi LPF dan HPF inilah yang disebut filter bank. Komputasi dalam filter bank pertama untuk input data f0 ={ f(0),f(1),f(2), f(3),f(4),f(5),f(6),f(7)}=(2,5,8,9,7,4,-1,1) adalah:

)7()3()6()2()5()1()4()0()5()3()4()2()3()1()2()0()3()3()2()2()1()1()0()0()1()3()0()2()7()1()6()0(

)7()3()6()2()5()1()4()0()5()3()4()2()3()1()2()0()3()3()2()2()1()1()0()0()1()3()0()2()7()1()6()0(

1

fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd

fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc

f

= (0.155, 5.78, 12.4, 6.37, -0.837, 0.966, 0.871, -3.12) Output f1 selanjutnya menjadi input filter bank kedua. Komputasi dalam filter bank kedua untuk input data f1 ={ f1(0),f1(1),f1(2), f1(3),f1(4),f1(5),f1(6),f1(7)}= (0.155, 5.78, 12.4, 6.37, -0.837, 0.966, 0.871, -3.12) adalah:

)7()6()5()4(

)3()3()2()2()1()1()0()0()1()3()0()2()3()1()2()0(

)3()3()2()2()1()1()0()0()1()3()0()2()3()1()2()0(

1

1

1

1

111

1111

1111

1111

2

ffff

fdfdfdfdfdfdfdfd

fcfcfcfcfcfcfcfc

f

= (10.6, 6.87, -5.7, 6.02, -0.837, 0.966, 0.871, -3.12) Output f2 selanjutnya menjadi input filter bank ketiga. Komputasi dalam filter bank ketiga untuk input data f2 ={ f1(0),f1(1),f1(2), f1(3),f1(4),f1(5),f1(6),f1(7)}= (10.6, 6.87, -5.7, 6.02, -0.837, 0.966, 0.871, -3.12) adalah:

)7()6()5()4()3()2(

)3()3()2()2()1()1()0()0()1()3()0()2()1()1()0()0(

2

2

2

2

2

2

2222

2222

3

ffffff

fdfdfdfdfcfcfcfc

f

= (12.4, 2.66, -5.7, 6.02, -0.837, 0.966, 0.871, -3.12)

4. Implementasi Transformasi Wavelet Daubechies Empat Diagram flowchart dari filter bank pertama dari Transformasi wavelet Daubechies Empat dengan menggunakan 8 multiplier dan 8 accumulator, dapat digambarkan pada gambar 3 sebagai berikut:

STARTi=0

LOADDATA

MULTACC HPF[1] REG[1]MULTACC LPF[1] REG[1]

i=0

STOREdatatemp 0

i=1 i=2 i=3 i=4 i=5 i=6 i=7

MULTACC HPF[1] REG[1]MULTACC LPF[1] REG[1]

MULTACC HPF[1] REG[1]MULTACC LPF[1] REG[1]MULTACC HPF[2] REG[2]MULTACC LPF[2] REG[2]

MULTACC HPF[1] REG[1]MULTACC LPF[1] REG[1]MULTACC HPF[2] REG[2]MULTACC LPF[2] REG[2]

MULTACC HPF[2] REG[2]MULTACC LPF[2] REG[2]MULTACC HPF[3] REG[3]MULTACC LPF[3] REG[3]

MULTACC HPF[2] REG[2]MULTACC LPF[2] REG[2]MULTACC HPF[3] REG[3]MULTACC LPF[3] REG[3]

MULTACC HPF[3] REG[3]MULTACC LPF[3] REG[3]MULTACC HPF[0] REG[0]MULTACC LPF[0] REG[0]

MULTACC HPF[3] REG[3]MULTACC LPF[3] REG[3]MULTACC HPF[0] REG[0]MULTACC LPF[0] REG[0]

STOREdatatemp 1

MULTACC HPF[0] REG[0]MULTACC LPF[0] REG[0]

MULTACC HPF[0] REG[0]MULTACC LPF[0] REG[0]

i=8 i=9

i=9?

i++

STOP

Gambar 3. Filter Bank Pertama Dengan Sebuah Proses Tunggal Diperlukan minimal 10 clock untuk menyelesaikan proses komputasi. Ditambah dengan 2 clock sinkronisasi maka dibutuhkan 12 clock. Hal ini tentu saja tidak memenuhi spesifikasi desain pada gambar 2. Untuk itu dibuat perubahan seperti pada gambar 4. Pada gambar 4, filter bank dibagi dalam dua proses sekuensial. Proses pertama memerlukan 8 clock untuk menyelesaikan prosesnya. Setelah proses pertama selesai, kerja filter bank dilanjutkan oleh proses kedua. Sementara proses pertama kembali pada posisi tunggu siap untuk melakukan filter pada 8 data berikutnya. Harga yang harus dibayar adalah penambahan sebuah state machine, empat multiplier dan sebuah accumulator.

START

i=0

MULTACC HPF[1] REG[1]MULTACC LPF[1] REG[1]

i=1

STOREdatatemp 0

i=2 i=3 i=4 i=5 i=6

MULTACC HPF[1] REG[1]MULTACC LPF[1] REG[1]

MULTACC HPF[1] REG[1]MULTACC LPF[1] REG[1]MULTACC HPF[2] REG[2]MULTACC LPF[2] REG[2]

MULTACC HPF[1] REG[1]MULTACC LPF[1] REG[1]MULTACC HPF[2] REG[2]MULTACC LPF[2] REG[2]

MULTACC HPF[2] REG[2]MULTACC LPF[2] REG[2]MULTACC HPF[3] REG[3]MULTACC LPF[3] REG[3]

MULTACC HPF[2] REG[2]MULTACC LPF[2] REG[2]MULTACC HPF[3] REG[3]MULTACC LPF[3] REG[3]

STOREdatatemp 1

i=7?

STOP

i=7

j=1

MULTACC HPF[3] REG[3]MULTACC LPF[3] REG[3]MULTACC HPF[0] REG[0]MULTACC LPF[0] REG[0]

MULTACC HPF[3] REG[4]MULTACC LPF[3] REG[4]MULTACC HPF[0] REG[5]MULTACC LPF[0] REG[5]

MULTACC HPF[0] REG[0]MULTACC LPF[0] REG[0]

MULTACC HPF[0] REG[0]MULTACC LPF[0] REG[0]

j=2 j=3

j++

i=3?

i++LOAD DATA

Gambar 4. Filter Bank Pertama Dengan Sebuah Dua Proses Sekuensial

Diagram flowchart dari filter bank kedua dari Transformasi wavelet Daubechies Empat dengan menggunakan 4 multiplier dan 4 accumulator, dapat digambarkan pada gambar 5 sebagai berikut:

STARTi=0

i++LOAD DATA

MULTACC HPF[1] REG[1]MULTACC LPF[1] REG[1]

i=1

STOREdatatemp 0

i=2 i=3 i=4 i=5 i=6

MULTACC HPF[1] REG[1]MULTACC LPF[1] REG[1]

MULTACC HPF[1] REG[1]MULTACC LPF[1] REG[1]MULTACC HPF[0] REG[0]MULTACC LPF[0] REG[0]

MULTACC HPF[1] REG[1]MULTACC LPF[1] REG[1]MULTACC HPF[0] REG[0]MULTACC LPF[0] REG[0]

MULTACC HPF[0] REG[0]MULTACC LPF[0] REG[0]

MULTACC HPF[0] REG[0]MULTACC LPF[0] REG[0]

STOREdatatemp 1

i=6?

i++

STOP

Gambar 5. Filter Bank Kedua Dengan Sebuah Proses Sekuensial Sesuai dengan gambar 2, maka fungsi filter bank kedua dan fungsi filter bank ketiga dapat dilaksanakan oleh filter bank yang sama. Hasilnya adalah arsitektur yang lebih effisien.

Diagram flowchart dari filter bank ketiga dari Transformasi wavelet Daubechies Empat dengan menggunakan 2 multiplier dan 2 accumulator, dapat digambarkan pada gambar 6 sebagai berikut:

STARTi=0

i++LOAD DATA

MULTACC HPF[0] REG[0]MULTACC LPF[0] REG[0]

i=1

STOREdatatemp 0

i=2 i=3 i=4

MULTACC HPF[0] REG[0]MULTACC LPF[0] REG[0]

MULTACC HPF[0] REG[0]MULTACC LPF[0] REG[0]

MULTACC HPF[0] REG[0]MULTACC LPF[0] REG[0]

STOREdatatemp 1

i=4? STOP

Gambar 6. Filter Bank Ketiga Dengan Sebuah Proses Sekuensial

5. Arsitektur DSP Engine Dengan Fitur Transformasi Wavelet Daubechies Empat Walau tujuan utama dari desain adalah hanya membuat transformasi wavelet Daubechies empat, terdapat banyak aspek yang memaksa pembuatan platform DSP Engine terlebih dahulu. Aspek-aspek tersebut adalah:

1. Performance, berkaitan dengan jumlah cycle/clock. 2. I/O interface, berkaitan dengan bagaimana data input dibaca dan data output

ditulis. 3. Sinkronisasi sistem, berkaitan dengan timing kerja.

Sehingga dirancanglah platform DSP Engine. DSP Engine mempunyai arsitektur microprocessor dengan software code-nya berfungsi untuk mengatur kerja dari DSP Engine keseluruhan. Instruction untuk melaksanakan wavelet 64 data pada memory data yang dimulai dengan address 0 didefinisikan sebagai berikut: prog[1] = 0x05080001; /* WAVEA */ prog[2] = 0x05080002; /* WAVEB */ prog[3] = 0x05080001; /* WAVEA */ prog[4] = 0x05080002; /* WAVEB */ prog[5] = 0x05080001; /* WAVEA */ prog[6] = 0x05080002; /* WAVEB */ prog[7] = 0x05080001; /* WAVEA */ prog[8] = 0x05080002; /* WAVEB */

OPCODE NUM DATA ADDRESS REGISTER NAMA NILAI BIT NAMA BIT NAMA BIT BIT WAVE 5 16 - 8 - 12 ACCA,

ACCB 4

Instruction 0x05080001 menyatakan “Lakukan wavelet transform dari 8 data dimulai pada memory dengan offset alamat = 0 dan simpan data dari memory pada register A”. Instruction 0x05080002 menyatakan “Lakukan wavelet transform dari 8 data dimulai pada memory dengan offset alamat = 0 dan simpan data dari memory pada register B”. Dua perintah WAVE yang berurutan tidak bisa menyimpan hasilnya pada register yang sama, karena setelah suatu register menyimpan data yang diload dari memory, register itu dipergunakan sebagai source data untuk filter bank 1. Arsitektur DSP Engine dengan fitur Wavelet Transform diperlihatkan pada gambar 7. Arsitektur ini bisa dikembangkan menjadi arsitektur DSP Engine dengan fitur Wavelet Transform, DCT Transform, dan Motion Estimator seperti pada gambar 8.

PC

CONTROL

REG A

REG B

AGU

MUX

FILTER BANK 1

MEMBUFFER

SRAM 2

4

5

1

2

6

8

9

SRAM1REG

CHAINB

ROMINSTRUCTION

3

10

11

12

13

14

1516

18 19

20

21

22

25

23 24

27 28

31 32

26

30

29

33

DECODER

ALU

FILTER BANK 2

FILTER BANK 3

MEMBUFFER

7

Gambar 7. Arsitektur DSP Engine dengan fitur Wavelet Transform

PC

CONTROL

REG A

REG B

AGU

4

5

1

2

6

8

9

SRAM1REG

CHAINB

ROMINSTRUCTION

3

10

11

12

13

14

18 19

20

21

DECODER

ALU

7

WAVELETCORE

DCTCORE

MECORE

SRAM 2 SRAM 3 SRAM 4

Gambar 8. Arsitektur DSP Engine dengan fitur Wavelet Transform, DCT Transform, dan

Motion Estimator

Arsitektur Fast Wavelet Core Desain Fast Wavelet Core dicapai dengan pembagian state machine dan timing. State machine dan timing dari Filter Bank Pertama :

0 1 2 3 4 5 6

0 1 2 3

0 1 2 3 4 5 6

2 3 4 5

0 1 2 3 4 5 6

4 5 6 7

0 1 2 3 4 5 6

0 1 6 7

STO

STO

STO

STO

CLRWAIT

CLRWAIT

CLRWAIT

CLRWAIT

0 1 2 3 4 5 6 7

0 1 2 3 4 5 6

0 1 2 3

0 1 2 3 4 5 6

2 3 4 5

0 1 2 3 4 5 6

4 5 6 7

0 1 2 3 4 5 6

0 1 6 7

STO

STO

STO

STO

CLRWAIT

CLRWAIT

CLRWAIT

CLRWAIT

0 1 2 3 4 5 6 7ADDRESS

FSM 0

PROSES

FSM 1

PROSES

FSM 2

PROSES

FSM 3

PROSES

Gambar 9. Diagram Timing Untuk Filter Bank Pertama

0 1 2 3 4 5 6

0 1 2 3

0 1 2 3 4 5 6

2 3 4 5

STO

STO

CLRWAIT

CLRWAIT

0 1 2 3 4 5 6 7

0 1 2 3 4 5 6

0 1 2 3

0 1 2 3 4 5 6

2 3 4 5

STO

STO

CLRWAIT

CLRWAIT

0 1 2 3 4 5 6 7ADDRESS

FSM 0

PROSES

FSM 1

PROSES

Gambar 10. Diagram Timing Untuk Filter Bank Kedua

0 1 2 3 4 5 6

0 1 2 3 STOCLRWAIT

0 1 2 3 4 5 6 7

0 1 2 3 4 5 6

0 1 2 3 STOCLRWAIT

0 1 2 3 4 5 6 7ADDRESS

FSM 0

PROSES

Gambar 11. Diagram Timing Untuk Filter Bank Ketiga

Dari gambar 9-11 nampak bahwa arsitektur tiap Filter Bank dapat memfilter data 8 bit yang data berurutan.

FILTER BANK 1

MEMBUFFER

FILTER BANK 2

FILTER BANK 3

MEMBUFFER

MEMORYOUTPUTBUFFER

start a

start b

start c

valid

data

data a

data b

data c

ADDRESSGENERATOR

address

data result

address a

address b

FILEDATA

TESTBENCHSTIMULUS

DISPLAY

address

WAVELETCORE

FILE

Gambar 12. Arsitektur Wavelet Core dan Test Bench

01

23

45

6

01

23

01

23

45

6

23

45

01

23

45

6

45

67

01

23

45

6

01

67

STO

STO

STO

STO

CLR

WA

IT

CLR

WA

IT

CLR

WA

IT

CLR

WA

IT

01

23

45

67

01

23

45

6

01

23

01

23

45

6

23

45

01

23

45

6

45

67

01

23

45

6

01

67

STO

STO

STO

STO

CLR

WA

IT

CLR

WA

IT

CLR

WA

IT

CLR

WA

IT

89

1011

1213

1415

CLO

CK

FSM

0a

PR

OS

ES

FSM

1a

PR

OS

ES

FSM

2a

PR

OS

ES

FSM

3a

PR

OS

ES

01

23

45

6

01

23

01

23

45

6

23

45

01

23

45

6

01

67

STO

STO

STO

CLR

WA

IT

CLR

WA

IT

CLR

WA

IT

01

23

45

6

01

23

01

23

45

6

23

45

01

23

45

6

01

67

STO

STO

STO

CLR

WA

IT

CLR

WA

IT

CLR

WA

IT

FSM

0b

PR

OS

ES

FSM

1b

PR

OS

ES

FSM

c

PR

OS

ES

1617

1819

2021

2223

2425

2627

2829

3031

3233

3435

36

Gambar 13. Timing Diagram Wavelet Core

0405

0607

0809

1011

1213

1415

1617

1819

2021

2223

2425

2627

2829

3031

3233

3435

3637

3839

4041

4243

FD

DEC1

DE

C2

FD

EXE

CU

TEEX

EC

UTE

FD

EXE

CU

TE

STOA

STOBS

TOC

0W

AIT

NC

2C

LR3

45

6

MU

X1

MU

X2

ST1

EN

ABLE

SH

IFT

DA

TA SH

IFTED

EN

ABLE

SHIFT

DATA S

HIFTED

ENA

BLE S

HIFT

DA

TA SH

IFTED

REG

ISTER A

VALID

TO R

EAD

RE

GIS

TER

B VA

LID TO

REA

D

0W

AITN

C2

CLR

34

56

0W

AITN

C2

CLR

34

56

0W

AIT1

CLR

23

45

0W

AITN

C2

CLR

34

56

0W

AIT1

CLR

23

45

0W

AIT1

CLR

23

45

6S

TO

7STO

7STO

7STO 7STO

6STO

6STO

A0A1

A2A3

A4

A5

A6

A7

D0

D1

D2

D3

D4

D5

D6

D7

TIME

ITRDEC

OD

ER

SH

IFT CTR

L

RE

GIS

TER

AS

TATU

SR

EG

ISTE

R B

STA

TUS

DE

CO

DE

RFILTE

R R

UN

MU

X FILTE

R R

UN

FILTER

RU

N

FILTER S

TATU

S

RE

GIS

TER

AD

DR

ES

S

RE

GIS

TER

DATA

FSM

0a

FSM

1a

FSM

2a

FSM

3a

FSM

0b

FSM

1b

FSM

c

Gambar 14. Timing Diagram Wavelet Core Dalam DSP Engine

9. Hierarki Desain Dan Timing Dalam SystemC Emulasi hardware dari systemc memerlukan perhatian dalam timing desain. Signal dalam VHDL bisa di-read dan di-write secara simultan. Dalam systemc, akses read dan write pada sc_signal dilakukan secara bergantian dengan akses read dilaksanakan terlebih dahulu.

DFFE DFFEIN OUT A OUT B

CLOCK

ENABLE

Gambar 15. Rangkaian Register

Gambar 16. Simulasi Rangkaian Register Dalam SystemC Percobaan desain dalam SystemC untuk rangkaian register pada gambar 9 dengan code: ….… sc_signal<int> sample; sc_signal<int> Aresult; sc_signal<int> Bresult; ….… dffes dffa1 ( "registerA" ); dffa1.clk(clock1); dffa1.ena(ena); dffa1.clr(reset); dffa1.din(sample); dffa1.dout(Aresult); dffes dffa2 ( "registerB" ); dffa2.clk(clock1); dffa2.ena(ena);

dffa2.clr(reset); dffa2.din(Aresult); dffa2.dout(Bresult); ….… Dan tiap modul dffes mempunyai code : ………. sc_signal<int> qwire; void do_ffes() { if (clr) { qwire = 0; } else if (clk.event()) { if (ena.read()==true) { qwire = din.read(); } else { qwire = qwire; } dout.write(qwire); } }; ………. Maka terdapat empat signal (sc_signal) bertautan yang harus dilalui data dari port input DFFE pertama hingga port output DFFE kedua, mengakibatkan latency clock = 4. Pada VHDL, latency yang terjadi untuk rangkaian pada gambar 9 adalah sama dengan 2.

Signalqwire

SignalAresult

Signalqwire

SignalBresult

Gambar 17. Rantai Signal Latency akibat rantai signal pada gambar 11 dapat dihilangkan dengan menggantikan sc_signal<int> qwire dengan int qwire. Hasil simulasinya adalah seperti pada gambar 12.

Gambar 18. Simulasi Rangkaian Register Dengan Reduksi Rantai Signal Penggunaan variable sebagai pengganti sc_signal memberikan konsekuensi modul harus mempunyai initial value bagi variable. Konsekuensi dari penggunaan variable dalam VHDL adalah desain tidak lagi generik dan tidak reliable. Ketidakreliable-an modul juga terjadi dalam SystemC seperti diperlihatkan pada gambar 12. Solusi dari masalah ini adalah menggunakan sc_buffer untuk menggantikan sc_signal. Signal sc_buffer mirip dengan signal dalam VHDL, konsekuensi dari penggunaan sc_buffer adalah waktu kompilasi yang jauh lebih lama (terutama jika menggunakan Cygwin).

Gambar 19. Simulasi Rangkaian Register Dengan Reduksi Rantai Signal Dan Driving Port Enable

Gambar 20. Latency akibat penggunaan sc_signal. Latency juga disebabkan oleh hirarki desain, walaupun sc_signal telah digantikan dengan dengan sc_buffer. Pada gambar 14. Timing Diagram Wavelet Core Dalam DSP Engine, terlihat latency akibat hirarki desain. Address register dihasilkan oleh komponen control_filter_a dalam modul wavecore baru menghasilkan data yang siap pada dua clock berikutnya.

9. Verifikasi Dan Co-Simulation Dalam SystemC