DRS4 Forum
 DRS4 Discussion Forum, Page 41 of 44 Not logged in
ID Date Author Subject
706   Thu Jun 28 19:55:45 2018 Woon-Seng ChoongNegative Bin Width

I am using a DRS4 Evaluation Board v5 and running the drsosc.exe version 5.06 on a Window 7 machine. I have performed the voltage and timing calibration.

With test pulses on channel 1 and 2, I collected binary data file with all 4 channels active sampling at 5GSPS.

Attached is a distribution of the bin_width vs. cell # for all the 4 channels. Note that there are few cells with bin_width < 10 ps.

Channel 1: bin_width[498] = -0.000348, bin_width[1010]= -0.000348

Channel 2: bin_width[498] = 0.007363

Channel 3: bin_width[498] = 0.007843

Channel 4: bin_width[498] = 0.005948

Is this normal? How can you get negative bin_width? What does negative bin_width means?

I have attached the binary data file for your verification.

Attachment 1: bin_width_5gsps.jpg
Attachment 2: test5gsps.dat
708   Mon Jul 16 19:39:35 2018 Woon-Seng ChoongEffect of interpolation on timing

Using a test pulse split into two channels of the DRS4 Evaluation Board v5, I looked at the time resolution using a leading edge threshold. The voltage and timing calibration was performed. One method (1) is to linearly interpolate between two points of the raw waveform that is above and below the threshold (this is exactly the algorithm given in read_binary.c in the drs4 source distribution); and another (2) is to use a cubic spline interpolation of the raw waveform. The results I obtained are:

Method 1: dt = 1.298 ns +/- 7.22 ps

Method 2: dt = 1.293 ns +/- 15.48 ps

I am really puzzled why the time resolution of the spline interpolation is about a factor 2 worse than the simple linear interpolation. Has anyone studied the time resolution using similar or other interpolation methods?

709   Fri Jul 20 00:44:13 2018 Woon-Seng ChoongEffect of interpolation on timing

Just a follow-up update.

It turns out that I was using a cubic spline interpolation with smoothing. If I required the cubic spline to go through the sampled points, then I obtained similar time resolution as the simple linear interpolation.

 Woon-Seng Choong wrote: Using a test pulse split into two channels of the DRS4 Evaluation Board v5, I looked at the time resolution using a leading edge threshold. The voltage and timing calibration was performed. One method (1) is to linearly interpolate between two points of the raw waveform that is above and below the threshold (this is exactly the algorithm given in read_binary.c in the drs4 source distribution); and another (2) is to use a cubic spline interpolation of the raw waveform. The results I obtained are: Method 1: dt = 1.298 ns +/- 7.22 ps Method 2: dt = 1.293 ns +/- 15.48 ps I am really puzzled why the time resolution of the spline interpolation is about a factor 2 worse than the simple linear interpolation. Has anyone studied the time resolution using similar or other interpolation methods?

629   Wed Sep 27 16:11:03 2017 Yoni SherEvent acquisition pace for irregular timing

Hi,

I'm running a LIDAR application that requires that every outgoing pulse be captured. My current setup firess sets of 20-50 pulses at 1 ms intervals, about 10 times a second, but only 10-20 pulses a second are captured.

When I fire at full speed (1KHz - one pulse every ms), about 500-600 pulses a second are captured.

At the moment, I'm triggering on channel 1 and captureing the data on channel 2. Would it help if I used the external trigger? Is there anything else I can do?

Yoni

647   Wed Dec 20 15:30:38 2017 Yoni Shercascading -- DRS4 Osci.cpp & DRS.cpp

Hi,

I'm trying to do the same thing (get 1 channel with 8192 bins), but I'm having some trouble with it. When I call SetChannelConfig(0, 8, 1) as suggeted, I get output that looks like noise on all readouts. Could you please explain what is supposed to happen in this case?

I will happily write the code to combine the channels correctly (and debug it) if I can understand what needs to be done.

(I should mention that my primary concern is a MATLAB interface which I have already written and don't mind sharing when it's complete).

Yoni Sher

Stefan Ritt wrote:

Jill Russek wrote:

Stefan Ritt wrote:

 Jill Russek wrote: Stefan, thanks for your help so far. If I go with your plan A of just modifying drs_exam.cpp, is there a quick way to get it to save the data from the wave, like how osci.cpp spits out an xml file? (Ignoring the cascading aspect for now) Thanks again :) /Jill

