RESUME "BAB 12" PROSESOR SINYAL DIGITAL SECARA UMUM & SPECIAL-PURPOSE
PROSESOR SINYAL DIGITAL SECARA UMUM & SPECIAL-PURPOSE
Untuk
Kenyamanan, prosesor DSP dapat dibagi menjadi dua kategori umum dan tujuan
khusus. Prosesor DSP termasuk perangkat fixed-point seperti Texas instrument
TMS320C54x, dan prosesor Motorola DSP563x, dan prosesor floating-point seperti
Texas Instrument TMS320C4x dan Analog Devices ADSP21xxx SHARC processor.
Ada dua jenis perangkat keras tujuan khusus.
Ada dua jenis perangkat keras tujuan khusus.
(1) Hardware
dirancang untuk pelaksanaan yang efisien dari algoritma DSP spesifik seperti
filter digital, transformasi Fourier cepat. Jenis perangkat keras tujuan khusus
ini kadang-kadang disebut prosesor sinyal digital algoritma-spesifik.
(2) Perangkat keras yang dirancang untuk aplikasi
tertentu, misalnya telekomunikasi, audio digital, atau aplikasi kontrol. Jenis
perangkat keras ini kadang-kadang disebut prosesor sinyal digital khusus
aplikasi.
Menghitung arsitektur untuk pemrosesan sinyal
Kebanyakan prosesor tujuan umum yang tersedia saat ini didasarkan pada
konsep von Neurmann, di mana operasi dilakukan secara berurutan. Gambar 12.1
menunjukkan fase instruksi tunggu kontrol isyarat diteruskan kepada mereka.
Peningkatan kecepatan prosesor
Dicapai
dengan membuat unit individu beroperasi lebih cepat, tetapi ada batasan pada
seberapa cepat
mereka dapat dioperasikan untuk beroperasi.
Mengapa arsitektur semacam itu diperlukan? Sebagian besar algoritma DSP
(seperti penyaringan Korelasi dan transformasi Fourier cepat) melibatkan
operasi aritmatika berulang seperti penggandaan, penambahan, akses memori, dan
aliran data berat melalui cpu. Arsitektur mikroprosesor standar tidak cocok
untuk jenis aktivitas ini. tujuan penting untuk operasi DSP. Dalam prosesor
sinyal digital ini dicapai dengan membuat ekstensif menggunakan konsep
paralelisme. Secara khusus, teknik berikut digunakan:
• Arsitektur Harvard;
• Pipelining
• Pengganda / akumulator perangkat keras khusus yang berdedikasi tinggi;
• Replikasi;
• Memori on-chip / cache;
• Perpanjangan paralelisme - SIMD, VLIW dan pemrosesan superskalar
statis.
Untuk desain DSP yang sukses, penting untuk memahami fitur arsitektur
utama ini
Arsitektur Harvard
Fitur utama dari arsitektur Harvard adalah bahwa program dan memori data
terletak di dua ruang terpisah, memungkinkan tumpang tindih penuh dari
pengambilan instruksi dan eksekusi. Mikroprosesor standar, seperti Intel 6502,
dicirikan oleh struktur bus tunggal untuk data dan instruksi, seperti yang
ditunjukkan pada gambar 12.1,Misalkan dalam mikroprosesor standar kita ingin membaca nilai op1 pada alamat ADR3. Instruksi bisa
LDA ADR1 Memuat operand op1 ke akumulator dari ADR1
STA ADR2 store op1 di alamat ADR2
STA ADR3 menyimpan op1 di alamat ADR3
Biasanya, masing-masing instruksi ini akan
melibatkan langkah-langkah yang berbeda:
- Pengambilan instruksi;
- Dekode instruksi;
- Instruksi dijalankan;
Pipelining
Pipelining adalah
teknik yang memungkinkan dua atau lebih operasi untuk tumpang tindih selama
eksekusi. Dalam pipelining, tugas dibagi menjadi beberapa subtugas yang berbeda
yang kemudian tumpang
tindih selama. itu digunakan secara luas dalam prosesor sinyal digital untuk
meningkatkan kecepatan. Saluran pipa mirip dengan produksi khas di pabrik,
seperti pabrik perakitan mobil atau televisi. Seperti dalam jalur produksi,
tugas dipecah menjadi subtugas independen kecil yang disebut tahapan pipa.
Tahapan pipa dihubungkan secara seri untuk membentuk pipa dan tahap-tahap yang
dieksekusi secara berurutan.
Dengan mengeksploitasi paralelisme yang melekat dalam aliran instruksi,
pipelining mengarah ke pengurangan yang signifikan, rata-rata, dari waktu
eksekusi per instruksi. Throughput dari mesin pipa ditentukan oleh banyaknya
instruksi melalui pipa per satuan waktu. Seperti dalam jalur produksi, semua
tahapan dalam pipa harus disinkronkan. Waktu untuk memindahkan instruksi dari
satu langkah ke langkah lain dalam pipa (lihat Gambar 12.6 (a)) adalah satu
siklus dan bergantung pada tahap paling lambat dalam pipa. Dalam pipa yang
sempurna, waktu rata-rata per instalasi diberikan oleh (Hennessy dan Patterson,
1990)
Dalam kasus yang ideal, peningkatan kecepatan sama dengan jumlah tahapan pipa. Dalam prakteknya, peningkatan kecepatan akan lebih sedikit karena biaya overhead dalam pengaturan saluran pipa, dan penundaan dalam daftar saluran pipa dan sebagainya.Dalam mesin nonpipeline, instruksi ambil, decode dan eksekusi masing-masing mengambil 35ns, 25ns, dan 40ns. Tentukan peningkatan troughput jika langkah-langkah instruksi pipelined. Asumsikan overhead pipa 5ns pada setiap tahap, dan abaikan penundaan lainnya.
Dalam mesin nonpipeline, rata-rata waktu instruksi hanyalah jumlah waktu eksekusi semua langkah: 35 + 25 + 40 ns = 100 ns. Namun, jika kita mengasumsikan bahwa prosesor memiliki siklus mesin tetap dengan langkah-langkah instruksi yang disinkronkan ke jam sistem, maka setiap instruksi akan mengambil tiga siklus mesin untuk menyelesaikan: 40ns x 3 = 120 ns. Ini sesuai dengan throughput 8,3 x 106 instruksi s-1. Dalam mesin pipa, kecepatan clock ditentukan oleh kecepatan tahap paling lambat ditambah overhead. Dalam kasus kami, siklus mesin adalah 40 + 5 = 45ns. Ini menempatkan batas waktu eksekusi instruksi rata-rata. Troughput (ketika pipa penuh) adalah 22,2 x 106 instruksi s-1. Kemudian
Pengganda-akumulator perangkat
operasi numerik dasar dalam DSP adalah perkalian dan penambahan. Perkalian, dalam perangkat lunak, sangat memakan waktu. Penambahan bahkan lebih memakan waktu jika aritmatika floating point digunakan. Untuk maje real-time DSP mungkin perangkat keras khusus multiplier-accumulator (MAC) menggunakan aritmatika fixed atau floating point adalah wajib. Perangkat keras tetap atau mengambang MAC sekarang standar di semua prosesor sinyal digital. Dalam prosesor titik tetap, biasanya pengganda perangkat keras.
Prosesor sinyal digital menyediakan instruksi khusus yang dioptimalkan untuk DSP. Manfaat dari instruksi khusus ini ada dua: mereka mengarah ke kode yang lebih ringkas yang memakan lebih sedikit ruang dalam memori (hampir sekompak kode yang ditulis dalam bahasa tingkat tinggi seperti C) dan mereka mengarah pada peningkatan kecepatan pelaksanaan algoritma DSP. Instruksi khusus yang disediakan oleh DSP, chip termasuk (i) instruksi yang mendukung operasi DSP dasar, (ii) instruksi yang mengurangi overhead dalam instruksi loop dan (iii) instruksi yang berorientasi pada aplikasi.
Banyak algoritma kunci dalam DSP, seperti penyaringan digital dan korelasi, memerlukan pergeseran data atau penundaan untuk memberi ruang bagi sampel data baru. Procssors sinyal digital memberikan instruksi khusus yang memungkinkan sampel data untuk disalin ke alamat memori berikutnya yang lebih tinggi seperti yang diambil dari memori atau dioperasikan, semua dalam satu siklus. Misalnya di TM320 keluarga generasi kedua dari prosesor DSP, pasangan instruksi, LTD sebuah MPY, memungkinkan pemuatan simultan data ke register sementara untuk multiplier, data pergeseran (untuk melaksanakan unit delay dilambangkan z ^ (- 1)), dan akumulasi produk. Instruksi khusus yang mendukung operasi multiply dan accumulating (MAC) dengan data shift sekarang menjadi standar dalam prosesor DSP modern.
Pengolah sinyal digital tujuan umum
Prosesor sinyal digital tujuan umum pada dasarnya adalah mikroprosesor kecepatan tinggi, dengan arsitektur perangkat keras dan set instruksi yang dioptimalkan untuk operasi DSP. Prosesor ini menggunakan banyak paralelisme, arsitektur Harvard, pipelining dan perangkat keras khusus bila memungkinkan untuk melakukan operasi yang memakan waktu, seperti pemindahan / penskalaan, perkalian, dan sebagainya.
General-purpose DSPs telah berevolusi secara substansial selama dekade terakhir sebagai hasil dari pencarian tanpa akhir untuk menemukan cara yang lebih baik untuk melakukan operasi DSP, dalam hal efisiensi komputasi, kemudahan implementasi, biaya, konsumsi daya, ukuran dan kebutuhan spesifik aplikasi (Levy, 1998, 1999; Berkeley Design Technology, 1999). Nafsu makan yang tak terpuaskan untuk meningkatkan efisiensi komputasi telah menyebabkan pengurangan substansial dalam siklus instruksi dan, yang lebih penting, untuk meningkatkan kecanggihan dalam arsitektur perangkat keras dan perangkat lunak. Sekarang umum untuk memiliki unit-unit hardware aritmatika on-chip yang berdedikasi (misalnya untuk mendukung operasi pengganda / akumulasi yang cepat), memori on-chip yang besar dengan akses ganda dan instruksi khusus untuk pelaksanaan perhitungan core dalam DSP yang efisien. Kami juga telah melihat kecenderungan terhadap peningkatan ukuran kata data (misalnya untuk mempertahankan kualitas sinyal) dan peningkatan paralelisme (untuk meningkatkan baik jumlah instruksi yang dilaksanakan dalam satu siklus dan jumlah operasi yang dilakukan per instruksi). Dengan demikian, kami menemukan bahwa dalam prosesor DSP tujuan umum yang lebih baru, peningkatan penggunaan dibuat dari beberapa jalur data / aritmatika untuk mendukung operasi paralel. Prosesor DSP berdasarkan SIMD (Single Instruction, Multiple Data), VLIW (Very Large Instruction Worth) dan arsitektur superscalar sedang diperkenalkan untuk mendukung pemrosesan paralel yang efisien. Pada beberapa DSP, kinerja ditingkatkan lebih lanjut dengan menggunakan ko-prosesor khusus, on-chip untuk mempercepat algoritma DSP spesifik seperti penyaringan FIR dan penyiasatan Viterbi. Pertumbuhan eksplosif dalam komunikasi dan teknologi audio digital telah memiliki pengaruh besar dalam evolusi DSP, seperti juga pertumbuhan dalam aplikasi prosesor DSP tertanam.
Di dalam dua bagian, kami akan menjelaskan secara singkat ciri-ciri arsitektur dari beberapa generasi prosesor DSP titik tetap dan apung.
TMS320C3x mungkin adalah keluarga yang
paling terkenal dari generasi pertama DSPs floating-point generasi umum.
Keluarga C3x adalah prosesor sinyal digital chip tunggal 32-bit dan mendukung
kedua operasi aritmatika bilangan bulat dan floating-point. Mereka memiliki
ruang memori yang besar dan dilengkapi dengan banyak fasilitas periferal
di-chip untuk menyederhanakan desain sistem. Ini termasuk cache program untuk
meningkatkan eksekusi kode yang umum digunakan, dan memori akses ganda di
kapal.
pada inisialisasi, lokasi RAM di mana data
sampel harus disimpan diatur ke nol karena kami selalu memulai tanpa data.
Operasi berikut ini kemudian dilakukan.
1. Sampling pertama instan. Baca contoh data dari ADC, gantilah data RAM satu tempat (untuk memberi ruang bagi data baru), simpan sampel masukan baru, hitung sampel keluaran dari Persamaan 12,5 dan kemudian kirim sampel keluaran yang dikomputasi ke DAC :
1. Sampling pertama instan. Baca contoh data dari ADC, gantilah data RAM satu tempat (untuk memberi ruang bagi data baru), simpan sampel masukan baru, hitung sampel keluaran dari Persamaan 12,5 dan kemudian kirim sampel keluaran yang dikomputasi ke DAC :
2. Contoh instan kedua. Ulangi operasi di atas dan kerjakan sampel output baru dan kirim ke DAC:
3. Pengambilan sampel ketiga instan Ulangi operasi di atas dan hasilkan sampel output baru dan kirim ke DAC:
4. Sampling keempat instan Ulangi operasi di atas dan kerjakan sampel keluaran baru dan kirim ke DAC:
Catatan
bahwa sampel data terlama sekarang telah jatuh dari ujungnya.
12.4 Memilih prosesor sinyal digital
Pemilihan prosesor DSP untuk aplikasi yang
diberikan telah menjadi masalah penting dalam beberapa tahun terakhir karena
banyaknya prosesor yang tersedia (Levy, 1999; Berkeley Design Technology, 1996,
1999). Faktor-faktor khusus yang dapat dipertimbangkan ketika memilih prosesor
DSP untuk aplikasi termasuk fitur arsitektur, kecepatan eksekusi, jenis
aritmatika dan panjang kata.
- Fitur arsitektur Kebanyakan prosesor DSP yang tersedia saat ini memiliki fitur arsitektur yang bagus, tetapi ini mungkin tidak memadai untuk aplikasi tertentu. Fitur utama yang menarik termasuk ukuran memori on-chip, instruksi khusus dan kemampuan I / O. Memori on-chip merupakan persyaratan penting dalam sebagian besar aplikasi DSP real-time untuk akses cepat ke data dan eksekusi program yang cepat. Untuk aplikasi yang haus memori (misalnya audio digital - Dolby AC-2, FAX / Modem, MPEG coding / decoding), ukuran RAM internal dapat menjadi faktor pembeda yang penting. Di mana memori internal tidak cukup ini dapat ditambah dengan kecepatan tinggi, off-chip memori, meskipun ini dapat menambah biaya sistem. Untuk aplikasi yang membutuhkan komunikasi atau aliran data yang cepat dan efisien dengan dunia luar. I / O fitur antarmuka tersebut ke ADC dan DAC. Kemampuan dan dukungan DMA untuk multiprocessing mungkin penting. Tergantung pada aplikasinya, satu set instruksi khusus yang kaya untuk mendukung operasi DSP adalah penting, mis. kemampuan looping nol-overhead, instruksi DSP khusus, dan pengalamatan melingkar.
- Kecepatan eksekusi Kecepatan prosesor DSP merupakan ukuran kinerja yang penting karena sifat waktu kritis dari sebagian besar tugas DSP. Secara tradisional, dua unit utama pengukuran untuk ini adalah kecepatan clock prosesor, dalam MHz, dan jumlah instruksi yang dilakukan, dalam jutaan instruksi per detik (MIPS) atau, dalam kasus prosesor DSP floating-point, di jutaan operasi floating-point per detik (MFLOPS). Namun, tindakan tersebut mungkin tidak pantas dalam beberapa kasus karena perbedaan signifikan dalam cara prosesor DSP yang berbeda beroperasi, dengan sebagian besar mampu melakukan beberapa operasi dalam satu instruksi mesin dalam satu siklus. Jumlah operasi yang dilakukan dalam setiap siklus juga berbeda dari prosesor ke prosesor. Jadi, perbandingan kecepatan eksekusi prosesor berdasarkan kecepatan eksekusi dari algoritma benchmark (Levy, 1998; Berkeley Design Technology, 1999) - mis. Kernel DSP seperti filter FFT, FIR dan IIR. Di Tabel 12.1 dan 12.2 indeks kinerja berdasarkan tolok ukur tersebut memberikan indikasi kinerja relatif dari sejumlah prosesor DSP populer.
- Jenis aritmatika Dua jenis aritmetika yang paling umum digunakan dalam prosesor DSP modern adalah aritmatika fixed-and floating-point. Aritmatika mengambang adalah pilihan alami untuk aplikasi dengan persyaratan jangkauan dinamis yang luas dan variabel (rentang dinamis dapat didefinisikan sebagai perbedaan antara tingkat sinyal terbesar dan terkecil yang dapat direpresentasikan, atau perbedaan antara sinyal terbesar dan tingkat kebisingan, diukur dalam desibel). Prosesor fixed-point disukai dalam aplikasi berbiaya rendah dan bervolume tinggi (misalnya telepon seluler dan disk drive komputer). Penggunaan aritmatika fixed-point menimbulkan masalah yang terkait dengan batasan jangkauan dinamis yang harus ditangani oleh perancang (lihat Bab 13 untuk lebih jelasnya). Secara umum, prosesor mengambang lebih mahal daripada prosesor fixed-point. Meskipun perbedaan biaya telah turun secara signifikan dalam beberapa tahun terakhir. PALING prosesor DSP floating-point yang tersedia saat ini juga mendukung aritmatika fixed-point.
- Wordlength Data prosesor wordlength dan parameter penting dalam DSP karena dapat memiliki dampak yang signifikan terhadap kualitas sinyal. Ini menentukan seberapa akurat parameter dan hasil dari operasi DSP dapat diwakili (lihat Bab 13 untuk lebih jelasnya). Secara umum, semakin panjang kata data semakin rendah kesalahan yang diperkenalkan oleh pemrosesan sinyal digital. Dalam pemrosesan audio titik-tetap, misalnya, panjang kata pengolah setidaknya 24 bit diperlukan untuk menjaga tingkat sinyal terkecil cukup di atas lantai suara yang dihasilkan oleh pemrosesan sinyal untuk menjaga kualitas CD. Berbagai wordlengths prosesor digunakan dalam prosesor DSP titik tetap, tergantung pada aplikasinya (lihat Tabel 12.1). Proses DSP fixed-point yang ditujukan untuk pasar telekomunikasi cenderung menggunakan word-length 16-bit (misalnya TMS320C54x), sedangkan yang ditujukan untuk aplikasi audio berkualitas tinggi cenderung menggunakan 24 bit (misalnya DSP56300). Dalam beberapa tahun terakhir, kami telah melihat kecenderungan penggunaan lebih banyak bit untuk ADC dan DAC (misalnya Cirrus 24-bit audio codec, CS4228) karena biaya perangkat di sana turun untuk memenuhi permintaan yang tak terpuaskan untuk meningkatkan kualitas. Dengan demikian, kita cenderung melihat peningkatan permintaan untuk wordlengths prosesor yang lebih besar untuk pemrosesan audio. Dalam prosesor titik tetap, mungkin juga diperlukan untuk memberikan bit penjaga
Sebuah FIR filter 61 titik yang optimal
memenuhi spesifikasi di atas. Desain filter ini dibahas secara rinci di Bagian
7.6.5. di sini, kami hanya akan berkonsentrasi pada implementasi. Koefisien
filter dikuantisasi menjadi 16 bit (format Q15), dengan mengalikan setiap
koefisien dengan 2, dan kemudian membulatkan ke integer terdekat. Koefisien
yang terkuantisasi dan tidak terkuantisasi didengarkan pada Tabel 12.3. seperti
yang ditunjukkan pada diagram alur pada Gambar 12.25, filter FIR lengkap
memiliki setidaknya empat bagian penting:
- Inisialisasi Inisialisasi sistem; ini mungkin termasuk menyiapkan tabel koefisien.
- Bagian input ini mungkin termasuk membaca atau sampel input, x (n), mis. dari ADC melalui port serial.
- Penghitungan lingkaran dalam pelaksanaan persamaan FIR untuk memperoleh y (n)
- Bagian output ini dapat mencakup pemindahan / pembulatan hasil perhitungan loop bagian dalam dan mengirimkan ini, mis. ke DAC melalui port serial.
Dalam hal ini, koefisien dan memori data
diatur seperti yang ditunjukkan pada Gambar 12.24 (c). register tambahan AR1
digunakan untuk pengalamatan tidak langsung dalam perhitungan loop dalam
(instruksi MACD) dan awalnya menunjuk ke sampel data tertua, XNM1, dalam memori
data. Dalam lingkaran dalam, instruksi MACD melakukan hal berikut:
Menambahkan produk sebelumnya ke
akumulator - awalnya, produk adalah nol;
Mengalikan koefisien, h (k), dengan data
yang ditunjukkan oleh AR1 - awalnya, h (k) = h (N - 1), dan register tambahan
menunjuk ke x [n - (N - 1)];
Salinan data yang ditunjukkan oleh AR1 ke
lokasi berikutnya yang lebih tinggi - awalnya, x [n - (N - 1)] disalin ke x (n
- N); contoh data tertua yang dihapus. Instruksi MACD terakhir menyalin x (n)
ke x (n - 1) untuk memberi ruang bagi sampel masukan berikutnya;
Decrements AR1 oleh 1 (yaitu menunjuk ke
sampel berikutnya dalam memori data) - awalnya AR1 menunjuk ke x [n - (N - 1)],
dan kemudian, berturut-turut, menunjuk ke x [n - (N - 2)], x [n - (N - 3)],. .
. , x (n) saat kita mengitari loop;
Menambahkan alamat COEFF dengan 1 - alamat
yang berurutan adalah h (N - 1), h (N - 2),. . . , h (0).
Contoh
Mewakili fungsi transfer dari Contoh ini suatu bentuk
paralel menggunakan bagian kanonik orde kedua sebagai blok pembangun.
Menerapkan filter menggunakan perangkat keras yang sama seperti contoh
terakhir.
Solusi
Menggunakan peogram ekspansi pecahan parsial yang dibahas
dalam Bab 4, koefisien untuk realisasi paralel diperoleh dari realisasi
kaskade. Pengalihan transfer menjadi
Tabel
12.5 memberikan nilai koefisien sebelum dan sesudah kuantisasi menjadi 16 bit.
The TMS320C50, TMS350, TMS320C54, DSP56000, DSP56300 kode untuk filter tersedia
di CD dan di buku pegangan pendamping (lihat Pengantar untuk rincian). Untuk
DSP56000, koefisien dikuantisasi menjadi 24 bit.
Implementasi filter IIR urutan keempat dari Contoh 12.5: koefisien filter sebelum dan sesudah kuantisasi menjadi 16 bit.
FFT Processing
Transformasi
Fourier diskrit (DFT) dari urutan data berhingga, x (n), didefinisikan sebagai
Di mana W_N, sering disebut
faktor twiddle, adalah seperangkat coeffiticients kompleks.
Komputasi langsung dari koefisien DFT, C (k), memakan
waktu ketika N besar. Algoritma FFT memberikan cara efisien untuk menghitung X
(k) dengan pengurangan waktu komputasi yang signifikan. Sebagaimana dibahas
dalam Bab 3, faktor kupu-kupu dan twiddle merupakan pusat algoritma FFT.
Implementation of the butterfly
Secara umum, input dan output data sampel
serta faktor-faktor pokok semuanya kompleks dan dapat dinyatakan sebagai
Dimana
akhiran r menunjukkan bagian nyata dan saya bagian imajiner dari data. Operasi
kupu-kupu dalam Persamaan 12.11 melibatkan aritmatika kompleks, tetapi dalam
praktiknya sering dilakukan menggunakan aritmatika nyata. Untuk menyatakan
operasi dalam bentuk yang cocok untuk aritmatika nyata, kami mencatat bahwa produk
B dan W dalam Persamaan 12.11 memiliki bentuk:
Program pseudo-code bahasa C untuk
pra-perhitungan nilai faktor teka-teki.
Pi=6.28375307179586/N;
For(k=0;k<N/2; ++k){
X=k*pi;
w.real[k]=cps[X];
w.imag[k]=sin[X];
}
Program pseudo-code bahasa C untuk
butterfly
t.real;=br*w.real[k]+bi*w.imag[k];
t.imag=bi*w.real[k]-br*w.imag[k];
b.real[j]=a.real-t.real;
b.imag[j]=a.imag-t.imag;
a.real[j]=a.real+t.real;
a.imag[j]=a.imag+t.imag;
di mana X = 2Ï€k
/ N. Menggunakan Persamaan 12/12 dan 12.13 dalam Persamaan 12.11a dan 12.11b
yang kita miliki
pseudo-code
bahasa C untuk kupu-kupu radix-2, dengan nilai-nilai faktor melintir pra-dihitung
dan disimpan dalam tabel look-up, diberikan dalam program 12,8.
Sebuah pseudo-code
Program Kode TMS320C50 untuk butterfly.
Hitung istilah umum untuk dua
output kupu-kupu, A’ dan B’
LT BR ;compute
1/2*[b.real*cos(X)+b.imag*sin(X)]
MPY WREAL ;1/2*b.real*cos(X)
LTP BI
MPY WIMAG ;1/2*b.imag*sin(X)
APAC ;1/2[b.real*cos(X)+b.imag*sin(X)]
MPY WREAL ;1/2*b.imag*cos(X)
LT BR
SACH BR ;1/2[b.real*cos(X)+b.imag*sin(X)]
PAC ;compute[q.imag*cos(X)-q.real*sin(X)]
MPY WIMAG
SPAC
SACH BI
menghitung dan simpan output butterfly
LACC AR, 14 ;compute and save the real
parts of the outputs
ADD BR, 15
SACH AR, 1 ;save a.real
SUB BR
SACH BR, 1 ;save b.real
LAC AI,
14 ;compute and save
the imaginary parts of the outputs
ADD BI, 15
SACH AI, 1 ;save a.imag
SUB BI
SACH BI, 1 ;save b.imag
Data scrambling dan bit reversal
Dalam DIT (decimation-in-time)
FFT, jika urutan data input diterapkan ke prosesor FFT dalam urutan alami,
output dari FFT tampak acak (lihat Gambar 12.32). Untuk memastikan output
muncul dalam urutan yang benar (yaitu, sebagai X (0), X (1),..., X (N-1)), kita
juga mengacak urutan data input sebelum mengambil FFT (lihat Gambar 12.33 dan
12.34) atau menguraikan output setelah mengambil FFT (lihat Gambar 12.32).
Data untuk
eight-point FFT memperlihatkan konsep dari bit reversing.
Input
sequence, natural order
|
Binary
code of sequence
|
Input
sequence,
bit
reversed
|
Binary
code of sequence
(bit
reversed)
|
x(0)
|
000
|
X(0)
|
000
|
X(1)
|
001
|
X(4)
|
100
|
X(2)
|
010
|
X(2)
|
010
|
X(3)
|
011
|
X(6)
|
110
|
X(4)
|
100
|
X(1)
|
001
|
X(5)
|
101
|
X(5)
|
101
|
X(6)
|
110
|
X(3)
|
011
|
X(7)
|
111
|
X(7)
|
111
|
Untuk radix-2 FFT, pengacakan data input dicapai
dengan menyimpan urutan input dalam urutan bit-terbalik. Dengan asumsi data
input telah disimpan dalam urutan alami (yaitu, seperti X (0), X (1), X
(2),..., X (N-1)), urutan bit-terbalik tercapai dengan merepresentasikan indeks
data input dalam biner seperti yang ditunjukkan pada kolom kedua Tabel 12.6
untuk delapan titik FFT, dan kemudian menukar bit tentang pusat (kolom keempat
pada Tabel 12.6).
Ketika data
input disimpan dalam memori atau array, mengacak data input melibatkan
identifikasi pasangan lokasi data input dan interchanging atau swapping data di
lokasi tersebut. Algoritma bit reversal karena Rader (Rabiner dan Gold, 1976)
adalah yang paling banyak digunakan untuk menentukan indeks lokasi memori untuk
bertukar. Sebuah pseudo-code bahasa C untuk algoritma bit reversing diberikan dalam
Program 12.10.
Chip Advance
DSP sekarang menyediakan intruksi untuk melakukan pembalikan bit pada sampel
data input karena diambil dari memori dalam kesiapan untuk FFT atau pada data
yang diubah saat disimpan dalam memori setelah FFT.
Multirate processing
Sebagaimana dibahas dalam Bab
9, pengolahan multirate melibatkan melakukan operasi DSP di lebih dari satu
tingkat sampling. Dua operasi mendasar dalam multirate
In-place
bit reversal untuk radix-2 FFT.
/Perform in-place bit reversal/
J=1;
For(i=1; i<N; ++i){
If(i<j){
Tr=x.real[j]; /swapx[j] and x[i]/
Ti=x.imag[j];
x.real[j]=x.real[i];
x.imag[j]=x.imag[i];
x.ral[i]=tr;
x.imag[i]=ti;
x.imag[i]=ti;
k=N/2;
while(k<j){
j=j-k;
k=k/2;
}
}
Else {
K=N/2;
While(k<j){
J=j-k;
K=k/2;
}
}
J=j+k;
}
Pengolahan adalah dedikasi
(pengurangan tingkat sampel) dan interpolasi (peningkatan tingkat pengambilan
sampel). Kami akan mengilustrasikan implementasi desimalator waktu nyata dengan
sebuah contoh.
Contoh
Tingkat pengambilan sampel
sinyal akan dikurangi dengan proses penipisan tiga tahap dari 30kHz hingga 1
kHz. Asumsikan frekuensi tertinggi bunga setelah penipisan adalah 400Hz, riak
dalam-pita 0,08dB dan penolakan stopband dari 50dB. Decimator akan
diimplementasikan pada TMS 320C50.
Solusi
Menggunakan program desain
multirate (tersedia di CD dan di buku pegangan pendamping - lihat Pengantar
untuk perincian), parameter decimator tiga tahap diperoleh; lihat Gambar 12.35.
Koefisien dari tiga filter, menggunakan program desain FIR yang optimal,
diberikan pada Tabel 12.7. Panjang filter sedikit lebih lama dari perkiraan
yang diprediksi oleh program desain pelebur (12, 13, 48, bukannya 13, 12, 46)
untuk memastikan spesifikasi terpenuhi.
Flowchart
untuk decimator tiga tahap umum diberikan pada Gambar 9.15. Koefisien dan peta
penyimpanan data untuk desimator berbasis TMS320C50 ditunjukkan pada Gambar
12.46. Koefisien filter dikuantisasi menjadi 16 bit dengan mengalikan masing-masing.
Adaptive filtering
Sebagaimana dibahas dalam Bab 10,
penyaringan adaptif melibatkan dua proses.
1. Digital Filtering Koefisien filter
digital digunakan untuk mengekstrak informasi yang tepat dari
sinyal input, x (n), untuk menghasilkan y (n). Dengan asumsi struktur FIR
transversal, filter diberikan oleh
Dimana
w (k), k = 0,1,. . . . , N-1, adalah filter digital coeffitients (sering
disebut bobot) dan x (n-k), k = 0,1,. . . . , N-1, adalah urutan dari input
data.
Implementasi filter digital yang
diberikan dalam Persamaan 12,15 sangat mirip dengan filter FIR standar yang
dibahas sebelumnya. Dengan demikian, implementasi Clanguage dari filter akan
memiliki bentuk yang serupa
Y[n]=0;
For(k=0; k<N; k++){
Y[n]=y[n]+wn[k]*xn[k];
}
2. Adaptive process Proses ini melibatkan pembaruan, yaitu menyesuaikan
koefisien filter terhadap nilai optimalnya. Ketika algoritma dasar LMS
digunakan, koefisien diperbarui sebagai berikut:
Program C
pseudo-code untuk pembaruan koefisien filter adaptif LMS.
Uen=2*u*e[n]
For(K+): k<N; k++){
Wn[k]=wn[k]+uen*xn[k]
}
Program TMS320C50
pseudo-code untuk LMS adaptive filter coefficient update.
LT ERR
MPY U ;
compute
PAC
ADD ONE, 15
SACH ERRF
LACC #N-1 ;
specify filter length
SAMM BRCH
LAR AR2, #WNM1 ; point to the last coefficient, wk(N-1)
LAR AR3, #XNM1 ; point to x(n-(N-1))
LT ERRF
MPY -, AR2 ;
compute
RPTB LMS-1 ;
update coefficients, wk+1(N)
ZALR *, AR3
MPYA *-, AR2
SACH *+
LMS ZALR *, AR3
APAC
SACH *+
Dimana wn ¬ (k) adalah koefisien kth dari
filter digital pada sampling nontian, µ adalah faktor stabilitas, dan x (n - k)
adalah sampel data input kth pada baris delay kth.
Special-purpose DSP hardware
Kenapa special purpose?
Operasi pemrosesan sinyal digital
intensif secara komputasi. Dalam aplikasi lebar pita lebar di mana kecepatan
input / output data tinggi, sebagian besar digital untuk keperluan umum
Prosesor sinyal (DSPs)
tidak dapat melakukan perhitungan yang diperlukan cukup cepat. Ini tentu saja
alasan mengapa DSP tujuan umum sering ditemukan dalam aplikasi frekuensi audio.
Selanjutnya, untuk aplikasi yang diberikan, kebanyakan DSP tujuan umum berisi
banyak sumber daya on-chip yang berlebihan atau kurang dimanfaatkan, misalnya
mode pengalamatan, set instruksi I / O peripheral. Dalam DSPs tujuan khusus,
perangkat keras dioptimalkan untuk mengeksekusi suatu algoritma khusus untuk
melakukan fungsi tertentu dalam aplikasi tertentu. Ini mengarah pada
pemanfaatan sumber daya on-chip yang lebih besar dan peningkatan kecepatan
operasi,
Persyaratan
dasar dari special-purpose DSPs
Operasi aritmatik yang paling umum dalam
algoritma DSP, seperti penyaringan digital, korelasi dan transformasi, adalah
produk penjumlahan:
Dimana ak adalah seperangkat koefisien
atau variabel dan xk suatu urutan data.
Persamaan karakteristik
12.17 dapat ditulis dalam bentuk rekursif untuk memungkinkan perhitungan yang
lebih efisien dari jumlah produk:
Dimana
Dalam DSPs tujuan-khusus Persamaan 12.18
dihitung dengan multiplier-accumulator (MAC) pada tingkat yang sangat cepat,
misalnya 40 ns per MAC.
Seperti DSP tujuan
umum, arsitektur DSP tujuan khusus termasuk memori data, RAM dan / atau ROM,
untuk menyimpan data dan variabel (seperti filter dari FFT coeffitients),
perangkat keras cepat pengganda-akumulator, dan register sementara untuk
menyimpan data atau hasil tengah.
Hardware digital filters
FIR digital filters
Filter FIR bentuk langsung dicirikan oleh
persamaan berikut:
arsitektur dasar
untuk filter digital FIR menggunakan blok-blok komponen individual. Komponen
utama adalah koefisien dan ingatan data, unit input / output analod (ADC dan
DAC), multiplier-accumulator (MAC), dan pengontrol (tidak ditampilkan).
Komponen-komponen filter FIR dapat diimplementasikan dengan produk yang cepat,
off-the-shelf.
IIR figital filter
Dalam hal ini, memori data menyimpan data
inter node w (n). Bagian kanomik orde kedua standar pada Gambar 12.39 (a) dikarakterisasi
oleh persamaan berikut:
Dimana x (n) mewakili data input, w (n)
merepresentasikan simpul internal, y (n) adalah sampel keluaran dilter dan s1
adalah faktor skala.
Prosesor Hardware FFT
DFT mengambil satu set sampel domain N
waktu dan mengubahnya menjadi satu set sampel domain frekuensi N, X (k). FFT
adalah cara yang efisien untuk menghitung DFT
Koefisien, X (k).
Aritmatika butterfly adalah operasi dasar dalam FFT. Seekor kupu-kupu dicirikan
oleh persamaan berikut:
Di mana A dan B adalah sepasang data
input data bernilai kompleks untuk kupu-kupu. A ’dan B’ adalah output dari
kupu-kupu, dan WN adalah faktor terpadu, juga bernilai kompleks.
Setiap operasi
kupu-kupu membutuhkan perkalian cinplex, apa itu W_N ^ k B, penambahan yang
kompleks dan pengurangan yang rumit. Gambar 12.40 menunjukkan implementasi
perangkat keras langsung dari prosesor kupu-kupu menggunakan blok individual
unit aritmatika kompleks: multiplier akompleks dan sepasang akumulator
kompleks. Pengganda kompleks menghitung istilah umum, W_N ^ k B. Kedua
akumulator kompleks menghitung dua output kupu-kupu, A ’dan B’
waktu-nyata tanpa
kehilangan data. Masximum untuk menyelesaikan N-point FFT adalah interval T1 =
NT (s).