Elektroda.pl
Elektroda.pl
X
IGE-XAOIGE-XAO
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

architektura systemu mikroprocesorowego

07 Lis 2004 00:02 3692 18
  • Poziom 19  
    Coraz więcej elektroników sięga po mikrokontrolery. Na swoje potrzeby tworzą mniej lub bardziej rozbudowane systemy. W każdym z tych projektów można wyróżnić kilka podstawowych bloków. Ich realizacja sprzętowa w wielu przypadkach jest taka sama. Wniosek nasuwa się sam - systemy takie mogą być składane z modułów.

    Pozwolę sobie zainicjować dyskusję nad architekturą systemów mikroprocesorowych na przykładzie mojego projektu. W moim zamierzeniu treść tego wątku ma być pomocna wszystkim sięgającym po mikrokontrolery.

    Projekt: minikomputer o otwartej architekturze.
    Głównym przeznaczeniem systemu jest akwizycja danych analogowych i cyfrowych pochodzących z różnych źródeł o różnych formatach danych.

    Założenia.
    System składa się z następujących elementów/bloków:
    - mikrokontroler (minimum 32kB pamięci programu)
    - port RS232 (transmisja danych)
    - port PS/2 (PC-towa klawiatura lub myszka)
    - port I2C (zbieranie danych z przetworników)
    - port 1-Wire (zbieranie danych z przetworników)
    - port Expansion (linie adresowe, danych oraz innych sygnałów np. R/W, CE, RESET, INT) dla przystawek
    - 8-bitowy port I/O (odczyt stanów i sterowanie)
    - wejście analogowe 0-5V (pomiar)
    - wyjście analogowe 0-5V (sterowanie)
    - pamięć NVRAM dla danych 2MB (akwizycja danych)
    - RTC (akwizycja danych)
    - podświetlany wyświetlacz graficzny
    - klawiatura lokalna
    - przetwornik akustyczny
    - akumulator

    Oprogramowanie mikrokontrolera powinno zawierać procedury obsługi:
    - RTC i alarmów
    - rejestracji wielkości mierzonych (wejścia cyfrowe i analogowe)
    - obługa wyświetlacza w szczególności graficznej prezentacji wyników na LCD
    - odczytu i zapisu danych z i2c, 1-wire
    - przetwornika A/C
    - przetwornika C/A
    - sterowania 8-bit wyjścia
    - sterowania 8-bit wejścia
    - transmisji danych przez RS232 do PC-ta
    - klawiatury i myszki PS/2 (automatyczne wykrywanie)
    - wykrywania przystawek

    Mikrokontroler powninien być progamowany w systemie.

    Wybrane przeze mnie podzepsoły (wraz z wyjaśnieniem) to:
    - mikrokontroler - ADµC843 (~16MIPS, 62kB EEPROM, przetworniki 8*12-bit A/C i 2*12-bit C/A, 2*PWM, WatchDog, programowany w systemie przez RS232, sprzętowa obsługa: UART, I2C, SPI)
    - konwerter RS232 - MAX203 (nie wymaga kondensatorów)
    - LCD - z telefonu Nokia (graficzny, prosta obsługa)
    - RTC - DS1251 (RTC + 512kB NVRAM)
    - NVRAM - DS1270 Dallas (2MB NVRAM, szybkość)
    - 8-bit I/O - PCF8574 (prosta obsługa)
    - przetwornik akustyczny (z telefonu komórkowego)
    - zasilanie - akumulator, zasilacz/ładowarka
    - klawiatura lokalna - 21-to klawiszowa, matrycowa, obsługa poprzez MAX7312 (16-bit I/O na I2C)

    System ma być z jednej strony jak najprostszy, a z drugiej ma bez rozbudowy umożliwiać akwizycję danych w podstawowym zakresie.
    Z uwagi na przewidywane nieprzewidywalne rozbudowy pojawiło się złącze Expansion dla kartridży z przystawkami.

    Schematu powyższego systemu jeszcze nie ma.

    Proszę o sugestie w kwestii doboru podzespołów i architektury.
  • IGE-XAOIGE-XAO
  • Poziom 28  
    IMHO do celow edukacyjnych nie warto inwestowac w uC z FLASHEM. Program powinien byc ladowany i wykonywany z zewnetrznej pamieci RAM. Do FLASHA co najwyzej zaladowac jakis prosty BIOS ktory by umozliwial ladowanie programu do RAM (np. przez RS) I w zasadzie otrzymujemy kit AVT 2250.
    Pozdro
    Dexter
  • IGE-XAOIGE-XAO
  • Poziom 19  
    OK. Pomysł z "BIOSem" we FLASHu jest ciekawy.
    Ja widzę to tak, że FLASH mikrokontrolera zawiera procedury obługi peryferiów, w tym ładowania kodu programu do RAMu - można nawet pokusić się o określenie system operacyjny.
    Do RAMu - powiedzmy do tych 512kB w RTC - ładowany jest konkretny program/programy obsługi, który odwoływałby się m.in. do ww. procedur.
  • Specjalista PLD
    -> MMarek17
    Pomysl wydaje mi sie fajny i dosc dobrze przemyslany, jednakze juz cos w ten desen istnialo dawniej i polegalo na ukladaniu w stos laczonych bergami plytek z rozna funkcjonalnoscia. Istnieje to do dzis pod nazwa chyba PC104 albo jakos tak. Nie umniejsza to wszakze przydatnosci Twojego pomyslu. W takiej formie jaka proponujesz zamknelibysmy sie w konkretnej konstrukcji systemu uruchomieniowego, a takich, jak wiemy jest wiele na rynku. Widzialbym to zatem w nastepujacej formie:
    wiele standardowych modulow analogowych, cyfrowych, mieszanych i mikroprocesorow dolaczanych do wspolnego backplane'u zaopatrzonego w jeden lub kilka ukladow FPGA. po co FPGA? Ano wydaje mi sie, ze byloby to cenne uzupelnienie przy laczeniu standardowych modulow na rozne sposoby zalazne od doraznych potrzeb. W FPGA moznaby rowniez implementowac bardzo rozne i szybkie uklady I/O (n.p. dla czestosciomierza czy oscyloskopu). Taki FPGA moze byc "klejem" dla innych ukladow, a takze moze zawierac tzw. SoftCore, ktore sa latwo osiagalne w internecie. Zalet uzycia SoftCore chyba nie trzeba tu cytowac.
    Moim zdaniem dopiero taki uklad dawalby duze mozliwosci projektantom nowego systemu mikroprocesorowego, przy czym docelowy system moglby skladac sie tylko z pewnego podzbioru dostepnych modulow uniwersalnych, obnizajac koszty calego systemu uruchomieniowego.
    Istnieje obecnie wiele darmowego softu dla FPGA co znakomicie obniza koszty calego systemu.

    Pozdrawiam, yego.
  • Poziom 19  
    Z przyjemnością słyszę odzew formumowiczów. Wszelkie Wasze uwagi i sugestie są bardzo pomocne.

    Oczywistym jest, że:
    - w chwili obecnej można kupić sporo modułów uruchomieniowych z różnymi mikrokontrolerami jednak ich cena jest bardzo wysoka, a rozmiary duże. Wynika to m.in. z istnienia pola do montażu układów użytkownika. Moduły te nie zawsze spełniają oczekiwania,
    - w kwestii mikrosystemów trudno jest wymyślić co innowacyjnego.

    Przykładem innowacyjności jest chociażby komputer C-One (http://c64upgra.de/c-one/), który jest na tyle rekonfigurowalną jednostką, że może emulować różne komputery.

    Gwoli uzupełnienia. Prezentowany przeze mnie mikrokomputer ma być urządzeniem miniaturowym i przenośnym (stąd m.in. zasilanie akumulatorowe, zastosowanie elementów SMD o jak naprostszej aplikacji (w tym także wymagających jak najmniej elementów zewnętrznych).

    Pomysł z FPGA jest dobry tylko, że komplikuje nieco programowanie systemu, które z założenia ma być również jak najprostsze. Dlatego chciałbym jednak poprzestać na mikrokontrolerze i jego oprogramowaniu.

    Do przedstawionego na wstępie wykazu elementów wprowadziłem małą zmianę, mianowicie zamiast układu MAX203 zastosuję układ DS275, który również nie wymaga kondensatorów, ale jest od niego mniejszy (obudowa 8-pinowa, tylko 1 tor RxD/TxD).

    Mam nadzieję, że wynikiem dyskusji w tym temacie będzie projekt, który będę mógł Wam przedstawić. W chwili obecnej intensywnie pracuję nad doborem elementów oraz schematem.
  • Poziom 22  
    do takiego systemu dodaj RS485 +bootloader
    w tej chwili też myśle nad takim systemem i próbuje pogodzić funkcjonalność z ceną
  • Poziom 19  
    RS485 - myślę że przydałby się, trzeba tylko poszukać jakiegoś niedużego scalaczka.
    Co do kosztów to dobrze było by je zminimalizować ale obawiam się, że miniaturyzacja nie idzie w parze z taniością. Porównam ceny kilku wariantów wykonania danego bloku np. ww. RS485.

    Pozdrawiam
    Marek
  • Poziom 22  
    SN75176 nie jest za drogi do tego parę diod do zabezpieczenia - koszt niewielki
    ale jeśli się zdedydujemy na optoizolację to trzeba jeszcze trzy trznsoptory (np.PC900 bo mało elementów) i jakąś przetwornicę i to dość podwyższa koszty (sama przetwornica jest droga - koło 40 zł)

    za to jak dasz SMD to płytka cię wyjdzie taniej bo będzie mniejsza
  • Poziom 19  
    Sam SN75176 b.tani :) Jeśli pójść w optoizolację i przetwornicę to można dać MAX1490B (Complete, Isolated, Full-Duplex, RS-485/RS-422 Data Interface, 250kbps) za 80zł.
  • Poziom 22  
    ja bym jednak został przy mojej wersji (nie jestem pewien czy max byłby taki dostępny)
    no ale trzeba by też się postarać o jakiąś pamięć nieulotną do akwizycji danych np. AT45DB161 - kosztuje jakieś 20 zł i chyba by wystarczyła nawet do gromadzenia sporej ilości danych.
    taka funkcja naszego systemu byłaby na pewno sporym atutem bo potem takie dane można by jakoś zbierać (rs485) i przetwarzać w kompie no i np. wizualizować na jakimś wykresie.
  • Poziom 29  
    A ja bym się zastanowił nad kształtem wtyczki, zasilającej ;-)
    Jestem zaskoczony, myślałem pada propozycja ’51, spodziewałem się awantury, a tu cisza i spokój, to chyba coś znaczy. Powstanie kolejne AVT coś tam coś tam, a niech tam, kogo to.....
    Mmarku, w zasadzie jaki jest tego cel? Projektujesz coś dla siebie i ciekaw jesteś uwag innych osób, czy myślisz o czymś co nawet mogło by doczekać się jakiegoś komercyjnego sukcesu?
    Pomysł spłodzenia jakiegoś Gnu na Elce podoba mi się. To nawet zabawa (może nie tylko zabawa) dla dwu zespołów (hard i soft). Przez dobrą definicję i realizację BIOSu można by ułatwić życie wszystkim (szczególnie tym z ograniczeniem wielkości kodu). Czyli mamy już temat pochodnego wątku, czy nawet dwu dotyczących oprogramowania, „Lista funkcji” i „Realizacja”.
    Co do żelastwa, powinno być nie za drogie, czyli ograniczone, ale nie aż tak że gdy chcę migać diodką to muszę mieć jeszcze i magistralę i jakiś moduł I/O. ’51 to pomimo tego że w wydaniu microconverter temat troszkę jednak „odgrzewany”. Czemu nie wspiąć się numerek wyżej i mieć ARM’a? (EP coś obiecywało za 300 PLN) . Yego proponuje backplaina z PLD, czyli PLD miało by stać się centralną częścią? Też mi się nie podoba. Istotą powinien się chyba stać jakiś element naprawdę ogólny, może właśnie magistrala, czemu nie „104”.
    PLD na kilka lat do przodu wydaj się być nie do ominięcia, nie można tego lekceważyć. Teoretycznie wszystko (cyfrowe) co proponujesz Mmarku można zakląć w jakimś fpga i traktować to poprzez bios jak cokolwiek: ADUC’a, AVR’a czy innego PIC’a i to nawet w jednym projekcie zależnie od potrzeby.
    Magistrala, hymm, w sieci już było, PICSTICK, czy jakoś tak.
    Tak jak proponujesz, to na moje oko jednak zamknięty systemik. O właśnie, zasilanie, należało by dodać jakiś obwodzik umożliwiający „samobójstwo” sterownika (LDO & Shut Down).
    Podsumowanie czyli mój głos w dyskusji:
    - określmy magistralę
    - określmy BIOS
  • Poziom 19  
    W odpowiedzi na pytania XITAM:
    - kształt wtyczki też ma znaczenie ;) ,
    - kolejne AVT coś tam - nie sądzę, to nie ma być zestaw uruchomieniowy tylko przenośny mikrokomupter o w miarę dużych możliwościach rozbudowy,
    - tak, projektuję coś dla siebie,
    - tak, jestem ciekaw opinii i sugestii innych osób,
    - tak, ma to cel edukacyjny (nie tylko dla mnie) - tak jak napisałem na wstępie chciałbym, aby elektronicy znaleźli tu pomocne informacje,
    - tak, chciałbym, aby był to open source - zadeklarowałem też, że udostępnie projekt w tym również kod. Gdy wejdziemy w etap ujawnienia schematu, a potem kodu procedur obsługi hardware dyskusja jak mam nadzieję wejdzie w sferę open source.
    - nie, projekt nie jest komercyjny.

    Dlaczego kolejny raz coś na MCS-51?
    Każdy ma jakiś swój ulubiony mikrokontroler.
    Jeśli prezentowany system podzielić na bloki to bez większych problemów każdy zastosuje swój ulubiony mikrokontroler.
    Nie chciałbym by wątek przerodził się w dyskusję o wyższości jednego uC nad innym.

    Dlaczego mikrokonwerter?
    Spore możliwości sprzętowe, mała obudowa itd. Myślałem również o DS89C450, ale jego cena ...

    ARM - póki co cena, póki co jeszcze mało znane. Skądinąd właśnie ARMom wróżę dobrą przyszłość. Z powodzeniem zastąpią 51.

    Zamknięty system - nie, ponieważ ma posiadać możliwość szybkiego dołączania różnych modułów.

    Co do samobója systemu to jest już uwzględniona taka opcja - stabilizatory MAX1659 i MAX1658.

    BIOS - to jest dobre rozwiązanie, zamysł był taki by ów BIOS był zaszyty w postaci procedur w µkontrolerze, do NVRAM natomiast byłby ładowany kod programu wykorzystujęcego owe procedury, który realizowałby określone funkcje. Pojawił się również zamysł o zaszycie w mikrokontroler interpretera języka wyższego poziomu co dało by możliwość pisania programów bezpośrednio na mikrokomputerze. Nie jest to pomysł nowatorski. Jak na razie zajmę się dopracowywaniem schematu systemu.

    Yarpen - dzięki za wskazówkę na AT45DB161 (25zł za 16Mbit to dobra cena).
  • Poziom 27  
    hmmm, a może pójść w kierunku, który zaproponował xitami? Chętnie zobaczyłbym projekt opart na jakimś FPGA. To byłby naprwdę interesujący projekt. Warunki byłyby następujące:
    1. Darmowe środowisko programistyczne (ISE Webpack?)
    2. W miarę prosty programator (JTAG, ewentualnie jakiś mikrokontrolerek, który ładowałby kod do FPGA).
    3. Sama kość musiałaby być w miarę dostępna, niedroga (no cóż, w przypadku FPGA niedrogo to coś w okolicach 100pln), w miarę mocna (tak, żeby jakieś softcore'y dało się odpalić) no i we w miarę rozsądnej obudowie.
    4. Opakować to trochę peryferiami, dorobić jakieś uniwersalne gniazdo rozszerzeń (lub magistralę) i gotowe.

    No i wtedy pozostaje kwestia wsadów, softcore'ów itd. Kto chętny?
  • Poziom 29  
    1-Magistrala: fizycznie to może coś takiego jak 40 pinowa szeleczka IDE?
    2-Wracając do kształtu wtyczki, przewidujesz zasilanie bateryjne, jakie? Można by sobie wyobrazić pokładową ładowarkę nimh czy lion, ale jak to wpłynie na koszt i powierzchnię układu? Przemyślałbym sprawę zasilania poprzez STEP UP/DOWN (np. MAX1672: 1,8-11 Vwe; 3,3/5 Vwy; 300mA; off) i malec potrafiłby chodzić na dwu paluszkach.
    3-A może „Malec”? ;)
    11-CPLD, patrz niżej
    a teraz pofilozuję trochę
    4-Organizacja/administracja. Gdyby sprawa miała się rozwijać trzeba by przenieść się z Elektrody gdzie indziej, może ktoś ma pomysł lub doświadczenie w organizowaniu tego typu przedsięwzięcia. Znaleźć miejsce na site, postawienie na nim forum.....
    5-Dla ustalenia uwagi można by określić znaczenie i położenie kilku trucików magistrali: dane (8 i/o) rd, wr, adresy (8+? o) ale, psen, mrq, iorq, dmarq, dmack, wait, wait... chyba mnie troszkę poniosło ;), int (? I), gpio (? I, ? O), i2c, 1wire, rs485, CS (? O), zasilanie (analog i cyfra; 3,3 i 5)
    6-BIOS (czy raczej biosy), hymm. Lista funkcji, sposób wołania, przekazywania parametrów, trzeba popatrzeć jak to robią najpopularniejsze kompilatory i wybrać jakiś wygodny kompromis.
    7-RTOS?
    8-Jak jest z dostępnością i ceną kontrolerów CYGNAL’a?
    9-izolowany szeregowiec (485 czy 232) ze względu na koszty raczej odpada jako element podstawowy, choć przy wolnym miejscu na płytce czemu nie przygotować dla niego miejsca.
    10-temat fpga (o którym przypomniał nam Yego) to temat sam w sobie, ale raczej jako kolejny sterownik w systemie, bo przy fajnym projekcie otoczki powstaną być może „systemowe” konstrukcje na innych procesorach. Ostatnio na pewnym znanym targowisku internetowym zobaczyłem 80188, właśnie czemu nie? Można by powspominać stare dobre czasy programowania w trzeciej wersji Turbo Pascala ;). Większość z nas ma już całkiem doby symulator ;)
    11-ale CPLD na pokładzie, to już uważam temat wart rozważenia, nie kosztuje wiele (tyle co IC w zasilaniu!), pewien znany wszystkim miesięcznik daje mu wsparcie, zalety oczywiste, ktoś nie chce to zostanie na płytce wolne miejsce, a otwiera to drogę w bardzo ważnym kierunku.
  • Poziom 22  
    Xitami koszty interfejsu szeregowego (RS485) wcale nie są takie duże a dają dodatkowe zastosowania dla systemu. Można zrobić wtedy rozproszoną sieć takich urządzeń. A przecież jak nie chcesz to układu nie lutujesz i tyle... a na druku może sobie być na niego miejsce.
    A co do magistrali to popieram 40 pinów.
  • Specjalista PLD
    A czy interface nie moze byc zrealizowany jako modul plug-in ?
    Kto by chcial to by sobie dal rs232, kto inny by wolal rs485 czy jeszcze cos innego. Kazdy by byl zadowolony.

    Co do FPGA i/lub CPLD to jestem zdania, ze sa to bardzo uzyteczne opcje systemu z tego wzgledu, iz za jakis czas nawet najprostszy procek bedzie mial w srodku jakas matryce takiego czy innego rodzaju.
    Nie musi to byc zasadnicza czesc systemu, ale i taka opcje proponowalbym wziac pod uwage. Moznaby nawet po dodaniu jakiegos RAMu i przetwornika D/A wyprowadzic poprzez FPGA sygnal VGA na jakis monitor.

    A co sie wiaze z FPGA, CPLD i wieloma nowoczesnymi prockami, interface JTAG bylby fajnym uzupelnieniem gdyby chciec uzyc systemu jako programatora innych kostek, lub do jego debuggingu.
  • Poziom 29  
    9- akcent na "izolowany", "podstawowy", "czemu nie" (przy założeniach Mmarka 232 być musi)
  • Poziom 42  
    yego666 napisał:
    systemu z tego wzgledu, iz za jakis czas nawet najprostszy procek bedzie mial w srodku jakas matryce takiego czy innego rodzaju.
    Już spokojnie można kupić takie procesory, poszukaj pod hasłem "system on chip" vel SoC.
  • Poziom 19  
    Witam
    Nie było mnie kilka dni - wyjazd na długi weekend. Wracam a tu... ale po kolei.
    Z zadowoleniem czytam Wasze opinie i propozycje. Zagadnienie nabrało rozmachu jakiego nie przypuszczałem.
    Czuję się w tym miejscu zobowiązany odpowiedzieć i wyrazić również swoje opinie na temat propozycji.

    1. STEP UP/DOWN (np. MAX1672) - dobry pomysł zwazywszy, że zasilanie przenośne to aku (NiMh lub LIOn) - początkowo myślałem o aku z telefonu komórkowego, ale telefony i części zamienne do nich są produkowane przez jakiś okres czasu, może być zatem tak iż zostanie zastosowany niewłaściwe z punktu widzenia dostępności aku i po kilku latach użytkowania urządzenie będzie musiało być poddane przeróbce (mechanicznej i/lub elektrycznej) pod nowe aku. By zatem nie komplikować najlepiej zastosować jakieś uniwersalne aku. Ładowarka onboard - tak, tylko w chwili obecnej mam mały problem z wyborem kontrolera ładowania.

    2. RS232 - RS232 musi być (programowanie uC, transmisja danych do PC-ta - póki co nie rozważam implementacji protokołu USB ze względu na dodatkowe dość kosztowne układy)

    3. RS485 - "standard" czy "izolowany" - izolowany lepiej, ważniejsza jednak jest dla mnie prosta aplikacja (małe gabaryty)

    4. Moduł transmisji RS - dobry pomysł z tym, RS232 musi być zawsze, ale RS485, ewentualnie inne moduły trasmisji (radio, BlueTouch, podczerwień itd.) jako plug-iny to dobry pomysł, "wykrywanie przystawek" jest przewidziane.

    5. CPLD - jeśli założyć, że programowane przez uC to jestem za, ale jeśli dodatkowy interfejs do programatora to nie bardzo.

    6. Magistrala 40-pin - w zasadzie nie przewiduję magistrali tylko złącze pt. Expansion (dla rozszerzeń), ale jeśli uznać je za tożsame to 40-pin może być ilością zbyt małą. Wstępne kalkulacje - schemat jest w fazie projektu - wskazują, że ilość wyprowadzeń tego złącza zbliża się do 40-tu, a nie wszystkie sygnały zostały już zdefionowane. Możliwe, że po optymalizacji uda się jednak "upchać" to w czterdziestce.

    Pozdrawiam