Well, you have to learn C programming, I won't do it for you. drs_exam.cpp contains already code to write to the ASCII file data.txt, so you just can use that or modify it to your needs.

/Stefan

Ha! So then the answer is no, there isn't a ready made function/method to pull out the timing and voltage,  like how it was done in osci.cpp. That's all I wanted to know. (Not whether you would write it for me! Only trying to save time!) Thanks!

/Jill

You misunderstood. The answer is yes. drs_exam.cpp contains already code to write to an ASCII file. If you actually look into the file, you see:

f = fopen("data.txt", "w");
...
b->GetTime(0, b->GetTriggerCell(0), time_array);
...
b->GetWave(0, 0, wave_array[0]);
...
fprintf(f, "%5.2f %6.2f\n", time_array[i], wave_array[0][i]);

which actually pulls out the timing and voltage and writes it to the file.

649   Wed Dec 20 16:30:45 2017 Yoni Shercascading -- DRS4 Osci.cpp & DRS.cpp

Hi,

The board is modified (and checks out with the DRSScope program). Could you please point me to the drs_exam_2048.cpp file? I can't seem to fine the most up-to-date git repository....

Thanks,

Yoni

Stefan Ritt wrote:

First you need a board which is modified in hardware to support channel cascading. Basically there are internal resistors which connect each input connector to two channels. You have to specify this when you order the board. Then you can use the new drs_exam_2048.cpp file contains in the git repository which correctly configures and reads out the board in two-channel cascading mode. Putting all 8 channels together is not supported by the evaluation boards.

Stefan

Yoni Sher wrote:

Hi,

I'm trying to do the same thing (get 1 channel with 8192 bins), but I'm having some trouble with it. When I call SetChannelConfig(0, 8, 1) as suggeted, I get output that looks like noise on all readouts. Could you please explain what is supposed to happen in this case?

I will happily write the code to combine the channels correctly (and debug it) if I can understand what needs to be done.

(I should mention that my primary concern is a MATLAB interface which I have already written and don't mind sharing when it's complete).

Yoni Sher

Stefan Ritt wrote:

Jill Russek wrote:

Stefan Ritt wrote:

 Jill Russek wrote: Stefan, thanks for your help so far. If I go with your plan A of just modifying drs_exam.cpp, is there a quick way to get it to save the data from the wave, like how osci.cpp spits out an xml file? (Ignoring the cascading aspect for now) Thanks again :) /Jill

Well, you have to learn C programming, I won't do it for you. drs_exam.cpp contains already code to write to the ASCII file data.txt, so you just can use that or modify it to your needs.

/Stefan

Ha! So then the answer is no, there isn't a ready made function/method to pull out the timing and voltage,  like how it was done in osci.cpp. That's all I wanted to know. (Not whether you would write it for me! Only trying to save time!) Thanks!

/Jill

You misunderstood. The answer is yes. drs_exam.cpp contains already code to write to an ASCII file. If you actually look into the file, you see:

f = fopen("data.txt", "w");
...
b->GetTime(0, b->GetTriggerCell(0), time_array);
...
b->GetWave(0, 0, wave_array[0]);
...
fprintf(f, "%5.2f %6.2f\n", time_array[i], wave_array[0][i]);

which actually pulls out the timing and voltage and writes it to the file.

523   Thu May 12 05:18:47 2016 YuProblem For Software Download

Hi

I can't download the software for windows on this website 'www.psi.ch/drs/software-download', there is some mistake when i click on download.

If convenient, can you send the software Version 5.0.5 for windows to me? My E-mail address is 'yuhaiyang421@163.com'. Thank you!

Best Regards

Yu

153   Wed Feb 15 18:08:13 2012 Yuji IwaiEvaluation Board v4 Trigger/Clock Connectors

Quick question - what type of connectors are used for the trigger and clock in/out on the v4 eval board?

219   Fri Feb 22 11:46:17 2013 Yury GolodDRS4 trigger, different polarity

I need to synchronize two signals. These signals have a different polarity.

I can set triggers on different levels. But I can't set different polarity of triggers.

Now I can set (T1 and T2), I need to set (T1 and (not T2))

Is it possible?

d->SetTriggerLevel(-0.4,0.4,0.0,0.0,false);

