Vývojový kit 4-bitového procesoru Intel 4004 a 4040 AT4004

s emulací kalkulátoru Busicom 141-PF
Vývojový kit 4-bitového procesoru Intel 4004 a 4040 AT4004
Miroslav Němeček Pridal  Miroslav Němeček
  132 zobrazení
1
 0
Zaujímavé zapojenia

AT4004 je vývojový a výukový kit sloužící k základnímu seznámení s programováním 4-bitového procesoru Intel 4004 a 4040. Procesor je simulován v reálném čase pomocí procesoru ATmega8, časovaného interním oscilátorem 8 MHz. Součástí kitu je emulace kalkulátoru Busicom 141-PF. Emulované programy lze kompilovat buď jako součást vestavěné ROM paměti procesoru ATmega8, nebo editovat přímým zápisem do interní EEPROM paměti ve vestavěném editoru. Z emulovaného programu lze přistupovat ke 4-bitovému vstupnímu a výstupnímu portu, vyvedenému jednak na 9-pinový konektor CANON, a jednak na vestavěná tlačítka a LED diody. Je možné též přistupovat na ostatní tlačítka a znakový LCD displej.

Pro emulovaný program je k dispozici ROM paměť o velikosti 14 stránek po 256 bajtech (3584 bajtů na adresách 0x000 až 0xDFF) a EEPROM paměť, určená k přímé editaci programu, o velikosti 2 stránky po 256 bajtech (512 bajtů na adresách 0xE00 až 0xFFF). Jako RAM má emulovaný program k dispozici 5 paměťových bank, to je celkem 1600 číslic, resp. 800 bajtů. Kit lze napájet přes USB kabel buď z USB konektoru počítače, nebo z USB +5V nabíječky.

Kalkulátor Busicom 141-PF (UniCom 141P byla jeho OEM verze) vznikl v roce 1971 a byl postaven na procesoru Intel 4004, který firma Intel pro tento účel vyvinula. Procesor pracoval s hodinovou frekvencí 740 kHz a dobou instrukcí 10,8 a 21,6 us. Kalkulátor neobsahoval displej, ale tiskárnu s otočným tiskovým bubnem a se šířkou tisku 18 znaků. Kalkulátor mohl zobrazit až 14 číslic s plovoucí desetinnou tečkou, vnitřně počítal s přesností 16 číslic.

Schéma zapojení

Konektor USB je využit pouze k napájení kitu z externí nabíječky +5V nebo z USB portu. Procesor používá interní RC oscilátor 8 MHz. Výstupy z procesoru jsou vedeny na LED diody přes rezistory 2K2 a na port přes rezistory 470. Hodnoty rezistorů pro LED diody bude možná potřeba přizpůsobit svítivosti použitých LED diod. Ke vstupním pinům portu jsou paralelně připojena tlačítka. Připojíte-li k portu výstupní signály, nepoužívejte tlačítka pro vstupy, aby nedocházelo ke zkratování připojených výstupů. Odpor R1 reguluje předpětí pro kontrast displeje. Pro jiný displej může být nutné změnit na jinou hodnotu, typicky u některých displejů je lepší hodnota 1K. Odpor R2 řídí intenzitu podsvícení displeje.

Konstrukce

Deska plošných spojů má rozměr 100 x 75 mm a lze k jejímu návrhu použít free verzi Eagle. Plošný spoj vyrábím fotocestou z fotocuprextitu, zde stačí jednostranný. Jako tlačítka jsou použity mikrospínače bez přídavného hmatníku. Přes tlačítka lze přeložit papírový štítek s popiskami tlačítek a vyseknutými otvory pro tlačítka. Procesor je zasunut do patice DIP28, to umožňuje jeho snadnou výměnu při výměně emulované verze ROM nebo při poškození přes porty. LCD displej je k desce připojen přes pinovou a dutinkovou lištu a lze tak snadno odejmout. Plošný spoj je připraven jak pro dutinkovou lištu o výšce 5,7 mm, tak o výšce 8 mm.

Spodní strana plošného spoje:

Horní strana plošného spoje - lze nahradit 4 drátovými propojkami:

