B.6 Programmi in Abel delle PALs del sensore fine
 
 

Programma PAL0

MODULE ccd_PAL0

TITLE 'Temporizzazioni per la ccd e generatore di shutter '
 
"Inputs
clk                               pin 11;
[AD9..AD0]               pin 39,3,32,44,30,2,9,42,18,26 ;  //ingressi comparatore
[CK1..CK0]                pin 38,21  istype 'reg,buffer';  //divisore di freq.
[P11..P0]                    pin 16,41,37,20,22,28,5,15,17,4,40,27  istype 'reg,buffer';
                                           //contatore di pixels, generatore di rog.

[UD11..UD0]              node   istype 'reg,buffer';  //contatore UP/DOWN
ROG                            pin 19; //impulso di rog proveniente dalla PAL2
OUT                            node;                         //selettore UP/DOWN
FF                                node;     istype 'reg';        //FF sel. UP/DOWN
FFSHU                        pin 25  istype 'reg,buffer';  //shutter
SHU                            node;
SHU0                          node;
SHU1                          node;
SHU2                         node;
SHU3                         node;
 
Equations

[CK1..CK0].clk = clk;
[P11..P0].clk  = CK1;
[CK1..CK0] := [CK1..CK0] + 1;

when ([P11..P0] >= 2169) then [P11..P0] := 0 else [P11..P0] := [P11..P0] + 1;

when ([AD9..AD0] >= 1001) then OUT = 1 else OUT = 0;

FF := OUT;  // flip-flop che memorizza il superamento della soglia. La prima volta che si
                     // supera la soglia l’uscita del FF viene forzata a 1 e rimane in questo stato
                     // anche se il segnale scende sotto la soglia.
FF.clk = ROG;
FF.AP  = OUT;

[UD11..UD0].clk = !ROG;

when (FF.FB == 1) then {
        when ([UD11..UD0] < 2087 ) then [UD11..UD0] := [UD11..UD0] + 1
                                   else [UD11..UD0] := 2087;}

else {
              when ([UD11..UD0] > 0 )    then [UD11..UD0] := [UD11..UD0] - 1
                                   else [UD11..UD0] := 0;}
 
SHU0 = [P11..P7] > [UD11..UD7];
SHU1 = [P11..P7] == [UD11..UD7];
SHU2 = [P6..P0] > [UD6..UD0];
SHU3 = SHU1 & SHU2;
SHU  = SHU0 # SHU3 # (FF.FB==0)&([UD11..UD0]==0);

FFSHU := SHU;
FFSHU.clk = !CK1;

End
 

Programma PAL1
 

MODULE ccddsp_PAL1

TITLE 'Segnali per la CCD,MAC e DSP '
 

[CK1..CK0]               pin 27,32;
[P11..P0]                   pin 7,22,4,3,6,17,41,43,8,10,38,9;
ROG                          pin 37; // impulso di rog
CTNCCD                   node; // controllo sul clock della ccd
CTNMAC                   node; // controllo sul clock in dei MACs
CCDCLOCK, ADCLOCK        pin 42,40  istype 'buffer'; //clock ccd, AD
CLKXY                    pin 16; // clock ingressi MACs
CLKOUT                   pin 21; // clock input product register o uscita dati MAC
PREL                        pin 15; // enable tri-state buffer MAC per il reset del product register
INT                           pin 19; // segnale per la generazione dell' interrupt n0 1 per il DSP.
                                           (400000h)
AD0                          pin 20; //LSB bus indirizzi
XF0                           pin 28; // Abilitazione porte logiche
STROBE                   pin 39; // segnale di strobe DSP
TSCNT0                   pin 18; // enable tri-state buffer MAC0 per lettura dato
TSCNT1                   pin 26; // enable tri-state buffer MAC1 per lettura dato
Equations
 

when ([P11..P0] < 2086) then CTNCCD = 1 else CTNCCD = 0;
CTNMAC = ([P11..P0] > 33) & ([P11..P0] < 2086);

ROG = ([P11..P0] < 2105) # ([P11..P0] >= 2149);
PREL = ((([P11..P0] > 2138) & ([P11..P0] <= 2146)) & XF0);
CCDCLOCK = CK1 & CTNCCD;
ADCLOCK = !CK1;

CLKXY = CK0 & CTNMAC;
CLKOUT = (CK0 & !CK1) & (CTNCCD # PREL);
INT = (([P11..P0] < 2105) # ([P11..P0] >= 2108)) # !XF0;

TSCNT0 = !(!AD0 & !STROBE & XF0);
TSCNT1 = !(AD0 & !STROBE & XF0);

End


Home | Precedente | Successivo