Poprzedni temat «» Następny temat
Mikrokomputer na klonie 8051
Autor Wiadomość
mr_x 



Wiek: 31
Dołączył: 12 Gru 2010
Posty: 366
Skąd: /bin/bash
Wysłany: 2011-11-16, 22:21   Mikrokomputer na klonie 8051

Jak zapewne pamiętacie, zamierzam zbudować systemik oparty na 89S8253. Od wielu tygodni piszę oprogramowanie, ale przyszedł czas, by wykonać też część sprzętową. Do tej pory używałem nieco zmodyfikowanego kitu AVT-2250, ale na nim przeprowadzam tylko testy. Zaprojektowałem taki oto schemat, ale jest bardzo rozbudowany i zanim zacznę projektować PCB, prosiłbym Was o rzucenie okiem, czy nie ma jakichś błędów, bo szkoda byłoby zrobić układ, a potem okaże się, że jest zły. Link do schematu: http://img97.imageshack.u.../mainboardk.png

EXPANSION_PORT nie ma jeszcze indeksów, ale będą to w zasadzie prawie wszystkie linie systemowe (adres, dane, sterowanie).
Nieco wyjaśnienia wymaga obecność układu U9. Ma on odłączyć MAX232 w momencie wymuszenia zera na /RS_E, bo do EXPANSION_PORT zamierzam podłączyć modem analogowy 1200 bodów.
Układ U8 jest używany podczas programowania przez ISP, którego sygnały są podłączone przez Z8 do portu LPT komputera.

Do Z3 podłączona jest klawiatura od komputera na złączu DIN (lub PS/2 z przejściówką), do Z7 podłączony jest LCD z Nokii 6610 (przetwornica 5/3.3V oraz układy dopasowania poziomów są na oddzielnej płytce razem z wyświetlaczem).

Jeśli jeszcze coś zapomniałem dodać, a chcielibyście wiedzieć, chętnie odpiszę.

Generalnie chodzi mi o to, czy nie ma rażących błędów w schemacie. Wydaje mi się, że nie, ale mogłem przecież coś przeoczyć, bo schemat jest skomplikowany.
 
     
Badman 
Nowy na forum


Dołączył: 12 Sty 2010
Posty: 36
Skąd: Góra
Wysłany: 2011-11-18, 13:50   

Super pomyślane. Jak dla mnie to brakuje dodatkowych portów we/wy w AVT2250 ciągle mi ich brak, więc może dodać coś w stylu 82C55.
Dodatkowo przydałby się scalak rozbudowujący przerwania, w senie podpięty pod np. INT1. Wejścia scalaka służyłyby jako dodatkowe linie przerwań. Kiedy wystąpiłoby pewien stan ( np. w zależności od konfiguracji) na wejściu, wyjście zgłasza przerwanie INT1. Następnie obsługa przerwania INT1 odczytuje z owego scalaka, na którym wejściu'ach nastapiło przerwanie i odp. na nie reaguje.

Dlaczego jako bufor użyłeś 74ls243 (libza nóżek) ? Nie lepiej 74ls244 bądź 74ls255, które nawet są tańsze od 74ls243 ?
 
     
kayron 
PLC FATEK, automatyka na życzenie



Wiek: 37
Dołączył: 21 Wrz 2008
Posty: 1857
Skąd: Poland
Wysłany: 2011-11-19, 20:20   

Tzn. Tak. jeżeli platforma ma mieć cechy mobilne (taki plantop na 8051) to należało by zmienić MAX232 na jakąś nowszą odsłonę pozwalającą wejść w stan uśpienia, co zmniejszy pobór mocy. Mam taki w domu jutro ci podrzucę symbol. No ja bym sie wysilił i zbudował zewnętrzny zegar taktujący CPU z dzielnikiem przez 2, aby mieć tryb Normal (te 22.1MHz/2) i Turbo (22.1MHz). Pozwoli to też w pewnym stopniu oszczędzać energię.
No i zabezpiecz sobie obwód zasilanie choćby Zenerką 5,1V 3W.
Choć nie wiem czy nei lepiej zainwestować w dzisiejszych czasach w konwerter USB<>RS232 i od razu wyprowadzić sobie USB.
PS2 to dobry pomysł bo można podpiąć myszkę lub klaw.. PC.
Układ można nieco zmniejszyć stosując GALa16V8, zamiast zwykłych TTLi 74xxx.
Widzę że zastosowałeś interfejs dla wyświetlacza z Nokii, ale ja bym tym się brudził i zainwestował w wyświetlacz graficzny na KS108 lub OLED. Co prawda więcej zachodu przy budowie uniwersalnego interfejsu (spokojnie da się), ale i możliwości sporo lepsze.
 
 
     
