II.4.1 GAL16V8 At first I want to show an example with a tristate output. (sorry again for the European symbols) /A ---------+ |\| | \ B -------| +------------------------ Y1 | / |/ VCC | +----+ |\| C -------| | | \ | >1 |-----------| +------- Y2 D -------| = | | / +----+ |/ +----+ E -------| | | & |------+ F -------| | | +----+ | |\| | \ G -----------------| +o------------- Y3 | / |/ Y1 should only be in the "B" state, when "A" = LOW. Y2 should always be active (either HIGH or LOW - depending on "B" and "C"). This corresponds to a combinational output. Y3 should only be active if "D" and "E" = HIGH. GAL16V8 ---- ---- A 1| |20 VCC B 2| |19 Y1 C 3| |18 Y2 D 4| |17 Y3 E 5| |16 NC F 6| |15 NC G 7| |14 NC NC 8| |13 NC NC 9| |12 NC GND 10| |11 NC --------- In the source file, tristate outputs are designated with a ".T". The tristate control is followed with an ".E". If the tristate control is absent then the normal free switching is assumed (=VCC). Tristate control = GND means high impedance. NOTE: With tristate outputs you can only have seven product terms in your equation (all other output formats have a maximum of eight). In the tristate control you can only have ONE product term (no OR) in your equation. The source file looks like this: ****************************************************** GAL16V8 ex.2 A B C D E F G NC NC GND NC NC NC NC NC NC Y3 Y2 Y1 VCC Y1.T = B Y2.T = C + D Y3.T = /G Y1.E = /A Y3.E = E * F DESCRIPTION ****************************************************** In the last GAL16V8-example we will deal with register outputs. We will program a 4-bit-counter. First the pin layout: GAL16V8 ---- ---- (Input) Clock 1| |20 VCC (Input) D0 2| |19 Q0 (Output) (Input) D1 3| |18 Q1 (Output) (Input) D2 4| |17 Q2 (Output) (Input) D3 5| |16 Q3 (Output) (Input) Set 6| |15 NC (not used) (Input) Clear 7| |14 NC (not used) (Input) NC 8| |13 NC (not used) (Input) NC 9| |12 NC (not used) GND 10| |11 /OE (Input) --------- Since register output sets the GAL in mode 3, this means that pins 1 and 11 are reserved for Clock and /OE. When /OE is HIGH, all register outputs (Q0-Q3) go to "high impedance" (=Z). When LOW-HIGH transition pulse is presented at the clock input, then the counter will be incremented. When Clear = HIGH and a (LOW-HIGH) clock transition occurs, the outputs are cleared. The inputs D0-D3 can be used to preset the counter. While Set = HIGH and a Clock pulse the values in D0-D3 are transferred to Q0-Q3. In the source file register outputs are designated with a ".R". ****************************************************** GAL16V8 4-Bit-Counter Counter Clock D0 D1 D2 D3 Set Clear NC NC GND /OE NC NC NC NC Q3 Q2 Q1 Q0 VCC Q0.R = /Clear * Set * D0 + /Clear * /Set * /Q0 Q1.R = /Clear * Set * D1 + /Clear * /Set * /Q1 * Q0 + /Clear * /Set * Q1 * /Q0 Q2.R = /Clear * Set * D2 + /Clear * /Set * Q2 * /Q1 + /Clear * /Set * Q2 * /Q0 + /Clear * /Set * /Q2 * Q1 * Q0 Q3.R = /Clear * Set * D3 + /Clear * /Set * Q3 * /Q2 + /Clear * /Set * Q3 * /Q1 + /Clear * /Set * Q3 * /Q0 + /Clear * /Set * /Q3 * Q2 * Q1 * Q0 DESCRIPTION ******************************************************