Oct-16-1997

Version 1

VME Address Space for LOCOS

Monica Tecchio

University of Michigan

At the time of this memo, LOCOS uses VME signals only for testing and debugging purposes, that is no LOCOS data is foreseen to be sent into the DAQ stream via VME during normal data taking.

One CY7C960 and four CY7C964 chips are used to implement a VME 32-bit Interface (sheet 5 of the LOCOS Mentor schematics). The CY7C960 is programmed at initialization to operate in I/O Only mode that is it can use up to four REG(3:0) Region inputs and six CS(5:0) Chip Select outputs. The REG(3:0) inputs are fed to the CY7C960 by a Region Decoder PAL (sheet 6 and Appendix A for details) which decodes the VME address placed on the VME Address bus LA(31:0) by the MVME162 and determines whether the current VME transaction is destined to LOCOS. The Region Decoder PAL further decodes the VME Address so to identify six regions in the LOCOS Base Address. Each region corresponds to a unique set of valid REG(3:0) bits. The CY7C960 is programmed to respond only to valid sets of REG(3:0) bits by enabling one of the six CS(5:0) outputs.

The CS(5:0) ouputs are used as double-purpose enables lines. First, they enable a set of Address Bus decoders (sheet 7) to determine, for each region, whether the transaction is a VME Read or VME Write transaction and set appropriate R/W strobes. Second, they enable a set of Data Bus transceivers (sheet 8) that load the content of the VME Data bus LD(31:0) into specialized local data busses.

In what follows is a detailed compilation of the LOCOS Base Address. In compliance with the standardf CDF Address Map for Front-End and Trigger Cards (see CDFNote 2388), LOCOS utilizes part of the User-Defined Address Space to address the six regions mentioned above. LOCOS Address Base for the different regions is contained in Table 1, together with the Chip Select bit they correspond to and a brief description of the LOCOS functionality they are testing and/or simulating.

Table 2 contains a list of the R/W strobes generated by each LA(31:0) address in a given region and a brief description of the LOCOS signal they are testing (if Read strobes) and/or simulating (if Write strobes). Table 3 list the Local Data Bus defined for each region and which LD(31:0) bits it is a copy of.



















Region Address Base Register Enable R/W Description

1

YY 40 00 00 CS(0) = EN_TEST_MODE WO Test mode

2

YY 40 00 04 CS(1) = EN_VME_RESET WO VME soft reset

3

YY 40 00 10 CS(2) = EN_CNTRL_SIG RW Control signals

4

YY 40 00 50 CS(3) = EN_SEED_SEL RW Seed Selection

5

YY 40 00 60 CS(4) = EN_DAISY_SUM RW Daisy-chain Sum

6

YY 40 00 70 CS(5) = EN_L2_INFO RW Info to L2/CLIST

Table 1. List of regions defined for LOCOS in the VME Address Space and their relative Address Base. Each region tests a specific LOCOS functionality as described on the last column. The third and fourth column show the CY7C960 Chip Select output used to enable each region and whether it is active in a Read and/or Write VME transaction.

Region Address Strobe Name Description

1

YY 40 00 00 TEST_MODE which of 5 possible LOCOS test modes

2

YY 40 00 04 VME_RESET soft VME Reset signals
  YY 40 00 08-C   UNUSED

3

YY 40 00 10 CURR_BUF Current L2 buffer (from CLIQUE)
  YY 40 00 14 BUF_STRB Current Buffer Strobe (from CLIQUE)
  YY 40 00 18 SEL_THR Current Theshold Pass (from CLIQUE)
  YY 40 00 1C THR_STRB Current Trheshold Strobe (from CLIQUE)
  YY 40 00 20 START_PASS Start of current Pass (from CLIQUE)
  YY 40 00 24 SEED_REQ Seed Position Request (from CLIQUE)
  YY 40 00 28 CRATE_HSD Crate has at least one Seed (to CLIQUE)
  YY 40 00 2C CRATE_SEL Crate Selected to look for SEED (from CLIQUE)
  YY 40 00 30 SEED_SEL Seed Selected (to CLIQUE)
  YY 40 00 34 CRATE_ON Crate working on Cluster Expansion ( to CLIQUE)
  YY 40 00 38 ERASE_CLUSTER Erase present Cluster buffers (from CLIQUE)
  YY 40 00 3C START_RIPPLE Start Daisy-chain Sum (from CLIQUE)
  YY 40 00 40 CRSUM_DONE Daisy-chain Sum is Done ( to CLIQUE)
  YY 40 00 44 CRSUM_SEND Daisy-chain Sum Sent to L2 (from CLIQUE)
  YY 40 00 48 PASS_DONE Current Pass is Done (from CLIQUE)
  YY 40 00 4C SEED_POS Send Seed Coordinates (to CLIQUE)

