This application note des cribes ho w to
use the features of the ATV2500 and
ATV2500B in the ABEL (and AtmelABEL) and CUPL (and Atmel-CUPL)
high level de scription lang uages. The
ATV2500 and ATV2500B are the most
powerful programmable logic devices
available in a 40/44-pin package. They
combine high dens ity and globa l rout ing,
making them easy to use and understand. Both devi ces h ave 24 macr ocells ,
each with three sum terms, two registers, and 17 product terms. Each register
has individual cl ock and AR product
terms. Each I/O pin has a programmable
polarity contro l and an individ ual output
enable product term. Independent feedback paths from each register allow all of
the registers to be buried without wasting
the I/O pins. A universal bus routes all
input and feedbac k si gnals to a ll pr oduct
terms on all macrocells. The ATV2500B
has the additional features of D- or
T-type configurable registers, three different clock options, and buried
combinatorial nodes. The ATV2500 and
ATV2500B macrocell is shown in
Figure 1.
Device Names and Pin and
Node Assignments
The device names for the ATV2500 and
ATV2500B for each language are shown
in Table 1.
The buried nodes (Q1 and Q2/F2 in
each macrocell) are identified by node
numbers, as shown in Table 2.
The following exampl es show t he devi ce
type specification and the pin and node
assignments:
Each macrocell has three feedback paths into the array,
one from each of the registers and one from the pin. For a
buried node, the node name is used to refer to the feedback path. For a comb in ator i al outp ut, t he feedback comes
from the pin, so the pin name is used to refer to the feedback. For a registered output, the feedback can come
either from the register or from the pin. The feedback paths
are labeled (1), (2), and (3) on Figure 1. The following
examples show how the different feedback paths are
identified:
# O4.fb“(2)feedback from Q1 register
# O4Q2;“(3)feedback from buried register
2
CMOS PLD
(1)
Note:1. For ABEL, either “.q” or “.fb” can be used to indicate
the buried register feedback path. When “.q” extension is used, the software will select the Q outp ut of
the register, regardless of the output buffer polarity.
When the “.fb” extension is used, the software will
match the polarity of the register feedback with the
output polarity by selecting either the Q or !Q output
of the register.
The basic m acroc ell co nfig ura tions are sh own i n Fi gur es 2
through 9. Each ma crocel l has thre e sum terms , each w ith
four product terms. The sum terms can b e combined for
wider fan-in functions or separated and used for buried
logic. The output ca n be conf igure d as eit her co mbinat orial
or registered. For a combinatorial output, the other two sum
terms can be connecte d to buried regi sters. For a r egis-
Figure 2. Combinatorial Output (12 product terms)
tered output, two of the sum ter ms are combin ed for the
output and the third can be connected to a buried register.
The multiple feedbac k path s als o a ll ow b oth reg is ter s to b e
buried, with the I/O pin used as an input pin. For the
ATV2500B, the Q2 node can also be configured as a buried combinatorial node, F2, as shown in Figu re 9.
ABEL and Atmel-ABEL
O6 = I1 # !I2 # I3 # !I17 # I18;
CUPL and Atmel-CUPL
O6 = I1 # !I2 # I3 # !I17 # I18;
Figure 3. Combinatorial Output (8 product terms) plus Buri ed Regi ste r (4 prod uct terms )
For ABEL, the Q2 register is identified by a node number.
The Q1 register is identified by the pin number (the Q1
node numbers should only be used for the configuratio n
shown in Figure 4). The OE should be set to 0 to disable
the outputs. The “pinname” (with no extensions) refers to
the input path. The “pinname.fb” or “pinname.q” refers to
the register feedback path. Another name for either the
input or the regi ster m ay b e sub stituted in t he Dec larati ons
section of the file, to make it clea rer that they hav e sepa-
rate functions. The pi n and node na mes will be sub stitute d
back into the equations when the file is compiled.
For CUPL, there are node numbers for both the Q2 and Q1
registers. The Q1 node name re fers to the register and the
pin name refers to the pin.
For this configuration, the output should be defined as combinatorial, and the equation written as combi natorial. A
clock equation should also be written for the output. The
registered signal which is fed back into the array is identified with “.fb” or “.q” for ABEL or “.dfb” for CUPL.
7
Asynchronous Reset, Synchronous
Preset, and Output Enable
There is an indivi dual as ynchro nous res et produ ct term for
each register. Each I /O pin has a n in dividua l ou tput ena ble
product term. There are eight synchronous preset product
terms which are used to preset banks of four or eight registers. Table 3 shows the groups of registers connected to
each of the synchronous preset product terms. Since the
synchronous preset requires a clock, an individual register
will only preset if it is clocked.
The following examples show how the asynchronous reset,
synchronous preset, and output enable functions are
defined:
ABEL and Atmel-ABEL
O4.ar = I1;
O4.sp = I2;“NOTE: preset is for 8 registers
O4.oe = I3 & I17;
O5.oe = 1;
CUPL and Atmel-CUPL
O4.ar = I1;
O4.sp = I2;/*NOTE: preset is for 8 registers */
O4.oe = I3 & I17;
O5.oe = ’b’1;
Programmable Polarity Control
Each I/O pin has pr ogrammabl e polarity con trol. Pleas e
refer to the application note “Using the Programmable
Polarity Control” for details on using the polarity control.
Clock Options
For the ATV2500, each register has an independent clock
product term. For the ATV2500B, each register can be configured to use either the cl ock pr odu ct t er m, a sync hr on ous
clock pin, or a gated synchronous clock (see Figure 10).
The following examples show how the clock is defined for
the different modes:
For the ATV2500, the registers can only be configured as
D-type flip-flops . For the ATV2 500B, the r egisters c an be
configured as eithe r D-type or T-typ e flip-f lops. The foll owing examples show ho w to co nfi gur e th e re g ister s as eit her
D- or T-type:
"State machine will use .q feedback
STATE_DIAGRAM GCODE
state [0,0,0,0]: goto [0,0,0,1];
state [0,0,0,1]: goto [0,0,1,1];
state [0,0,1,1]: goto [0,0,1,0];
state [0,0,1,0]: goto [0,1,1,0];
state [0,1,1,0]: goto [0,1,1,1];
state [0,1,1,1]: goto [0,1,0,1];
state [0,1,0,1]: goto [0,1,0,0];
state [0,1,0,0]: goto [1,1,0,0];
state [1,1,0,0]: goto [1,1,0,1];
state [1,1,0,1]: goto [1,1,1,1];
state [1,1,1,1]: goto [1,1,1,0];
state [1,1,1,0]: goto [1,0,1,0];
state [1,0,1,0]: goto [1,0,1,1];
state [1,0,1,1]: goto [1,0,0,1];
state [1,0,0,1]: goto [1,0,0,0];
state [1,0,0,0]: goto [0,0,0,0];
field INPUTS = [I7..I0];/* Input data */
field T_CNT = [Q7..Q0];/* T counter */
field GCODE = [G3..G0];/* Grey code counter */
field SHIFT = [S_OUT,S6..S0];/* Shift register */
field SHIFT1 = [S6..S0,S_IN];
/* State machine will use register feedback path */
SEQUENCE GCODE {
present ’b’0000 next ’b’0001;
present ’b’0001 next ’b’0011;
present ’b’0011 next ’b’0010;
present ’b’0010 next ’b’0110;
present ’b’0110 next ’b’0111;
present ’b’0111 next ’b’0101;
present ’b’0101 next ’b’0100;
present ’b’0100 next ’b’1100;
present ’b’1100 next ’b’1101;
present ’b’1101 next ’b’1111;
present ’b’1111 next ’b’1110;
present ’b’1110 next ’b’1010;
present ’b’1010 next ’b’1011;
present ’b’1011 next ’b’1001;
present ’b’1001 next ’b’1000;
present ’b’1000 next ’b’0000;}
CMOS PLD
/* Seven segment display decoder */
TABLE GCODE = [1seg,2seg,3seg,4seg,5seg,6seg,7seg] {
0 => ’b’1011111;
1 => ’b’0001100;
2 => ’b’1111001;
3 => ’b’1111100;
4 => ’b’0101110;
5 => ’b’1110110;
6 => ’b’1110111;
7 => ’b’1001100;
8 => ’b’1111111;
9 => ’b’1101110;
A => ’b’1101111;
B => ’b’0110111;
C => ’b’1010011;
D => ’b’0111101;
E => ’b’1110011;
F => ’b’1100011; }
13
CUPL Simulation Input File (Use 2500B.SI)
Name USE2500B;
Partno N/A;
Date 3/27/95;
Rev. -;
Designer PLD Expert;
Company Atmel;
Assembly -;
Location -;
Device V2500BLCC;
FIELD SEVSEG=[1seg,2seg,3seg,4seg,5seg,6seg,7seg];
FIELD TST_SHIFT=[S0,S1,S2,S3,S4,S5,S6,S_OUT];