d->EnableTrigger(1, 0);  // Enable trigger

d->SetTriggerSource(1<<8 | 1<<9);  // T1 and T2

file DRS.cpp:

int DRSBoard::SetTriggerLevel(double voltage1,double voltage2, double voltage3,double voltage4,bool negative)

{

SetDAC(fDAC_TLEVEL1, voltage1/2 + 0.8);

SetDAC(fDAC_TLEVEL2, voltage2/2 + 0.8);

628   Sun Aug 27 12:44:16 2017 Yuvaraj ElangovanDRS4 version Support

Hi i am using DRS4 Eval Board V2, How to acquire data to a bin file using it.

358   Mon Jul 14 19:03:05 2014 Yves Biangachange cascading from 1024 to 2048 bins for each input channel

Hello,

I want to ask whether it is possible to modify a Evaluation Board 5.0 from 1024 to 2048 cells for each of the 4 input channels.
On the rev50 manual at page 31 I found an option to connect the 4 unused channels by setting 8 solder bridges.
The source code for controlling the board seems already prepared for 2048 bins, since version 5.0.2.

So my first question: Are there any implementations in the VHDL Code to control the write shift register in 2048 mode? / Is there a necessity for a newer/other VHDL Code or is it already implemented?

And the second: Are there any other modifications except the eight zero Ohm resistors and maybe changes in the FPGA code?

My board info output:

Mezz. Board index:    0
DRS type:             DRS4
Board type:           9
Serial number:        2451
Firmware revision:    21260

Thanks a lot!

Yves Bianga
175   Tue Aug 28 17:52:45 2012 Zach MillerDRS-4.0.0 DOScreen.cpp

Hi,

I found an old thread regarding a fix for DOScreen.cpp for DRS-3.1.0, that fixes an "ambiguous overload problem." Currently when I attempt to build the drs-4.0.0, I get this similar error:

src/DOScreen.cpp:332:39: error: call of overloaded ‘Append(int)’ is ambiguous

This section of code is different than what the previous thread was correcting, and though I attempted to apply the logic of the old thread, I haven't fixed this yet.

The following is the code for that section:

-----

329  for (int i=0 ; i<5 ; i++)
330       if (tc & (1<<(i+8))) {
331            if (i < 4)
332              wxst1.Append(wxT('1'+i));
333            else
334              wxst1.Append(wxT('E'));
335           wxst1.Append(wxT('&'));
336        }
337      if (wxst1.Length() > 0)
338         wxst1 = wxst1.Left(wxst1.Length()-1);
339      wxst1.Append(wxT(')'));

------

I've attempted a few fixes, but unfortunately, my understanding of the code is not great, and I haven't managed to fix this yet. Any help would be appreciated.

Thanks,

Zach Miller

177   Wed Aug 29 16:42:42 2012 Zach MillerDRS-4.0.0 DOScreen.cpp

Stefan Ritt wrote:

 Zach Miller wrote: Hi, I found an old thread regarding a fix for DOScreen.cpp for DRS-3.1.0, that fixes an "ambiguous overload problem." Currently when I attempt to build the drs-4.0.0, I get this similar error: src/DOScreen.cpp:332:39: error: call of overloaded ‘Append(int)’ is ambiguous   This section of code is different than what the previous thread was correcting, and though I attempted to apply the logic of the old thread, I haven't fixed this yet. The following is the code for that section: ----- 329  for (int i=0 ; i<5 ; i++) 330       if (tc & (1<<(i+8))) { 331            if (i < 4) 332              wxst1.Append(wxT('1'+i)); 333            else 334              wxst1.Append(wxT('E')); 335           wxst1.Append(wxT('&')); 336        } 337      if (wxst1.Length() > 0) 338         wxst1 = wxst1.Left(wxst1.Length()-1); 339      wxst1.Append(wxT(')')); ------ I've attempted a few fixes, but unfortunately, my understanding of the code is not great, and I haven't managed to fix this yet. Any help would be appreciated. Thanks, Zach Miller

Just put (char) in front of wxT(...), like

`   if (tc > 0) {`

`      wxString wxst1, wxst2;`

`      wxst1.Append((char)wxT('('));`

`      for (int i=0 ; i<5 ; i++)`

`         if (tc & (1<<i)) {`

`            if (i < 4)`

`               wxst1.Append((char) (wxT('1'+i)));`

`            else`

