SLAC PEP-II
BABAR
SLAC<->RAL
Babar logo
HEPIC E,S & H Databases PDG HEP preprints
Organization Detector Computing Physics Documentation
Personnel Glossary Sitemap Search Hypernews
Unwrap page!
Det. Search
Who's who?
Meetings
FAQ
Images
Archive
Systems
Performance
Intern. region
Vertex Tracker
Drift chamber
DIRC
Calorimeter
IFR
LST
Magnet
Electronics
Trigger
Operations
Run Coordination
Contact Experts
Shift Takers Info
Operations Manual
Electronic Logbook
Ops Hypernews
Shift Signup
Check this page for HTML 4.01 Transitional compliance with the
W3C Validator
(More checks...)

TSF Memory Map


Memory Map for TSF Memories (Subject to Revision as I sort things out..)
-- This is the version that exists in the test firmware --

InMem            : 0x000000-0x03FFFF -- (1 Megabyte)
OutMem         : 0x040000-0x07FFFF -- (1 Megabyte)
Mask_Pos       : 0x080000-0x080050 -- (8 bit address range,40*16bits) -- These are changing.
Mask_Neg : 0x080080-0x0800D0 -- (
8 bit address range,40*16bits) -- These are changing.
Version 1        : 0x0C0000-0xC00000 -- Just 32bit long
Version 2        : 0x0D0000-0xD00000 -- Just 32bit long
Version 3        : 0x0E0000-0xE00000 -- Just 32bit long
Version FOD  : 0x100000-0x100000-- Just 32bit long
Version IN      : 0x110000-0x110000-- Just 32bit long

Constant 1      : 0x140000-0x140000  -- Just 32bit long

Constant 2      : 0x150000-0x150000  -- Just 32bit long
Constant 3      : 0x160000-0x160000  -- Just 32bit long
Constant FOD : 0x180000-0x180000  -- Just 32bit long
Constant IN : 0x190000-0x190000  -- Just 32bit long

FPGA1 LUT1  : 0x200000-0x23FFFF  -- (1 Megabyte)
FPGA1 LUT2  : 0x240000-0x27FFFF  -- (1 Megabyte)
FPGA2 LUT1  : 0x280000-0x2BFFFF -- (1 Megabyte)
FPGA2 LUT2  : 0x2C0000-0x2FFFFF -- (1 Megabyte)
FPGA3 LUT1  : 0x300000-0x33FFFF -- (1 Megabyte)
FPGA3 LUT2  : 0x340000-0x37FFFF -- (1 Megabyte)


The large memories are 32bits wide... so remember that or
interesting things (TM) will happen..

***FLASH***
The Mask memory is 16 bits wide, but is done as follows..
Address 0 = layer zero lower 16bits.
Address 1 = layer zero upper 16bits.
and so on upto layer 40.
The highst bit is the 27th. Others are ignored.
The default is for both Positive and negative masks to be zerro..
So we are not doing any masking


Idea behind Address System.


Basicly the lower 2 bits of BlockAddress and all 16bits of Address are used to form addresses.
The bits 5 downto 2 of Block Address are used to select which ram to talk to. It looks like this.

xxxxxxxxxxBBBBAA AAAAAAAAAAAAAAAA
B = Block Address/ Memory Selection
A = Memory Address

The Version and Constant memories are in each FPGA, not sure if they are needed everywhere, but there will be space for them..

For Playback record, mem 1 is input, mem 2 is output (BLT/ZPD combined) and mem 3 is neighbour. So it will be possible to use live data as input, with prerecorded neighbour data. It will also be possible to record neighbour seperate from normal data..BUT YOU CAN'T DO PLAY DATA AND RECORD NEIGHBOUR.. not in this version at least. The same goes for output.. Play or Record of ZPD and BLT are linked.. you cannot play one, and record another.

  • ZPD Data is stored in the lower 21 bits of the Output Mem
  • BLT Data is stored in the bits 28,29,30,31 or the Output Mem
  • The frame pulse is also recorded, but not used when in playback as we sync to clock4
  • BLT Data is recorded every clock60, so you have to take that into account when you process the BLT data after reading it out, or when loading it in! Use 2 memory locations per BLT Word of data.
  • Input data is stored in the lower 20bits of the Input
  • Neighbour data is stored in the bits 21-27 of the first 4 words of a frame.

Constant Memories.

FOD & Input:
When in playback or record mode you man not wish to use the full memory size. So they are resizable on the fly. There are 2 "Constant" memories in these chips, these hold the memory high address pointer. This pointer is the highest memory location to play or record. Memory starts at location 0, so to play N words, write N-1 into the location. Most things work in 16 word frames. So 0xF, 0x1F etc are correct values. If you write a different value, you may get strange results. Values of 0x0 are converted into something sensible by the firmware. DO NOT RELY on any default values, always set this!!

Engines:
The constant memory here is the DAQ offset in clk4's from the current position, usually set by the configure.



Input Memory Frame Data Layout

Clock Tick Neighbour Data (IN)
GLink Data
Bit Positions
26 downto 20
19 downto 0
1
7 bits (27 downto 21) 20bits
2
7 bits (20 downto 14)
20bits
3
7 bits (13 downto 7)
20bits
4
7 bits (6 downto 0)
20bits
5
--none-- 20bits
6
--none-- 20bits
7
--none-- 20bits
8
--none-- 20bits
9
--none-- 20bits
10
--none-- 20bits
11
--none-- 20bits
12
--none-- 20bits
13
--none-- 20bits
14
--none-- 20bits
15
--none-- 20bits
16
--none-- 20bits

Output Memory Frame

We Have a slightly different convention to the ZPD, we start out play/record on a clock 4 edge, with a framebit, its basicly the ZPD data format, but with the 16 word window slid down one word. When in run mode things are a continious stream, and you are getting frame bits every 16 clock60's. In order to slip any recoded data into the stream correctly, you need a frame bit in the first word, also, when you record you will get the same..


Clock Tick
BLT Data
ZPD Data
FrameBit
Discription

Bit Positions
31 downto 28
21 downto1
0

Clock4 Edge
0
4 bits (1st word)
21 bits
1 bit
Frame Bit

1
4 bits (1st word) 21 bits 1 bit Seg Mask

2
4 bits (2nd word) 21 bits 1 bit Loc[3]

3
4 bits (2nd word) 21 bits 1 bit Loc[2]

4
4 bits (3rd word) 21 bits 1 bit Loc[1]

5
4 bits (3rd word) 21 bits 1 bit Loc[0]

6
4 bits (4th word) 21 bits 1 bit Phi[5]

7
4 bits (4th word) 21 bits 1 bit Phi[4]

8
4 bits (1st word) 21 bits 1 bit Phi[3]

9
4 bits (1st word) 21 bits 1 bit Phi[2]

10
4 bits (2nd word) 21 bits 1 bit Phi[1]

11
4 bits (2nd word) 21 bits 1 bit Phi[0]

12
4 bits (3rd word) 21 bits 1 bit dPhi[2]

13
4 bits (3rd word) 21 bits 1 bit dPhi[1]

14
4 bits (4th word) 21 bits 1 bit dPhi[0]

15
4 bits (4th word) 21 bits 1 bit  -- NULL--



Page author: Marc Kelly
Last significant update: March-10-2004