Potisk plošného spoje:

Potisk plošného spoje:

Do rohů desky jsou přišroubovány sloupky, sloužící jako nožičky:

Osazená deska, potisk je na papíře přilepeném na plošném spoji a překrytém izolepou:

Displej je připojen přes rohovou pinovou lištu:

Sestava, nahoře je displej držen pinovou lištou, dole je přišroubován ke dvěma sloupkům M3 x 8mm:

Podle odulých rohů potiskového papíru je vidět, že se s kitem už hodně pracovalo a teď je už unavený :

Štítky pro tlačítka jsou vytištěné na inkoustové tiskárně na běžný papír, z obou stran přelepené izolepou a poté vysekané díry pro tlačítka a LED diody výsečníkem 4 mm (první štítek je pro režim programování, druhý pro emulaci kalkulačky Busicom 141-PF):

Oživení

Při programování firmware do procesoru ATmega8 je potřeba nastavit pojistky procesoru takto: LOW = 0xE4, HIGH = 0xD1 (procesor pracuje s interním RC generátorem 8 MHz). Pozor pokud použijete procesor z jiného zařízení přepnutý na externí krystal - v tomto kitu (bez krystalu) nemusí jít naprogramovat, může být nutné k procesoru externě připojit krystal. To se netýká nového nepoužitého procesoru, ten je vždy přepnut na interní RC oscilátor.

Po připojení napájení by se mělo rozsvítit podsvícení displeje:

Při správné funkci procesoru a displeje by se měl po dobu necelé sekundy zobrazit úvodní text. Nebude-li text viditelný, možná bude jen nutné snížit odpor kontrastu displeje R1 z 2K2 na 1K0:

Jak kit použít

Po zapnutí kitu AT4004 se spustí programovací editační mód (na fotce s položeným štítkem tlačítek pro programování).

V programovacím módu lze prohlížet emulovaný program v ROM paměti (adresa 0x000 až 0xDFF) a editovat program v EEPROM paměti (adresa 0xE00 až 0xFFF). Na prvním řádku displeje se zobrazí 5 bajtů paměti v okolí aktuální adresy. Bajt z aktuální adresy je ohraničen lomenými závorkami. Na druhém řádku displeje je obsah aktuální adresy: adresa, obsah adresy v HEX kódu a zjednodušený mnemotechnický tvar instrukce (bez parametrů).

Programem lze listovat tlačítky SST (krok vpřed) a BST (krok zpět). Listuje se po bajtech, ne po instrukcích. Tlačítkem GTO lze skočit na zadanou adresu. Zadávání adresy lze přerušit stiskem např. SST nebo BST. Při editaci programu v EEPROM (adresy 0xE00 až 0xFFF) se zapíše nová hodnota bajtu zadáním 2 HEX číslic. Zadávání lze přerušit stiskem např. SST nebo BST. Program lze spustit buď z aktuální adresy tlačítkem 2ND RUN nebo ze začátku 256B stránky 0..15 tlačítky 2ND RUN0 až RUNF. Spuštěný program se přeruší stiskem RESET. Tlačítko 2ND volí alternativní funkci tlačítka. DEL a INS smažou nebo vloží bajt na aktuální adresu, ale pouze v rozsahu aktuální 256B stránky.

Emulace kalkulátoru Busicom 141-PF

Emulaci kalkulátoru Busicom 141-PF spustíte po zapnutí kitu stiskem tlačítek 2ND RUN (start od aktuální adresy 0) nebo stiskem 2ND RUN0. Displej kitu emuluje výstup na tiskárnu a tak se údaj objeví až po provedení některé operace.

LED indikátory: M (žlutá) je nenulový obsah paměti, OVF (červená) přetečení, NEG (zelená) negativní výsledek.

Při součtu '+' a rozdílu '-' se pracuje s akumulátorem. Nejdříve zadejte číslo a poté operaci '+' nebo '-', která se má s číslem provést. Obsah akumulátoru nakonec zobrazíte s '='. Např. "3 - 2 =" zadáte jako "3 + 2 - =".