`               wxst1.Append((char) wxT('E'));`

`            wxst1.Append((char) wxT('|'));`

`         }`

`      for (int i=0 ; i<5 ; i++)`

`         if (tc & (1<<(i+8))) {`

`            if (i < 4)`

`               wxst1.Append((char) (wxT('1'+i)));`

`            else`

`               wxst1.Append((char) wxT('E'));`

`            wxst1.Append((char) wxT('&'));`

`         }`

`      if (wxst1.Length() > 0)`

`         wxst1 = wxst1.Left(wxst1.Length()-1);`

`      wxst1.Append((char) wxT(')')); `

Hi Stefan,

Thanks for the response. I have tried that and it fixes all the lines except the ones that have:

`wxst1.Append((char) (wxT('1'+i)));`

Those lines still don't compile for me. I've also tried: `wxst1.Append((char) (wxT('1'+(char)i))); and wxst1.Append((char) (wxT((char)'1'+i))); as well as a few other combinations of (char) and Append.`

`I get the same error of: "Call of overloaded "Append(int)" is ambiguous."`

Any other help would be greatly appreciated. Thanks!

-Zach

179   Wed Aug 29 16:57:49 2012 Zach MillerDRS-4.0.0 DOScreen.cpp

Stefan Ritt wrote:

Zach Miller wrote:

Stefan Ritt wrote:

 Zach Miller wrote: Hi, I found an old thread regarding a fix for DOScreen.cpp for DRS-3.1.0, that fixes an "ambiguous overload problem." Currently when I attempt to build the drs-4.0.0, I get this similar error: src/DOScreen.cpp:332:39: error: call of overloaded ‘Append(int)’ is ambiguous   This section of code is different than what the previous thread was correcting, and though I attempted to apply the logic of the old thread, I haven't fixed this yet. The following is the code for that section: ----- 329  for (int i=0 ; i<5 ; i++) 330       if (tc & (1<<(i+8))) { 331            if (i < 4) 332              wxst1.Append(wxT('1'+i)); 333            else 334              wxst1.Append(wxT('E')); 335           wxst1.Append(wxT('&')); 336        } 337      if (wxst1.Length() > 0) 338         wxst1 = wxst1.Left(wxst1.Length()-1); 339      wxst1.Append(wxT(')')); ------ I've attempted a few fixes, but unfortunately, my understanding of the code is not great, and I haven't managed to fix this yet. Any help would be appreciated. Thanks, Zach Miller

Just put (char) in front of wxT(...), like

`   if (tc > 0) {`

`      wxString wxst1, wxst2;`

`      wxst1.Append((char)wxT('('));`

`      for (int i=0 ; i<5 ; i++)`

`         if (tc & (1<<i)) {`

`            if (i < 4)`

`               wxst1.Append((char) (wxT('1'+i)));`

`            else`

`               wxst1.Append((char) wxT('E'));`

`            wxst1.Append((char) wxT('|'));`

`         }`

`      for (int i=0 ; i<5 ; i++)`

`         if (tc & (1<<(i+8))) {`

`            if (i < 4)`

`               wxst1.Append((char) (wxT('1'+i)));`

`            else`

`               wxst1.Append((char) wxT('E'));`

`            wxst1.Append((char) wxT('&'));`

`         }`

`      if (wxst1.Length() > 0)`

`         wxst1 = wxst1.Left(wxst1.Length()-1);`

`      wxst1.Append((char) wxT(')')); `

Hi Stefan,

Thanks for the response. I have tried that and it fixes all the lines except the ones that have:

`wxst1.Append((char) (wxT('1'+i)));`

Those lines still don't compile for me. I've also tried: `wxst1.Append((char) (wxT('1'+(char)i))); and wxst1.Append((char) (wxT((char)'1'+i))); as well as a few other combinations of (char) and Append.`

`I get the same error of: "Call of overloaded "Append(int)" is ambiguous."`

Any other help would be greatly appreciated. Thanks!

-Zach

wxst1.Append((char) (wxT((char)('1'+i))));     maybe ???

Aha!

`wxst1.Append((char) (wxT('1'+i)));`

That one actually works as you initially thought, but you my editor was being picky of (char)wxt... instead of (char) (wxt....). For some reason, it has to have the extra set of parentheses around wxt(). Thank You!

180   Thu Oct 4 20:50:36 2012 Zach MillerDRS5

