Przeszukaj forum
Pokazywanie wyników dla tagów 'CPU'.
Znaleziono 1 wynik
-
Witam wszystkich! Mam na imię Paweł i od blisko 5 lat buduję swój własny procesor oparty o układy z rodziny 74 TTL. Do tej pory stworzyłem dwie iteracje projektu. Każda z tych dwóch iteracji składa się z płytki CPU i płytek potrzebnych do zbudowania prostego komputera w oparciu o te CPU. Do tej pory tworzyłem swój projekt hobbystycznie. Strona na której zamieszczałem opis i źródła nie była za bardzo nigdzie udostępniana i praktycznie tylko znajomi o niej wiedzieli. Ale nadszedł ten czas by się podzielić projektem z większą publiką 🙂 WWW: https://xirx.net GIT: https://git.xirx.net lub mirror: https://github.com/demohpj Na stronie www na ta chwilę jest pełny opis XiPU w pierwszej wersji. XiPU_v2 będzie miał dopiero taki opis tworzony. Zapraszam też do zapoznania się działem download gdzie można ściągnąć emulator całego komputera i pobawić się z nim na żywo: Download: https://xirx.net/?s=download W obu wersjach miałem proste założenia: Używać układów 74 w wersji HCT (napięcie działania to 5V ale zapotrzebowanie prądowe jest o wiele mniejsze ze względu na bycie układami CMOS) Nie używać nic bardziej skomplikowanego niż ALU 181 Ograniczyć się maksymalnie do formatu A4 dla PCB 8 bitowa architektura z 16 bitowym adresowaniem pamięci 2 rejestry ogólnego przeznaczenia (A i B) i 2 rejestry dodatkowe pomocne przy używaniu adresów (X i Y) Obsługa 64 KB RAM (16 bitowa szyna adresowa) Taktowanie CPU minimum 1 MHz (by dało się go używać w jakiś sensownych scenariuszach) Szyna danych do komunikacji z zewnętrznym światem (8 bit IN oraz 8 bit OUT) Obsługa stosu Obsługa rozkazów: add, sub, inc, dec, shl, shr, push, pop, cmp, jmp Mikrokod zapisany na układach EEPROM Wymagania co do komputera: Ekran 320x240 z 4 bitową paletą i znakami 8x8 (w rzeczywistości zastosowany jest ekran LCD 640x480 z 8 bitową paletą) Prosty głośnik do odtwarzania tonów generowanych przez funkcję kwadratową (zmieniamy procent wypełnienia i częstotliwość) RS232 o prędkości 1200 bps Zegar RTC z podtrzymaniem bateryjnym Klawiatura QWERTY 4 diody LED (power, run, capslock, error) Komputer zasilany jest napięciem 7.5V przy maksymalnym prądzie 1A. Główną składową komputera oprócz CPU jest IO Board, który ma za zadanie pośredniczyć w komunikacji CPU ze światem. Jako układ sterujący zastosowałem STM32F072. Płytka posiada również pamięć typu flash o wielkości 2 MB do przechowywania plików i programów udostępnianych po szynie danych do CPU. W XiPU_v2 pamięć flash przechowuje również plik z systemem operacyjnym, który po starcie jest pobierany przez bootloader. Opis kluczowych właściwości XiPU: Częstotliwość zegara: 1 MHz Pamięć: 32 KB ROM + 64 KB RAM (dwie oddzielne przestrzenie adresowe, górne 32 KB RAM jest widoczne jako górna połówka ROM) Zewnętrzna szyna komunikacyjna: 8 bit IN, 8 bit OUT Rejestry: A, B, X, Y (wszystkie są 8 bitowe) Stos: 256 bajtów (tylko prosty push i pop) Adresowanie: Bezpośrednie lub jako adres w parze rejestrów Y:X Flagi procesora: C i Z (każda instrukcja używająca ALU powoduje zmianę tych flag) Mikrokod: 2 pamięci 32 KB EEPROM Arytmetyka: Tylko operacje na 8 bitowych danych System operacyjny: 32 KB EEPROM (zmiana wersji wymaga przeprogramowania układu) Opis kluczowych właściwości XiPU_v2: Częstotliwość zegara: 1 MHz Pamięć: 64 KB RAM (jedna przestrzeń adresowa, tylko pierwsze 2 KB pamięci jest przeznaczone dla BIOS w pamięci ROM) Zewnętrzna szyna komunikacyjna: 8 bit IN, 8 bit OUT Rejestry: A, B, X, Y (wszystkie są 8 bitowe) Stos: 4 KB, obsługa Frame Pointera (dostępny rejestr BP), dostępne instrukcje enter i leave, możliwe zaawansowane manipulowanie adresem wskaźnika stosu i bezpośredni dostęp do danych Adresowanie: Bezpośrednie lub jako adres w parze rejestrów Y:X, możliwe używanie dodatkowego przesunięcia dla adresów przechowywanych w Y:X Flagi procesora: C i Z (są dwie pary tych flag, jedna jest przeznaczona do widzenia przez następne instrukcje, druga jest ukryta i służy tylko do tymczasowego użytku podczas wykonywania specyficznych instrukcji) Mikrokod: 2 pamięci 32 KB EEPROM Arytmetyka: Operacje na 8 bitowych danych, dodatkowo wsparcie dla podstawowych instrukcji add/sub/inc/dec dla 16 bitowych danych w rejestrach Y:X System operacyjny: 2 KB EEPROM z BIOS (bootloader + podstawowe API dla IO), OS jest pobierany przez zewnętrzną szynę komunikacyjną z IO Board Do projektu użyłem następujących narzędzi: Geany - Tworzenie plików Makefile i asemblera. QtCreator - C++/Qt. Użyte do tworzenia aplikacji pomocniczych. Qt 5.12.4 - Biblioteka użyta do tworzenia aplikacji pomocniczych. GCC - kompilator C i C++ Keil uVision 5.37 - Kompilator i środowisko debugowe dla STM32F0 MCU. Make - Narzędzie do automatyzacji budowania. Doxygen 1.9.7 - Generator dokumentacji na podstawie kodu źródłowego. Proteus 8.10 - Symulator obwodów drukowanych. QCAD - Narzędzie do projektowania rysunków technicznych. DipTrace 4.2.0.1 - Narzędzie do projektowania PCB. AUTODESK Fusion - Narzędzie do projektowania modeli 3D do druku.
- 4 odpowiedzi
-
- 12
-