mr_x 



Wiek: 31
Dołączył: 12 Gru 2010
Posty: 366
Skąd: /bin/bash
Wysłany: 2011-11-20, 22:31   

Badman napisał/a:
więc może dodać coś w stylu 82C55

Owszem, pomyślałem o tym, ale planuję zrobić budowę modułową i to będzie w postaci karty rozszerzeń (tak jak w PC).
Badman napisał/a:
Dodatkowo przydałby się scalak rozbudowujący przerwania, w senie podpięty pod np. INT1. Wejścia scalaka służyłyby jako dodatkowe linie przerwań. Kiedy wystąpiłoby pewien stan ( np. w zależności od konfiguracji) na wejściu, wyjście zgłasza przerwanie INT1. Następnie obsługa przerwania INT1 odczytuje z owego scalaka, na którym wejściu'ach nastapiło przerwanie i odp. na nie reaguje.

To też rozważałem. Jest tylko mały problem. Co, kiedy przyjdzie kilka przerwań na ten układ na raz...
Badman napisał/a:
Dlaczego jako bufor użyłeś 74ls243 (libza nóżek) ? Nie lepiej 74ls244 bądź 74ls255, które nawet są tańsze od 74ls243 ?

W pierwszej wersji miałem właśnie 74LS244, ale uznałem, że 243 też się sprawdzi. A różnica w cenie jest mała (nie planuję produkcji wielkoseryjnej).
kayron napisał/a:

Tzn. Tak. jeżeli platforma ma mieć cechy mobilne (taki plantop na 8051) to należało by zmienić MAX232 na jakąś nowszą odsłonę pozwalającą wejść w stan uśpienia, co zmniejszy pobór mocy.

Szczerze mówiąc, raczej to będzie urządzenie stacjonarne i nie przejmowałem się tak bardzo poborem prądu.
kayron napisał/a:
No ja bym sie wysilił i zbudował zewnętrzny zegar taktujący CPU z dzielnikiem przez 2, aby mieć tryb Normal (te 22.1MHz/2) i Turbo (22.1MHz). Pozwoli to też w pewnym stopniu oszczędzać energię.

Tego chyba nie rozumiem. W czym to ma zmienić parametry pracy MCU?
kayron napisał/a:
No i zabezpiecz sobie obwód zasilanie choćby Zenerką 5,1V 3W.

To nie jest raczej potrzebne, chyba, że np. taki 7805 spali się w taki sposób, że napięcie nagle wzrośnie. Ale w normalnych warunkach taka dioda wydaje mi się zbędna.
kayron napisał/a:
Układ można nieco zmniejszyć stosując GALa16V8, zamiast zwykłych TTLi 74xxx.

Układy TTL, które są, to tylko peryferia niezbędne do pracy (którą założyłem). Dekoder adresów będzie na układzie EEPROM, na zewnętrznej płytce z układami rozszerzeń (wspomniane karty rozszerzające).
 
     
mr_x 



Wiek: 31
Dołączył: 12 Gru 2010
Posty: 366
Skąd: /bin/bash
Wysłany: 2011-11-20, 22:48   

Tak na marginesie zauważyłem mały błąd na schemacie. Nóżka /OE układu 62256 to 22, a przez pomyłkę wyszło dwa razy 20, ale w kolejnej wersji schematu jest to poprawione.
 
     
kayron 
PLC FATEK, automatyka na życzenie



Wiek: 37
Dołączył: 21 Wrz 2008
Posty: 1857
Skąd: Poland
Wysłany: 2011-11-21, 17:00   

Cytat:
To też rozważałem. Jest tylko mały problem. Co, kiedy przyjdzie kilka przerwań na ten układ na raz...

