Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Verilog - Układ kombinacyjny - obsługa diód w zależności od stanu przycisków

31 May 2015 14:20 1011 8
  • Level 7  
    Witam.
    Moim zadaniem jest stworzenie programu na mikrokontroler używając układu kombinacyjnego.

    Treść zadania brzmi:
    W procesie technologicznym dokonuje się pomiaru temperatury w 9 różnych punktach. Gdy temperatura przekroczy wartość ustaloną, dany czujnik jest ustawiany w stan wysoki. Jako wyjścia traktuje się dwie diody - L1 i L2. Zaprojektuj układ, który zaświeci diodę L1, gdy temperatura będzie przekroczona dokładnie w 5 lub 6 czujnikach, zaś diodę L2 gdy będzie przekroczona w 7, 8 lub 9 czujnikach. W innych przypadkach obie diody są wyłączone.

    Mam to zaprogramować na płytce, gdzie naciśnięcie klawisza (jednego z dziewięciu) oznacza przekroczenie temperatury, czyli stan wysoki.

    Próbowałem to rozpisać i użyć tablic Karnaugha, jednak mając 9 zmiennych wejściowych tablice rozrastają się do wielkich rozmiarów. Moje pytanie zatem - jak to uprościć? Czy jest jakiś program, który obsłuży 9 zmiennych i wypisze finalnie równania dla każdej z nich?
  • Level 7  
    Ktoś, coś, cokolwiek?
  • Level 27  
    Ale masz to zrobić na mikrokontroler czy w postaci syntezowalnego opisu HDL na układ programowalny (CPLD/FPGA) ?
    Generalnie zarówno C jak i Verilog są językami dość wysokiego poziomu i rozpisywanie (i minimalizacja) tablic Karnaugh nie są potrzebne.
  • Level 7  
    Na FPGA (może źle napisałem, że na mikrokontroler) -> dokładnie na ten model Spartan-3AN FPGA.

    Próbowałem - oprócz Karnaugha - metodą Quine'a-McCluskeya w jakimś generatorze on-line, ale wypełniania tablic jest od groma, a przy tym często nie jest on w stanie policzyć wyniku.

    Głównie to chodzi o to, żeby był to układ kombinacyjny, a nie sekwencyjny. Napisane w Verilogu. Wszystkie chwyty dozwolone oprócz sekwencji.
  • Level 26  
    Generalnie cały Twój problem sprowadza się do kombinacyjnego policzenia jedynek w słowie wejściowym. A w zasadzie to kto Ci broni pododawać poszczególne bity?
  • Level 27  
    Zrób sumator jednobitowy jako Twoją "czarną skrzynkę" (Y = A1 XOR A2, C = A1 AND A2), gdzie A1, A2 to są wejścia, Y wyjście a C przeniesienie. Połącz kaskadowo 8 sumatorów. O tak, jak na rysunku:
    Verilog - Układ kombinacyjny - obsługa diód w zależności od stanu przycisków
    Tu masz dla 4 czujników. Na wyjściu masz liczbę, którą musisz odpowiedni porównać z Twoimi progami (ile czujników ma być aktywnych aby zapalić LED) i wówczas zapalasz LEDa.
    Nie używaj konstrukcji "always @posedge/negedge" aby nie tworzyć przerzutników.
  • Level 7  
    Właśnie dostałem książkę, z której wzięto to zadanie.. i przy okazji jego rozwiązanie - na sumatorach.

    Verilog - Układ kombinacyjny - obsługa diód w zależności od stanu przycisków
    Verilog - Układ kombinacyjny - obsługa diód w zależności od stanu przycisków

    Chciałem zbudować taki układ sumatorów w ISE Project Navigator, w którym piszę te programy na FPGA. Jednak w projekcie tworzonym na Spartan 3AN nie ma możliwości dodania takiego bloku jak sumator jednobitowy add1.

    Podane są równania na s1,s2,s3,s4 ale nie mogę ich dać na wejścia. Wejściami mają być przyciski od a1 do a10.

    Mimo to mam taki kod opisujący sumator:


    Code: verilog
    Log in, to see the code


    I to:
    Code: verilog
    Log in, to see the code


    Szczerze mówiąc to nie wiem jak to rozwinąć, co tu poprawić i połączyć...
  • Level 26  
    Zamiast to robić na piechotę, może skorzystasz ze zwykłej arytmetyki?
  • Level 7  
    Co masz na myśli? Jak pododawać, żeby mieściło się w ramach układu kombinacyjnego?
pcbway logo