A Fixed-Point Blockset használata
Fixed-Point Blockset For Use with SIMULINK
Modeling - Simulation - Implementation
Tartalom
1. Bevezető
2. Ismerkedés a Simulinkkel - az első
programok
3. Ismerkedés a Fixed-Point Blocksettel
- az első programok
4. Teszteredmények - duplapontos és kvantált
számítások összehasonlítása
5. Kapcsolatok - DSP Blockset, Real-Time Workshop
6. Kitekintés - Quantized Filter Toolbox
7. Összefoglalás
1. Bevezető
A következő néhány fejezetben a MathWorks cég által készített Fixed-Point
Blocksetről található egy rövid összefoglaló.
A Fixed-Point Blockset - amint nevében is benne van - egy olyan blokk-készlet,
amelynek blokkjai valamilyen módon fixpontos számábrázolással kapcsolatos
műveleteket tartalmaznak. A készlet elemei a MATLAB Simulink környezetben
használhatók.
A MATLAB program - amely jól ismert a mérnöki gyakorlatban - egy olyan
eszközkészlet, amely egyszerűen és hatékonyan alkalmazható a mérnöki számításokhoz,
ezek megjelenítéséhez, algoritmusok fejlesztéshez stb.
A program alapjában véve egy egyszerű C-típusú programnyelvet kínál
fel a fenti feladatok megoldására. Algoritmusok, blokkvázlatok teszteléséhez
azonban a MathWorks cég kifejlesztett egy szimulációs környezetet is, a
Simulinket. A Simulink szoftvercsomag használatával - blokkok segítségével
- állíthatunk össze „igazi” blokkvázlatokat, ezeken szimuláció és analízis
végezhető.
A Fixed-Point Blockset a Simulink programcsomaghoz készített különálló
készlet, amelynek elemei tetszés szerint keverhetők más készletek elemeivel,
ezáltal egészen komplex rendszerek is egyszerűen leírhatók illetve modellezhetők
a Simulink segítségével.
A félév során megismerkedtem a Simulink program használatával, illetve
a Fixed-Point Blockset legfontosabb tulajdonságaival. A felhasznált programok
a következőek voltak:
-
MATLAB 5.3.1.
-
Simulink 3.0
-
Fixed-Point Blockset 2.0
Mivel a tanszéken a Simulink program ismerete nem jellemző, ezért először
ennek használatát tekintem át, majd utána következnek a Fixed-Point Blocksettel
kapcsolatos információk.
<vissza a tartalomhoz>
2. Ismerkedés a Simulinkkel - az első programok
A Simulink programot a MATLAB parancssorból a simulink szó begépelésével
indíthatjuk. Ekkor egy Simulink Library Browser ablak jelenik meg
a munkaterületen. Ez az ablak tartalmazza az elérhető Blocksetek listáját,
illetve azok elemeit (hierarchikus fa-struktúra formájában).
Ahhoz, hogy dolgozni tudjunk, létre kell hozni egy új modellt. Ezt
a fehér lap ikonra kattintva tehetjük meg, vagy pedig a Matlab window
-> File menü -> New -> Modell menü segítségével.
Az új modell Simulation -> Preferences menüjében be kell állítani
néhány paramétert ahhoz, hogy jól működjön a program.
-
Solver fül: Folyamatos szimulációhoz a Simulation Stop Time ablakba
érdemes +Inf -et írni. Ha a modellezendő rendszerünk digitális,
akkor célszerű megadni a Fixed-step típus opciót, és rögzíteni a
Step
size-ot. A Step size összhangba hozható a rendszer maximálisan
modellezendő frekvenciájával (illetve annak reciprokával): A lépésköz méretének
reciproka legyen nagyobb, mint a max frekvencia kétszerese, de sokkal nagyobb
pedig ne legyen, mert az a szimulációt erősen lassítja.
-
Workspace I/O fül: megadható, hogy milyen változókat akarunk a Workspace-ből
venni illetve kimenteni a Workspace-re, és milyen formátumban (vektor,
struktúra, mátrix). Folyamatos szimuláció esetén célszerű kikapcsolni mindet,
különben előbb-utóbb elfogy a memória.
-
Diagnostics fül: A különböző figyelmeztető üzenetek testreszabására
van lehetőség (pl. bekötetlen ki/bemenet esetén figyelmeztessen vagy ne).
Ezek beállítása után már létrehozhatjuk az egyik legegyszerűbb modellünket:
Generátor és Oszcilloszkóp összekötve. A blokkok a Library Browser-ből
választhatók ki és egyszerű Drag-and-Drop módszerrel helyezhetők
bele a modellbe. Összekötésük szintén egérrel történik A létrehozott
modell az első ábrán látható (a modell letölthető: genscope.mdl)
1. ábra. Generátor - Oszcilloszkóp modell
Az egyes blokkok - illetve az összekötő vezetékek - tulajdonságai és
cimkéi kettős kattintás segítségével vagy kijelöléssel és jobb egérgomb
használatával állíthatók. Egy ilyen példa látható a 2. ábrán.
2. ábra. Signal generátor paraméterei
Amint látható, kifejezések is beírhatók az egyes ablakokba, sőt, a Workspace-ről
vett változók segítségével függvényeket is definiálhatunk (pl. amplitúdó-
vagy frekvenciamodulációt készíthetünk viszonylag egyszerűen). Némi inkonzisztencia:
Signal Generator blokk alkalmazása esetén választhatunk frekvencia
egységet, Sine Wave blokk használata esetén nem.
Az így elindított szimuláció kimeneti eredménye látható a 3.ábrán (a
scope
jelét meg tudjuk jeleníteni kettős kattintás segítségével, címét automatikusan
tudja örökölni a bekötő vezetéktől).
3. ábra. A szkóp kimenete
A szkóp kimenete is változtatható, kedvelt gomb lehet az autoscale.
A tengelyekre jobb egérgombbal kattinthatunk, de mindkét tengelyen csak
a függőleges tengely skáláját állíthatjuk. Az idő paraméter az ábra Properties
menüjéből
érhető csak el (meg lehet szokni...).
Számtalan bonyolultabb rendszer is felépíthető a Simulink segítségével.
Mivel a blokkok igen ötletesen és használhatóan rendezettek, ezért további
példák itt most nem kerülnek bemutatásra, lehet bátran kísérletezni. Áttekintésül
álljon itt a Simulink könyvtár struktúrája és az egyes alkönyvtárakban
található tipikus blokkok:
-
Folytonos (differenciáló tag, integráló tag, átviteli fg, késleltetések)
-
Diszkrét (mint folytonos)
-
Függvények, táblák
-
Matematika (konverterek, logikai kifejezések, mátrix-műveletek)
-
Nemlineáris (limiterek, kvantáló, kapcsolók)
-
Jelek és rendszerek (buszok, triggerek)
-
Kimenetek
-
Bemenetek, források
<vissza a tartalomhoz>
3. Ismerkedés a Fixed-Point Blocksettel - az első programok
A Fixed-Point Blockset használata teljesen megegyezik a Simulink
alapkönyvtárának használatával, azzal a különbséggel, hogy más funkciókra
használhatók a blokkok. A blockset tartalma - ha installálva van - elérhető
egyrészt a már említett Simulink Library Browser-en keresztül, vagy
közvetlenül a fixptlib parancs begépelésével. A készlet felépítése
(sajnos, nincs átlátható künyvtárstruktúrában...):
-
aritmetikai blokkok (konstans, erősítés, szorzás, osztás, összeadás, kivonás)
-
konverziós blokkok (ki- és bemeneti konverziós kapuk)
-
áttekintő táblák (1, 2 dimenziós)
-
logikai és összehasonlító blokkok (kapcsolók, relációs és logikai blokkok,
szaturáció)
-
diszkrét-idejű blokkok (FIR, delay, ZOH)
-
szűrők, rendszerek (integrátor, differenciátor, szűrő realizációk)
A program jellemzői:
-
signed/unsigned integer, signed/unsigned fractional, IEEE single, IEEE
double és custom floating point számábrázolások támogatása
-
skálázás: a való világ változóinak skálázása
-
kerekítések: fix, round, ceil, floor
-
túlcsordulás kezelése: szaturáció, tördelés (wrap)
-
szűrőstruktúrák támogatása (direkt, soros (kaszkád), párhuzamos)
-
accumulator típus támogatása
A Fixed-Point Blockset úgy használható Simulink környezetben,
hogy a ki- és bemenetét a megfelelő „kapukkal” (gate) illesztjük a duplapontos
aritmetikához. A legegyszerűbb modell tehát két ilyen kaput tartalmaz és
ezáltal csak kvantál (4. ábra) (kvant.mdl).
4. ábra. Kvantáló modellje
Kimenete, amelyen rögtön megfigyelhetjük a szaturáció és túlcsordulás
hatását is (5. ábra):
Normal sampling
|
|
Wrap
|
|
Saturate
|
|
5. ábra. Kimenetek
Ehhez hasonlóan lehet vizsgálni a bitszám hatását is, illetve a kvantálási
zajt (6. ábra), a duplapontos és a kvantált érték különbségeként (kvnoise.mdl):
6. ábra. Kvantálási zaj
<vissza a tartalomhoz>
4. Teszteredmény - duplapontos és kvantált számítások összehasonlítása
A Fixed-Point Blockset használatával arra is lehetőségünk van, hogy
- ugyanazt az algoritmust egymás mellett párhuzamosan megvalósítva - összehasonlítsuk
a duplapontos és fixpontos számítások különbségét, bárhonnan belemérve
a két algoritmusba.
<vissza a tartalomhoz>
5. Kapcsolatok - DSP Blockset, Real-Time Workshop
A bemutatott Fixed-Point Blockset lehetőségei nem merülnek ki a
fent röviden ismertetett példákkal. A - régebben megjelent - DSP-Blockset
segítségével szűrőket is tervezhetünk, fft-scope-pal vizsgálhatjuk a jelet
és számtalan egyéb funkciót érhetünk el. Áttekintésül a DSP Blockset struktúrája:
-
források (mintavevők, függvények)
-
nyelők (szkópok, fft)
-
DSP általában
-
jelfeldolgozás (ablakozás, késleltetés, Hilbert-transzformáció, resample)
-
transzformációk (fft, ifft)
-
bufferelés
-
kapcsolók, számlálók
-
matematikai függvények
-
alapok (kvantálás, erősítés)
-
vektorfüggvények (konvolúció, korreláció, átlagolás)
-
mátrixfügvények
-
komplex függvények (szorzás, átalakítás)
-
statisztika
-
szűrők
-
tervezés (FIR, IIR, analóg, REMEZ)
-
megvalósítás (normál, többcsatornás, overlap-add)
-
adaptív szűrők (LMS, Kalman, RLS)
-
decimáló/interpoláló szűrők
-
spektrum analízis
-
demonstációk
A real-time workshop segítségével pedig kész blokkvázlatokat futtathatunk
valós időben célhardveren.
Mivel ezek a programok nem álltak rendelkezésemre, ezért jelenleg nem
foglalkozom velük tovább részletesen.
<vissza a tartalomhoz>
6. Kitekintés - Quantized Filter Toolbox
A MathWorks cég a fent említett programokon kívül nem túl régen közzétette
a Quantized Filter Toolbox készletét, amely a Fixed-Point Blockset
mellett,
azt kiegészítve támogatja a DSP-orientált fejlesztéseket. A toolbox a Signal
Processing Toolbox-ra épít, fő profilja a véges szóhossz hatásának
vizsgálata szűrők használatakor. A készlet végeredményben a Signal Processing
Toolbox és a Fixed-Point Blockset közötti hídnak tekinthető,
mert az előbbi eszközeivel tervez olyan fixpontos szűrőket, amelyek együtthatói
az utóbbiban használhatók.
Jelenleg a program még nincs meg a tanszéken, ezért részletesebb információk
még nem találhatók róla.
<vissza a tartalomhoz>
7. Összefoglalás
A fentiekben bemutatott programok összességében igen jól használhatók.
Igaz, hogy egy részük jelenleg nem elérhető a tanszéken, de előbb-utóbb
ezek a programok elérhetők és használhatók lesznek. A Fixed-Point Blockset
elérhető
és használható szimulációs eszköznek tűnik, eltekintve bizonyos inkonzisztenciáktól,
amelyeket „meg lehet szokni”.
Véleményem szerint a blocksetet a szemléltető oktatásban, a digitális
jelfeldolgozás általános jellemzőinek, illetve a DSP-k viselkedésének (véges
szóhossz, túlcsordulás, szaturáció, mintavételi tétel) bemutatásában remekül
lehetne használni.
<vissza a tartalomhoz>
Fejlesztés alatt...
Észrevételek, hozzászólások: markus@mit.bme.hu