Mam ukrytą fantazję (ups, już nie tak tajną), aby zbudować prosty komputer od zera. Poszukuję łatwego w obsłudze mikroprocesora. Wiem o zwykłych podejrzanych, takich jak 6502, 68000, 8086, Z80 itp. Ale zastanawiam się, czy jest coś lepszego. Oto moja lista życzeń:
Muszę mieć:
- Niska częstotliwość taktowania (4-25 MHz)
- Nie więcej niż 40-60 pinów, najlepiej w konfiguracji DIP
- Zdolność do zajęcia około 64 KB pamięci, ale do 1 MB byłoby dobrze
- Architektura przechowywanego programu (nie tylko przestrzeń do odczytu) (edycja: wyklucza to większość mikrokontrolerów z niższej półki, takich jak PIC i AVR)
- Model z płaską pamięcią, nie jest bankowany ani segmentowany jak 8086
Chciałby, ale nie musi mieć:
- Zestaw instrukcji RISCy (load-store)
- Rejestry ogólnego przeznaczenia
- Asortyment pinów we / wy TTL
- Wbudowana pamięć flash ROM
Jaki mikroprocesor lub mikrokontroler sugerujesz, że jest stosunkowo łatwy do podłączenia i napisania pierwszych procedur ROM?
Moim celem jest uruchomienie prostego systemu Forth (lub podobnego). Powiem tylko, że to zrobiłem.
Edycja: Po przeprowadzeniu drobnych badań myślę, że coś takiego jak ARM7 byłoby dla mnie odpowiednie. Jest wyposażony w nietrywialną ilość pamięci flash i SRAM do zabawy - czasem nawet w pamięć flash 256K i SRAM 64K - wraz z cyfrowymi I / O, ADC, szeregowymi I / O i więcej.
Oto jedna: płyta rozwojowa ARM STR711 .
źródło
Odpowiedzi:
Zgadzam się, że ARM to droga do 32-bitowych mikrokontrolerów. ARM jest wszechobecny, a jego język asemblera może być wykorzystywany w szerokiej gamie rodzin mikrokontrolerów. ARM ma również dobre wsparcie z zestawu narzędzi GCC. Architektura układu ARM7TDMI zdominowała 32-bitową przestrzeń mcu w ciągu ostatnich 5 lat, a ARM Cortex-M3 jest nowym zamiennikiem. Cortex-M3 ma architekturę Harvarda (osobne przestrzenie instrukcji i danych), ale nie uważam tego za ograniczenie.
Micromint ma dobrą reputację i oferuje płytę Cortex-M3 z konfigurowalnymi opcjami za przyzwoitą cenę. Jeśli jednak naprawdę potrzebujesz konfiguracji DIP, odniosłem sukces z mbedem
Teraz następną rzeczą są języki. Wspomniałeś o FORTH. Polecam również Python-on-a-Chip i eLua jako potężne, łatwe do nauczenia się języki, które działają na platformie docelowej tego rozmiaru. eLua jest w pełni rozwinięty, ale wymaga większych zasobów niż Python-on-a-Chip. Pełne ujawnienie: jestem autorem PyMite VM używanej w Pythonie na chipie. Jeśli więc Twoim celem jest stworzenie własnego języka, w pełni rozumiem radość z tego ćwiczenia.
źródło
W przypadku drobnych treści z Arduino , tania, zabawna, dobra społeczność
W przypadku maszyn klasy ARM najtańszą jest prawdopodobnie wtyczka sheeva , która tworzy niesamowitą kompletną maszynę wbudowaną w zasilacz ścienny i nieco dużą maszynę jednopłytkową z dużo większą liczbą we / wy
Lub jest tablica Beagle , której celem jest bardziej wydajność audio / wideo.
Wszystkie działają pod Linuksem, więc masz ogromną gamę oprogramowania programistycznego
źródło
MSP430 z Texas Instruments ma bardzo niski pobór mocy, mały, ale bardzo rozsądny zestaw instrukcji (w przeciwieństwie do PIC), narzędzia open source i format DIP w swojej linii wartości. Niedawno wydali zestaw startowy 4,30 USD (tak, to cztery dolary trzydzieści centów, bezpłatna wysyłka) zestaw startowy, który zawiera interfejs USB do programowania i debugowania oraz dwa układy DIP do zabawy. Sprawdź to .
źródło
Możesz zdobyć układ FPGA i naśladować całą sprawę - nie wymaga procesora.
Kusiło mnie, aby spróbować wcześniej stworzyć prosty komputer MIPS. Mam podstawową konstrukcję procesora, ale trudno byłoby co najmniej powiedzieć o owijaniu drutem lub prototypowaniu w inny sposób.
źródło
Sprawdź mikrokontrolery ATmega firmy Atmel, mają wszystko, o co prosisz, z wyjątkiem możliwości wykonywania kodu z pamięci RAM i są bardzo łatwe w konfiguracji.
Niektóre małe 32-bitowe procesory ARM, takie jak ARM7TDMI, byłyby alternatywą, ale nie są dostarczane w pakietach DIP. To samo dotyczy mikrokontrolerów Renesas R8C / M16C.
źródło
Brzmi jak świetny projekt! Zrobiłem jeden w latach 70-tych z układem 8008 i odrobiną pamięci RAM i ROM. Zaprogramowałem go, aby grał trochę melodii z głośnikami podłączonymi do portu I / O. Część obwodu pamięci dotyczyła układu czasowego kontrolowanego przez kondensator. Przylutowałem dodatkowy kondensator, który po zetknięciu się z nim sprawił, że całość zwolniła o 1000. Potem użyłem w klasie jako demonstratora. Najpierw działałem powoli, a uczniowie słyszeli klikanie głośników, klikanie. Potem odczepiłem kondensator i usłyszeli melodię. Próbowałem wywrzeć na nich wrażenie, jak komputery kończą jedną instrukcję przed rozpoczęciem kolejnej.
źródło
Sprawdź OLIMEX - mają płyty programistyczne do większości nowoczesnych mikrokontrolerów, a jeśli naprawdę chcesz DIP, mają procesory ARM na płytach w formacie podobnym do DIP ( 1 ). Sprzedają także JTAG i mają dostęp do kodu demonstracyjnego dla większości płyt (gcc), dzięki czemu bardzo łatwo jest z nich korzystać. Większość ich plansz jest dostępna za pośrednictwem Sparkfun . Osobiście lubię mikrosfery Phillips LPC ARM, ale wszystko od Olimex jest dobre.
AVR32 będzie również działał dla ciebie (bez problemów). Dopiero niedawno zacząłem z nich korzystać i byłem bardzo zaskoczony ich zdolnością i łatwością użycia.
Tworzenie od podstaw nie jest tak naprawdę opcją, chyba że używasz 8-bitowego mikroprocesora lub nie masz zestawu do lutowania płyt montowanych powierzchniowo i debugowania skomplikowanych cyfrowych płyt pc.
źródło
W zależności od celów możesz rozważyć zbudowanie własnego procesora z pożądanymi funkcjami zamiast korzystania z istniejącego procesora. Sprawdź Homebuilt CPU . Jest nawet
szalonyentuzjasta, który zbudował procesor z przekaźników!źródło
Śmigło Paralaksy
Jedynym 32-bitowym procesorem obecnie produkowanym w pakiecie DIP jest śmigło Parallax . (Ten sam układ jest również dostępny w znacznie mniejszych 44-stykowych pakietach QFP i 44-stykowych pakietach QFN, wszystkie z 32 stykami we / wy ogólnego zastosowania). Oprócz Windows IDE istnieje również kilka narzędzi programistycznych, które działają pod Linuksem .
Wygląda na to, że spełnia wszystkie twoje wymagania, z wyjątkiem „wbudowanej pamięci flash ROM” - zamiast tego ładuje się śmigło z zewnętrznej 8-pinowej pamięci EEPROM. (To jeszcze jedna kwestia do podłączenia, ale znacznie łatwiej jest podłączyć 8-pinowy układ niż większość zewnętrznych układów do przechowywania programów).
źródło
+1 Za mikrosy ATmega. Dostajesz je z modułem ładującym do programowania przez USB - dzięki czemu uruchomienie pierwszej płyty jest jeszcze łatwiejsze bez konieczności posiadania dedykowanego programisty. Jeśli pójdziesz tą trasą, przegapisz rzeczy związane z ICE.
źródło
Drugi głos na Amtel. Szczególnie podoba mi się teensy ++ dla prototypów i eksperymentów. USB dostarcza zasilanie, zapewnia interfejs programowania i wyświetla wyjście debugowania. Narzędzia programistyczne GNU. Mnóstwo zabawy za około 30 USD.
źródło
Atmel będzie bardzo popularny, same arduinos (lubię profesjonalne modele w Sparkfun) same w sobie są popularne. Znajdziesz WIELE hobbystów, którzy znają i mogą odpowiedzieć na większość pytań dotyczących korzystania z AVR.
Wolę zestaw instrukcji msp430 od avr, a zestaw instrukcji arm nad innymi. Olimex tworzy szereg tablic „nagłówkowych”, które są idealne do eksperymentów. Luminary micro ma kilka dobrych, ale wiele pinów jest zużywanych przez układ, aby pokazać jego układy peryferyjne, dobre do nauki układu i funkcji, ale ostatecznie chcesz je odciąć, aby uzyskać wejście / wyjście. W każdym razie olimex jest dobry, spróbuj http://www.sparkfun.com i przeglądaj tablice rozwojowe, niektóre pochodzą od olimex, niektóre pochodzą z Sparkfun, szeroki wybór i wiele poniżej 40 USD lub 50 USD, więc możesz spróbować kilku, aby zobaczyć, co masz lubić. Mam zamiar zamówić armmite, który, jeśli spełnia wymagania listy funkcji, jest prawdopodobnie najlepszą płytą kontrolera do moich celów.
źródło
Miałem ten sam sen, po prostu nigdy go nie dotarłem.
Większość powyższych zaleceń dotyczy płyt programistycznych. Ponieważ powiedziałeś „od zera”, zakładam, że chcesz zacząć od jednego procesora DIP i nie kupować płyty deweloperskiej. W takim przypadku bardzo bardzo polecam, abyś trzymał się czegoś podobnego do zwykłych podejrzanych wymienionych w poście. Są popularne, ponieważ dobrze sprawdzają się przy takim zadaniu. Potrzeba zwiększenia liczby linii we / wy dzięki multiplekserom i demultiplekserom.
Załóżmy, że znalazłeś ten „idealny” procesor, który robi wszystko, co chcesz, i ma dokładnie tyle linii, ile chcesz. Nie znajdziesz nigdzie w pobliżu odrobiny wsparcia dla popularnych procesorów. Powinieneś bardzo łatwo znaleźć stare używane książki na E-Bay, Amazon itp. Po prostu za grosze, które pokazują, jak zaprojektować kompletny system za pomocą tych procesorów. Nie wspominając już o witrynach internetowych, kompilatorach i innych osobach, które robią to samo.
Jeśli pójdziesz z czymkolwiek innym, myślę, że będziesz głęboko tego żałować. Spędzisz więcej czasu sfrustrowany brakiem wsparcia, niż przezwyciężeniem problemów technicznych związanych z tymi procesorami. Ponadto, ponieważ ludzie zaprojektowali już całe komputery z tymi układami, wiesz, że można to zrobić. Cokolwiek innego, zawsze istnieje szansa, że uderzysz w ścianę z cegieł.
źródło
Wybierz Atmel AVR. Oto kilka platform gier wokół tego:
źródło
Wolę zestaw instrukcji msp430 od avr, a zestaw instrukcji arm nad innymi.
źródło