Kłania się brak wiedzy o układach mikroprocesorowych, ano wtedy obsługuje się to programowo.
Co do moich sugestii jeżeli ma to być układ stacjonarny, to nie maja one większego znaczenia, ale znając życie wkładając tak dużo wysiłku w projektowanie takiego układu i jego wykonanie szybko będziesz żałował że nie dodałeś tego czy tamtego.
Cytat:
kayron napisał/a:
No i zabezpiecz sobie obwód zasilanie choćby Zenerką 5,1V 3W.

To nie jest raczej potrzebne, chyba, że np. taki 7805 spali się w taki sposób, że napięcie nagle wzrośnie. Ale w normalnych warunkach taka dioda wydaje mi się zbędna.

Dobrze zaprojektowany obwód zasilania to kluczowa sprawa. Dioda nie zajmie ci dużo miejsca, a jak przypadkiem pomylisz sobie bieguny, uratuje ci system przed spaleniem.
A tak w ogóle nie wiem jaki chcesz stosować zasilacz ? Większość wtyczkowych to nic więcej jak mostek prostowniczy i góra dwa kondensatory filtrujące. Na takiej drobnicy jak Dioda Zenera nie warto raczej oszczędzać.
Zamiast dwóch kostek 65256 zastosuj sobie jedną 62128 (128KB) będziesz miał na PCB 1 scalak a nie 2, a stosując np. P1.2 do sterowania stronami (linia A16 62128) uzyskasz 128KB pamięci danych/ Programu (choć korzystanie z niej w całości jako pamięci programu wymaga specyficznego programowania).
 
 
     
mr_x 



Wiek: 31
Dołączył: 12 Gru 2010
Posty: 366
Skąd: /bin/bash
Wysłany: 2011-11-21, 20:01   

kayron napisał/a:
Kłania się brak wiedzy o układach mikroprocesorowych, ano wtedy obsługuje się to programowo.

Mam na myśli układ podłączony pod np. /INT1. Bez jakiejś pamięci w tym układzie nie da się obsłużyć kilku przerwań w trakcie obsługi poprzedniego (ale tego z /INT1, nie innych, tutaj nie ma problemu, bo wiem, że sam 8051 nie gubi innych przerwań, a czeka lub skacze do nich w zależności od priorytetu).
kayron napisał/a:
a jak przypadkiem pomylisz sobie bieguny, uratuje ci system przed spaleniem.

Właśnie dlatego dałem 4-pinowe złącze ze skrzyżowanymi na krańcach przewodami, odwrotne włożenie wtyczki niczego nie zmieni.
kayron napisał/a:
A tak w ogóle nie wiem jaki chcesz stosować zasilacz ? Większość wtyczkowych to nic więcej jak mostek prostowniczy i góra dwa kondensatory filtrujące.

Oczywiście, że stabilizowany. Początkowo na 7805, potem coś na przetwornicy impulsowej.
kayron napisał/a:
Zamiast dwóch kostek 65256 zastosuj sobie jedną 62128

Kostki 62256 już mam, a innych nawet nie da się łatwo dostać, te są najpopularniejsze.

Nadal się nie dowiedziałem, po co dawać zewnętrzne taktowanie (w sensie zewnętrznego generatora), skoro obwód oscylatora też działa.
 
     
rezasurmar 



Wiek: 39
Dołączył: 19 Kwi 2009
Posty: 540
Skąd: Tychy
Wysłany: 2011-11-22, 11:34   

W przypadku podłączenie expandera przerywań Intel 8259, dostajesz zgłoszenie, do proca, obsługujesz rejestr w 8259, czyli masz jakby podwójną obsługę przerywania. Przerywanie główne INT1, potem w podprogramie INT1 obsługujesz rejestr 8259 i już konkretne przerywania.
Swoją drogą trochę się dziwię, że robisz to na archaicznej 51', co prawda sam rdzeń jest bardzo dobry, ale lepiej było by zastosować procesor na rdzeniu 51, który jest zdecydowanie bardziej rozbudowany niż standardowy 8052.
Nawet użycie FPGA z wgranym rdzeniem 51' było by korzystniejsze.
 
 
     
mr_x 



Wiek: 31
Dołączył: 12 Gru 2010
Posty: 366
Skąd: /bin/bash
Wysłany: 2011-11-22, 12:39   

