Moim zadaniem projektowym jest zaprojektowanie koprocesora arytmetycznego dla 8051. Kompletnie nie wiem od czego mam zacząć, a prowadzący tylko wymaga. Kiedy go o coś pytam odpowiada mi, że sam muszę podjąć decyzję ... Termin oddania projektu się zbliża, a ja wciąż nic nie mam.
Dlatego mam do Was prośbę. Nie każę Wam żebyście zrobili za mnie ten projekt, ale żebyście mi trochę pomogli i mnie nakierowali.
Zatem zacznijmy od początku. Koprocesor (FPU) to jednostka która wyręcza procesor w operacjach na liczbach zmiennoprzecinkowych. Musimy więc zdecydować na jakich liczbach operujemy. Ponieważ procesor jest 8-bitowy postanowiłem korzystać z liczb 8-bitowych, a jeżeli wymagana jest większa dokładność to z liczb 16-bitowych. Liczby te są przechowywane w pamięci podobnie do liczb w systemie IEEE754 czyli tak:
Formalności mamy za sobą, teraz trzeba sprawić aby programista mógł z naszego FPU korzystać. W tym celu trzeba rozszerzyć listę OP-kodów. Problem w tym, że mamy jeden OP-kod. Na szczęście jest to procesor CISC-owy więc rozkaz może być dowolnie długi. Tylko tu pojawia się moje pytanie jak to wykorzystać w praktyce ? Załóżmy, że procesor dostaje nasz OP-kod i wie że dotyczy on naszego FPU, ale co dalej ? FPU musi być jakoś podłączony do procesora, jakoś musi pobrać argumenty obliczeń, wiedzieć co liczyć (sume, iloczyn ... ?) i zwrócić jakoś wynik. Tylko wszystko jakoś, a jakoś się nie zrobi - trzeba wiedzieć konkretnie jak i tym pytaniem zwracam się do Was.
Dlatego mam do Was prośbę. Nie każę Wam żebyście zrobili za mnie ten projekt, ale żebyście mi trochę pomogli i mnie nakierowali.
Zatem zacznijmy od początku. Koprocesor (FPU) to jednostka która wyręcza procesor w operacjach na liczbach zmiennoprzecinkowych. Musimy więc zdecydować na jakich liczbach operujemy. Ponieważ procesor jest 8-bitowy postanowiłem korzystać z liczb 8-bitowych, a jeżeli wymagana jest większa dokładność to z liczb 16-bitowych. Liczby te są przechowywane w pamięci podobnie do liczb w systemie IEEE754 czyli tak:
8b: ZWWWMMMM
16b: ZWWWWWWMMMMMMMMM
Z - bit kodujący znak
W - bit kodujący wykładnik
M - bit kodujący mantysęFormalności mamy za sobą, teraz trzeba sprawić aby programista mógł z naszego FPU korzystać. W tym celu trzeba rozszerzyć listę OP-kodów. Problem w tym, że mamy jeden OP-kod. Na szczęście jest to procesor CISC-owy więc rozkaz może być dowolnie długi. Tylko tu pojawia się moje pytanie jak to wykorzystać w praktyce ? Załóżmy, że procesor dostaje nasz OP-kod i wie że dotyczy on naszego FPU, ale co dalej ? FPU musi być jakoś podłączony do procesora, jakoś musi pobrać argumenty obliczeń, wiedzieć co liczyć (sume, iloczyn ... ?) i zwrócić jakoś wynik. Tylko wszystko jakoś, a jakoś się nie zrobi - trzeba wiedzieć konkretnie jak i tym pytaniem zwracam się do Was.