forum.mcontrollers.com - hlavní stránka forum.mcontrollers.com - fórum

 

.: fórum - hlavní stránka :.
Technology Stronghold by Rudolf Vesely
How to build Microsoft System Center hosted cloud series
FAQFAQ HledatHledat Seznam uživatelůSeznam uživatelů Uživatelské skupinyUživatelské skupiny RegistraceRegistrace
ProfilProfil StatistikaStatistika Soukromé zprávySoukromé zprávy PřihlášeníPřihlášení

 
Projekt PMI-80 Under Emulation v1.00 ke stažení

 
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> 8051 / 8052
 
administrator
hlavní administrátor
hlavní administrátor


Založen: 2.1.2006
Příspěvky: 758
Bydliště: Ostrava

PříspěvekZaslal: 01 červenec 2014, 9:42    Předmět: Projekt PMI-80 Under Emulation v1.00 ke stažení Citovat

Neregistrovaný, ale o to známější uživatel fóra Hannibal (známý z tématu o emulátoru EMA51, zvukového generátoru, mikro fotbalu, MCU modulu, Sféry, postupu pro crack a LED kostky) byl tak hodný a zaslal mi hotovou konstrukci PMI-80.

PMI-80 Under Emulation - MINIsystem-8080Emulator
Áno - čítate správne, a fakt nejde o žart, ? hoci - keď mi fotky tejto veci O.Kowalczuk 1.4.2014 poslal, myslel som si, že si robí „prdel“. Za všetkým stojí Y.Anastassiová, známa z jednodeskových mikropočítačov EMA-51, EMA-552, a tiež Hellena-51. Uvolnila k stiahnutiu svoju aplikáciu (z r.2003!) s názvom „MINIsystem-8080Emulator“, pod ktorou PMI-80 beží... Tu je zosumarizované, o čo ide: obr.1 - schéma a interná hierarchia aplikácie „MINIsystem-8080Emulator“ (v0.86ED2) Yasmina derivátom 89C51ED2 emulovala CPU-8080 s 1,75kB RAM a obvodom 8255 v základnom móde-0: porty PA, PB, a PC pracujú iba ako paralelné. Obslužná rutina „boot-loader“ po zapnutí, či resete MCU, skopíruje obsah internej EEPROM do RAM, a zabezpečí automatické spustenie užívateľom vytvoreného programu. Plusom je i HW v MCU (serial, čítač, PWM,...), ktorý ako „alternatívne“ porty rozširuje možnosti emulátora. Je možné využiť i prerušenie „INT“ (RST 7), ktoré odovzdá emulovanému 8080 „call“ na 0038h. Emulátor má i malý „debuger“, kde v okne terminálu vidíte internú činnosť emulácie 8080 a portov, s možnosťou krokovania, pomalého behu, či editovania registrov a stránok pamäte. Spojiť to s PC môžete cez serial port, bižšie info - viz. text ďalej... Teraz k PMI-80:

Pre beh monitora PMI-80 na „MINIsystem-8080Emulátore“, boli nutné úpravy originál ROM pamäte, ktorej komentovaný Asm-výpis nájdete na www.nostalcomp.cz. Kowalczuk zmenil direktívy adries „RAM bufferu“, ktorý PMI-80 používa, z pôvodnej 1Fxxh na 06xxh (last-RAM-page MCU). Adresy emulovaného 8255 súhlasili s reálnym 8255 v PMI-80, a zvyšné zmeny sa týkali len inštrukcií „LXI“ a „OUT“. Potom stačilo použiť asembler Tasm, a hotovú PMI-80 ROM boot-loaderom prijať a uložiť do EEPROM od 0-3FFh. Pozor: pri posielaní „bin“ súborov, nezabudnite označiť na termináli status: „binary“! Schéma: piny „PA-7“ a „PC-7“ sú nezapojené, bola tam pôvodne logika a tvarovače signálu pre pripojenie magnetofónu, ako záznamového média. Tu je to nepoužité, lebo MCU má reálny UART. Zmena 74LS42N, za dekodér 74LS154, používaný veľakrát ako náhrada za MH1082: originál PMI-80 vysiela data na vstupy ABCD dekodéra MH1082 negovane: 1.znak displeja svieti pri ABCD=1111. Kowalczuk urobil v ROM úpravu, ktorá umožňuje použiť menší obvod 74LS42N. Tu sú úpravy ROM-ky: „MINI system – 8080 Emulator“

