Aktív témák

  • t3rm1nat0r

    csendes tag

    válasz t3rm1nat0r #24 üzenetére

    Talán kezdem a decoderrel.

    Mint kivehető a képből, négy bemeneti vezetékből 16 kimenetet állít elő. Helyesebben a 16 közül mindig csak egy aktív. A 4 vezeték egy 4 bites decimális számként van értelmezve. A 16 vezeték közül mindig az aktív, amelyik sorszáma megfelel a deciális szám értékének.
    Az első lépés, hogy a 4 vezeték invertálódik. Ez azért kell mert mint mostmár tudjuk, az AND kapu akkor fog aktíválódni, ha minden bemenete 1. Itt négy bemenetű AND kapuk vannak a képen. Ezért nem kell megtanulni a táblázatot, elég csak a szabályt alkalmazni. 1000 bemenetű AND kapura is az érvényes.
    Tehát a 10 érteknél a vezetéken 1010 érték lesz. A két nullás vezetéknek az inverzét kell venni, így kapjuk az 1111 értéket, ami már aktíválni fogja az AND kaput.

    void define_decoder(int tr3,int tr4,int mask)
    {
    int dx[]={sor,sor,sor,sor};//invertalva egy ketsorral lejjebb

    if(mask&1) dx[0]=0;
    if(mask&2) dx[1]=0;
    if(mask&4) dx[2]=0;
    if(mask&8) dx[3]=0;

    define_links(tr3 ,tr4+dx[0] ,tr4+ketsor+dx[1],0);
    define_links(tr3+1,tr3,link_5V,0); //inverter

    define_links(tr3+2,tr4+ketsor*2+dx[2],tr4+ketsor*3+dx[3],0);
    define_links(tr3+3,tr3+2,link_5V,0);//inverter

    define_links(tr3+4,tr3+1,tr3+3,0);
    define_links(tr3+5,tr3+4,link_5V,0);//inverter
    }

    /A programban nincs szükség invertálásra, mert a decoder a counter-t dekódolja, ami Dflipfloppokból áll. Azokról pedig közvetlenül levehető a kimenet inverze, hiszen a visszacsatolt rész pont így működik./

Aktív témák