4 bitový počítač

Klasické bastlení z domácích zásob

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
danhard
Příspěvky: 6646
Registrován: 05 bře 2007, 00:00
Bydliště: Jesenice u Prahy

#76 Příspěvek od danhard »

Its processor architecture is based on the 16-bit HP 2100-series minicomputers, but implemented in a bit-serial way (the processor's ALU only processes 1 bit at a time instead of 16, which makes it slower, but requires fewer transistors to implement and is therefore cheaper). The processor's frequency is 8MHz and can execute about 75kIPS.
Uživatelský avatar
asdf
Příspěvky: 707
Registrován: 06 říj 2022, 00:00
Kontaktovat uživatele:

#77 Příspěvek od asdf »

Aha. Takže je to tak trochu jednobitové. :-)
Uživatelský avatar
danhard
Příspěvky: 6646
Registrován: 05 bře 2007, 00:00
Bydliště: Jesenice u Prahy

#78 Příspěvek od danhard »

lesana87 píše:A pro výpočet A - B je výhodné použít borrow = /carry, pak stačí do sčítačky pustit A a /B. Ušetří se dva XORy. Proto je to v těch diskrétních ALU tak zaonačené.
S GALem /B v matici funkce tak jednoduše nejde, ale dá se to udělat jako příprava, že naplníš registr B hodnotou /B.
Mikroprogram obslouží maximálně 16 instrukcí, resp. NOP (fetch fáze) a 15 instrukcí.
NOP bude trvat 1 mikroinstrukci, ostatní budou NOP + 2 mikroinstrukce.
Instrukce bude mít format Instr, Par1, Par2.
Parametry Par1, Par2 budou při skoku adresa.
Horních 16 adres bude rezervováno na pracovní registry.
Do těch se bude přistupovat zkráceně, takže na adresaci stačí jeden parametr.
Instrukce SET C a CLR C žádný parametr nepotřebují.
Naposledy upravil(a) danhard dne 25 lis 2025, 22:32, celkem upraveno 1 x.
Uživatelský avatar
asdf
Příspěvky: 707
Registrován: 06 říj 2022, 00:00
Kontaktovat uživatele:

#79 Příspěvek od asdf »

Já bych to možná udělal tak, že bych do A dal /A operací NOT A. Takovou bys tam asi stejně chtěl mít. Jestli se vejde.
Ta zkrácená adresace posledních 16-ti nibble je fajn, ale aby ti na to zbyly instrukční kódy.
Uživatelský avatar
danhard
Příspěvky: 6646
Registrován: 05 bře 2007, 00:00
Bydliště: Jesenice u Prahy

#80 Příspěvek od danhard »

To záleží jak bude aritmetika udělaná a kam se ukládá výsledek.
Pokud ale pracuji nad A akumulátorem a B je druhý operand, tak to tak nepotřebuji.

Zkrácená adresace pro registry je nutnost, protože jinak to se 3-mi takty mikroinstrukcí nenaadresuji.
Ale protože je adresní prostor pro program celých 8 bitů, tak můžu na ty registry skákat a zapisovat do nich program :D

Ale možná to pro verzi s CPLD upravím na delší délku mikroprogramu, než co by odpovídalo MH74188.
V CPLD to dekódovaní mikroinstrukce vypadá spíš, jako diodová matice, takže prázdnými mikroinstrukcemi nic moc nepřibude.
Uživatelský avatar
asdf
Příspěvky: 707
Registrován: 06 říj 2022, 00:00
Kontaktovat uživatele:

#81 Příspěvek od asdf »

Aha, ty chceš mít jenom tu zkrácenou adresaci. Já myslel, že bude dlouhá i zkrácená (jako u 6502). Tak to jo.
Uživatelský avatar
danhard
Příspěvky: 6646
Registrován: 05 bře 2007, 00:00
Bydliště: Jesenice u Prahy

#82 Příspěvek od danhard »

Se mi to tam jinak nevejde a v záchytném registru mám jen jeden parametr.