Je to aplikácia, na ktorej PMI-80 beží. Emuluje CPU-8080 s ext. INT vstupom a RAM od adr.0-6FFh (EEPROM 0-6FFh je len záloha pre užívateľský program). Porty: 00/01=adresa/data EEPROM: prístup k stránke-7 (700-7FFh), 02/03/04=H/L/SW 16bit.counter (in/out=PB0/PB1), 05/06/07=baud/bufer/ SW serial portu, 08/09/0A/0B=PA/PB/PC/SW PPI-8255 (len mód-0), 0C=port „X“, 0D/0E=bufer/SW 8bit.PWM (out=PB4), 0F=1-sec.báza. (SW-8255: ---AC-Bc (ABCc=1/0-I/O), SW-counter:00/03=stop,01= počítadlo impulzov,02=generátor, SW-PWM:00=stop,01=run, SW-serial:0101000R, R=indikuje príjem). Porty sa zrkadlia, zápis do PA-8255 urobíte rovnako na adrese 08, ako na adrese 18h, či B8h. Zápisom bajtov do CTh a CTl čítača, sa uložia data zároveň do jeho predvoľby, čo využíva mód generátor. Pre mód „counter“ (počítanie) sa musí zapísať CTh/l = 0000, aby počítal od nuly. Po pretečení FFFFh, sa opätovne nahrá do neho jeho predvoľba, čo je možné využiť pre počítanie v skrátenom cykle. Kanál PWM má fixnú freq: fosc/2 a dá sa iba zapnúť/vypnúť. Sériový port zápisom do buffera automaticky odvysiela bajt na 9600/N/8/1 a má fixný režim. Baudrate je variabilné zmenou konštanty TT pre čítač, ktorý ho časuje. Príjem bajtu indikuje bit R v jeho PSW porte (R = 1). Port „X“ je obojsmerný, t.j: čo do neho zapíšete, to i prečítate, a má 4 bity: 1111xxxx. Out 1-sec. bázy je pin P3.3, prečítanie jej portu vracia hodnotu 00/01h (pre L a H), zápisom ho - naopak na H či L úroveň môžete nastaviť. Je to využiteľné vtedy, ak používate 1-sec. výstup na generovanie prerušenia INT. Interná EEPROM stránka 07xx (xx=adresa EE), dovoľuje 8080tke zapisovať/čítať konštanty priamo v emulácii. Prerušovací systém je podobný, ako v reálnom 8080: po povolení inštrukciou „EI“, vzniká vynútený call:0038h (RST 7), pričom 8080 ďalšie prerušenie zakáže. Povoliť ho musí ďalšia „EI“, až tesne pred návratom (RET). Rozšírenie PMI-80 nie je možné: interná RAM končí adresou 6FFh, a jej prekročením od 700-FFFFh nastúpi externý access. Stratia sa porty PA, PC, a 2 bity portu „X“. No v inom prípade použitia MINI system-8080Emulátora je možné pomocou dekodérov pridať externé obvody PPI-8255 (alebo RAM), ku ktorým potom ale už pristupujete ako k RAM, nie ako k portom... Štart „boot-loadera“ je urobený automaticky, ak je detekovaná interná EEPROM ako čistá, tj.celý jej rozsah (0-6FFh) = iba bajty FFh, alebo 00. Ak sú v nej zaznamenané nejaké iné bajty, boot-loader po resete MCU automaticky načíta do RAM celý jej rozsah 0-6FFh a spustí emuláciu.Vynútiť spustenie boot-loadera je potom možné napr. držaním stlačenej klávesy „space“ na termináli, a následný reset MCU. Menu (verzia v0.86ED2): <e>, <E> erase - vymaže EEPROM 0-6FFh, alebo 700-7FFh naplnením bajtmi FFh <r> receive - príjem binárneho súboru, ak je kratší ako 0-6FFh, tak samočinný návrat <l>, <L> load - načíta (ak treba) EEPROM do RAM, rozsah: 0-3FFh, alebo 400-7FFh <s>, <S> save - uloží (ak treba) RAM do EEPROM, rozsah: 0-3FFh, alebo 400-7FFh <d> debuger - spustenie debugeru emulátora: krokovanie, editovanie, pages,...atd. <enter> „run“ mode - emulácia inštrukcií je prerušovaná zobrazovaním statusu na termináli <space> „step“ mode - emulácia inštrukcií je krokovaná so zobrazovaním statusu na termináli <r> register - editovanie registrov emulovaného 8080 CPU (porty sa nedajú editovať) <R> reset registers - vynulovanie všetkých registrov emulovaného 8080 CPU (nie portov) <p> page - vypíše na terminál celú stránku pamäte RAM v hexa a ascii zobrazení <a>, <l> editor debugeru - jednoduchý editor bajtov na adresách RAM stránok pamäte programu <q> quit - návrat do boot-loadera...

