Jul.3.2012 Spartan chip version b This version fixed a bug in reconfigure T1 Virtex chip Jun.30.2012 Virtex chip version c a bug in DAQLSC instantiation fixed(refclk used instead of sysclk for LinkClk) Jun.21.2012 Spartan chip version 9 This version works for both xc6vlx130T and xc6vlx240T Jun.20.2012 Virtex chip version b AMC Link RxLossOfSync added to register 0x5(used during AMC13 test on test stand) HTR_if module now has a test event generation feature for testing purposes. AMC module numbering in HTR data header changed to 0 - 11 ddr3 dm pins connected to ground for new T1 boards Jun.16.2012 Virtex chip version a Bc0_lock status of AMC modules added to register 6 HTR summary V and C bits changed to '1' for mismatch and bad CRC TTS output added Jun.14.2012 Virtex chip version 9 fixed a problem in ipbus readout of ddr memory. fixed a problem in SFP ROM readout Jun.13.2012 Virtex chip version 8 I2C registeres added Jun.12.2012 Virtex chip version 7 HTR link implemented major change in register address map Jun.11.2012 Spartan chip version 8 A bug is fixed in reprogramming V6 command. This bug also exists in v6. Jun.4.2012 Spartan chip version 7 change register 0x2 to read only. (The value written to V6 0x3) APr.17.2012 Spartan chip version 6 safeboot implemented. Now: FLASH address 0x0 contains an 80 bytes Header which should never be overwritten. FLASH address 0x100000 contains a Golden T2 file with version 0xffff. Normally this file does not need to be updated unless FLASH algorithm or ipbus firmware has to be updated. FLASH address 0x200000 contains the current AMC13T2 firmware FLASH address 0x400000 contains the current AMC13T1 firmware To update a module with T2 version earlier than v6, first use an older FLASH program to erase the old firmware(not necessary, but this results in a clean FLASH) then use python script p_flash_v12.py to write AMC13T2Header.mcs, AMC13T2Golden.mcs and the most up-to-date T1 and T2 versions into the FLASH. APr.13.2012 Spartan chip version 5 added Spartan6 reconfigure command(write 0x100 to register 0) APr.13.2012 Spartan chip version 4 Fixed a problem in ipbus. The same problem exists in Virtex chip which will be fixed in the next version. Mar.26.2012 Spartan chip now has version number 2 Fixed a bug in polarities of TTC_DATA outputs. TTC_DATA output timing adjusted to ease miniCTR design. SFP assignment from top to bottom on module's front panel: DAQlink LDC (if module configured with AMC13T1EB.bit, this is a backplane Ethernet feedthrough port) DAQlink LSC Gigabit ethernet(normally not used) TTC Spartan chip IP address 192.168.1.(254 - 2*SN) Virtex chip IP address 192.168.1.(255 - 2*SN) Viretx chip memory map: 0x0 read/write write: bit 0 general reset write: bit 1 counter reset write: bit 2 reset LSC except GTX write: bit 3 reset LSC GTX write: bit 4 reset LDC except GTX write: bit 5 reset LDC GTX read: 0 LSC Link Down read: 1 LSC Link almost full read: 2 monitor buffer full read: 3 monitor buffer empty read: 4 memory input fifo for monitored events overflow read: 5 TTC not ready read: 6 TTC bcnt error read: 7 TTC single bit error read: 8 TTC multi-bit error read: 9 TTC sync lost(L1A buffer overflow) read: 13 L1A overflow warning read: bit 31-24 T1 board SN 0x1 read/write bit 31-16 read only Virtex firmware version bit 15 if '1', trigger rule violation outputs TTS BUSY bit 14 if '1', monitor buffer full will stop event builder bit 13 if '1', send all data to downstream when ttc reset is received. if '0', flush all data when ttc reset is received. bit 12 if '1', TTS outputs correspond to bits 11-8 instead of TTS state when run bit(bit 0) is '1', this bit will be forced to '0' bit 11-8 used for TTS driver test bit 7 if '1', generate fake event upon receiving L1A bit 6 if '0', memory test uses 64bit PRBS. If '1', uses 32 bit sequencial numbers. bit 5 '1' enables TTCrx broadcast commands bit 4 '1' enables memory self test bit 3 if '1', pauses event building. For debugging only bit 2 not used bit 1 '1' enables SLINK bit 0 run mode 0x2 monitoring event control R/W read: bit 31-24 read only. records the occurence of enabled error conditions happened to recorded events bit 23-16 read back what was written to. bit 15-0 scale factor, when bits 23-16 are not all zero, these bits are bit 15 set to '1' when when at least 128 events are in the buffer bit 14-8 monitor buffer write pointer bit 7-0 number of events captured after trigger event. Normally it should be 0x40, but could be less if event building stops due to other problems. write: if bits 23-16 are not all zeros, the monitor buffer keeps overwriting old events after 128 events are filled until the enabled error consition happens and it records 64 more events and stops. To re-enabling it, this register must be written again. If bits 23-16 are all zeros, buffering stops after becoming full. bit 23-18 not used bit 17 If set to '1', catches events when CRC error happened bit 16 If set to '1', catches events when evn/oc/bcn mismatch happened bit 15-0 scale factor( = contents + 1) 0x3 HTR channel enable register R/w read: bit 31-28 always '0' bit 27 '1' indicates AMC12 Link Ready bit 26 '1' indicates AMC11 Link Ready bit 25 '1' indicates AMC10 Link Ready bit 24 '1' indicates AMC9 Link Ready bit 23 '1' indicates AMC8 Link Ready bit 22 '1' indicates AMC7 Link Ready bit 21 '1' indicates AMC6 Link Ready bit 20 '1' indicates AMC5 Link Ready bit 19 '1' indicates AMC4 Link Ready bit 18 '1' indicates AMC3 Link Ready bit 17 '1' indicates AMC2 Link Ready bit 16 '1' indicates AMC1 Link Ready bit 15-12 always '0' bit 11 '1' enables AMC12 bit 10 '1' enables AMC11 bit 9 '1' enables AMC10 bit 8 '1' enables AMC9 bit 7 '1' enables AMC8 bit 6 '1' enables AMC7 bit 5 '1' enables AMC6 bit 4 '1' enables AMC5 bit 3 '1' enables AMC4 bit 2 '1' enables AMC3 bit 1 '1' enables AMC2 bit 0 '1' enables AMC1 0x4 SFP Control and Status register R/w read: bit 31-16 SLINK ID bit 15 '1' disables TTS transmitter bit 14 '1' disables SLINK transmitter bit 13 '1' disables SLINK spare transmitter bit 12 '1' disables SFP Ethernet transmitter bit 11 '1' indicates TTS TxFault bit 10 '1' indicates SLINK TxFault bit 9 '1' indicates SLINK spare TxFault bit 8 '1' indicates SFP Ethernet TxFault bit 7 always '0' bit 6 '1' indicates SLINK Receiver signal lost bit 5 '1' indicates SLINK spare Receiver signal lost bit 4 '1' indicates SFP Ethernet Receiver signal lost bit 3 '1' indicates TTC/TTS SFP absent bit 2 '1' indicates SLINK SFP absent bit 1 '1' indicates SLINK spare SFP absent bit 0 '1' indicates Ethernet SFP absent write: bit 15-12 write '1' to disable the transmitter other bits not writable 0x5 HTR-AMC link version check and loss of sync status Read only bit 31-28 always '0' bit 27-16 '1' indicates loss of sync for corresponding AMC port bit 15-12 always '0' bit 11 '1' AMC12 link version wrong bit 10 '1' AMC11 link version wrong bit 9 '1' AMC10 link version wrong bit 8 '1' AMC9 link version wrong bit 7 '1' AMC8 link version wrong bit 6 '1' AMC7 link version wrong bit 5 '1' AMC6 link version wrong bit 4 '1' AMC5 link version wrong bit 3 '1' AMC4 link version wrong bit 2 '1' AMC3 link version wrong bit 1 '1' AMC2 link version wrong bit 0 '1' AMC1 link version wrong 0x6 AMC trigger data BC0 compensation register Read/write bit 31-28 always '0' bit 27 '1' AMC12 BC0 locked (Read only) bit 26 '1' AMC11 BC0 locked (Read only) bit 25 '1' AMC10 BC0 locked (Read only) bit 24 '1' AMC9 BC0 locked (Read only) bit 23 '1' AMC8 BC0 locked (Read only) bit 22 '1' AMC7 BC0 locked (Read only) bit 21 '1' AMC6 BC0 locked (Read only) bit 20 '1' AMC5 BC0 locked (Read only) bit 19 '1' AMC4 BC0 locked (Read only) bit 18 '1' AMC3 BC0 locked (Read only) bit 17 '1' AMC2 BC0 locked (Read only) bit 16 '1' AMC1 BC0 locked (Read only) bit 15-5 always '0' bit 4-0 set BCo compensation, default to 0x18 0x7 DCC source ID register Read/write read: bit 31-24 always '0' bit 23-0 source ID write: bit 31-24 not used bit 23-20 evt_ty bit 19-12 evt_stat bit 11-0 source ID 0x8 OrN/BCNT offset register R/W read: bit 31-20 always '0' bit 19-16 OrN offset bit 15-13 always '0' bit 12 if '1', ttc_bcntres only works once after system reset bit 11-0 BCNT offset write: bit 31-20 always '0' bit 19-16 OrN offset bit 15-13 always '0' bit 12 ttc_bcntres control bit bit 11-0 BCNT offset 0x9 calibration window register R/W read: bit 31 if '1', calibration events enabled bit 30-28 always '0' bit 27-16 calibration window upper limit(included) bit 15-12 current Laser position bit 11-0 calibration window lower limit(not included) write: bit 31 default to '1', enabling calibration events bit 30-28 always '0' bit 27-22 fixed as "110110" bit 21-16 settable part of calibration window upper limit,3519 maximum(included), default to "100110" bit 15-12 read only bit 11-6 fixed as "110110" bit 5-0 settable part of calibration window upper limit,3456 minimum(not included), default to "011101" offset 0xa memory status register lower word Read only For debugging purposes only offset 0xb memory status register high word Read only For debugging purposes only offset 0xc SDRAM page register R/W read: bit 31-12 always '0' bit 11-0 SDRAM page number write: If run bit is '1', write '0' to bit 0 of this register increments page number by 1 If run bit is '1', write '1' to bit 0 of this register increments page number by 128 bit 31-12 not used bit 11-0 SDRAM page number, each page is 64kbytes size offset 0xd monitoring event word count Read only read: bit 31-14 always '0' bit 13-0 monitored event size in 32-bit word. In run mode, it returns '0' if there is no data avaiable offset 0xe monitored event count Read only read: bit 31-12 always '0' bit 11-0 number of unread events captured by monitor 0x30 V6 die temperature in unit of 0.1 degree Celsius 0x31 1.0V analog power voltage in millivolt(available for SN >= 0x10 only) 0x32 1.2V analog power voltage in millivolt(available for SN >= 0x10 only) 0x33 1.0V power voltage in millivolt 0x34 1.5V power voltage in millivolt(available for SN >= 0x10 only) 0x35 2.5V power voltage in millivolt 0x36 3.3V power voltage in millivolt(available for SN >= 0x10 only) 0x37 3.6V power voltage in millivolt(available for SN >= 0x10 only) 0x38 12V power voltage in millivolt(available for SN >= 0x10 only) 0x40 TTC single bit error counter bits[31:0] 0x41 bit 31-16 always 0 bit 15-0 TTC single bit error counter bits[47:32] 0x42 TTC multi-bit error counter bits[31:0] 0x43 bit 31-16 always 0 bit 15-0 TTC multi-bit error counter bits[47:32] 0x44 TTC BC0 error counter bits[31:0] 0x45 bit 31-16 always 0 bit 15-0 TTC BC0 error counter bits[47:32] 0x46 L1A counter bits[31:0] 0x47 bit 31-16 always 0 bit 15-0 L1A counter bits[47:32] 0x48 run time counter bits[31:0] 0x49 bit 31-16 always 0 bit 15-0 run time counter bits[47:32] 0x4a ready time counter bits[31:0] 0x4b bit 31-16 always 0 bit 15-0 ready time counter bits[47:32] 0x4c busy time counter bits[31:0] 0x4d bit 31-16 always 0 bit 15-0 busy time counter bits[47:32] 0x4e L1A sync lost time counter bits[31:0] 0x4f bit 31-16 always 0 bit 15-0 L1A sync lost time counter bits[47:32] 0x50 L1A overflow warning time counter bits[31:0] 0x51 bit 31-16 always 0 bit 15-0 L1A overflow warning time counter bits[47:32] 0x52 SLINK total word counter bits[31:0] 0x53 bit 31-16 always 0 bit 15-0 SLINK total word counter bits[47:32] 0x54 SLINK total event counter bits[31:0] 0x55 bit 31-16 always 0 bit 15-0 SLINK total event counter bits[47:32] 0x56 total monitored event counter bits[31:0] 0x57 bit 31-16 always 0 bit 15-0 total monitored event counter bits[47:32] 0x100-0x11f Ethernet SFP ROM data(first 128 bytes, little endian) 0x120-0x13f SLINK spare SFP ROM data(first 128 bytes, little endian) 0x140-0x15f SLINK SFP ROM data(first 128 bytes, little endian) 0x160-0x17f TTC/TTS SFP ROM data(first 128 bytes, little endian) 0x180-0x183 AMC reference clock oscillator Si570 data 0x180 bit 7-0 reads 0 bit 15-8 register7 before modification bit 23-16 register8 before modification bit 31-24 register9 before modification 0x181 bit 7-0 register10 before modification bit 15-8 register11 before modification bit 23-16 register12 before modification bit 31-24 reads 0 0x182 bit 7-0 reads 0 bit 15-8 register7 after modification bit 23-16 register8 after modification bit 31-24 register9 after modification 0x183 bit 7-0 register10 after modification bit 15-8 register11 after modification bit 23-16 register12 after modification bit 31-24 reads 0 0x184-0x187 SLINK reference clock oscillator Si570 data 0x184 bit 7-0 reads 0 bit 15-8 register7 before modification bit 23-16 register8 before modification bit 31-24 register9 before modification 0x185 bit 7-0 register10 before modification bit 15-8 register11 before modification bit 23-16 register12 before modification bit 31-24 reads 0 0x186 bit 7-0 reads 0 bit 15-8 register7 after modification bit 23-16 register8 after modification bit 31-24 register9 after modification 0x187 bit 7-0 register10 after modification bit 15-8 register11 after modification bit 23-16 register12 after modification bit 31-24 reads 0 0x800-0x87F AMC1 counter 0x0-1 AMC accept counter 0x2-3 AMC ACK counter 0x4-5 AMC L1A abort counter 0x6-7 AMC Evn mismatch counter 0x8-9 AMC OrN mismatch counter 0xa-b AMC BcN mismatch counter 0xc-d AMC received event counter 0xe-f AMC Counter ACK counter 0x10-11 AMC Resend counter 0x12-13 AMC event CRC error counter 0x14-15 AMC event trailer Evn mismatch error counter 0x16-17 AMC event buffer almost full time counter 0x40-41 total word counter 0x42-43 single bit error counter 0x44-45 multi-bit error counter 0x46-47 BC0 mismatch error counter 0x48-49 bcnt mismatch error counter 0x4a-4b ReSend counter 0x4c-4d Accept counter 0x4e-4f Counter Accept counter 0x50-51 ACK counter 0x52-53 Receive Event counter 0x54-55 Read Event counter 0x56-57 Data abort counter 0x58-59 abort due to ACKNUM_full counter 0x5a-5b abort due to EventBuf_full counter 0x5c-5d abort due to EventInfo_full counter 0x5e-5f abort due to bad SEQ counter 0x60-61 abort due to bad CRC counter 0x62-63 abort due to bad frame counter 0x64-65 abort due to bad K chanracter counter 0x66-67 BUSY time counter 0x880-0x8FF AMC2 counter 0x900-0x97F AMC3 counter 0x980-0x9FF AMC4 counter 0xa00-0xa7F AMC5 counter 0xa80-0xaFF AMC6 counter 0xb00-0xb7F AMC7 counter 0xb80-0xbFF AMC8 counter 0xc00-0xc7F AMC9 counter 0xc80-0xcFF AMC10 counter 0xd00-0xd7F AMC11 counter 0xd80-0xdFF AMC12 counter 0x4000-0x7fff memory read window spartan chip memory map: 0x0 reads: bit 23-16 SN number bit 15-0 T2 firmware version write: bit 0 general reset write: bit 4 start V6 reconfiguration write: bit 8 start both S6 and V6 reconfiguration 0x1 read/write read bit 0 FLASH busy write sends data stored in FLASH wbuf to FLASH memory chip bit 8-0 specifies number of (clocks/8 -1) to be sent to the FLASH memory (depends on the type of the FLASH command and number of bytes to be read or written) 0x2 read only (reads back what was written to V6 chip 0x3) bit 11-0 enables TTC clock and data to AMC modules 0x3 read only bit 31 if '1', virtex chip INIT_B is low bit 30 if '1', virtex chip DONE is low bit 23-0 configuration data CRC 0x4 bit 15-0 TTC event number register 0x5 bit 11-0 TTC L1 Bcnt register 0x6 bit 31-0 TTC L1 orbit count register 0x7 bit 7-0 TTC Bcnt error counter 0x8 bit 7-0 TTC single bit error counter 0x9 bit 7-0 TTC multi-bit error counter 0xa bit 7-0 T2 Serial Number 0x1000 thru 0x107f read/write FLASH write buffer always write FLASH command(including FLASH address if any) to address 0x1000 for page write command, attach the write data starting at address 0x1001 you can read back what you have writen to the write buffer. 0x1080 thru 0x10ff read only FLASH read buffer you read whatever data are returned from the FLASH memory here