Při násobení 'x' a dělení ':' postupujte stejně jako u současných kalkulaček, např. "2 x 3 =".

Tlačítka kalkulačky tiskněte pomalu, asi tak max. 2 stisky za sekundu, jinak se může některý stisk ztratit (obsluha klávesnice je pomalá).

Nastavení počtu desetinných míst a módu zaokrouhlení se projeví až při příštím výstupu výsledku. Mód zaokrouhlení 'FL' (floating) zobrazí číslo s maximální přesností s odstraněním nevýznamných nul, ale projeví se jen u násobení a dělení. Mód '54' výsledek zaokrouhluje, mód 'N' vypne zaokrouhlování. 'DP0' až 'DP8' nastaví počet desetinných míst na 0 až 8.

'C' vymaže vše (kromě paměti), 'CE' vymaže chybně zadaný údaj. 'S' slouží k zadání záporného čísla. 'SUB' zobrazí mezivýsledek sčítání a odečítání. 'EX' zamění registry během násobení a dělení. 'CM' zobrazí paměť a vymaže ji. 'RM' zobrazí paměť a ponechá ji. 'M+' a 'M-' přičte nebo odečte číslo od paměti. 'ADV' je posun papíru (odřádkování).

Ukázkové programy

Ukázkové programy přeložíte pomocí přiloženého překladače AS4. Z listingu překladu přepíšete HEX kódy do EEPROM paměti kitu a program spustíte. Zdrojové kódy ukázkových programů naleznete u zdrojového kódu firmware AT4004.

Příklad 1 - kopie vstupu na výstup

Program zapíšete od adresy 0xE00 a spustíte tlačítky 2ND RUNE. Stisknutá tlačítka IN0..IN3 budou rozsvěcovat LED na OUT0 až OUT3.

E00 F0
E01 FD
E02 20 30
E04 21
E05 EA
E06 F4
E07 20 40
E09 21
E0A E1
E0B 4E 02

Příklad 2 - blikání s LED

Program zapíšete od adresy 0xE80 a spustíte tlačítky GTO E 8 0 2ND RUN. LED budou střídavě blikat s prodlevou 250 ms.

E80 F0
E81 FD
E82 20 40
E84 21
E85 D1
E86 E1
E87 5E 97
E89 D2
E8A E1
E8B 5E 97
E8D D4
E8E E1
E8F 5E 97
E91 D8
E92 E1
E93 5E 97
E95 4E 85
E97 22 D5
E99 24 6F
E9B 75 9B
E9D 74 9B
E9F 73 9B
EA1 72 9B
EA3 C0

Příklad 3 - zobrazení textu

Program zapíšete od adresy 0xF00 a spustíte tlačítky 2ND RUNF. Na displeji se zobrazí text.

F00 22 40
F02 23
F03 D0
F04 E2
F05 22 60
F07 23
F08 20 18
F0A 34
F0B A4
F0C E2
F0D A5
F0E E2
F0F 61
F10 A1
F11 1C 14
F13 60
F14 73 0A
F16 4F 16
F18 2A
F19 20
F1A 48
F1B 65
F1C 6C
F1D 6C
F1E 6F
F1F 20
F20 57
F21 6F
F22 72
F23 6C
F24 64
F25 21
F26 20
F27 2A

Downloady

Schéma zapojení v Eagle Free

Dokumentace k procesoru 4004 a kalkulačce 141-PF

Uživatelská příručka kitu AT4004 (zatím v CZ, na EN verzi se pracuje)

Grafické podklady (schéma a plošný spoj)

Zdrojové kódy a firmware kitu AT4004

Utility, překladač AS4

Pôvodný článok - klikni



Páčil sa Vám článok? Pridajte k nemu hodnotenie, alebo podporte jeho autora.
 

     

Komentáre k článku

Zatiaľ nebol pridaný žiadny komentár k článku. Pridáte prvý? Berte prosím na vedomie, že za obsah komentárov je zodpovedný užívateľ, nie prevádzkovateľ týchto stránok.
Pre komentovanie sa musíte prihlásiť.

Vyhľadajte niečo na našom blogu

Webwiki ButtonSeo servis