Hi,

Our group had previously heard that a "DRS-5.0" might be on the horizon and that it may have ethernet capabilities as well as 16-input channels (we heard this when ordering the DRS-4). Is this still in the works and accurate information? If so, is there a rough estimate to the "release date?"

Thanks for your time,

Zach Miller

182   Thu Oct 4 21:07:27 2012 Zach MillerDRS5

Stefan Ritt wrote:

 Zach Miller wrote: Hi, Our group had previously heard that a "DRS-5.0" might be on the horizon and that it may have ethernet capabilities as well as 16-input channels (we heard this when ordering the DRS-4). Is this still in the works and accurate information? If so, is there a rough estimate to the "release date?" Thanks for your time, Zach Miller

You mix up two things: The DRS5 chip is a new device with improved samling speed (10 GSPS) and lower dead time. This chip might come in 2-3 years. The 16-input board you mentioned is a DAQ board based on the DRS4 chip. This board well be operational beginning of 2013 as a prototype. It is not clear however at this point in which way this board will be made available for public. Maybe we will license this to industry. The design is however pretty much defined: 16 channels with gain 0.1-100, 1 GHz Bandwidth, Gigabit Ethernet output, and multi-board capabilities. Trigger on each channel with logical combinations. 80 MSPS continuous sampling (in addition to the DRS4 sampling). Each channel can be biased 0-210 V for SiPMT or APD power. A 19" 3 HE crate will host 16 boards with 256 channels.

/Stefan

Thanks, Stefan. That was the information we were looking for.

Cheers.

-Zach

136   Mon Oct 31 09:15:02 2011 Zhongwei DuHow to link PMT

I want to measure the signal from PMT . But it is a current signal, should i just put a series resistance, or use a amplifier to convert it to voltage signal before drs4?

Can you give me some advice ?

151   Sat Feb 4 11:59:26 2012 Zhongwei Duwhat sort of detectors for physical experiment the DRS4 used?

Hello.

We are designing a waveform sampling board for Si strip array detector ,whose rise time is less than 10 ns, which makes we doubt whether the DRS4 can do more accurate than traditional charge integral circuit for charge measuring.

So we need to know what sort of detectors for physical experiment the DRS4 has been used in?

Can you give me some information? For example, Si strip array detector or CsI scintillator r ball detector ? PMT or APD ?

200   Tue Dec 4 09:24:22 2012 Zhongwei DuQuestion of drs4 using

When Denable and Dwrite is high , the voltage of PLLOUT is 0 V.  And  the Dtap is turn high with no delay when the Denable turns high.

After power up and configuration(the WSR,WCR,CR are all set to 11111111), the readout data is no change whenever the input analog signal and rofs,bias,oofs changes. I have test useing the DAC to supply the Dspeed voltage, and change a new DRS4 chip, but all is the same. The readout data is strange : the first about 100 cells is rise or fall  and the last 900 cells is out of the range of ADC.

So how should I do for debugging the drs4 now.

202   Tue Dec 4 09:50:11 2012 Zhongwei DuQuestion of drs4 using

Stefan Ritt wrote:

 Zhongwei Du wrote: When Denable and Dwrite is high , the voltage of PLLOUT is 0 V.  And  the Dtap is turn high with no delay when the Denable turns high. After power up and configuration(the WSR,WCR,CR are all set to 11111111), the readout data is no change whenever the input analog signal and rofs,bias,oofs changes. I have test useing the DAC to supply the Dspeed voltage, and change a new DRS4 chip, but all is the same. The readout data is strange : the first about 100 cells is rise or fall  and the last 900 cells is out of the range of ADC. So how should I do for debugging the drs4 now.

The first thing to make work is to have DTAP oscillating with fsamp/2048. Keep Denable and Dwrite low (required during power-on, see elog:10), set Dspeed to 2.5V, then rise Denable and Dwrite. You should see Dtap toggling at about 2.4 MHz. If not, double check all supply voltages, and especially all soldering points. The QFN package is a bit hard to solder.

/Stefan

"Keep Denable and Dwrite low (required during power-on, see elog:10), set Dspeed to 2.5V, then rise Denable and Dwrite. You should see Dtap toggling at about 2.4 MHz. "

In this process ,  should i config any registers( WSR,WCR,CR  ) ?

ELOG V3.1.4-bcd7b50