VME SIROCO
VME SIROCO
VME SIROCO
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>VME</strong> <strong>SIROCO</strong><br />
Caution: This document was scanned<br />
and converted to word using optical<br />
character recognition. Some<br />
typographic errors remain.
<strong>VME</strong> slave board with standard addressing (24 bits) and single transfer mode (16 bits).<br />
1 Adjustments<br />
1.1 Jumper settings<br />
1.1.1 Viking <strong>SIROCO</strong> (IDC clock input)<br />
Virtual earth S1<br />
S2<br />
S3<br />
S9<br />
S12<br />
1.1.2 Felix <strong>SIROCO</strong> (Lemo clock input)<br />
S1<br />
S4 left<br />
S6 left<br />
S7 right<br />
S9<br />
S10<br />
S11<br />
1.2 Potentiometer adjustment<br />
POT1: adjust for reference voltage to be +10V at M7 pin 6.<br />
POT2: adjust for 820Q between MI pin 6 and M2 pin 3 (no power-on).<br />
POT3: adjust for DAC = FFF, m9 pin 6 = +10v.<br />
POT4: adjust for -1V M10 pin 45<br />
POT5: adjust for +1V M10 pin 53<br />
POT6: adjust for -2V M10 pin 39<br />
1.3 Component corrections<br />
Important: Replace devices M28 and M29 with 74ALS245-1 (they should not be HCT devices).<br />
For correct balancing of the reference voltages the following resistors should be changed: R28 =<br />
9K1, R30 = 20K.<br />
2 Address Space<br />
$2008 bytes organised in 16 bit words.<br />
The I/O address window base address is set by means of switches SW1 (A[23:20]) and SW2<br />
(A[19:16]). The address map is shown in Table 1.<br />
Table 1 Address map<br />
Address Description R/W<br />
0-$1FFE ADC mount memory R/W
$2000 Register 1 R/W<br />
$2002 Register 2 R/W<br />
$2004 Register 3 R only<br />
$2006 Register 4. Bit 0 = 0 resets <strong>SIROCO</strong>. Bit 0 = 1 starts <strong>SIROCO</strong>. W only<br />
2.1 ADC Count Memory<br />
Read/write.<br />
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0<br />
Ovf<br />
ADC count<br />
Up to 4096 11 bit ADC values (10 bits + overflow) can be stored in this memory. The memory<br />
address corresponds to the sample number. Bit 10 contains the overflow state.<br />
The TDC1020 Flash ADC produces 10-bit data plus 1-bit overflow. The ADC’s output coding is<br />
switchable by means of jumpers S2 and S3 as shown in Table 2. Example output for true binary<br />
encoding is given in Table 3.<br />
Table 2 ADC output coding modes<br />
SW2 SW3 Output Coding<br />
0 0 Inverted binary<br />
0 1 True offset 2's complement<br />
1 0 Inverted offset 2's complement<br />
1 1 True binary (default).<br />
2.2 Register 1<br />
Read/write.<br />
Table 3 Output for true binary encoding<br />
Input Output MSB-LSB (OVF)<br />
>2.0V 0000000000(1)<br />
2.0V 0000000000(0)<br />
1.996V 0000000001(0)<br />
0.000V 1000000000(0)<br />
-1.998V 1111111110(0)<br />
-2.000V 1111111111(0)<br />
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0<br />
Clk Cnv Lemo Frame length
Bits 3-0 contain the one’s complement of the sample frame length in units of 256. The minimum<br />
number of samples that are selectable are 256, the maximum is 4096. The samples are segmented<br />
into groups of 256 therefore allowable group selections are 256, 512, 768, 1024 etc. up to 4096.<br />
E.g. for a frame length of 256, 512, …, 4096, write $F, $E,…$0 to REGISTER1[3:0].<br />
Table 4 REGISTER1[5:4], Lemo mode encoding<br />
bit 5 bit 4 Lemo Modes<br />
0 0 Disabled<br />
0 1 External start. The Lemo signal starts the ADC conversion. Memories are set<br />
in write mode and, if selected (see below), the internal clock is stopped.<br />
1 0 External stop. The Lemo signal stops the <strong>SIROCO</strong> ADC conversion.<br />
Memories are disabled and, if selected (see below), the internal clock is<br />
stopped.<br />
Table 5 REGISTER1[6], convert mode<br />
Bit 6 Convert mode<br />
0 Conversion stops after selected frame length.<br />
1 Conversion is continuous.<br />
Table 6 REGISTER1[7], clock mode<br />
Bit 7 Clock mode<br />
0 External clock (differential or Lemo input).<br />
1 Internal (<strong>VME</strong> SYSCLK) clock.<br />
2.3 Register 2<br />
Read/write.<br />
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0<br />
Clock skip<br />
DAC baseline value<br />
Bits 15-12 contain the number of clock pulses skipped at the beginning of the conversion. The<br />
default value must be greater than or equal to 4. It is the complemented value which must be loaded<br />
in the register. E.g. to skip 0, 1, …, 15 clock pulses, write $F, $E, …, $0 to REGISTER2[15:12].<br />
The address counters are enabled on receipt of the last skipped clock pulse.<br />
The 12bit AM6012 DAC is configured for unipolar operation. The output from the DAC is<br />
subtracted from the <strong>SIROCO</strong> analogue input (this is effectively a base line restorer). The DAC<br />
baseline value encoding is given in Table 7.
Table 7 DAC encoding<br />
Data Vout<br />
Positive full scale FFF 9.9976<br />
Positive full scale – LSB FFE 9.9951<br />
LSB 001 0.0024<br />
Zero scale 000 0.0000<br />
2.4 Register 3<br />
Read only.<br />
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0<br />
EOC<br />
Last addressed memory<br />
Bits 11-0 contain the address of the last accessed memory cell at conversion time.<br />
Bit 15 Conversion status<br />
0 Conversion ended.<br />
1 Conversion in progress.<br />
2.5 Register 4<br />
Write only.<br />
Bit 0 Description<br />
0 Stop data collection (reset).<br />
1 Start data collection<br />
Bit 0 controls the starting and stopping of data collection.<br />
3 Test programs<br />
3.1 <strong>SIROCO</strong> data collection RAM test<br />
Data $155 is written to each individual address and read back. It is then tested with the original data<br />
to check its integrity. If the data read back is incorrect the CPU will cycle continuously at $7012.<br />
Upon completion of the above (successful) test, the data bits are now inverted to $2AA and the<br />
above process repeated.<br />
Upon successful completion, data is transferred from the <strong>SIROCO</strong> RAM to the CPU to allow<br />
further examination of the data if required.<br />
0000 7000 207C 0010 0000 MOVE.L #0010 0000,A0
0000 7006 303C 0155 MOVE #0155,D0<br />
0000 700A 3080 MOVE D0 (A0)<br />
0000 700C 3210 MOVE (A0),D1<br />
0000 700E B240 CMP 00,D1<br />
0000 7010 6702 BEQ.S 0000 7014<br />
0000 7012 60FE BRA.S 0000 7012<br />
0000 7014 DlFC 0000 0002 ADD.L #0000 0002,A0<br />
0000 701A B1FC 0010 2000 CMP.L #0010 2000,A0<br />
0000 7020 66E8 BNE.S 0000 700A<br />
0000 7022 207C 0010 0000 MOVE.L #0010 0000,A0<br />
0000 7028 303C 02AA MOVE f02AA,D0<br />
0000 702C 3080 MOVE D0,(A0)<br />
0000 702E 3210 MOVE (A0),Dl<br />
0000 7030 B240 CMP D0, D1<br />
0000 7032 6702 BEQ.S 0000 7036<br />
0000 7034 60FE BRA.S 0000 7034<br />
0000 7036 D1FC 0000 0002 ADD.L #0000 0002,A0<br />
0000 703C B1FC 0010 2000 CMP.L #0010 2000,A0<br />
0000 7042 66E8 BNE.S 0000 702C<br />
0000 7044 267C 0010 0000 MOVE.L #0010 0000,A3<br />
0000 704A 287C 0000 8000 MOVE.L #0000 8000,A4<br />
0000 7050 341B MOVE (A3)+,D2<br />
0000 7052 38C2 MOVE D2,(A4)+<br />
0000 7054 87FC 0010 2000 CMP.L #0010 2000,A3<br />
0000 705A 66F4 BNE.S 0000 7050<br />
0000 705C 60FE BRA.S 0000 7050<br />
3.2 <strong>SIROCO</strong> test routine<br />
Instructions are given below on the operation of the <strong>VME</strong> SIROCCO FLASH, a simple test routine<br />
is also included. The test is simply composed of linearly ramping up the on-board DAC and<br />
sampling the produced voltage at the ADC input. The sampling rate is fixed due to the selection of<br />
the internal clock. In this test the incremental change to the DAC is 1 (data written to the DAC is<br />
$090 - $FFF).<br />
This test program configures the SIROCCO to write data to 4096 samples, disables Lemo mode,<br />
uses the <strong>VME</strong> SYSCLK (internal clock) for generating converts, sets ‘SKPD CLK PULSES’ to<br />
zero. The on-board DAC is ramped-up from $090 to $FFF, each incremental change in DAC value<br />
is sampled by the ADC and stored in data collection RAM. Only one address location is actually<br />
transferred to the CPU for data analysis.<br />
5500 CLR.W D0 SET SIROCCO<br />
5502 MOVE.L #$0010 0000,A0 DATA COLLECTION<br />
5508 MOVE.W D0,(A0)+ RAM TO ZERO<br />
550A CMP.L #$0010 2000,A0<br />
5510 BNE.S $5508 TEST FOR END RAM<br />
5512 MOVE.L #$0000 8000,A0 SET CPU<br />
5518 MOVE.W D0,(A0)+ DATA COLLECTION<br />
551A CMP.L #$0000 A000,A0 RAM TO ZERO<br />
5520 BNE.S $5518 TEST FOR END OF RAM
5522 MOVE.L #$0000 8000,A1 CPU RAM POINTER = 8000<br />
5528 MOVE.L #$0010 0000,A3 SIROCCO RAM POINTER = 100000<br />
552E MOVE.W #$0080,$0010 2000 NOTE 1<br />
5536 MOVE.W #$0090,D1 INITIAL DAC DATA = 90<br />
553A OR.W #$F000,D1 NOTE 2<br />
553E MOVE.W D0,$0010 2006 SIROCCO RESET D0 = 0<br />
5544 MOVE.W D1,$0010 2002 WRITE DAC DATA<br />
554A MOVE.W #$0000,D4 TIME DELAY<br />
554E ADD.W #$0001,D4 TO ALLOW FOR DAC<br />
5552 CMP.W #$0550,D4 SETTLING TIME<br />
5556 BNE.S $554E<br />
5558 MOVE.L #$0001,0010 2006 START SIROCCO D0 = 1<br />
5560 MOVE.L #$0010 2004,A2 READ REGISTER 2<br />
5566 MOVE.W (A2),D2 THIS TESTS FOR BIT 15<br />
5568 AND.W #$8000,D2 TO INDICATE<br />
556C CMP.W #$0000,D2 END OF CONVERSION (EOC)<br />
5570 BNE.S $5566 LOOP TILL EOC<br />
5572 MOVE.W (A3),D3 YES EOC, READ DATA FROM<br />
5574 AND.W #$07FF,D3 SIROCCO (1000000) AND TRANSFER<br />
5578 MOVE.W D3,(Al)+ TO CPU RAM<br />
557A ADD.W #$0001,Dl INCREMENT DAC DATA<br />
557E CMP.W #$FFFF,Dl TEST FINAL DAC DATA<br />
5582 BNE.S $553A NO, REPEAT ABOVE CYCLE<br />
5584 BRA.S $5584 END!<br />
3.2.1 Notes<br />
<strong>SIROCO</strong> data collection RAM: $100000 - $102000<br />
CPU data collection RAM $8000 – $A000<br />
Note 1:<br />
The bit pattern wrote to this address (register 1)<br />
Initialises the following:<br />
4096 strips selected<br />
Lemo mode disabled<br />
Conversion authorised<br />
Internal clock selected<br />
To configure the <strong>SIROCO</strong> to accept external clocks (converts), this is achieved by setting bit 7<br />
register 1 ($102000) to a 1.for example to retain the above initialisation except that the clock<br />
selected will be external, the bit pattern will be $0000 not $0080.<br />
Note2:<br />
The DAC data is 12-bits wide, the logical OR is required to retain the top 4-bits to 1111, this is<br />
necessary so that the ‘skpd clk pulses’ = 0.