logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak zaprojektować koprocesor arytmetyczny dla 8051? Początki i wskazówki

08 Maj 2010 20:24 3056 25
REKLAMA
  • #1 8052136
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #2 8052396
    nsvinc
    Poziom 35  
    Posty: 2870
    Pomógł: 262
    Ocena: 88
    Czy ja zle zrozumialem czy ty na prawde masz ZAPROJEKTOWAĆ ten koprocesor??...W CPLDku?.... Mozna sie za to bardzo prosto zabrać.

    1) czy twoj koprocesor ma byc bardzo blisko rdzenia czy ma byc do niego
    dostep poprzez jakis adres/adresy ktore w samym koprocesorze beda jego roboczymi rejestrami? Tutaj istnieje kilka rozwiazan, ale to
    odpowiednie trzeba znalezc juz pod katem implementacji...

    2) Koprocesor jest twoj, wiec ty sam musisz podjac decyzje, co on ma robić
    a czego nie, logiczne...

    3) Koprocesor musi mieć zegar. No ale implementacja jego w
    CPLD/FPGA to ci gwarantuje

    4) Z argumentami obliczen i ich przechowywaniem - spokojnie. To ze twoj
    rdzen jest CISC, to nie znaczy ze koprocesor tez taki sam musi byc.
    Ja bym to zrobił PO PROSTU jako bank adresow (!! von Neuman wiec łatwo)
    do ktorych bys wpisywał liczby (arg), i w innych rejestrach miał wynik.
    Te adresy...hm, chcesz wiedziec wiecej pisz na priv.

    5) Twoje zadanie to jest "zaliczeniowka". Nie lubimy takich tematow :P

    Proszę poprawić tekst i używać polskich znaków!
    Robak
  • #3 8058252
    Konto nie istnieje
    Konto nie istnieje  
  • #4 8058391
    nsvinc
    Poziom 35  
    Posty: 2870
    Pomógł: 262
    Ocena: 88
    Chodzi o WMAPOWANIE "własnych rejestrów" koprocesora w pamiec rdzenia 8051...I jest to najprostszy sposob implementacji tego co potrzebujesz.
    Jesli nie chcesz miec dostepu poprzez adresy, a opcodem tak jak opisujesz,
    to musisz grzebać przy rdzeniu - no a to juz jest wyzsza szkoła jazdy i (bez urazy) wątpie czy wyrobiłbys sie z tym do terminu...

    Czy chcesz miec automat czy "mózg" - zalezy nadal od tego co chcesz osiągnąć.. Konstrukcja "mózgu" (czyli równoległy rdzen matematyczny FP)
    jest trudniejsza, musi mieć zegar, musi umiec wykonywać zestaw
    rozkazow w petli...

    Wszystko zalezy CO CHCESZ FINALNIE OTRZYMAĆ, a nadal tego nie sprecyzowałeś...
  • #5 8058445
    Konto nie istnieje
    Konto nie istnieje  
  • #6 8058472
    nsvinc
    Poziom 35  
    Posty: 2870
    Pomógł: 262
    Ocena: 88
    1) Jakie funkcje ma spełniać koprocesor?
    (i na podstawie tego podjąć decyzje czy automat czy rdzen)

    2) Jesli wmapujesz koprocesor w przestrzen adresową, to jedyne instrukcje
    ktorymi bedziesz sie komunikował z nim to MOV Rn/A,@DPTR i na odwrót,
    i zadnego ekstra opcoda ci nie potrzeba :]

    3)
    Automat ma pewne ograniczenia. Automatem wykonasz praktycznie
    wszystkie ciekawsze operacje, ale np. juz sin(x) nie policzysz...:]
    (tj. policzysz, ale poteznym nakładem logiki)
    No a rdzen by potrafił....
  • #7 8058513
    tmf
    VIP Zasłużony dla elektroda
    Posty: 14318
    Pomógł: 2090
    Ocena: 2205
    ad 2 - jednak jakoś trzeba zasygnalizować, że dane są gotowe i należy rozpocząć obliczenia. Warto też pomyśleć co zrobić z sytuacją kiedy obliczenia są na tyle długie, że trzeba czekać na ich zakończenie - jakiś bit statusu?
    Ale pomysł z opcodem + wmapowanie rejestrów w przestrzeń procesora wydaje się optymalny. Koprocesor musi tylko niejako być podpięty do szyny danych i pewnych sygnałów sterujących, żeby mógł przechwycić opcode i go zinterpretować. A to raczej wyklucza użycie wewnętrznej pamięci. Z drugiej strony pytanie jak się zachowa rdzeń procesora po natrafieniu na niezidentyfikowaną instrukcję? Jeśli potraktuje ją jako NOP to sprawa jest prosta.
  • REKLAMA
  • #8 8059861
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #9 8059915
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #10 8060651
    Konto nie istnieje
    Konto nie istnieje  
  • #11 8061013
    Konto nie istnieje
    Poziom 1  
  • #12 8061016
    tmf
    VIP Zasłużony dla elektroda
    Posty: 14318
    Pomógł: 2090
    Ocena: 2205
    Odniosłem wrażenie, że ten koprocesor to ma być osobna kostka, do wykorzystania z dowolnym '51. Nie znam tej architektury, więc może się mylę, ale jeśli procesor ma wbudowany FLASH to przy dostępie do niego sygnały sa wystawiane poza kostkę?
    Teraz wydaje mi się, że ty chcesz raczej zaimplementować i FPU i CPU w jednym FPGA?
  • #13 8061723
    Konto nie istnieje
    Konto nie istnieje  
  • #14 8063320
    nsvinc
    Poziom 35  
    Posty: 2870
    Pomógł: 262
    Ocena: 88
    No to porywasz sie z motyka na ksiezyc niestety....
    Zeby prawidlowo zaprojektowac, uruchomic i przetestowac koprocesor, to
    musisz ZNAC:
    - conajmniej szczatkowa wiedze na temat ukladow programowalnych
    - znajomosc rynku CPLD/FPGA, producentow, dostepne IDE,programatory itp itd
    - sposoby implementacji rdzeni do CPLD/FPGA
    - jakikolwiek HDL chociaĹź w podstawowym stopniu
    - zasade dzialania ukladow programowalnych

    Zdaje sie, ze niestety mozesz nie podolac zadaniu na wlasna reke. Temat
    nie nalezy do najprostszych...

    Znacznie latwiej byloby, gdybys mial zaprojektowac zewn. kosc - wtedy
    jedno z lepszych rozwiazan jest to, co zaproponowal kolega atom1477

    -------------------------
    Przepraszam za brak polskich znakow diakrytycznych ale faktycznie
    mam problem z kodowaniem, ale na razie nie mam mozliwosci z tym
    walczyc...
  • #15 8064576
    Xeonjumper
    Poziom 11  
    Posty: 13
    Witam
    Interesuje się akceleracją obliczeń i wiem ze takie rzeczy się już na Świecie robi - wykorzystanie FPGA jako coprocesora. Oczywiście na interfejsie przynajmniej PCI.
    Czytałem o akceleratorach nawet podwójnej precyzji.
  • #16 8100999
    Konto nie istnieje
    Konto nie istnieje  
  • #17 8101332
    nsvinc
    Poziom 35  
    Posty: 2870
    Pomógł: 262
    Ocena: 88
    Zdajesz sobie z tego sprawę ze projekt MIKROKONTROLERA z KOPROCESOREM w jakims CPLDku + kilka sztuk zaprogramowanych
    i dzialajacych kostek to są koszty rzędu 'naście tysięcy'?...

    Nikt pracujący zawodowo na CPLD nie zrobi tego taniej (a dla takiego kogoś
    twoj projekt to 2..3tyg pracy).

    Zebys miał łatwiej proponuje zebys odpuscil sobie integrację koprocesora
    z rdzeniem w jednym scalaku - zrób tak jak ci zaproponowano (zewn. kość)
    i wtedy masz szanse na ukonczenie tego w terminie bez 'nastu tysięcy'
    kosztĂłw. Projekt zewn. scalaka to juz mniejsze koszty :]
  • #18 8101784
    Konto nie istnieje
    Konto nie istnieje  
  • #19 8101983
    nsvinc
    Poziom 35  
    Posty: 2870
    Pomógł: 262
    Ocena: 88
    No niestety...masz pecha
    Moze to zabrzmieć dziwnie, ale albo masz wiedze albo
    zasobny portfel...

    Dodawanie jest PROSTSZE od mnozenia!!...

    Dlatego w poprzednim poscie podalem takie wysokie koszty - potencjalny
    konstruktor MUSI usiasc i wymyslic cala logike, ktorej ty wymyslic nie potrafisz.
    A same bloki dokonujace podstawowych operacji ALU to nie wszystko -
    trzeba jeszcze zaprojektowac intefejs komunikacji z tym ALU.

    Kilka tysiecy bramek przerzutnikow i inej "cyfrowki" do połączenia w spojna calosc...
  • #20 8102010
    Konto nie istnieje
    Poziom 1  
  • #21 8102021
    Konto nie istnieje
    Konto nie istnieje  
  • #22 8102102
    utak3r
    Poziom 25  
    Posty: 741
    Pomógł: 60
    Ocena: 5
    Zależy, nad czym akurat pracuje Twój promotor :P
  • #23 8102286
    Konto nie istnieje
    Poziom 1  
  • #24 8102679
    nsvinc
    Poziom 35  
    Posty: 2870
    Pomógł: 262
    Ocena: 88
    >ogglywiatko

    Byc moze uratuje cię cud, moze nawet dwa, a dodatkowo ktos kto nie skasuje
    sobie 150zl/h za prace nad twoim projektem, czyli np. 'konsultacje'...
    Jestem pewien, ze jesli dasz komus pareset zł za pare godzin 'gadania'
    to szybka kase kazdy pojdzie :]
    Jesli jestes dobrze 'rozkminiający' to na podstawie slowotoku
    doswiadczonego konstruktora bedziesz conajmniej troche wiedzial
    jak co zrobic, a przynajmniej bedziesz mial hasla jakie trzeba wpisać w wikipedie...

    >atom1477
    prostsze za wiecej?...jak to mozliwe?....kto ci zleca projekty?.. :P:P
  • #25 8102731
    Konto nie istnieje
    Poziom 1  
  • #26 8105289
    nsvinc
    Poziom 35  
    Posty: 2870
    Pomógł: 262
    Ocena: 88
    Aaaale sie offtop zrobil :P

    Implementacja rdzenia '51 nie jest zadaniem skomplikowanym, wystarczy
    wujka google zapytać. Istnieją gotowe przykladowe rdzenie w postaci
    modulow w jakims HDLu. Wypada tylko znać dany HDL, zeby wiedzieć
    co dalej juz po zaimplementowaniu rdzenia. Komplikacja jest tylko
    w wymysleniu logiki do operacji arytmetycznych na floatach no i interfejsowaniu do rdzenia.

    Mała pomoc:
    Proponuje CPLDki Altery - darmowe srodowisko ktore wystarczy ci do budowy twojego projektu, tani programator, i co najwazniejsze - HELPY,
    MANUALE i NOTY APLIKACYJNE w poteznych ilosciach dostepne na stronie
    producenta i/lub dostarczane razem z srodowiskiem.
    Dodatkowo srodowisko (Quartus II) jest WYSIWYG, sporo kreatorow. Zeby
    zaprojektowac migaczke do leda(na dobry poczatek) musisz umieć tylko "przeciągać i upuszczać" i nie ma koniecznosci znac zadnego HDLa ani rozumiec
    jak dzialaja PLD...

    HDL? Proszę tutaj: Verilog (prostszy) lub VHDL (trudniejszy aczkolwiek lepszy)
    To dwa najpopularniejsze jezyki. Tobie radze poznac najpierw Verilog...

    >atom1477
    Niestety, u mnie z zleceniodawcami jest bardzo roznie...:(
    ZSRE??

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik poszukuje wskazówek dotyczących projektowania koprocesora arytmetycznego (FPU) dla mikroprocesora 8051, który ma realizować podstawowe operacje arytmetyczne, takie jak dodawanie, odejmowanie, mnożenie, dzielenie i pierwiastkowanie. Dyskusja koncentruje się na kwestiach związanych z implementacją, w tym na mapowaniu rejestrów koprocesora w przestrzeni adresowej 8051 oraz na sposobach komunikacji między procesorem a koprocesorem. Uczestnicy podkreślają znaczenie wyboru odpowiedniej architektury (automat vs. rdzeń) oraz konieczność posiadania wiedzy na temat układów programowalnych (CPLD/FPGA) i języków opisu sprzętu (HDL). Użytkownik wyraża frustrację z powodu trudności w realizacji projektu i rozważa możliwość zlecenia pomocy zewnętrznej.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA