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

Kazdy moze zrobic swoj wlasny procesor taki jaki chce :)

yego666 17 Mar 2006 16:36 18701 17
REKLAMA
  • #1 2425545
    yego666
    Poziom 33  
    Posty: 2175
    Pomógł: 239
    Ocena: 564
    Przez jakis czas pracowalem nad wlasnym opracowaniem klonu procesora opartego o zbior instrukcji MicroBlaze firmy Xilinx. Moglem zrobic cos od poczatku do konca wlasnego, ale wtedy mialbym problemy z narzedziami programistycznymi takimi jak asembler czy kompilator C. Stad tez zdecydowalem sie zrobic klon wlasnie tego procesora.
    Jest to 32-bitowy procesor RISC z 3-etapowa kolejka ( pipeline ) .
    W sumie typowa konstrukcja, tyle ze u producenta kosztuje 2500 dolarow za licencje na uzytkowanie procesora i za pakiet EDK8.1i, a mnie kosztowala tylko troche pracy :) . A za to ile przyjemnosci....
    Procesor na razie biega z zegarem 80 MHz ( nie mialem szybszego kwarcu ) co daje troszke mniej niz 80 MIPS. W zasadzie procesor realizuje jedna instrukcje w jednym cyklu zegara.
    Konfiguracja powstala w calosci w VHDlu dla Spartana3 i zajmuje ponizej 1000 slice'ow ( moze po polsku lepiej bedzie slajsow lub kromek ? ) .
    Hula z zegarem 80MHZ ale moze i szybciej ( nie mialem jak sprawdzic w praktyce ), co przy 32-bitowych ukladach I/O daje okolo 240 MB/s.
    Z taka przepustowoscia mozna juz sie pokusic o jakis video-processing albo inne aplikacje czasu rzeczywistego.
    Niezle jak na poczatek.
    Procesor jest kompatybilny na poziomie kodu binarnego w 100 procentach z opracowaniem MicroBlaze firmy Xilinx w wersji EDK8.1i .

    jako ze w zamysle mial to byc mikrokontroler, pozbylem sie ukladow cache, specjalizowanych szyn I/O i pamieciowych oraz FPU.
    Moge jednak dolaczyc z zewnatrz prawie 2^32 pamieci RAM o ile ta w srodku FPGA nie wystarczy. Moge tez dokladac wewnetrzne lub zewnetrzne uklady I/O bez zadnych problemow.
    Na poczatek zamierzam zaimplementowac jakis uklad szeregowego I/O i moze sterownik panela LCD i zrobic na tym jakas zabawke :) .
    Pozniej moze wymysle cos madrzejszego i postaram sie na tym troche zarobic, o ile sie da.
    A w miedzyczasie pomysle o udostepnieniu uproszczonej wersji procesora ( bez przerwan i wyjatkow ) szerszemu gronu zainteresowanych dla celow edukacyjnych/testowych.

    Tak wiec jak widac, niewielkim nakladem sil i srodkow kazdy moze sobie zrobic swoj wlasny procesor taki jaki mu sie tylko zamarzy o calkiem niezlych osiagach i to prawie za darmo.
    Zachecam do takich dzialan bo to jest przyszlosc.
    Powoli tradycyjne procesorki i mikrokontrolerki w osobne kosteczce zaczna odchodzic w cien na rzecz ukladow mniej lub bardziej przypominajacych FPGA.

    Pozdrawiam, yego
  • REKLAMA
  • #2 2425832
    prokopcio
    Poziom 29  
    Posty: 2027
    Pomógł: 39
    Ocena: 143
    zapodaj fotkę twojego dzieła - będzie ciekawiej
  • REKLAMA
  • #3 2425947
    yego666
    Poziom 33  
    Posty: 2175
    Pomógł: 239
    Ocena: 564
    Prokopcio,

    szczerze mowiac zabiles mi cwieka, bo nie bardzo wiem jak zrobic zdjecie soft core'u.
    podaj pomysl to sprawdze czy sie da :) :?::?::?::?::?:

    Pozdrawiam, yego
  • #4 2426303
    McRancor
    VIP Zasłużony dla elektroda
    Posty: 5326
    Pomógł: 479
    Ocena: 124
    A na jakim devboardzie zrobiłeś projekt? Mógłbyś jakiś polecić?
  • #5 2426480
    yego666
    Poziom 33  
    Posty: 2175
    Pomógł: 239
    Ocena: 564
    Wzialem najprostszy dostepny sprzet.

    Digilent Spartan 3-400 taki jak na zalaczonej fotce. Mozna go dostac za 99 dolarow z kostka 200K lub za 150 dolarow z kostka 400K bramek.
    Procesor miesci sie w obu i jeszcze sporo miejsca zostaje na inne rzeczy.
    Plyta dziala bez problemu z softem ISE 8.1i .
    Widac nawet kwarc, ktory dolozylem, bo fabrycznie jest zainstalowany 50MHz, ale jest tez podstawka na dodatkowy. I wlasnie tam jest moj kwarc.
    Pozdrawiam, yego
    Załączniki:
    • Kazdy moze zrobic swoj wlasny procesor taki jaki chce :) Image009.jpg (71.49 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #6 2543041
    yego666
    Poziom 33  
    Posty: 2175
    Pomógł: 239
    Ocena: 564
    Mam EDK8.1i i wszystko dziala OK z oryginalnym IP corem od Xilinxa.
    Chce zmusic Platform Studio SDK do wygenerowania plikow binarnych zamiast lub oprocz plikow ELFowych (*.o) . Czy ktos z Kolegow wie moze ktore opcje kompilatora lub linkera nalezy ustawic by tego dokonac ?

    na razie uzywam konwertera ELF2BIN i to dziala dobrze, ale moze jest inny prostszy sposob by dostac na wyjsciu SDK plik zdatny do zainicjowania ROMu ?

    Dzieki z gory za podpowiedzi.

    pozdrawiam, yego
  • Pomocny post
    #7 2543112
    pir0man
    Poziom 12  
    Posty: 11
    Pomógł: 2
    yego666 napisał:

    Chce zmusic Platform Studio SDK do wygenerowania plikow binarnych zamiast lub oprocz plikow ELFowych (*.o).

    o ile pamietam, EDK Xilinxa opiera sie na przerobionym kompilatorze GCC. Mozesz sprobowac uruchomic gcc z opcja --target-help - byc moze bedzie tam jakis czysty format binarny. Mozesz tez edytowac recznie skrypt linkera, zmienic OUTPUT_FORMAT("elf32_costam") na binary,
    choc rozwiazanie z elf2bin wydaje sie mi najprostsze, zwlaszcza ze mozna zrobic jakiegos Makefile'a, ktory wszystko to zautomatyzuje

    PS. apropos Twojego procesora: czy pamiec SRAM na plytce pracuje Ci z 80Mhz ?
  • #8 2544322
    you-zek
    Poziom 15  
    Posty: 229
    Pomógł: 3
    Ocena: 23
    Pomysł nie jest nowy, ale efekty... podobają mi się!! Głównie oszczędność $$$ :D
  • REKLAMA
  • #9 2544522
    sepher
    Poziom 19  
    Posty: 301
    Pomógł: 21
    Ocena: 4
    Na wstępie - gratuluję udanego projektu :). Mógłbyś napisać trochę więcej o tym z jakich narzędzi chcesz korzystać do generowania zawartości ROM-u? EDK niestety nie jest darmowy :/.
  • #10 2544553
    morph13
    Poziom 25  
    Posty: 987
    Pomógł: 25
    Ocena: 32
    yego666 - chciałem wyrazić swoje uznanie dla Twojej pracy. Do "wglądu" nie jest mi potrzeba fotka :-) wystarczy opis w pierwszym poście który robi odpowiedznie wrażenie. Śledzilem ten temat w serii artykułów w EP.

    Zreszta wcale mnie nie dziwą Twoje projekty i postępy, od poczatku jesteś liderem na Elce jeśli chodzi o VHDL, CPLD i FPGA :-). Co do przyszłosci takich konstrukcji to jest to zapewne "jedna z dróg" rozwoju lub ewolucji standardowych uP.
  • #11 2545520
    yego666
    Poziom 33  
    Posty: 2175
    Pomógł: 239
    Ocena: 564
    Szczerze mowiac nie liczylem, ze tylu Kolegow temat zainteresuje. Dzieki za dobre slowo, choc wcale nie liczylem na jakiekolwiek pochwaly :o .
    Tym bardziej mi milo jesli kogos zachecilem choc troszke do zapoznania sie z ukladami PLD :) .

    Wracajac jednak do meritum to w kolejnosci pytan odpowiedzi sa nastepujace:
    pir0man
    Zewnetrzny RAM ma czas dostepu 10ns, ale niestety po drodze do wnetrza FPGA ( konkretnie do bloku rejestrow ) znajduje sie kilka multiplexerow oraz sporo sciezek i bufory wejsciowe. W sumie opoznienie wynikajace z tego doklada jakies 6ns do czasu dostepu przy odczycie z zewn. RAMu. Stad nie udalo mi sie zrobic odczytu w jednym cyklu. Zapis owszem dziala w pojedynczym cyklu, ale dla uniformizacji zdecydowalem sie na jednolite czasy cyklu zapisu i odczytu. Zatem mozna uznac, ze RAM zewnetrzny ( wewnetrzny BRAM zreszta takze ) dziala z polowa predkosci zegara. Wewnwetrzny BRAM w praktyce moze dzialac do okolo 200MHz, ale sporo czasu zabiera generacja adresu dla pamieci ( dodawanie 32 bitowych liczb ) stad i BRAM dziala z polowa predkosci zegara.

    you-zek
    Faktycznie nie nowy to pomysl, ale praktyczne mozliwosci jego realizacji dostepne sa szerokiej gawiedzi dopiero od niedawna ( nie liczac ASICow ).
    Oszczednosc w moim przypadku polega na tym iz w kostke kosztujaca ok $10 moge wlozyc az cztery takie procki i jeszcze troche innego smiecia. Zatem jeden procek to okolo $2 a w sumie dostane okolo 280 MIPSow
    Nie mam na razie zamiaru uzywac wiecej niz jednego procesora na raz, ale jak bede mial kaprys to nie ma przeszkod :) .
    Moze za jakis czas zmierze sie z portem swojego procka na kostki Actel FUSION. To bedzie wyzwanie ... Na razie jestem umoczony w Spartany 3 i 3E i jeszcze troche z nimi powalcze.

    sepher
    Najpierw korzystalem z kodu maszynowego i recznie przekladalem programy na bity, bajty i instrukcje maszynowe. Czynnosc godna polecenia zatwardzialym grzesznikom jako pokuta :) . Gwarantuje pelna resocjalizacje po miesiacu, albo pelne oblakanie :(. Potem sciagnalem sobie zrodla mb-gcc ze stro Xilinxa. Niestety w linuchu nie jestem biegly i nie mam na niego czasu, totez nie uruchomilem niczego na tym sofcie.
    Kilka dni temu zaposiadlem EDK 8.1i ( legalnie ) i sprawy ruszyly do przodu. korcilo mnie by skorzystac z pakietu i uruchamiac firmowy system z MB i innymi IP core'ami, ale gdzie przyjemnsc z wlasnorecznie napisanego procesora ? Stad postanowilem wykorzystac jedynie SDK do tworzenia softu. To sie udaje dosc dobrze, trzeba bylo jedynie przebrnac przez setki dokumentow mowiacych o specyfice srodowiska i dostosowaniach dialektu jezyka C do procesora. jestem jeszcze daleko w lesie, ale juz proste programy dzialaja. C nie jest dla mnie niczym nowym, ale w tym srodowisku sa przerwania i inne dosc specyficznie deklarowane elementy, wiec na razie idzie mi dosc powoli.
    SDK generuje wyniki po kompilacji, asemblacji i linkowaniu w postaci plikow ELF, wiec trzeba je przerabiac na zwykle pliki binarne, ktorych mozna uzyc w zrodle VHDL do inicjalizacji RAMu. Oczywiscie byloby to proste, wiec dla utrudnienia nalezy jeszcze podzielic wynikowy plik binarny na cztery kawalki by inicjalizowac cztey kawalki pamieci jednoczesnie. Do tego celu napisalem sobie programik w C, ktory robi co trzeba. Moze za jakis czas, gdy sie calkiem zaznajomie z pakietem, zmienie podejscie i bedzie to troszke prostsze.

    morph13 napisał:
    Śledzilem ten temat w serii artykułów w EP.

    Sorry ale nie czytuje EP ( notoryczny brak czasu i wrodzona abnegacja ), wiec nie wiem co masz na mysli, ale pewnie nie ja jeden cos takiego wymantykowalem, stad i mnogosc zrodel informacji. Swiadczy to tylko o rosnacej popularnosci tematyki a to chyba dobrze :)

    Gdy wyknuje jakis porzadny kawalek kodu, zarzuce cos na forum do ewaluacji. na razie jeszcze nie czas na to. musze wytrwac w postawie pozytywistycznej.

    Aha, jeszcze jedna wazna kwestia: Sporo czasu strawilem i jeszcze troche mi zejdzie nad tym projektem, jednak inzynier ze mnie chyba lepszy niz handlowiec, bo nie mam pojecia jak moglbym robic jakies pieniadze na czyms takim. nie brak mi akurat kasy, ale glupio jest marnowac czas i miec z tego tylko satysfakcje. Moze ktos podpowie co mogloby miec wziecie na rynku w kontekscie tego projektu ? Dochodami ( o ile takie kiedykolwiek beda ) chetnie sie podziele ze szczesliwym pomyslodawca. Sam nie mam pomyslu jak zamienic krzem w zloto.

    Pozdrawiam, yego
  • #12 2545919
    McRancor
    VIP Zasłużony dla elektroda
    Posty: 5326
    Pomógł: 479
    Ocena: 124
    Myśle że porządna strona WWW z takim projektem - popisem umiejętności, da szanse na otwarcie drogi do złota. Dodatkowo możliwość nabycia IP-cora ;)
  • REKLAMA
  • #13 2662305
    yego666
    Poziom 33  
    Posty: 2175
    Pomógł: 239
    Ocena: 564
    Tak jak wczesniej obiecalem, udostepnie chetnie moj dzialajacy core procesora XMB32,
    ktory jest klonem procesora MicroBlaze zrobionego przez firme Xilinx
    i dostepnego za niecalkiem male pieniadze.

    XMB32 powstal z nastepujacych powodow:
    1). Wrodzona niechec autora do placenia za cos co mozna samemu zrobic,
    2). Potrzeba posiadania "mikro"kontrolera o duzej wydajnosci,
    3). Nieistnienie na rynku procesorow ( IP Core'ow ) o wymaganych wlasciwosciach,
    4). chec zawarcia procesora wraz z pamiecia i wieloma dowolnie wybranymi ukladami towarzyszacymi
    w jednej taniej kostce,
    5). Zainteresowanie ( nie tylko zawodowe ) ukladami programowalnymi CPLD i FPGA.

    XMB32 posiada zbior instrukcji kompatybilny z MicroBlaze v4.00a czyli najswiezszym,
    z nastepujacymi roznicami:
    1). Dcache oraz Icache nie zostaly zaimplementowane,
    2). Kanaly FSL nie zostaly zaimplementowane,
    3). Sprzetowe dzielenie, mnozenie i Floating point nie zostaly zaimplementowane.
    W zwiazku z powyzszym instrukcje zwiazane z tymi blokami funkcjonalnymi rowniez nie dzialaja.

    Dzielenie, mnozenie i FP kompilator robi w takiej sytuacji programowo,
    ale jako ze z zalozenia XMB32 ma byc mikrokontrolerem a nie procesorem ogolnego przeznaczenia,
    brak tych blokow nie bardzo przeszkadza w realizacji zadan zwiazanych ze sterowaniem.
    Byc moze w ktorejs z przyszlych wersji doloze to lub owo do konfiguracji.
    Na razie jest Barrel Shifter oraz blok porownan, ktore bardzo pomagaja w programach do sterowania.

    Jako ze to co udostepniam jest wlasciwie wciaz wersja beta, jakies bledy moga sie zdarzac,
    choc dolozylem wszelkich staran, by je wyeliminowac.

    Przerwania zostaly zaimplementowane i dzialaja, tyle ze nie wystawiam ich na zewnatrz.
    Zamiast tego podlaczylem na sztywno przerwanie maskowane do zrodla sygnalu 188Hz,
    tak by mozna w handlerze obslugiwac jakis wyswietlacz i niezbyt szybkie zdarzenia dowolnego innego rodzaju.
    Jesli ktos chce, moze zawsze w programie glownym zalozyc sledzenie pinow portu wejsciowego
    i na nie reagowac z pelna predkoscia procesora, ktora w wersji udostepnianej wynosi 50MHz.

    XMB32 jest procesorem RISC z architektura potokowa, a wiec zasadniczo realizuje
    jedna instrukcje maszynowa na kazdy cykl zegara, za wyjatkiem operacji zapisu i odczytu pamieci RAM
    i portow I/O, ktore trwaja dwa cykle zegara, oraz skokow ktore zajmuja 2 lub 3 cykle zegara
    zaleznie czy "Delay-slot" jest uzyty czy nie. Pamiec RAM zorganizowana jest jako cztery bloki
    o pojemnosci 2kB kazdy, polaczone tak by uzyskac 32-bitowa szyne danych.
    Stad tez mamy w tej wersji razem 2048 slow 32-bitowych na program i dane.
    Docelowo pojemnosc pamieci bedzie ograniczona do pojemnosci adresowanej przez 32-bitowy procesor czyli do 4GB.

    Porty I/O to obecnie jeden wejsciowy port 32-bitowy i jeden wyjsciowy port 32-bitowy.
    Porty moga byc czytane i zapisywane w porcjach 32, 16 i 8 bitowych.
    Oczywiscie, jako ze procesor jest Big Endian, to trzeba uwazac skad i dokad sie czyta/pisze dane
    przy operacjach na portach I/O :) .

    U siebie testowalem swoj produkt na plytce Digilent-Spartan 3-400, jednak nic nie stoi na przeszkodzie
    by dzialac na Digilent-Spartan 3-200, takiej jaka sie kupuje od Xilinxa za 99$.
    Do uruchomienia calosci potrzebny jest jeden z tych kitow oraz darmowy pakiet ISE Web-Pack 8.1.03i.

    Dodatkowo jesli ktos zechce jakis soft pisac, to mozna to zrobic na dwa sposoby :
    1). Kupic pakiet EDK od Xilinxa za jakies 500$, albo
    2). Zainstalowac Linucha na PC i skompilowac pakiet zrodel MB-GCC
    dostepny rowniez na stronach Xilinxa tyle ze za darmo.
    Chetnie skorzystam z doswiadczen dotyczacych punktu 2).

    W przygotowanym przeze mnie pakiecie ewaluacyjnym bedzie IP-core w postaci pliku .ngc,
    projekt gotowy do uzycia pod ISE, oraz przykladowy program w C, by ulatwic wejscie w temat tym,
    ktorzy nie mieli nigdy do czynienia z tym dialektem jezyka C.
    Przyklad nie jest moze na najwyzszym poziomie, ale nie o to w nim chodzi.
    Celem jest zademonstrowanie sposobu uzycia podstawowych konstrukcji takich jak przerwania
    i komunikacja z portami I/O. Reszta to zwykle C.
    Oczywiscie najlepiej zastosowac metode RTFM, a jest co czytac by sie dowiedziec wiecej o procesorze
    i narzedziach do jego implementacji i oprogramowania. Xilinx jest dosc szczodry,
    choc z jakoscia tych opracowan nie jest najlepiej.

    Jeszcze w tej chwili pracuje nad zlozeniem do kupy zgrabnego pakietu,
    by chetni nie mieli za wiele do roboty przy pierwszym kontakcie,
    ale do soboty powinien byc juz gotowy do prob polowych.

    Docelowo moj IP-core bedzie produktem komercyjnym,
    wiec w darmowej wersji zawarlem ograniczenie czestotliwosci zegara do 50MHz,
    nie udostepnilem przerwan ani resetu na zewnatrz procesora, oraz zalozylem blokade polegajaca na tym,
    ze po jakims czasie procesor zawiesi sie i nie bedzie dzialal prawidlowo. Czas ten jest na tyle dlugi
    by umozliwic zabawe i poznanie mozliwosci procesora,
    ale nie dosc dlugi by mozna uzywac procesora komercyjnie, na co zreszta autor nie wyraza zgody,
    jako ze komercyjna wersja wolna od ograniczen bedzie rowniez dostepna w niedlugim czasie
    i za rozsadne pieniadze.

    Zachecam do zainteresowania sie tym projektem, gdyz jak wielokrotnie tu na Forum stwierdzano :
    W przyszlosci najprawdopodobniej nie da sie i tak uniknac zagadnienia ukladow PLD.

    Pakiet bede udostepnial osobom ( o ile takie beda ), ktore zglosza w watku zainteresowanie otrzymaniem go.
    Na razie nie bedzie wersji do zaladowania z jakiegos serwera. Nie mialem czasu dopracowac tej opcji.

    Nie bede ukrywal, ze chcialbym uslyszec od potencjalnych zainteresowanych ich opinie i sugestie.
    Bedzie to bardzo cenna pomoc w ulepszeniu produktu.

    pozdrawiam, yego
  • #14 2686409
    yego666
    Poziom 33  
    Posty: 2175
    Pomógł: 239
    Ocena: 564
    Wlasnie udostepnilem wersje ewaluacyjna do sciagniecia spod linku :
    http://rapidshare.de/files/21918943/xMB32_bundle.ZIP.html

    Jesli ktos zechce wyprobowac moj xMB32, to prosilbym o komentarz i uwagi dotyczace procesora. Moga one wniesc wiele dobrego do projektu.

    Pozdrawiam i milej zabawy, Yego
  • #15 3018383
    tony_tg
    Poziom 16  
    Posty: 140
    Pomógł: 13
    Ocena: 3
    Yego666,

    Robisz cos jeszcze z tym prockiem? Czemu wymieniales kwarc? Nie mogles uzyc DLL'a albo DCM'a w FPGA i popatrzec jak szybko mozesz potaktowac ten procek a w zasadzie jego jadro? (nie bawilem sie tym kitem wiec moze zegar idzie do czegos innego na pcb i odpadalo to rozwiazanie?)

    Mowisz, ze masz 3 stage pipeline. czyli DEM? (Decode, Execute, Memory access).
    Pare informacji bys podal innych niz to co mozna w broszurach marketingowych znalezc ;)

    No i stargetowales sie konkretnie na Spartana 3 czy kod jest przenoszalny na inne platformy?

    Pozdrawiam,
    tony_tg

    Dodano po 52 [minuty]:

    zapomnialem dodac.

    Dalej uzywasz elf2bin? A co dalej? place and route i programujemy czy masz jakis debuger do tego napisany i w procku masz wystawionego JTAG'a i nie musisz czekac na place and route?

    Zakladajac, ze debugger sie jeszcze nie podpina do Twojego procka to jak sie zmeczysz, (ja sie zmeczylem juz kiedys tym wiec znalazlem opcje w Xilinx'ie :)) to popatrz na opcje bitgen'a. Jak go sobie zawolasz z command line'a z opcja -bd to wczytaj sobie istniejacy bitstream i podaj mu elf'a i wymien tylko zawartosc BlockRAM i programuj. W ten sposob nie musisz czekac na place and route za kazdym razem jak chcesz przetestowac nowy program dla procka :) No i przydaje sie do innych rzeczy ;)

    Pozdrawiam,
    tony_tg
  • #16 3022857
    yego666
    Poziom 33  
    Posty: 2175
    Pomógł: 239
    Ocena: 564
    Tony_tg,

    Owszem. Obecnie jest to produkt, ktory jest testowany do obslugi pewnych funkcji w samochodach ciezarowych. Jakich dokladnie nie powiem, bo to ponoc tajemnica.
    Oczywiscie w najjasniejszej pies z kulawa noga sie nie zainteresowal tym co napisalem, stad zaprzedalem projekt w obce rece. Pecunia non olet :(
    Po fazie raczkowania faktycznie przesiadlem sie na wygodniejszy update softu. Bootloader laduje po staremu, a soft aplikacyjny do zewn RAMu przez dedykowany link typu IIC obslugiwany przez BootLoader.

    Z opcjami Bitgenu troche potrenuje gdy sie opedze od biezacej roboty, ale dzieki za wskazanie.

    Co do architektury, to Mem access jest robiony w fazie execute, a przed faza Decode jest faza Fetch. Dodalem w koncu cache i troszke poprawilem to i owo w projekcie. Zasadniczo jest to wciaz MB tyle, ze nie by Xilinx.

    Nie wiem co by Cie interesowalo jesli chodzi o dane. Jak dotad niewielu w ogole zauwazylo temat, stad nie kontynuowalem go na Forum.

    Projekt jest w zasadzie przenosny miedzy platformami za wyjatkiem prymitywow BRAM i rejestrow. Odpalalem to na S3 i S3E bez problemow.
    Innych platform nie cwiczylem z braku czasu.

    Pozdrawiam, yego
  • #17 3027864
    tony_tg
    Poziom 16  
    Posty: 140
    Pomógł: 13
    Ocena: 3
    Yego,

    Nie moglem sobie sciagnac tego ngc z rapidshare bo w pracy mam jakies dziwne internet policy ustawione i akurat do tego servera nie moge sie polaczyc. Pod koniec tygodnia powinienem miec juz internet w domu bo widze ze tutejsza telekomunikacja sie ruszyla w koncu i w poniedzialek technika mi przysla aby kabelek podlaczyl do odpowiedniej wtyczki.
    Nie wiem czy ten plik tam jest czy nie i czy udostepnil bys go jeszcze raz ale chetnie bym sie zabawil nim. Uzylbym Starter Kita dla Spartana 3E 500, tego od xilinx'a wiec taka wersje bym potrzebowal. Oczywiscie jak jeszcze chcesz aby ktos sie tym pobawil.

    No i dobrze, ze projekt idzie dalej i znajduje zastosowanie praktyczne. Szkoda byloby go nie uzyc.

    Jak robisz to jako produkt i nie mozesz dawac tego do zabawy innym to daj znac.

    Czyli masz 3 stages Fetch, Decode, Execute. Na Fetch robisz pobranie instrukcji z pamieci i zatrzasniecie slowa w przerzutnikach wewnatrz procesora, czy juz na tym etapie zaczynasz wstepne/calkowite dekodowanie i zatrzasniecie w zasadzie zdekodowanej instrukcji? Dekodery instrukcji wsadziles miedzy pamiec a procesor czy zatrzaskujesz slowo z pamieci i potem dekodery za przerzutnikami? Chodzi mi o to co sie dzieje dla BlockRAM bo zewnetrzna pamiec to inna bajka.

    Nie pytalbym, jakbym sobie tego ngc w swoje lapki dostal i zerknal na przyklad ;)

    Pozdrawiam,
    tony_tg
  • #18 3038649
    yego666
    Poziom 33  
    Posty: 2175
    Pomógł: 239
    Ocena: 564
    tony,
    Z rapidshara nie sciagniesz bo dane tam sa kasowane po 30 dniach od ostatniego downloadu.
    Chetnie udostepnie wersje demo kazdemu zainteresowanemu, ale zasadniczo jest na s3. Nie testowalem jej na s3e wiec moze nie chciec tam dzialac z jakichs przyczyn.
    Wersji demo nie bede robil specjalnie na s3e bo nie mam na to czasu a i zainteresowanie niewielkie. Taka przerobka kosztuje dzien pracy, wiec raczej nie moge go poswiecic. :( .
    Jesli chodzi o dekodowanie to w czesci DECODE dokonuje calkowitego dekodowania instrukcji dla kilku multiplexerow kierujacych ruchem danych z rejestrow i forwardingiem. sekcja EXECUTE dostaje juz gotowe zdekodowane sygnaly sterujace. Sterowanie BRAM jest wlasnie w tej sekcji i robi to bardzo maly FSM. Zewnwetrzna szyna RAM ma osobne sterowanie synchronizowane z jednej strony z sekcja EXECUTE a z drugiej strony z automatem sterujacym I-cache i D-cache. Chcialem zrobic prosty branch prediction, ale skonczylem z tym gdy doszedlem do trzech Execution Unitow :( Ten produkt nie ma miec wydajnosci procesora Alpha, wiec pozostalem przy rozwiazaniach zgodnych z intencja Xilinxa.

    Gdy znajde troszke czasu to podesle demo na wskazany e-mail. :)

    Pozdrawiam,
    Yego

Podsumowanie tematu

✨ Przedstawiono projekt własnego klonu procesora XMB32, kompatybilnego z zestawem instrukcji MicroBlaze firmy Xilinx, zaprojektowanego w VHDL dla układów Spartan3. Procesor jest 32-bitowym RISC z 3-etapową potokową architekturą (Fetch, Decode, Execute), działającym z zegarem 80 MHz i osiągającym około 80 MIPS. Projekt mieści się w poniżej 1000 slice'ów FPGA i jest implementowany na płytce Digilent Spartan 3-400. Wersja klonu nie zawiera cache (początkowo), kanałów FSL, sprzętowego dzielenia, mnożenia ani jednostki zmiennoprzecinkowej, jednak później dodano cache i poprawiono architekturę. Zewnętrzna pamięć RAM ma opóźnienie dostępu około 16 ns (10 ns pamięć + 6 ns ścieżki i multipleksery), co wymusza jednolity czas cyklu zapisu i odczytu, skutkując działaniem pamięci z połową częstotliwości zegara procesora. Projekt jest testowany w zastosowaniach przemysłowych, m.in. w systemach samochodów ciężarowych. Autor udostępnił wersję ewaluacyjną do pobrania, jednak z ograniczeniami czasowymi i sprzętowymi. Dyskutowano także o narzędziach programistycznych Xilinx EDK 8.1i, problemach z generowaniem plików binarnych zamiast ELF, oraz o możliwościach debugowania i programowania procesora. Projekt jest rozwijany i dostosowywany do praktycznych zastosowań, z naciskiem na niskie koszty i samodzielną implementację IP core'a MicroBlaze.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA