Skocz do zawartości
rafal2808

DCE Q816 procesor w FPGA

Pomocna odpowiedź

@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 😉

Udostępnij ten post


Link to post
Share on other sites

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

  • Lubię! 2

Udostępnij ten post


Link to post
Share on other sites

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

  • Lubię! 2

Udostępnij ten post


Link to post
Share on other sites

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. 

  • Lubię! 2

Udostępnij ten post


Link to post
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »

×