Popularny post rafal2808 Napisano Kwiecień 8, 2019 Popularny post Udostępnij Napisano Kwiecień 8, 2019 Chciałbym krótko opisać projekt który obecnie realizuję a jest to procesor zrealizowany na układzie FPGA. DCE Q816 (nazwa własna bez większego znaczenia) to 8 bitowa jednostka o architekturze mojego własnego pomysłu. Procesor może działać przy maksymalnej częstotliwości taktowania 12MHz. Dodatkowym układem pełniącym funkcję pamięci ROM oraz koprocesora jest DCE Q817 również zrealizowany na układzie FPGA. Pierwszy jak i drugi układ powstały na płytce Elbert v2 a jest to płytka z kursu FPGA na Forbot. Kolejnymi elementami wchodzącymi w skład projektu jest wyświetlacz 7 segmentowy oraz LCD dzięki którym mamy możliwość komunikowania się ze światem zewnętrznym. Jak widać na zdjęciu płytki z układami FPGA przeszły kilka modyfikacji. Odlutowane zostały wyświetlacze LED, część przycisków oraz diody LED. Dzięki temu do dyspozycji miałem więcej pinów. Procesor może obsłużyć prosty program zapisany w pamięci ROM pełna lista rozkazów dostępna jest poniżej. Proces budowy oraz projektowania układu opisuję na moim blogu oraz Fanpagu. Jeżeli kogoś zainteresował temat zapraszam do zapoznania się z większą liczbą informacji. Dodatkowo poniżej umieszczam filmy pokazujące możliwości procesora DCE Q186. 4 1 Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Kwiecień 8, 2019 Udostępnij Kwiecień 8, 2019 @rafal2808, właśnie zaakceptowałem opis. Dziękuję za przedstawienie ciekawego projektu, zachęcam do prezentowania kolejnych DIY oraz aktywności na naszym forum 😉 Cytuj Link do komentarza Share on other sites More sharing options...
FlyingDutch Kwiecień 8, 2019 Udostępnij Kwiecień 8, 2019 Cześć, a tak z ciekawości, czy planujesz obsługę operacji arytmetycznych i flag zero, carry (przeniesienie arytmetyczne) i operacji przesunięć bitowych, oraz operacji logicznych bitowych (na rejestrach)? Dopiero wtedy będzie to "pełny" procesor, który będzie można wykorzystać do praktycznych celów. Mam nadzieję, że się nie obrazisz za to pytanie - naprawdę jestem pełen uznania w stosunku do twoich aktualnych dokonań. Myślę, że dużo byś skorzystał z zapoznania się z architekturą i listą rozkazów 8-bitowego soft procesora firmy Xilinx Picoblaze (śmiało można go zaimplementaować na Elbercie). Tu masz dokumentację do Picoblaze: https://www.xilinx.com/support/documentation/ip_documentation/ug129.pdf https://www.xilinx.com/products/intellectual-property/picoblaze.html Pewne próby z Picoblaze były też opisane na Forbocie. Pozdrawiam 2 Cytuj Link do komentarza Share on other sites More sharing options...
Popularny post rafal2808 Kwiecień 8, 2019 Autor tematu Popularny post Udostępnij Kwiecień 8, 2019 Dzięki poczytam sobie trochę o Picoblaze. Na pewno w przyszłości pojawi się nieco więcej obsługiwanych rozkazów. Część z operacji które wymieniłeś są już obsługiwane poniżej umieszczam tabelkę z spisem rozkazów obsługiwanych przez jednostkę arytmetyczno-logiczną procesora. 3 Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
FlyingDutch Kwiecień 11, 2019 Udostępnij Kwiecień 11, 2019 Cześć, nie zauważyłem, że masz te rozkazy z nimi to jest pełnoprawny procesor 🙂 Jest jeszcze tylko jedno pytanie - przeważnie operacje arytmetyczne ustawiają dwie flagi procesora: ZERO (ostatnia operacja arytmetyczna spowodowała wyzerowanie akumulatora) i CURRY (w operacji arytmetycznej wystąpiło przepełnienie arytmetyczne). Ułatwia to pisanie operacji arytmetycznych na długich liczbach. Przeważnie z tymi flagami są skojarzone dwie instrukcje skoków warunkowych: JumpIfZero i JumpIfCurry co ułatwia pisanie programów z użyciem operacji arytmetycznych na długich liczbach. Być może masz to już obsłużone, jeśli nie to nie jest to krytyka tylko temat do przemyślenia, czy może warto to brać pod uwagę przy rozbudowie projektu. Pozdrawiam 2 Cytuj Link do komentarza Share on other sites More sharing options...
rafal2808 Kwiecień 11, 2019 Autor tematu Udostępnij Kwiecień 11, 2019 Jeżeli chodzi o sygnalizowanie przepełnienia to istnieje już odpowiedni bit, u mnie nazwany Cout. Dodatkowo istnieją dwa rozkazy skoków warunkowych biorących go pod uwagę (skocz jeżeli 0 oraz skocz jeżeli 1). Natomiast flagi ZERO układ na razie nie posiada. Chociaż w przyszłości na pewno się pojawi. Jak na razie skupiłem się na programach, w których to zmienne nie przekraczają 8 bitów. Wiemy jednak, że taka sytuacja w rzeczywistości nie jest zbyt częsta, ale mając już podstawy prostsze będzie przystosowanie układu do wykonywania operacji na zmiennych większych niż podstawowe 8 bitów. 2 Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!