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

Układ kombinacyjny. Jak zaprojektować? Naturalny kod binarny.

olek641 30 Lis 2006 15:15 3560 20
REKLAMA
  • #1 3279365
    olek641
    Poziom 11  
    Posty: 7
    Ocena: 2
    Witam wszystkich, mam do rozwiązania pewien problem i nie wiem jak to zrobić, proszę o pomoc:

    Zaprojektować układ kombinacyjny, który otrzymuje na wejściach A[7..0], B[7..0], C[7..0], 8-bitowe liczby w naturalnym kodzie binarnym i daje na wyjściu Y[7..0] największą z liczb A[], B[], C[]

    Z góry dziekuje za pomoc. Pozdrawiam.
  • REKLAMA
  • #2 3279416
    czarutek
    Poziom 34  
    Posty: 2438
    Pomógł: 150
    Ocena: 86
    Ja bym to próbował ugryść jako układ iteracyjny. Ma ktoś inny pomysł?
  • #3 3279609
    eP
    Poziom 27  
    Posty: 797
    Pomógł: 115
    Ocena: 21
    Dwa ( układy 157 ) multipleksery 2 wejściowe i 2 komparatory - i tak 2 razy .
    Multipleksery sterowane wyjściem z komparatora wybierałyby większą liczbę , a następny stopień robiłby to samo.

    Nie jest to coś specjalnie odkrywczego.
    Inne wyjście z gatunku brute-force to zastosować pamięć 16Mb*8 i tak ją zapisać by na wyjściu pojawiała się odpowienia część adresu.
    Jednak dla liczb 12 bitowych już mogły by być problemy z podobną realizacją :D
  • REKLAMA
  • #4 3279656
    czarutek
    Poziom 34  
    Posty: 2438
    Pomógł: 150
    Ocena: 86
    O ile 'układ kombinacyjny' nie oznacza tu czystej realizacji na standardowych bramkach... :|
  • REKLAMA
  • #5 3280022
    olek641
    Poziom 11  
    Posty: 7
    Ocena: 2
    Realizacje układu trzeba przeprowadzić na standardowych bramkach :/
  • #6 3280103
    eP
    Poziom 27  
    Posty: 797
    Pomógł: 115
    Ocena: 21
    olek641 napisał:
    Realizacje układu trzeba przeprowadzić na standardowych bramkach :/


    A na ilu bramkach jeśli można wiedzieć ?
  • #7 3280107
    czarutek
    Poziom 34  
    Posty: 2438
    Pomógł: 150
    Ocena: 86
    Właśnie tego się od początku obawiałem...
    Jak mi się uda, to spróbuję zrobić blok środkowy (pierwszy i ostatni są prostsze).
  • #8 3280278
    olek641
    Poziom 11  
    Posty: 7
    Ocena: 2
    Nie wiem dokładnie na ilu bramkach, wykładowca nie napisał. To jest mój pierwszy projekt z układów kombinacyjnych i nie wiem za bardzo o co chodzi:(
  • #9 3280299
    eP
    Poziom 27  
    Posty: 797
    Pomógł: 115
    Ocena: 21
    olek641 napisał:
    Nie wiem dokładnie na ilu bramkach, wykładowca nie napisał. To jest mój pierwszy projekt z układów kombinacyjnych i nie wiem za bardzo o co chodzi:(


    To musisz się dokładniej zapytać wykładowcy o co mu chodzi.
    Czy to ma być tylko symulacja czy chodzi o wykonanie materialnego prototypu ?

    Jeżeli to tylko symulacja to nie ma większego problemu. Możesz z bramek poskładać komparatory i multipleksery i połączyć to wszystko razem.
  • #10 3280317
    olek641
    Poziom 11  
    Posty: 7
    Ocena: 2
    Więc tak chodzi o to że musimy zaprojektować ten układ tzn: napisać tablice prawdy, uprościć ją, potem mamy złozyć układ właśnie z tych bramek i zaprogramować go w programie MAX plus II filmy ALTERA w jezyku AHDL
  • #11 3280318
    czarutek
    Poziom 34  
    Posty: 2438
    Pomógł: 150
    Ocena: 86
    Myślałem o czymś takim:
    Ai, Bi, Ci - bity wchodzące do bloku i,
    Pi0, Pi1 - przeniesienie z bloku młodszego, mówiące w NB która z liczb była tam wybrana,
    Qi0, Qi1 - analogiczne przeniesienie do bloku starszego,
    Yi - bit wyjściowy z bloku i.

    Układ kombinacyjny. Jak zaprojektować? Naturalny kod binarny.
  • #12 3280497
    eP
    Poziom 27  
    Posty: 797
    Pomógł: 115
    Ocena: 21
    olek641 napisał:
    Więc tak chodzi o to że musimy zaprojektować ten układ tzn: napisać tablice prawdy, uprościć ją, potem mamy złozyć układ właśnie z tych bramek i zaprogramować go w programie MAX plus II filmy ALTERA w jezyku AHDL


    Złożyć tzn. dokonać syntezy w programie jak rozumiem.
    A językiem będzie VHDL albo Verilog.
    To w zasadzie wtedy narzędzie wykona całą czarną robotę.
  • REKLAMA
  • #13 3280573
    olek641
    Poziom 11  
    Posty: 7
    Ocena: 2
    A mozesz mnie jakoś naprowadzić jak mam napisać ten program w języku VHDL, bo potem myśle ze już sobie poradze.
  • #14 3280802
    eP
    Poziom 27  
    Posty: 797
    Pomógł: 115
    Ocena: 21
    olek641 napisał:
    A mozesz mnie jakoś naprowadzić jak mam napisać ten program w języku VHDL, bo potem myśle ze już sobie poradze.


    Aby napisać program to musisz najpierw zapoznać się z tym językiem z jego filozofią najkrócej mówiąc.
    Musisz umieć określić sygnały na wejściu czyli określić interfejs jednostki projektowej. (Coś w rodzaju deklaracji funkcji która otrzymuje określone typy danych w wywołaniu )

    A potem już pozostaje Ci tylko stosować odpowiednie opreracje logiczne które dadzą Ci zamierzony rezultat na wyjściu.
    Przy czym tutaj masz generalnie dwie dosyć skrajne możliwości postępowania. Pierwsza to stworzyć samemu odpowiednią funkcję logiczną ( logikę ) tak by narzędzie nie wiedziało że te 24 bity na wejsciu to są 3 liczby 8 bitowe.
    Czyli te zależności między sygnałami odpowiadającymi poszczególnym bitom musiały by być przez Ciebie zdefiniowane explicite w kodzie źródłowym, albo drugie nieco łatwiejsze podejście to zdefiniowanie określonych wektorów 8 bitowych i manipulowanie nimi w kodzie (czyli operacje porównywania itd ) wtedy to narzędzie już sobie musi poradzić z takim zapisem i ono decyduje jaką konkretnie logikę wygenerować by dany przepis wcielić w życie (zaimplementować w układzie )

    Mam nadzieję że nie zagmatwałem za bardzo, ale jak masz wątpliwości to pytaj.
  • #15 3283492
    czarutek
    Poziom 34  
    Posty: 2438
    Pomógł: 150
    Ocena: 86
    Panowie oświećcie mnie - czyli tu nie chodzi o klasyczną syntezę układu kombinacyjnego?
  • #16 3283537
    eP
    Poziom 27  
    Posty: 797
    Pomógł: 115
    Ocena: 21
    czarutek napisał:
    Panowie oświećcie mnie - czyli tu nie chodzi o klasyczną syntezę układu kombinacyjnego?


    Chodzi.
    Tylko można ją robić na różne sposoby. Jak się dysponuje sprytniejszym narzędziem to wystarczy do niego przemówić liczbami w kodzie NB i ono to zrozumie i dokona właściwej syntezy a może i jeszcze co nieco zoptymalizuje.
    A jak się ma do dyspozycji narzędzie tępe co przy byle okazji sypie errorami i innymi warningami to trzeba mu wszystko kawa na ławę wyłożyć bramka po bramce by nie protestowało.

    pozdr.
  • #17 3283562
    czarutek
    Poziom 34  
    Posty: 2438
    Pomógł: 150
    Ocena: 86
    Czyli "VHDL albo Verilog" to programy dokonujące syntezy? Takie sprytne są?
    Sorki, ja stara data, nie znam ich...
  • #18 3283594
    eP
    Poziom 27  
    Posty: 797
    Pomógł: 115
    Ocena: 21
    czarutek napisał:
    Czyli "VHDL albo Verilog" to programy dokonujące syntezy? Takie sprytne są?
    Sorki, ja stara data, nie znam ich...


    To są języki, lecz nie każdy tak giętki by dokonać syntezy co pomyśli głowa
    - parafrazując wieszcza :D

    ta druga część po przecinku dotyczyła oczywiście konkretnych narzędzi -środowisk oferowanych przez danego producenta układów programowalnych.
    W przypadku Altery ich środowisko zowie się AHDL
  • #19 3283632
    czarutek
    Poziom 34  
    Posty: 2438
    Pomógł: 150
    Ocena: 86
    Już rozumiem. A ja chciałem siadać z ołówkiem, rysować tablice prawd i Karnaugha... :D
  • #20 3283651
    eP
    Poziom 27  
    Posty: 797
    Pomógł: 115
    Ocena: 21
    czarutek napisał:
    Już rozumiem. A ja chciałem siadać z ołówkiem, rysować tablice prawd i Karnaugha... :D


    Jak się ma tępe narzędzie jak druga strona ołówka to czasem ten ołówek i kartka się przydaje. :D
  • #21 3283685
    czarutek
    Poziom 34  
    Posty: 2438
    Pomógł: 150
    Ocena: 86
    Stara prawda... :D
    Właściwie już siadałem, ale przeraziło mnie 5 wejść i 3 wyjścia bloku...
    Pozdrawiam.

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy zaprojektowania układu kombinacyjnego, który na wejściach A[7..0], B[7..0], C[7..0] przyjmuje trzy 8-bitowe liczby w naturalnym kodzie binarnym i na wyjściu Y[7..0] zwraca największą z nich. Proponowane podejścia obejmują realizację iteracyjną z wykorzystaniem multiplekserów 2-wejściowych (np. układy 157) i komparatorów, które selekcjonują większą liczbę w kolejnych etapach. Alternatywnie rozważano implementację z pamięcią 16Mb*8, jednak jest to mniej praktyczne dla większej liczby bitów. Projekt ma być wykonany na standardowych bramkach logicznych, a następnie zaprogramowany w środowisku Altery (MAX+II) w języku AHDL. Wskazano, że można też użyć języków opisu sprzętu takich jak VHDL lub Verilog, które umożliwiają syntezę układu, choć wymaga to znajomości ich składni i filozofii. Dyskusja podkreśla konieczność napisania tablic prawdy, ich uproszczenia oraz implementacji logicznej na bramkach. Zwrócono uwagę na różne metody podejścia do problemu, od ręcznego definiowania logiki bit po bit, po operacje na wektorach 8-bitowych, które narzędzia syntezy potrafią efektywnie przetworzyć. Wskazano również na trudności związane z ograniczeniami narzędzi i potrzebą konsultacji z wykładowcą co do wymagań projektu.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA