Stránka 6 z 18

Napsal: 25 lis 2025, 18:37
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.

Napsal: 25 lis 2025, 18:52
od asdf
Aha. Takže je to tak trochu jednobitové. :-)

Napsal: 25 lis 2025, 20:59
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í.

Napsal: 25 lis 2025, 21:21
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.

Napsal: 25 lis 2025, 22:31
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.

Napsal: 26 lis 2025, 09:48
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.

Napsal: 26 lis 2025, 13:48
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.

Napsal: 26 lis 2025, 14:22
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.

Napsal: 26 lis 2025, 16:31
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.

Napsal: 26 lis 2025, 19:10
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

Napsal: 26 lis 2025, 21:16
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ů.

Napsal: 27 lis 2025, 10:28
od danhard
Nibbler má plně oddělený prostor programu a dat.
Oba 12-ti bitově adresované.
Neumí podprogram, ani indexové adresování.

Napsal: 27 lis 2025, 10:38
od lesana87
Neříkám, že ho chci kopírovat, jen se inspirovat. PIP taky nemá index ani podprogram.

Napsal: 27 lis 2025, 11:57
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.

Napsal: 27 lis 2025, 17:13
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