Szczerze mówiąc, akurat ten układ wybrałem, bo można go programować przez ISP. Wstyd się przyznać, ale nie mam żadnego programatora równoległego, bo do tej pory używałem AVT-2250, a tam program wgrywałem do RAM przez RS232 i jakoś nie było potrzeby budowania programatora. Poza tym ma przyzwoite peryferia (zwłaszcza SPI, którego używam).

Co do takiego rozbudowanego układu przerwań, to ma sens. Bo początkowo myślałem o czymś prostym. I mnie chodziło tylko i wyłącznie właśnie o przerwania dla (tutaj) /INT1. Swoją drogą takie układy nie są chyba teraz łatwo dostępne, bo będę szczery - gdyby w '51 były ze cztery zewnętrzne przerwania, wystarczyłoby mi to, dwa to trochę mało.
 
     
rezasurmar 



Wiek: 39
Dołączył: 19 Kwi 2009
Posty: 540
Skąd: Tychy
Wysłany: 2011-11-22, 13:02   

8259 są na allegro, tak na marginesie bardzo fajnym prockiem do tworzenia mikrokomputerów jest "był" 80C535 był chyba najbogatszą 51'.
 
 
     
mr_x 



Wiek: 31
Dołączył: 12 Gru 2010
Posty: 366
Skąd: /bin/bash
Wysłany: 2011-11-22, 13:14   

Ten układ jest ciekawy, ale nie ma ISP/SPI, a ja potrzebuję ich. Co do samego rdzenia '51 - użyłem go, bo znam oraz jest dobry. Widziałem niejednokrotnie projekty z AVR z zegarami o wiele szybszymi, ale z programem tak napisanym, że (sic!) to samo założenie '51 wykonywał szybciej (w asemblerze).
Teraz jest moda na pójście na łatwiznę, bo łatwiej wziąć szybki mikrokontroler i napisać byle jaki kod, niż wolniejszy i dobrze dopracowany kod (co widać też w komputerach, ale to inna bajka).
 
     
rezasurmar 



Wiek: 39
Dołączył: 19 Kwi 2009
Posty: 540
Skąd: Tychy
Wysłany: 2011-11-22, 15:58   

Szukałeś jakiejś alternatywy na stronie maxim, mieli swego czasu bardzo fajne procki na rdzeniu 51.
Np ten 89C430 lub C450, masz praktycznie wszystko czego by ci było potrzeba.
 
 
     
mr_x 



Wiek: 31
Dołączył: 12 Gru 2010
Posty: 366
Skąd: /bin/bash
Wysłany: 2011-11-22, 18:36   

Niewykluczone, że z czasem użyję czegoś szybszego i wtedy popatrzę na te układy. Na dzień dzisiejszy chyba pozostanę z 89S8253, ponieważ posiadam kilka sztuk, a także kod zacząłem optymalizować pod niego. To, co buduję w tej chwili nie zakończy się tylko na tym projekcie. Tak samo jak komputery, z czasem, gdy zdobędę więcej doświadczenia, mój mikrokomputer ewoluuje na coś lepszego. Zapytacie, czemu od razu tak nie zrobię? Ponieważ mam większość części do tego projektu, a poza tym nie ma się zawsze pewności, co tak naprawdę powinno być na płytce, dopóki się jej nie zrobi i oprogramuje.
 
     
rezasurmar 



Wiek: 39
Dołączył: 19 Kwi 2009
Posty: 540
Skąd: Tychy
Wysłany: 2011-11-22, 19:47   

Niestety maxim wycofał je z produkcji, pewnie za jakiś czas nie będą już dostępne.
Życzę powodzenia, sam kiedyś robiłem podobny mikrokomputer ale jeszcze na 8085 :) . Wtedy każdy komponent był w osobnym scalaku, licznik, kontroler przerywań itp.
 
 
     
kayron 
PLC FATEK, automatyka na życzenie



Wiek: 37
Dołączył: 21 Wrz 2008
Posty: 1857
Skąd: Poland
Wysłany: 2011-11-22, 22:18   

Są jeszcze ATMELowskei rdzenie 51- X2. Nie jest to tak szybkie jak MAXIMkii, ale daje ok 2 krotny wzrost wydajności.
 
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  


Powered by phpBB modified by Przemo © 2003 phpBB Group
Strona wygenerowana w 0,06 sekundy. Zapytań do SQL: 10