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

Graficzna symulacja bramek logicznych w c++

michalus22 08 Sty 2008 00:10 3425 5
  • #1 08 Sty 2008 00:10
    michalus22
    Poziom 2  

    Hej. Mam mały problem. Mam do zrobienia program do graficznej symulacji działania dowolnego zestawu bramek logicznych. próbowałem na różne sposoby ale nie wiem jak sie za to zabrać. Może ktoś miałby jakiś pomysł, pokazałby jak to mniej wiecej ma wyglądać i wytłumaczył po krótce. program próbowałem robić w builderze 6. dzięki za wszelki sugestie

    0 5
  • #2 08 Sty 2008 09:35
    RhinoRace
    Poziom 16  

    powiedz co juz masz i czego dokladnie nie wies

    0
  • #3 08 Sty 2008 19:56
    michalus22
    Poziom 2  

    graficznie wszystko ok, wiem co i jak i gdzie sie robi, zrobiłem sam rysunki bramek tylko nie wiem jak zdefiniować klasy i ze strony logicznej zeby program działał, moze ktos mial kiedys podobny program

    0
  • #4 08 Sty 2008 21:26
    Akane
    Poziom 27  

    Mój pomysł:
    Napisz funkcję/metodę GateClock() która "uruchomi" wszystkie bramki. Każda bramka ma x wejść, jedno wyjście i jeden bit pamięci.
    Funkcja GateClock ma dwa przebiegi:

    Pierwszy przebieg sprawdza stany wejściowe kolejno każdej bramki, a stan który powinien się pokazać na wyjściu bramki zostaje wpisany do pomocniczego bitu pamięci. Stan wyjściowy bramki na razie nie ulega zmianie.

    Drugi przebieg kopiuje stan bitu pamięci każdej bramki na jej wyjscie i tu funkcja kończy swoje działanie.

    Taki sposób odpowiada rzeczywistemu działaniu bramek - po zmianie stanu na wejściu, stan wyjściowy zmienia się dopiero po jakimś czasie.

    Pojedynczą bramkę można by opisać strukturą, w której:
    1 bit opisuje stan jej wyjścia,
    1 bit to pomocnicza pamięć
    6 bitów lub więcej to typ i parametry bramki (np. indeks w tabeli typów)
    dla każdego wejścia przyda się pointer do objektu (klasa, struktura) który opisuje czym on jest (stan logiczny, bramka), a zarazem jest połączeniem wejścia do innego sygnału.

    Code:
    struct Object {
    
       char ObjectType;  // 0:bramka, 1:stan, 2:napięcie, 3:coś innego
       char GateType;    // 0:AND, 1:OR, 2:XOR, 3-127:inne bramki; bit7:negująca(NAND, NOR, XNOR)
       char memory;      // bit pamięci
       char output;      // stan wyjściowy
       int  inputCount;  // 2 jeśli bramka ma 2 wejścia
       Object* input[2]; // 2 wejścia
    };
    Dobrze się zastanów co wstawić do tej struktury.

    0
  • #6 11 Sty 2008 21:16
    michalus22
    Poziom 2  

    wielkie dzięki, cały czas z tym walcze i powoli jakoś to wygląda ;) jak będe miał jeszcze jakis problem to napisze program jest w fazie tworzenia ;)

    -1