Takže při skoku čtu instrukci, adr1, adr2 a na tu hned skáču.
Při práci s registry čtu ins, adr1, provedu LDA/STA na adr1 .
Při práci s aritmetikou čtu ins, par1, mezi A, B provedu výpočet podle par1 - výsledek do A.
Uživatelský avatar
asdf
Příspěvky: 707
Registrován: 06 říj 2022, 00:00
Kontaktovat uživatele:

#83 Příspěvek od asdf »

Jo, to je dobrý. Ono s 256 bajty kódu bude asi 16 registrů na data stačit. A čím kratší instrukce, tím se tam toho víc vejde.
Uživatelský avatar
danhard
Příspěvky: 6646
Registrován: 05 bře 2007, 00:00
Bydliště: Jesenice u Prahy

#84 Příspěvek od danhard »

I/O prostor bude taky 16 adres.
Takže ins, adr1, provedu IN/OUT na adr1 s A, nebo by šlo taky ins, adr1, par2 - OUT na adr1.
Počítám, že případná aplikace by bylo řízení nějaké mašinky, takže řídící pulzy můžou být přímo dekódované adresy I/O bez dat přes 74HCT137, případně by tam byl 74HCT259 a na vstupy 74HCT151.
Na zobrazení by byl samostatnej modul s pamětí čísla i dekódováním.
Uživatelský avatar
danhard
Příspěvky: 6646
Registrován: 05 bře 2007, 00:00
Bydliště: Jesenice u Prahy

#85 Příspěvek od danhard »

Se 4-mi bity je opruz, asi se pustím do 8-mi biťáku.
Líbí se mi https://www.kenbak.com/ :D
Uživatelský avatar
lesana87
Příspěvky: 4399
Registrován: 20 zář 2014, 00:00

#86 Příspěvek od lesana87 »

Mně se líbí ten Nibbler, tak to vidím na 8-bitovou paměť programu, asi 1KB a 4-bitovou paměť dat, 16 nibblů, stejně tak 16 portů.
Uživatelský avatar
danhard
Příspěvky: 6646
Registrován: 05 bře 2007, 00:00
Bydliště: Jesenice u Prahy

#87 Příspěvek od danhard »

Nibbler má plně oddělený prostor programu a dat.
Oba 12-ti bitově adresované.
Neumí podprogram, ani indexové adresování.
Uživatelský avatar
lesana87
Příspěvky: 4399
Registrován: 20 zář 2014, 00:00

#88 Příspěvek od lesana87 »

Neříkám, že ho chci kopírovat, jen se inspirovat. PIP taky nemá index ani podprogram.
Uživatelský avatar
asdf
Příspěvky: 707
Registrován: 06 říj 2022, 00:00
Kontaktovat uživatele:

#89 Příspěvek od asdf »

Taky by možná byla možnost udělat opravdu jednoduchý 4-bitový počítač, aby byl malinký, a na něm naprogramovat emulátor třeba 8080 nebo Z-80. Sice by to bylo pomalé, ale pohodlně by se na tom programovalo.
Uživatelský avatar
danhard
Příspěvky: 6646
Registrován: 05 bře 2007, 00:00
Bydliště: Jesenice u Prahy

#90 Příspěvek od danhard »

To nejde, bez HW podpory nic nenaprogramuješ.
Musí to umět podprogram (do nějaké hloubky), nepřímé, nebo indexové adresování a pokud to má fungovat v reálném čase, tak interrupt.
A nejlepší podpora je dlouhá délka mikroinstrukcí a dat.
Musíš umět počítat adresaci a to nepoměr mezi délkou dat a adresací značně ztěžuje.

Takže velmi rychle se přišlo na to, že 8 bitů dat a 16 bitů adresace je pro jednoduché CPU optimum - 6502 :D

Větší počet registrů a zdvojené registry, 16 bit operace - 8080

A zdvojené prostředí pro interrupt - Z80

Já jdu opačným směrem, jde mi o to, co se dá nacpat do nějakého minimálního prostoru, tím, že se to optimalizuje.

Začínal jsem před 50-ti lety na Wang 2200 :D
Odpovědět

Zpět na „Zapojení ze šuplíku“