• Předurčení kódu BCD pro aplikaci v číslicové technice
  • Vývojový diagram pro převod binárních čísel do kódu BCD

1. Předurčení kódu BCD pro aplikaci v číslicové technice

  • Kód BCD reprezentuje každou desítkovou číslici (0–9) samostatně pomocí čtveřice bitů (tetrády).
  • Příklad: Číslo v binární soustavě je 1111. V kódu BCD je to 0001 0101 (jednička a pětka zvlášť).
  • Protože 4 bity umožňují 16 kombinací (), ale my využíváme jen 10, zbylých 6 kombinací (1010 až 1111) je v BCD zakázaných.
  • Využívá se především proto, aby digitální zařízení (jako kalkulačky, hodiny či váhy) mohla okamžitě a bez složitých výpočtů zobrazovat čísla v desítkové soustavě, na kterou jsme my lidé zvyklí.
Desítkové čísloD ( = 8)C ( = 4)B ( = 2)A ( = 1)
00000
10001
20010
30011
40100
50101
60110
70111
81000
91001
Desítkové čísloD ( = 8)C ( = 4)B ( = 2)A ( = 1)Poznámka
101010ZAKÁZANÝ (Pseudodekáda)
111011ZAKÁZANÝ (Pseudodekáda)
121100ZAKÁZANÝ (Pseudodekáda)
131101ZAKÁZANÝ (Pseudodekáda)
141110ZAKÁZANÝ (Pseudodekáda)
151111ZAKÁZANÝ (Pseudodekáda)

1.1 Předurčení pro aplikaci v číslicové technice

  • Proč BCD vůbec používáme, když je “méně efektivní” než čistá binární soustava?
    1. Ovládání displejů: Nejčastější použití je pro sedmisegmentové displeje. Převodník vezme 4 bity BCD kódu a přímo rozsvítí segmenty pro danou číslici.
    2. Lidské rozhraní: Všude tam, kde zařízení komunikuje s člověkem (hodiny, kalkulačky, digitální voltmetry, pokladny).
    3. Přesnost v aritmetice: V bankovnictví se BCD používá k zamezení chyb při zaokrouhlování, které vznikají při převodech mezi desítkovou a dvojkovou soustavou u desetinných čísel.
    4. Jednodušší ladění (Debugging): Když se podíváš do paměti a vidíš 0001 1001, hned víš, že je tam 19. U čisté binární soustavy bys musel v hlavě sčítat váhy bitů, což je u velkých čísel na zbláznění.

2. Algoritmus převodu: Double Dabble (Shift-and-Add-3)

  • Nejrozšířenějším algoritmem pro převod binárního čísla do BCD je Double Dabble. Funguje na principu posouvání bitů doleva do BCD registrů a přičítání korekce.

  • 2.1 Logika algoritmu:

    1. Mějme binární číslo a prázdné BCD registry (stovky, desítky, jednotky).
    2. Posuň celé binární číslo o jeden bit doleva do BCD registrů.
    3. Zkontroluj každou BCD tetrádu (každé 4 bity). Pokud je hodnota v tetrádě 5 nebo větší, přičti k ní 3.
    4. Opakuj posuv a kontrolu tolikrát, kolik bitů mělo původní binární číslo.
  • Proč se přičítá zrovna 3?

    • Při posuvu vlevo vlastně násobíme dvěma. Pokud je v registru 5, po posuvu by tam bylo 10. Jenže v BCD musíme při dosažení 10 přejít do dalšího řádu. Binární tetráda ale přeteče až u 16. Rozdíl je 6. Jelikož přičítáme 3 před posuvem, po následném posuvu (násobení dvěma) je to kýžená korekce .

3. Vývojový diagram pro převod

  • Vývojový diagram popisuje postup, jakým procesor nebo logický obvod (FPGA) tento převod provádí.

  • 3.1 Popis kroků diagramu:

    1. START: Inicializace. Nastavení počítadla cyklů na počet bitů binárního čísla (např. 8). BCD registry jsou vynulovány.
    2. KONTROLA TETRÁD: Projdou se všechny BCD tetrády.
      • Je hodnota v tetrádě ?
      • ANO Přičti 3 k této tetrádě.
      • NE Nedělej nic.
    3. POSUV (SHIFT): Posuň celý blok (BCD registry i binární číslo) o jeden bit doleva.
    4. DEKREMENTACE: Sniž počítadlo cyklů o 1.
    5. PODMÍNKA KONCE: Je počítadlo na nule?
      • NE Vrať se ke kroku 2.
      • ANO KONEC. V BCD registrech je výsledek.

4. Maximální hodnota podle počtu bitů

  • Protože BCD kód je “neefektivní” (plýtvá těmi zakázanými stavy), maximální hodnota, kterou do určitého počtu bitů uložíš, je mnohem menší než v čisté binární soustavě:
Počet bitůMax. hodnota v BCDMax. hodnota v Binární soustavěRozdíl (ztráta kapacity)
4 bity915cca 40 %
8 bitů99255cca 60 %
12 bitů9994 095cca 75 %
16 bitů9 99965 535cca 85 %