4

YY 40 00 50 BRD_HSD Get list of Board with Seed (from DCAS)
  YY 40 00 54 BRD_SEL Send Board Selected to start cluster (to DCAS)
  YY 40 00 58 SEED_ETA Get Seed Coordinates (from DCAS)
  YY 40 00 5C   UNUSED

5

YY 40 00 60 DAISY_SUM_EM Sum cluster EM energy from Daisy-chain
  YY 40 00 64 DAISY_SUM_HD Sum cluster HD energy from Daisy-chain
  YY 40 00 68 DAISY_SUM_NTOW Sum Number of Towers in Cluster from Daisy-chain
  YY 40 00 6C   UNUSED

6

YY 40 00 70 L2_BUF Send Buffer Number and Pass Number to L2
  YY 40 00 74 L2_SEED_POS Send Seed Position to L2
  YY 40 00 78 L2_EM_ENE Send cluster EM energy to L2
  YY 40 00 7C L2_HD_ENE Send cluster HD energy to L2
  YY 40 00 80 L2_NTOW Send Number of Tower in Cluster to L2
  YY 40 00 84-C   UNUSED

Table 2. Valid LOCOS VME addresses recognized in each region and Strobe signals they produce. In the schematics the Strobe name is preceded by RD or WR depending on whether it is set during a Read or Write VME Transaction. The last columns specify which LOCOS function they are designed to test (if Read Strobes) or simulate (if Write Strobes).

Region Local Bus Bit Map Bit Description

1

MOD(31:0)

0 = LD(0)

Set receiving from DCAS Simulation Mode
   

1 = LD(1)

Set receiving from CLIQUE Simulation Mode
   

2 = LD(2)

Set sending to CLIST Simulation Mode
   

3 = LD(3)

Set sending to CLIQUE Simulation Mode
   

4 = LD(4)

Set sending to DCAS Simulation Mode
   

16 = LD(16)

Clear receiving from DCAS Simulation Mode
   

17 = LD(17)

Clear receiving from CLIQUE Simulation Mode
   

18 = LD(18)

Clear sending to CLIST Simulation Mode
   

19 = LD(19)

Clear sending to CLIQUE Simulation Mode
   

20 = LD(20)

Clear sending to DCAS Simulation Mode

2

RSD(31:0)

0 = LD(0)

Set software VME Reset
   

16 = LD(16)

Clear software VME Reset

3

CSD(31:0)

(1:0) = LD(1:0)

Set from/to CLIQUE Control Signal (2 bit max.)
   

(17:16) = LD(17:16)

Clear from/to CLIQUE Control Signal (2 bit max.)
   

(4:0) = LD(4:0)

Simulate to Seed h bits sent to CLIQUE
   

(17:16) = LD(17:16)

Simulate to Seed f bits sent to CLIQUE

4

SSD(31:0)

(11:0) = LD(11:0)

Simulate Board with Seed from DCAS or

Board with Selected Seed to DCAS

   

(2:0) = LD(2:0)

Simulate Seed h bit from DCAS board with a seed
   

3 = LD(3)

Simulate Seed Select from DCAS

5

DSD(31:0)

(12:0) = LD(12:0)

Left Daisy-chain energy bits
   

(28:16) = LD(28:16)

Right Daisy-chain energy bits
   

(5:0) = LD(5:0)

Left Daisy-chain number of tower bits
   

(21:16) = LD(21:16)

Right Daisy-chain number of tower bits

6

L2D(31:0)

(1:0) = LD(1:0)

Current buffer bits to CLIST
   

(3:2) = LD(3:2)

Current pass bits to CLIST
   

0 = LD(0)

Selected crate bit to CLIST
   

(2:1) = LD(2:1)

Seed f bits to CLIST
   

(7:3) = LD(7:3)

Seed h bits to CLIST
   

(11:0) = LD(11:0)

Cluster energy (EM/HAD) bits to CLIST
   

13 = LD(13)

Energy overflow (EM/HAD) bits to CLIST
   

(6:0) = LD(6:0)

Cluster number of tower bits to CLIST

Table 3. Local data busses defined for LOCOS regions; the last two columns give the details of their contents and of which LD(31:0) bits they are a copy of.

APPENDIX A

The VHDL code used to program the Region Decoder PAL is given here, together with the PAL pin assignment for the different inputs and outputs.

