Witam.
Jako iż wakacje i mam dużo czasu postanowiłem zabrać się za zbudowanie odświeżonej kopii IBM PC.
Procesorem układu byłaby ATmegax128/ATmega128 która odpowiadała by za emulację 8086, jako RAM służyło by 1MB 16bitowej równoległej pamięci SRAM.
Program w atmedze odpowiadał by za pobieranie programu z ramu i jego interpretowanie, emulował by również przerwania biosu jak i dosowe 21h.
Komunikacja po szynie SPI z kartą pamięci SD która służyła by jako dysk twardy.
W trybie tekstowym atmega przesyłała by znaki do wyświetlenia po szynie I2C lub SPI do układu karty graficznej (jeszcze nie obmyślone
.
W trybie graficznym adresowanie pamięci 0xA0000-0xBFFFF odwoływało by się bezpośrednio do buforu karty graficznej.
Zastanawiam się nad sposobem komunikacji z myszą i klawiaturą:
a) podłączyć bezpośrednio klawiaturę i mysz do portów atmegi, w razie poruszenia myszką czy naciśnięcia klawisza generowane było by przerwanie podczas którego atmega odbierała by dane od myszy/klawiatury i buforowała je w swojej wewnętrznej pamięci sram. Emulowane przerwania biosu pobierały by dane z tych buforów.
Obawiam się jednak, że przy takim rozwiązaniu ciągłe poruszanie myszką może drastycznie zwolnić pracę procesora (atmega będzie wykonywała tylko żądanie przerwania)
b) podłączyć klawiaturę, mysz do osobnego małego mikrokontrolera który buforował by dane i w razie potrzeby transmitował dane przez I2C/SPI do głównego procesora.
c) tak jak wyżej, lecz użyć jakiegoś mikrokontrolera z większa ilością wyprowadzeń i fizycznie zmapować cześć adresowania dla buforu klawiatury/myszy.
Rozwiązanie to nie podoba mi się o tyle, że tworzy dodatkową ilość połączeń;D
Dużym zapytaniem jest dla mnie szybkość emulacji, przy wydajności oryginalnego 8086 wynosząca 0,33MIPS i wydajności ATmegix na poziomie 32MIPS teoretycznie emulacja może być aż 96 razy wolniejsza a i tak zachowam oryginalną prędkość działania. Jednak mogłem coś pominąć
Wybór pomiędzy ATmega128 a ATmegax128 jest uzależniony właśnie od prędkości, gdy 16Mhz w Atmedze128 byłoby wystarczające wolałbym nie wybierać mało dostępnej ATmegix.
Czekam na jakieś opinie i wskazówki
Jako iż wakacje i mam dużo czasu postanowiłem zabrać się za zbudowanie odświeżonej kopii IBM PC.
Procesorem układu byłaby ATmegax128/ATmega128 która odpowiadała by za emulację 8086, jako RAM służyło by 1MB 16bitowej równoległej pamięci SRAM.
Program w atmedze odpowiadał by za pobieranie programu z ramu i jego interpretowanie, emulował by również przerwania biosu jak i dosowe 21h.
Komunikacja po szynie SPI z kartą pamięci SD która służyła by jako dysk twardy.
W trybie tekstowym atmega przesyłała by znaki do wyświetlenia po szynie I2C lub SPI do układu karty graficznej (jeszcze nie obmyślone
W trybie graficznym adresowanie pamięci 0xA0000-0xBFFFF odwoływało by się bezpośrednio do buforu karty graficznej.
Zastanawiam się nad sposobem komunikacji z myszą i klawiaturą:
a) podłączyć bezpośrednio klawiaturę i mysz do portów atmegi, w razie poruszenia myszką czy naciśnięcia klawisza generowane było by przerwanie podczas którego atmega odbierała by dane od myszy/klawiatury i buforowała je w swojej wewnętrznej pamięci sram. Emulowane przerwania biosu pobierały by dane z tych buforów.
Obawiam się jednak, że przy takim rozwiązaniu ciągłe poruszanie myszką może drastycznie zwolnić pracę procesora (atmega będzie wykonywała tylko żądanie przerwania)
b) podłączyć klawiaturę, mysz do osobnego małego mikrokontrolera który buforował by dane i w razie potrzeby transmitował dane przez I2C/SPI do głównego procesora.
c) tak jak wyżej, lecz użyć jakiegoś mikrokontrolera z większa ilością wyprowadzeń i fizycznie zmapować cześć adresowania dla buforu klawiatury/myszy.
Rozwiązanie to nie podoba mi się o tyle, że tworzy dodatkową ilość połączeń;D
Dużym zapytaniem jest dla mnie szybkość emulacji, przy wydajności oryginalnego 8086 wynosząca 0,33MIPS i wydajności ATmegix na poziomie 32MIPS teoretycznie emulacja może być aż 96 razy wolniejsza a i tak zachowam oryginalną prędkość działania. Jednak mogłem coś pominąć
Wybór pomiędzy ATmega128 a ATmegax128 jest uzależniony właśnie od prędkości, gdy 16Mhz w Atmedze128 byłoby wystarczające wolałbym nie wybierać mało dostępnej ATmegix.
Czekam na jakieś opinie i wskazówki