- 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 to0001 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é číslo | D ( = 8) | C ( = 4) | B ( = 2) | A ( = 1) |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 1 | 0 | 0 | 0 | 1 |
| 2 | 0 | 0 | 1 | 0 |
| 3 | 0 | 0 | 1 | 1 |
| 4 | 0 | 1 | 0 | 0 |
| 5 | 0 | 1 | 0 | 1 |
| 6 | 0 | 1 | 1 | 0 |
| 7 | 0 | 1 | 1 | 1 |
| 8 | 1 | 0 | 0 | 0 |
| 9 | 1 | 0 | 0 | 1 |
| Desítkové číslo | D ( = 8) | C ( = 4) | B ( = 2) | A ( = 1) | Poznámka |
|---|---|---|---|---|---|
| 10 | 1 | 0 | 1 | 0 | ZAKÁZANÝ (Pseudodekáda) |
| 11 | 1 | 0 | 1 | 1 | ZAKÁZANÝ (Pseudodekáda) |
| 12 | 1 | 1 | 0 | 0 | ZAKÁZANÝ (Pseudodekáda) |
| 13 | 1 | 1 | 0 | 1 | ZAKÁZANÝ (Pseudodekáda) |
| 14 | 1 | 1 | 1 | 0 | ZAKÁZANÝ (Pseudodekáda) |
| 15 | 1 | 1 | 1 | 1 | ZAKÁ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?
- 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.
- Lidské rozhraní: Všude tam, kde zařízení komunikuje s člověkem (hodiny, kalkulačky, digitální voltmetry, pokladny).
- 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.
- 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:
- Mějme binární číslo a prázdné BCD registry (stovky, desítky, jednotky).
- Posuň celé binární číslo o jeden bit doleva do BCD registrů.
- 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.
- 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:
- START: Inicializace. Nastavení počítadla cyklů na počet bitů binárního čísla (např. 8). BCD registry jsou vynulovány.
- 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.
- POSUV (SHIFT): Posuň celý blok (BCD registry i binární číslo) o jeden bit doleva.
- DEKREMENTACE: Sniž počítadlo cyklů o 1.
- 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 BCD | Max. hodnota v Binární soustavě | Rozdíl (ztráta kapacity) |
|---|---|---|---|
| 4 bity | 9 | 15 | cca 40 % |
| 8 bitů | 99 | 255 | cca 60 % |
| 12 bitů | 999 | 4 095 | cca 75 % |
| 16 bitů | 9 999 | 65 535 | cca 85 % |