Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Optymalizacja wyświetlania sekwencji

19 Cze 2018 20:04 330 2
  • Poziom 2  
    Witam

    Mam problem z optymalizacją kodu w VHDL. Chodzi o wyświetlanie kolejnych kroków na wyświetlaczu 7-segmentowym. Obecnie wyświetlanie realizuje jak poniżej. Może ktoś ma pomysł jak go zoptymalizować? Jestem początkującym w tym języku. Oznaczenia L są typu constant i odpowiadają liczbom 1, 2, 3, itp. Program używa 2 segmentów wyświetlacza.

    case time is ---wyświetlanie nr kroku w trybie sekwencyjnym



    Kod: vhdl
    Zaloguj się, aby zobaczyć kod

    Dzięki i pozdrawiam
  • Poziom 28  
    Rediel napisał:


    Mam problem z optymalizacją kodu w VHDL.



    zalezy co rozumiesz przez optymalizacje w tym wypadku,
    kod ma zajmowac najmniej miejsca w FPGA, wykonywac sie
    z jakas kosmiczna predkoscia, czy byc napisany 'elegancko',
    'profesjonalnie'?
    Tak jak jest, jest moim zdaniem calkiem dobrze;
    mozesz ewentualnie rozwazyc zdefiniowanie (w package)
    stalej tablicy (np. display) skladajacej sie z std_logic_vector(13 downto 0)
    (2 razy po 7 bitow dla obu wyswietlaczy)
    i w glownym kodzie 'case' zastapic czyms takim:

    {seg_5, seg_6} <= display(time*);

    jesli odpowiednio napisane, kompilator wygeneruje pamiec ROM,
    kod bedzie bardzo szybki i zajmowal minimalna ilosc logiki,
    kosztem zuzycia bloku pamieci oczywiscie;


    * przy okazji - 'time' jest w vhdl slowem kluczowym i nie moze byc
    uzyte w sposob jak w twoim przykladzie

    pozdrawiam
    J.

    --------------------

    'pomieszaly' mi sie dwa jezyki, verilog i vhdl;
    zapis: {seg_5, seg_6} <= ... [konkatenacja dwoch zmiennych]
    to syntax veriloga, nie vhdl;
    ale ogolna idea wydaje mi sie nadal poprawna;
    J.
  • Poziom 2  
    J.A napisał:
    Rediel napisał:


    Mam problem z optymalizacją kodu w VHDL.



    zalezy co rozumiesz przez optymalizacje w tym wypadku,
    kod ma zajmowac najmniej miejsca w FPGA, wykonywac sie
    z jakas kosmiczna predkoscia, czy byc napisany 'elegancko',
    'profesjonalnie'?
    Tak jak jest, jest moim zdaniem calkiem dobrze;
    mozesz ewentualnie rozwazyc zdefiniowanie (w package)
    stalej tablicy (np. display) skladajacej sie z std_logic_vector(13 downto 0)
    (2 razy po 7 bitow dla obu wyswietlaczy)
    i w glownym kodzie 'case' zastapic czyms takim:

    {seg_5, seg_6} <= display(time*);

    jesli odpowiednio napisane, kompilator wygeneruje pamiec ROM,
    kod bedzie bardzo szybki i zajmowal minimalna ilosc logiki,
    kosztem zuzycia bloku pamieci oczywiscie;


    * przy okazji - 'time' jest w vhdl slowem kluczowym i nie moze byc
    uzyte w sposob jak w twoim przykladzie

    pozdrawiam
    J.


    Witam dziękuje, Jestem początkującym a powód zmiany to życzenie prowadzącego przedmiot. Poczytam o tym rozwiązaniu i dam znać.