Gray BCD UTF-8 ISO 8859 ASCII Unicode ISO 10646 (UCS) UCS-2 HTOL Digitaalitekniikan perusteet Luku 9 Sivu 1 (14) 1998-1999 Luentokalvoseloste 12.6.1998 Fe Luku- ja merkkikoodit UTF-8 Gray ISO 8859 BCD ASCII Unicode ISO 10646 (UCS) UCS-2
Johdanto Tässä luvussa esitetään kymmenjärjestelmän lukujen eli BCD-lukujen esitystapoja digitaalilaitteissa ja lisäsisältönä NBCD-lukujen yhteenlaskualgoritmi esitellään erityisesti muuttuvien signaalien koodaukseen soveltuvat Gray-koodit esitetään tärkeimmät merkkien, kuten kirjainten ja muiden kirjoituksessa käytettävien merkkien koodaamiseen käytettävät merkkikoodit Luvun tavoitteena on antaa käsitys muiden lukujen kuin binaarilukujen esittämisestä digitaalilaitteissa tutustuttaa tärkeimpiin merkkikoodeihin ja niiden ominaisuuksiin
Kymmenjärjestelmän lukujen esitys digitaalilaitteissa Joissakin tapauksissa on edullista käyttää lukujen esitykseen 10-järjestelmää eikä 2-järjestelmää syöttö ja tulostus 10-järjestelmässä vain vähän tai ei ollenkaan laskentaa Tällöin koodataan 10-järjestelmän luvut numeroittain Koodeja nimitetään BCD-koodeiksi (Binary Coded Decimal) Tarvitaan vähintään neljä bittiä (23 = 8, 24 = 16) Erilaisia 4-bittisiä BCD-koodeja on noin 76 000 000 Yleisin on NBCD-koodi (Natural BCD); usein tätä nimitetään BCD-koodiksi NBCD-koodissa kymmenjärjestelmän numeroa vastaa sen binaariesitys neljällä bitillä NBCD-koodi on painotettu koodi (weighted code) koodisanan arvo lasketaan sen bittien arvojen painotettuna summana NBCD-koodin painot ovat 8, 4, 2 ja 1 NBCD-koodia nimitetään myös 8421-koodiksi BCD
NBCD NBCD-koodi ? Koodisanat 1010 ... 1111 eivät ole käytössä. Moninumeroiset kymmenjärjestelmän luvut esitetään kirjoittamalla numeroiden BCD- koodit peräkkäin NBCD-koodit Numero Koodi 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 Esimerkki: 18510 = 0001 1000 0101NBCD (= 101110012) Luvun BCD-esityksessä on lähes aina enemmän bittejä kuin sen binaari- esityksessä ? 1 NBCD
NBCD-lukujen yhteenlasku Lisä NBCD-lukujen yhteenlasku Σ Lasketaan yhteen numero kerrallaan Otetaan huomioon numerosta toiseen siirtyvä muistinumero Tehdään kahdessa vaiheessa ensin summataan koodit kuten binaariluvut jos summa on enintään 910 (10012), se on sellaisenaan oikea jos summa on yli 910 tai syntyy muistinumero, summaan lisätään korjauksena luku 11112 - 10012 = 01102 = 610 Esimerkki: Laske yhteen NBCD-luvut A = 0011 0100 1000 (= 34810) ja B = 0101 1000 1001 (= 58910) 1 1 1 1 1 0000 3 0011 4 0100 8 1000 + 5 + 0101 + 8 + 1000 + 9 + 1001 9 1001 13 1101 17 1 0001 + 0110 + 0110 9 1001 3 0011 7 0111
Σ Lisä BCD- (NBCD-) -summain Σ Binaarinen yhteenlasku ensimmäisellä summaimella Muistinumero Cout, jos binaarisumma > 910 Korjaus tarvittaessa lisäämällä summaan 01102 = 610 toisella summaimella & 1 Cout Cin P0 P1 P2 P3 Q0 Q1 Q2 Q3 S2 S1 S0 S3 Σ CO CI 3 P Q
BCD BCD BCD Lisä Muita BCD-koodeja Desimaali- NBCD numero 8421 2421 84(-2)(-1) Excess-3 0 0000 0000 0000 0011 1 0001 0001 0111 0100 2 0010 0010 0110 0101 3 0011 0011 0101 0110 4 0100 0100 0100 0111 5 0101 1011 1011 1000 6 0110 1100 1010 1001 7 0111 1101 1001 1010 8 1000 1110 1000 1011 9 1001 1111 1111 1100 BCD BCD
BCD-koodien ominaisuuksia Lisä BCD-koodien ominaisuuksia NBCD- (8421-) -koodi, 2421-koodi ja 84(-2)(-1)-koodi ovat painotettuja koodeja koodisanan arvo A voidaan laskea kaavasta ai ovat koodisanan bitit ja wi painot paino on yleensä positiivinen, mutta voi olla myös negatiivinen Excess-3-koodi ei ole painotettu koodi 2421-koodi, 84(-2)(-1)-koodi ja Excess-3-koodi ovat itsekomplementoivia koodeja koodisanan yhdeksän komplementti saadaan invertoimalla bitit yhdeksän komplementti vastaa binaarilukujen yhden komplementtia A = ai · wi i BCD BCD BCD
Gray-koodit 1 Keskeinen ominaisuus: koodisanasta seuraavaan vain yksi bitti muuttuu Käytetään mm. muuttuvien analogiasuureiden digitalisoinnissa Vältetään binaarikoodia käytettäessä syntyvät virhetilanteet koodisanan muuttuessa Esimerkki: Akselin asennon osoitus koodikiekolla binaarikoodissa haluttu muutos 11 00: virhe 11 10 00 Gray-koodissa haluttu muutos 10 00: ei virhettä GRAY 1 1 1 1 1 Virhe! Anturit oikein Anturit sivussa Anturit oikein Anturit sivussa Binaarikoodi Gray-koodi
GRAY Gray-koodit 2 ? Gray-koodeja 1-bittinen 2-bittinen 0 00 1 01 11 10 Peilataan Gray-koodeja 1-bittinen 2-bittinen 3-bittinen 4-bittinen 0 00 000 0000 1 01 001 0001 11 011 0011 10 010 0010 110 0110 111 0111 101 0101 100 0100 1100 1101 1111 1110 1010 1011 1001 1000 Peilataan Lisätään bitti Gray-koodeja 1-bittinen 2-bittinen 0 00 1 01 11 10 Lisätään bitti Koodisanojen määrä ja pituus valittavissa Koodisanojen määrä voi olla mikä tahansa parillinen luku Koodisanojen määrää lisätään peilaamalla ? 2 GRAY
Merkkikoodit Digitaalilaitteissa esitetään erilaisia merkkejä, kuten kirjaimia numeroita (muutoin kuin binaarilukuina) erikoismerkkejä puoligraafisia merkkejä ohjausmerkkejä (ohjauskoodeja) Esittämiseen käytetään merkkikoodeja (character code) tiettyä merkkiä vastaa tietty koodi eli bittiyhdistelmä koodin bittimäärä riippuu esitettävien erilaisten merkkien lukumäärästä: n:llä bitillä voidaan suoraan esittää enintään 2n merkkiä koodin bittimäärä on perinteisesti sama kaikille merkeille uusimmissa koodeissa käytetään yleisimmille merkeille lyhyempää esitystä (8 bittiä) kuin harvinaisemmille (16-32 bittiä) A b K Ä p ü Ω ы 1 2 3 4 5 6 7 8 9 0 ! & % [ ] = @ # <> CR LF FF SYN ESC ACK
ASCII-koodi Perinteinen merkkikoodi on ASCII-koodi (American Standard Code for Information Interchange) eli ITU-aakkosto n:o 5 7 bittiä 128 erilaista merkkiä 32 ohjausmerkkiä 10 numeroa 26 isoa kirjainta 26 pientä kirjainta 34 erikoismerkkiä ei sisällä skandinaavisia eikä muitakaan erikoiskirjaimia kansallisia versioita olemassa: osa erikoismerkeistä korvattu kansallisilla kirjaimilla, esim. å, Å, ä, Ä, ö, Ö sellaisenaan jäänyt pois käytöstä, mutta perusta uudemmille merkkikoodeille ASCII
ISO 8859 ISO 8859 -merkkikoodit 8 bittiä, 256 merkkiä Nykyään 15 eri versiota Perusversio ISO 8859-1 eli ISO Latin 1 (ei sisällä €-merkkiä) Euroversio ISO 8859-15 eli ISO Latin 9 (sisältää €-merkin) Myös mm. turkkilainen, romanialainen, kyrillinen, kreikkalainen, arabiankielinen, hepreankielinen ja thainkielinen versio Numerot, kirjaimet ja erikoismerkit koodialueella 010-12710 (0016-7F16) kuten ASCII-koodissa Ohjauskoodivaraus koodialueelle 12810-15910 (8016-9F16) Kansallisia kirjaimia ja lisää erikoismerkkejä koodialueella 16010-25510 (A016-FF16) Käytössä mm. mikrotietokoneissa Windows-käyttöjärjestelmän koodisivu 1252 on lähes ISO Latin 1 Esittele koodi- taulukot
ISO/IEC 10646 ja Unicode -merkkikoodit ISO/IEC 10646 (UCS, Universal Character Set) sisältää valtaosan maailman kielissä käytettävistä merkeistä ja lisäksi suuren määrän muita merkkejä 16- ja 32-bittiset versiot (UCS-2 ja UCS-4), versiossa 10646:2011 (tulossa voimaan vuonna 2011) 109 448 merkkiä uusia merkkejä lisätään jatkuvasti Unicode UTF-koodit (UTF = Unicode Transformation Format) Unicode-konsortion kehittämä merkkikoodi, nykyinen versio 6.0.0, jossa on 109 449 merkkiä yhteensopiva ISO/IEC 10646 -koodin kanssa monipuolisempi kuin ISO/IEC 10646 keskeiset koodityypit UTF-8, UTF-16 ja UTF-32 UTF-8 käyttää ASCII-koodin mukaisiin merkkeihin 8 bittiä ja muihin merkkeihin joko 16 tai 32 bittiä UTF-16 käyttää merkkeihin joko 16 tai 32 bittiä UTF-32 käyttää merkkeihin aina 32 bittiä
Yhteenveto Lukuja esitetään digitaalilaitteissa myös BCD-koodattuina kymmenjärjestelmän lukuina Tärkein BCD-koodi on NBCD-koodi, mutta muitakin koodeja käytetään niiden eri tilanteisiin sopivien ominaisuuksien takia NBCD-lukujen yhteenlasku tehdään kahdessa vaiheessa NBCD-summaimella Gray-koodeissa vain yksi bitti muuttuu koodisanasta seuraavaan siirryttäessä Merkkikoodeilla esitetään kirjaimia, numeroita, erikoismerkkejä, puoligraafisia merkkejä ja ohjausmerkkejä Keskeisiä merkkikoodeja ovat ASCII-koodi, ISO 8859-koodit sekä ISO 10646-koodi ja Unicode