Ukážka činnosti boot-loadera pri príjme PMI-80.rom (v0.8.6ED2) a uložení do EEPROM 0-3FFh. Po následnom „reboote“, už po pár sekundách normálne naštartuje monitor prototypu PMI-80... (obvod dekodéru 74LS42N s budiacimi tranzistormi a odpormi má Oleg na spodu prototypu displeja). Ešte poznámka k debugeru: je to malý „tool“, pre úpravu bajtov RAM (v hexa) a editovaní registrov 8080 počas emulácie. Môžete s ním urobiť napr. výpis ROM PMI-80 po jednotlivých stránkach, editovať registre, alebo klávesou „space“ krokovať činnosť inštrukcií PMI-80 ROM, ako je zobrazené tu: [MINIsystem-8080 EMULATOR] Y.Anastassiou 2003

MINIsystem-8080Emulátor bol vo viacerých verziách, v0.89ED2 bola pre obvod AT89C51ED2 v puzdre PLCC-68, a emulovala dva obvody PPI-8255 (v základnom móde-0). Ako však už Oleg zistil, existujú aj „ULTRA“ verzie tohoto emulátora, ktoré v roku 2013 upravili pre použitie na 1 cyklových jadrách x51 „Children of TROY“ (autori jednodeskáča „Hellena-51“). Sú v dvoch modifikáciách, a využívajú obvody AT89LP51ED2 a AT89LP6440, obidva na frekvencii 24MHz (24-MIPS). Obidve verzie sú ale vyriešené inak, ako verzie určené pre AT89C51ED2: emulácia v AT89LP51ED2 nekopíruje obsah EEPROM do RAM, ale ju mapuje ako klasickú ROM, tj. od adr. 0-FFFh (4kB). Adresy 1000-17FFh už patria RAM-ke. Port „X“ má 6-bitov a pribudol i port „Y“, ktorý pracuje buď ako 4-bit I/O, alebo ako 4-vstupový A/D converter. Rozšírený je i počet PWM výstupov (na 4) a pridaná emulácia „2-wire“ rozhrania. U obvodu AT89LP6440 je k dispozícii až 8kB EEPROM a až 4kB RAM priamo na čipe MCU, tento obvod ale pracuje len s napätím 3,3V... Keďže je obvod AT89LP51ED2 pinovo ekvivalentný s AT89C51ED2, zapožičal som si ho (od O. Kowalczuka) a „ultra“ emuláciu som vyskúšal - rýchlosť je neuveriteľná: pri kryštáli 16MHz sa už na PMI-80 nedá písať, lebo emulovaný 8080 nedokáže ošetrovať zákmity klávesnice. Pri 24MHz má 8080 výkon asi 5 MIPS. Za zmienku stojí i presnosť emulácie: vyhodnotil ju (po pripojení externej RAM 64kB) test „8080-Exerciser“, ktorý je od verzie v0.87ED2 (LP2, LP64) „integrovaný“ a prispôsobený chalanmi Children of TROY v MCU, a dá sa spustiť: všetkých jeho 25 krokov, prešlo na emulátore bez jedinej chyby... Musím sa priznať, že ma to najskôr všetko veľmi chytilo, no s odstupom času pri písaní tohoto článku, som pomaly menil názor. Teraz považujem stavbu takéhoto mikropočítača (či už originálu PMI-80, alebo tejto miniatúrnej repliky), ako aj stavbu MINIsystem-8080Emulátora (i v rýchlej 1-cyklovej modifikácii) za zbytočnosť. Arduino valcuje naprosto všetko a PMI-80, či MINIsystem-8080 Emulátor, sú iba nevyužiteľné hračky, vhodné i napriek svojím možnostiam iba na mrhanie času ?. Postavil som to len preto, že mám na to čas a možnosti v práci vo firme. Doma totiž nemám ani pájkovačku...



