188483. lajstromszámú szabadalom • Áramköri elrendezés logaritmus függvény közelítő értékének gyors kiszámítására
1 188 483 2 A találmány tárgya áramköri elrendezés logaritmus függvény közelítő értékének gyors kiszámítására célfeladatokat ellátó bit-szelet mikroprocesszoros rendszerekben. Alkalmazása elsősorban sokcsatornás analizátorokban célszerű, ahol szükség van a spektrum display-en történő, a szemmel való kiértékelés kis pontossági követelményének megfelelő felbontású logaritmikus megjelenítésre. Az eddig ismert megoldások követik az univerzális számítógépek rendszerét, a logaritmus függvény értékeinek kiszámításához a sorfejtés pontos, de időigényes módszerét alkalmazzák. Az ily módon felépített algoritmus egy 20 bites bináris szám alatti logaritmus érték kiszámításához kb. 20 makroutasítás végrehajtását teszi szükségessé.Ez a szorzási és osztási műveletek nagy száma miatt kb. 300 mikroutasítás végrehajtását igényli kb. 75 fis műveleti idő igénybevételével. Ez jelentős kijelzési holtidőt eredményezne, ami sokcsatornás analizátorokban megengedhetetlen. Ilyen célra szolgáló ismert megoldás található pl. John R. Mick és Jim Brick (Advanced Mikro Devices, Inc.) „Mikropromming Handbook” c. kiadványában, amelynek kiadási éve: 1976. Az ismert megoldás tömbvázlata az 1. ábrán látható, ahol: 1 SEOUENCER áramkör, amely a mikroutasítások sorrendjét határozza meg, 2 mikroprogramtár, 3 PIPE LINE regiszter, amely a végrehajtás alatt lévő mikroutasítást tárolja, 4 címmeghatározó áramkör, amely a következő mikroutasítás címét határozza meg, 5 feltétel multiplexer, 6 kimeneti tároló regiszter, 7 aritmetikai-logiai egység, 8 adatbusz, 11 makroutasítás regiszter, 12 MAPPING PROM, amely a mikroprogramok kezdőcímeit tárolja, 13 vezérlő áramkör, amely a következő makróutasítást határozza meg. Az 1. ábra szerinti áramköri elrendezés működése a következő: A logaritmus-számítási makroprogram elindításáról, tehát ezen program első utasításának a 11 makroutasítás regiszterbe való töltését a 8 adatbuszon keresztül a következő makroutasítást meghatározó 13 vezérlő áramkör végzi el. A 11 makroutasítás regiszter a 12 MAPPING PROM-on és az 1 SEOUENCER áramkörön keresztül kijelöli a 2 mikroprogram tárban az első makroutasításhoz tartozó mikroprogram kezdőcímét. Az ezen a címen levő mikroutasítást kiolvassuk a 3 PIPE LINE regiszterbe. Ez utóbbi utasítás b4 bitcsoport, első vezérlő b5 bitcsoport, második vezérlő b6 bitcsoport negyedik, ötödik, hatodik 35, 36, 37 kimenetei vezérlik az adattal kapcsolatos aritmetikai és logikai műveletek végrehajtását a 7 aritmetikai-logikai egység segítségével. A 3 PIPE LINE regiszter ugráscímet-ciklusszámot beállító bl bitcsoport, következő címet kiválasztó b2 bitcsoport, feltételt kiválasztó b3 bitcsoport első, második, harmadik 32, 33, 34 kimenetei az 1 SEOUENCER áramkörön, a 4 címmeghatározó áramkörön és az 5 feltétel multiplexeren keresztül kijelölik a 2 mikroprogram tárban a következő mikroutasítás címét, amely címről kiolvasott mikroutasítás ismét a 3 PIPE LINE regiszterbe kerül. Ez a folyamat ismétlődik mindaddig, amíg el nem érkezünk az első makroutasításhoz tartozó mikroprogram utolsó utasításához. Ez egy MAP típusú utasítás kódot juttat az 1 SEOUENCER áramkör 111 bemenetére, amelynek következtében a 112 bemeneten levő kód hatására a 12 MAPPING PROM által kijelölt makroutasításhoz tartozó mikroprogram kezdőcímét jelöli ki a 2 mikroprogram tárban. Ezzel ismét megkezdődik egy mikroprogram végrehajtása az előzőekben leírt módon. Az ismertetett áramköri elrendezés a következő algoritmus felhasználásával alkalmazható logaritmus értékének számítására (Computational Matematics Worked Exemples and Problems with Elements of Theory N.V. Kopchenova and I.A. Maron MIR Moscow). Minden pozitív szám (x) kifejezhető a következő formában: x = 2m . z, ahol m pozitív egész szám, z pedig megfelel a következő feltételnek 1/2 z 1. Felvéve a , I -Z £ = változót, felírhatjuk: OO I lnx = m.ln2 + lnz = m.ln2 - 22 ■ - %2k'1 k = 1 4X-1 A keresett logaritmus érték lnx a következő rekurens kifejezéssel számítható ki: n lnx = m.ln2~2 2 Ur/+ R_, ahol k= 1 K n Uj = f; Rn a logaritmus számítás hibáját adó maradék. A fenti képlet alapján felépülő algoritmus 20 bites bináris szóból kiindulva és 4 bites mantisszát feltételezve 2 osztási, 6 szorzási, 30 körüli alapvető összeadási, kivonási, adatátírási, inkrementálási, dekrementálási és shiftelési utasítást tartalmaz. Ezek kb. 20 makroutasítás és 300 mikroutasítás végrehajtását jelentik, összesített műveleti idejük meghaladja a 75 /us-ot. Ez az áramköri elrendezés logaritmus értékének számításán kívül — univerzális jellege miatt — gyakorlatilag bármely algoritmus megvalósítására alkalmas. Az ismert megoldások hátrányai a következők: — a logaritmus értékének kiszámításához tartozó program nagyon sok mikroutasítást tartalmaz, tehát időigényes, — a logaritmus értékének kiszámításához makro- és mikroszintű áramköri elrendezés (hardware) kiépítése szükséges, ami igen költséges. A találmány célul tűzte ki az ismert megoldás hátrányainak megszüntetését és olyan áramköri elrendezés létrehozását, amely a logaritmus értékének számításához szükséges műveleti időt lecsökkenti, s így ezt a megoldást alkalmazó pl. sokcsatornás analizátorokban a holtidőt csökkenti, valamint a megkívánt pontosságnak megfelelő egyszerű, nem költséges áramköri megoldás alkalmazását lehetővé teszi. A találmány szerinti megoldás azon a felismerésen alapul, hogy ha az eddigi megoldásokban használt makroutasítás regisztert, MAPPING PROM-ot és a vezérlő áramkört elhagyjuk és egyszerű felépítésű vezérelhető összeadót, adatkiválasztó multiplexert alkalmazunk, továbbá biztosítjuk, hogy a vezérelhető összeadó és adatkiválasztó multiplexer vezérelhető bemenetei a PIPE LINE regiszter logaritmus vezérlő bitjétől kapják a vezérlést, s az aritmetikai-logikai egység kimenete és a SEOUENCER áramkör bemenete között kapcsolat jöjjön létre, módosítva ezáltal a PIPE LINE regiszter ugráscímet-ciklusszámot beállító bitcsoport kimenete által meghatározott ugráscímet, valamint az adat módosítása céljából a PIPE LINE regisztert kiválasztó második vezérlő bitcsoport 5 13 15 20 25 30 35 40 45 50 55 60 65 2