Auf dem Prototypenboard sind dei dre CPLDs nur über Steckbrücken verbunden. Leiterbahnen liegen keine. Das einzige, was jeder Anschluß hat, ist ein Pull-Up-Widerstand. Dadurch sind alle Eingange auf einem definierten Pegel. Eingange können daher auch absichtlich offen gelassen werden; sie nehmen dann High-Pegel an.
Im Constraint-Editor wurde bereits festgelegt, auf welchem Pin ein Signal auf einem CPLD liegt. Im folgenden nochmal die drei Constraint-Files der Reihe nach für den Vorteiler, für die Ablaufsteuerung mit Zeitbasis und für den Hauptzähler:
# Prescaler - IC 1 # NET "clk" LOC = "P1" | BUFG = CLK ; # to reference oscillator (10 MHz) NET "clk1000" LOC = "P28" ; # to Pin 43 of IC2 (clk_ref) NET "en" LOC = "P7" ; # open NET "reset" LOC = "P33" | BUFG = SR ; # to GND
# Controller and Timebase - IC2 # NET "clk_ref" LOC = "P43" | BUFG = CLK ; # to Pin 28 of IC1 (clk1000) NET "cnt_reset" LOC = "P32" ; # to Pin 33 of IC3 (reset) NET "counting" LOC = "P5" ; # to Pin 7 of IC3 (en) NET "data_ack" LOC = "P2" ; # to ATmega8 - active low NET "data_ready" LOC = "P3" ; # to ATmega8 - active low NET "reset" LOC = "P33" | BUFG = SR ; # connected to GND via reset switch NET "sel_tb<0>" LOC = "P6" ; # to GND --> 1 second NET "sel_tb<1>" LOC = "P7" ; # opne --> 1 second NET "shift_load" LOC = "P28" ; # to Pin 28 of IC3 (load)
# Main Counter and Latch - IC3 # NET "clk" LOC = "P43" | BUFG = CLK ; # to preamplifier NET "en" LOC = "P7" ; # to Pin 5 of IC2 (counting) NET "load" LOC = "P28" ; # to Pin 28 of IC2 (shift_load) NET "miso" LOC = "P31" ; # to ATmega8 NET "mosi" LOC = "P32" ; # open NET "reset" LOC = "P33" | BUFG = SR ; # to P32 of IC2 (cnt_reset) NET "sck" LOC = "P1" | BUFG = CLK ; # to ATmega8 NET "sel" LOC = "P30" ; # to ATmega8
Im Grunde ist es natürlich möglich, alles in einem einzigen CPLD unterzubringen. Allerdings reicht ein XC9572XL dann nicht mehr. Es wäre dann ein XC95144XL erforderlich, der für den Bastler nur schwierig zu löten ist.