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

Altera MAXplus+II - jak zasymulować zbyt duży układ?? HELP!

KrizizA 06 Sty 2006 14:29 1452 9
REKLAMA
  • #1 2152445
    KrizizA
    Poziom 11  
    Posty: 11
    Problem jest taki: ponieważ ukłąd jest zbyt duży nie mieści się w żadnym z dostępnym układzie z biblioteki MAX'a - nie da się go więc skompilować i przesymulować.
    Zastanawiałem się np. nad podziałem projektu na dwie części, ale może ktoś ma pomysł jak to zrobić automatycznie.
    Na wszelkie inne propozyjce jestem również otwarty (generalnie zależy mi tylko na przesymulowaniu projektu).
    Pozdrawiam,
    Krzysiek
  • REKLAMA
  • #2 2153000
    megao
    Poziom 25  
    Posty: 691
    Pomógł: 66
    Ocena: 91
    Rozwiązanie 1

    Należy wykorzystać inną bibliotekę, może układów FLEX? Mają one przecież dużo więcej zasobów.

    Rozwiązanie 2 (niedostępne w wersji studenckiej MAX+PLUSa)

    W pakiecie MAX znajduje się moduł Partitioner, który służy do podziału dużego projektu na kilka elementów mniejszych. Można więc duży projekt "upchąć" w kilku układach.
  • #3 2153016
    KrizizA
    Poziom 11  
    Posty: 11
    We FLEX10K też się niestety nie mieści :(. Ściągam jeszcze Quatrus'a - tam są FLEX20K, może tam wejdzie... A jak nie to będę dzielił ręcznie i przepisywał wyniki do kolejnych symulacji

    A co licencji - problem nie do ominięcia niestety, bo projekt mam oddać na uczelni, gdzie jest właśnie studencka wersja MAX'a...
  • REKLAMA
  • #4 2153042
    megao
    Poziom 25  
    Posty: 691
    Pomógł: 66
    Ocena: 91
    W takim razie zdecydowanie lepszy będzie Quartus II.
    Ma doskonalszy kompilator, a więc te same projekty zajmują mniej zasobów logicznych, jak również dostępnych jest więcej bibliotek nowych i większych układów.
    Pozdrawiam.
  • #5 2153155
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    Nie wiem co to za projekt, ale skłaniam się w kierunku opinii że jest źle napisany i dlatego po syntezie się nie mieści. Niech kolega opisze co to za projekt i co ma robić. Pozatym komunikat że projekt się nie mieści w kości może też oznacza że wymagany jest jakiś element którego dany układ nie posiada (np jakieś asynchroniczne przerzutniki).
  • REKLAMA
  • #7 2154027
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    Miałem gdzieś pare kserówek z jakieś książki i dotyczyły implementacji des a AHDLu, wydaje mi się że tam było napisane że implementacja się zmieściła w jakimś układzie flex. A jeśli koledze zależy wyłącznie na symulacjach, to proponuje ActiveHDL.
  • REKLAMA
  • #8 2154415
    KrizizA
    Poziom 11  
    Posty: 11
    Niestety projekt musi być w MAX'ie lub Quatrusie... Ale wpadłem na pomysł ze zrobieniem tych 16 funkcji f(R,K) nieco inaczej - jako układ synchroniczny a nie kombinacyjny... Zobaczymy co z tego wyjdzie...
  • #9 2161552
    KrizizA
    Poziom 11  
    Posty: 11
    Mam problem z napisaniem automatu w AHDL'u. Automat po sygnale zezewolenia WR=1 powinien odczytac wejscie I[] i dać je na wyjście O_F[] oraz na wyjsciu PODKLUCZ[] dac K1[].
    W kolejnych stanach odczytuje wejscie I_F[] i daje je na O_F[] (miedzy O_F[] a I_F[] jest blok kombinacyjny) i na wyjscie PODKLUCZ[] daje odpowiednio nastepne K, aż do ich wyczerpania (16 rund). W ostatnim stanie odczytujemy wartosc I_F[] i wpisujemy na O[].

    Problem jest w tym, że to co napisałem nie za bardzo działa. Wygląda na to, jakby wyjście były zwarte z wejściem i automat zmienia wyjścia w dowolnym momencie nie czekająć na sygnał zegarowy.
    
    SUBDESIGN 16xF 
    ( 
       I[1..64] : INPUT; 
    
       K1[1..48] : INPUT; 
       K2[1..48] : INPUT; 
       K3[1..48] : INPUT; 
       K4[1..48] : INPUT; 
       K5[1..48] : INPUT; 
       K6[1..48] : INPUT; 
       K7[1..48] : INPUT; 
       K8[1..48] : INPUT; 
       K9[1..48] : INPUT; 
       K_10[1..48] : INPUT; 
       K_11[1..48] : INPUT; 
       K_12[1..48] : INPUT; 
       K_13[1..48] : INPUT; 
       K_14[1..48] : INPUT; 
       K_15[1..48] : INPUT; 
       K_16[1..48] : INPUT; 
        
       clk     : INPUT; 
       WR      : INPUT; 
    
       i_f[1..64] : INPUT; 
    
       PODKLUCZ[1..48]: OUTPUT; 
       o_f[1..64] : OUTPUT; 
       o[1..64] : OUTPUT; 
    
    ) 
    
    VARIABLE 
       ss: MACHINE WITH STATES (s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16); 
        
    BEGIN 
       ss.clk=clk; 
    
        
    CASE ss IS 
       WHEN s0 => 
          IF WR THEN 
             podklucz[]=k1[]; 
             o_f[] = i[]; 
               ss = s1; 
          ELSE ss=s0; 
          END IF; 
    
          WHEN s1 =>   o_f[]=i_f[]; podklucz[]=k2[]; ss=s2;  
          WHEN s2 =>   o_f[]=i_f[]; podklucz[]=k3[]; ss=s3;  
          WHEN s3 =>   o_f[]=i_f[]; podklucz[]=k4[]; ss=s4;  
          WHEN s4 =>   o_f[]=i_f[]; podklucz[]=k5[]; ss=s5;  
          WHEN s5 =>   o_f[]=i_f[]; podklucz[]=k6[]; ss=s6;  
          WHEN s6 =>   o_f[]=i_f[]; podklucz[]=k7[]; ss=s7;  
          WHEN s7 =>   o_f[]=i_f[]; podklucz[]=k8[]; ss=s8;  
          WHEN s8 =>   o_f[]=i_f[]; podklucz[]=k9[]; ss=s9;  
          WHEN s9 =>   o_f[]=i_f[]; podklucz[]=k_10[]; ss=s10;  
          WHEN s10 =>   o_f[]=i_f[]; podklucz[]=k_11[]; ss=s11;  
          WHEN s11 =>   o_f[]=i_f[]; podklucz[]=k_12[]; ss=s12;  
          WHEN s12 =>   o_f[]=i_f[]; podklucz[]=k_13[]; ss=s13;  
          WHEN s13 =>   o_f[]=i_f[]; podklucz[]=k_14[]; ss=s14;  
          WHEN s14 =>   o_f[]=i_f[]; podklucz[]=k_15[]; ss=s15;  
          WHEN s15 =>   o_f[]=i_f[]; podklucz[]=k_16[]; ss=s16;  
          WHEN s16 =>   o[]=i_f[]; ss=s0;  
    
          END CASE; 
    
    
    END; 
     



    Będę wdzięczny za pomoc, bo siedzę nad tym od 15 godzin i nie mogę wymyśleć jak to poprawić...
  • #10 2164963
    KrizizA
    Poziom 11  
    Posty: 11
    już sobie poradziłem, wstawiając o_f jako rejestr...

Podsumowanie tematu

✨ Problem dotyczy symulacji i kompilacji zbyt dużego projektu układu cyfrowego realizującego szyfr DES w środowisku Altera MAXplus+II, gdzie projekt nie mieści się w dostępnych układach z biblioteki MAX. Proponowano wykorzystanie większych układów z rodziny FLEX, jednak nawet FLEX10K okazał się niewystarczający. Sugerowano przejście na narzędzie Quartus II, które oferuje lepszy kompilator i większe układy, np. FLEX20K. Wersja studencka MAXplus+II ogranicza dostęp do modułu Partitioner, który umożliwia automatyczny podział projektu na mniejsze części i implementację w kilku układach. Autor rozważał ręczny podział projektu oraz zmianę architektury funkcji f(R,K) z kombinacyjnej na synchroniczną, co może zmniejszyć zużycie zasobów. Wskazano również na możliwość użycia symulatora ActiveHDL do samych symulacji, jednak wymóg uczelni to praca w MAXplus+II lub Quartusie. Problemy z implementacją automatu w AHDL rozwiązano przez zastosowanie rejestru dla sygnału wyjściowego.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA