Elektroda.pl
Elektroda.pl
X

Search our partners

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

Zamek szyfrowy z wykorzystaniem GAL 20v8a

Pi0trek121 09 Apr 2010 22:11 1094 0
  • #1
    Pi0trek121
    Level 23  
    Witam! próbuje zrobić zamek szyfrowy z wykozystaniem 2 GAL-i 20v8. Pierwszy gal ma dekodowac z kodu 1 z 10 na BCD co z reszta mi sie udalo, drugi ma za zadanie multipleksowac kod źródłowy ustawiony na DIP switch-ach w postaci binarnej a wyjscie MUX-a ma byc exnorowane i sumowane, nastepnie ma to wszystko byc wpisywane do rejestru 4 bitowego szeregowo rownoleglego i wyjscia rejestru beda sumowane. Po podłączeniu dekodera wszystko ladnie działa, pokacuja mi diody liczbe binarna, lecz jesli podłącze wyjscia 1 gala do wejscia 2 gala po przycisnieciu przestaje sie zapalac 3 bit, napiecie to okolo 1,25v, wiem ze to moze byc spowodowane przez spadek napiecia na diodach, jednak po odlaczeniu wszystkich diod jest takie same napiecie, tak jakby było gdzies spiecie w 2 galu.

    1 gal - dekoder 1 z 10 na BCD

    Code:
    Name dekoder kodu 1 z 10 na BCD ;
    
    PartNo 00 ;
    Date 2010-03-21 ;
    Revision 01 ;
    Designer Engineer ;
    Company Piotrek ;
    Assembly None ;
    Location ;
    Device G20v8a ;


    /* *************** INPUT PINS *********************/
    PIN 2 = zero ;
    PIN 3 = jeden ;
    PIN 4 = dwa ;
    PIN 5 = trzy ;
    PIN 6 = cztery ;
    PIN 7 = piec ;
    PIN 8 = szesc ;
    PIN 9 = siedem ;
    PIN 10 = osiem ;
    PIN 11 = dziewiec ;

    /* *************** OUTPUT PINS *********************/
    PIN 15 = y0 ;
    PIN 16 = y1 ;
    PIN 17 = y2 ;
    PIN 18 = y3 ;

    /*rownanie*/

    FIELD INPUT = [zero,jeden,dwa,trzy,cztery,piec,szesc,siedem,osiem,dziewiec];
    FIElD OUTPUT = [y0,y1,y2,y3];

    /*Tabela prawdy*/

    table INPUT => OUTPUT {
    'b'0000000000 => 'b'0000;
    'b'1000000000 => 'b'0001;
    'b'0100000000 => 'b'0010;
    'b'0010000000 => 'b'0011;
    'b'0001000000 => 'b'0100;
    'b'0000100000 => 'b'0101;
    'b'0000010000 => 'b'0110;
    'b'0000001000 => 'b'0111;
    'b'0000000100 => 'b'1000;
    'b'0000000010 => 'b'1001;
    'b'0000000001 => 'b'1010;
    }


    2 gal
    -----------------------------------------------------------------------------


    Name sprawdzanie ;
    PartNo 00 ;
    Date 2010-03-30 ;
    Revision 01 ;
    Designer Engineer ;
    Company Piotrek ;
    Assembly None ;
    Location ;
    Device G20v8a;


    /*Wejscia z dip switch-y*/
    /* 1 liczba*/
    PIN 2 = jedenx0;
    PIN 3 = jedenx1;
    PIN 4 = jedenx2;
    PIN 5 = jedenx3;

    /* 2 liczba*/

    PIN 6 = dwax0;
    PIN 7 = dwax1;
    PIN 8 = dwax2;
    PIN 9 = dwax3;

    /* 3 liczba*/

    PIN 10 = trzyx0;
    PIN 11 = trzyx1;
    PIN 14 = trzyx2;
    PIN 15 = trzyx3;

    /*Wejscia z licznika 1 z 10*/

    PIN 20 = czteryx0;
    PIN 21 = czteryx1;
    PIN 22 = czteryx2;
    PIN 23 = czteryx3;



    /*Wejscia sterowania multipleksera*/

    PIN 16 = a0;
    PIN 17 = a1;

    /*Wyjscie na elektromagnes*/

    PIN 19 = y;

    /*************************************Funkcje logiczne**********************************/

    /*Multipleksacja kanalow*/


    y0 = !a0 & a1 & jedenx0 # a0 & !a1 & dwax0 # a0 & a1 & trzyx0;
    y1 = !a0 & a1 & jedenx1 # a0 & !a1 & dwax1 # a0 & a1 & trzyx1;
    y2 = !a0 & a1 & jedenx2 # a0 & !a1 & dwax2 # a0 & a1 & trzyx2;
    y3 = !a0 & a1 & jedenx3 # a0 & !a1 & dwax3 # a0 & a1 & trzyx3;

    /*EXOR-owanie wpisanego kodu z kodem zrodlowym - zamiana bramki EXOR na bramki AND, NAND i OR*/

    a0 = czteryx0 # y0;
    b0 = !czteryx0 & !y0;
    EXOR1 = a0 & b0;

    a1 = czteryx1 # y1;
    b1 = !czteryx1 & !y1;
    EXOR2 = a1 & b1;

    a2 = czteryx2 # y2;
    b2 = !czteryx2 & !y2;
    EXOR3 = a2 & b2;

    a3 = czteryx3 # y3;
    b3 = !czteryx3 & !y3;
    EXOR4 = a3 & b3;


    /*Sumacja wynikow EXNOR-owania*/

    !y = EXOR1 & EXOR2 & EXOR3 & EXOR4;


    Po multipleksacji musiałem uzyc bramki EXNOR jednak była za mala ilosc termów i wzorowałem sie na zamienniku tej bramki:

    Zamek szyfrowy z wykorzystaniem GAL 20v8a

    Zamek szyfrowy z wykorzystaniem GAL 20v8a

    W pierwszym galu wyjscia y0, y1, y2, y3 ida do wejsc w drugil galu czteryx0, czteryx1, czteryx2, czteryx3.

    Proszę pamiętać o używaniu znaczników code.
    Proszę poprawić pisownię.
    Przeniesiono z Programowanie Ogólne. - arnoldziq