PMI-80ue_Kowalczuk's_prototype_05.jpg
 Komentář:
 Velikost:  108.46 kB
 Zobrazeno:  6374 krát

PMI-80ue_Kowalczuk's_prototype_05.jpg



PMI-80ue_Hannibal's_prototype_03.jpg
 Komentář:
 Velikost:  216.96 kB
 Zobrazeno:  6374 krát

PMI-80ue_Hannibal's_prototype_03.jpg



PMI-80ue_Hannibal's_prototype_02.jpg
 Komentář:
 Velikost:  185.46 kB
 Zobrazeno:  6374 krát

PMI-80ue_Hannibal's_prototype_02.jpg



PMI-80ue_Hannibal's_prototype_01.jpg
 Komentář:
 Velikost:  249.18 kB
 Zobrazeno:  6374 krát

PMI-80ue_Hannibal's_prototype_01.jpg



PMI-80ue_Hannibal's_prototype_04.jpg
 Komentář:

Stáhnout
 Soubor:  PMI-80ue_Hannibal's_prototype_04.jpg
 Velikost:  509.29 kB
 Staženo:  373 krát


Work.zip
 Komentář:

Stáhnout
 Soubor:  Work.zip
 Velikost:  498.82 kB
 Staženo:  321 krát


Tasm_8080+8085_assembler.zip
 Komentář:

Stáhnout
 Soubor:  Tasm_8080+8085_assembler.zip
 Velikost:  41.86 kB
 Staženo:  288 krát


PMI-80ue.pdf
 Komentář:

Stáhnout
 Soubor:  PMI-80ue.pdf
 Velikost:  6.93 MB
 Staženo:  262 krát


_________________
Rudolf Veselý
Administrátor webu http://www.mcontrollers.com/ a fóra http://forum.mcontrollers.com/.
Pravidla fóra mcontrollers.com.

You can do everything in assembler, but no one wants to program in assembler anymore.
... Yukihiro Matsumoto

Rudolf Vesely on LinkedIn
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
 

Zobrazit příspěvky z předchozích:   
Zobrazit předchozí téma :: Zobrazit následující téma  
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> 8051 / 8052 Časy uváděny v GMT + 2 hodiny
 
Strana 1 z 1
Přejdi na:  
Můžete přidat nové téma do tohoto fóra.
Můžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Můžete k příspěvkům připojovat soubory
Můžete stahovat a prohlížet přiložené soubory
 



Num Lock Holder - app to hold Numlock
Copyright © 2017 Rudolf Veselý, mcontrollers.com.
Je zakázáno používat části tohoto webu bez souhlasu autora. || Powered by phpBB © 2001, 2002 phpBB Group - with RedSquare DoubleJ(Jan Jaap)