REGDEC.VHDL

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

ENTITY vme_region_pal IS PORT (

-- MASK/COMPARE outputs VCOMP*(3:0)

vcomp : IN std_logic_vector(3 DOWNTO 0);

-- VME addresses (22,7:2)

addr : IN std_logic_vector(6 DOWNTO 0);

-- read/write VME cycle

rw : IN std_logic;

-- board reset

reset : IN std_logic

-- 1 out of 16 regions

region : OUT std_logic_vector(3 DOWNTO 0)

);

END vme_region_pal;

ARCHITECTURE reg_decoder OF vme_region_pal IS

-- concatenates inputs in a single vector

SIGNAL inputs: std_logic_vector(11 DOWNTO 0);

SIGNAL val_add: std_logic_vector(3 DOWNTO 0);

BEGIN

inputs <= vcomp & addr & rw;

WITH inputs SELECT

val_add <= "0000" WHEN "000010000000", -- 40 00 00 WO

"0001" WHEN "000010000010", -- 40 00 04 WO

"0010" WHEN "000010001000", ---------------

"0010" WHEN "000010001010", --

"0010" WHEN "000010001100", --

"0010" WHEN "000010001110", --

"0010" WHEN "000010010000", --

"0010" WHEN "000010010010", -- from

"0010" WHEN "000010010100", -- 40 00 10

"0010" WHEN "000010010110", -- to

"0010" WHEN "000010011000", -- 40 00 4F

"0010" WHEN "000010011010", -- W

"0010" WHEN "000010011100", --

"0010" WHEN "000010011110", --

"0010" WHEN "000010100000", --

"0010" WHEN "000010100010", --

"0010" WHEN "000010100100", --

"0010" WHEN "000010100110", -- ---------

"0010" WHEN "000010001001", ---------------

"0010" WHEN "000010001011", --

"0010" WHEN "000010001101", --

"0010" WHEN "000010001111", --

"0010" WHEN "000010010001", --

"0010" WHEN "000010010011", -- from

"0010" WHEN "000010010101", -- 40 00 10

"0010" WHEN "000010010111", -- to

"0010" WHEN "000010011001", -- 40 00 4F

"0010" WHEN "000010011011", -- R

"0010" WHEN "000010011101", --

"0010" WHEN "000010011111", --

"0010" WHEN "000010100001", --

"0010" WHEN "000010100011", --

"0010" WHEN "000010100101", --

"0010" WHEN "000010100111", -- ---------

"0011" WHEN "000010101000", -- 40 00 50 W

"0011" WHEN "000010101010", -- 40 00 54 W

"0011" WHEN "000010101100", -- 40 00 58 W

"0011" WHEN "000010101001", -- 40 00 50 R

"0011" WHEN "000010101011", -- 40 00 54 R

"0011" WHEN "000010101101", -- 40 00 58 R

"0100" WHEN "000010110000", -- 40 00 60 W

"0100" WHEN "000010110010", -- 40 00 64 W

"0100" WHEN "000010110100", -- 40 00 68 W

"0100" WHEN "000010110001", -- 40 00 60 R

"0100" WHEN "000010110011", -- 40 00 64 R

"0100" WHEN "000010110101", -- 40 00 68 R

"0101" WHEN "000010111000", -- ------------

"0101" WHEN "000010111010", -- from

"0101" WHEN "000010111100", -- 40 00 70

"0101" WHEN "000010111110", -- to

"0101" WHEN "000011000000", -- 40 00 80 W

"0101" WHEN "000010111001", -- ------------

"0101" WHEN "000010111011", -- from

"0101" WHEN "000010111101", -- 40 00 70

"0101" WHEN "000010111111", -- to

"0101" WHEN "000011000001", -- 40 00 80 R

"1111" WHEN OTHERS;

region <= "1111" WHEN (reset = '1') ELSE

val_add;

END reg_decoder;

REGDEC_PAL PINOUT

Input Name Signal Name

Pin No.

RESET Board RESET

2

RW VME R-W* cycle

3

VCOMP0* VCOMP(0)

12

VCOMP1* VCOMP(1)

13

VCOMP2* VCOMP(2)

16

VCOMP3* VCOMP(3)

19

LA_22 LA(22)

11

LA_7 LA(7)

10

LA_6 LA(6)

9

LA_5 LA(5)

7

LA_4 LA(4)

6

LA_3 LA(3)

5

LA_2 LA(2)

4

REG0 REG(0)

27

REG1 REG(1)

26

REG2 REG(2)

18

REG3 REG(3)

17

GND GROUND

14

VCC +5V

28