]> jspc29.x-matter.uni-frankfurt.de Git - daqtools.git/commitdiff
add better display MDC boards in network map
authorJan Michel <michel@physik.uni-frankfurt.de>
Fri, 14 Apr 2023 13:12:48 +0000 (15:12 +0200)
committerJan Michel <michel@physik.uni-frankfurt.de>
Fri, 14 Apr 2023 13:12:48 +0000 (15:12 +0200)
web/htdocs/network/map.pl
xml-db/database/MDCUpgrade.xml

index f33055e7b9694cb58566e05e2047d1b35d507009..258b7cd5f7b31c8335cd2d93c69c262302994cc9 100755 (executable)
@@ -200,7 +200,7 @@ if($ENV{'QUERY_STRING'} =~ /getmap/) {
                 $feat .= "with multi-packet"          if ($inclLow->{$addr} & 0x400000);
             }
           }
-          $feat .= "\nHub: ".(($inclLow->{$addr}>>24)&0xf)." SFPs";  
+          $feat .= "\nHub: ".(($inclLow->{$addr}>>24)&0xf)." SFPs"  if (($inclLow->{$addr}>>24)&0xf);  
         }
       if($table == 2) {
           if($inclLow->{$addr}&0x8000) {  # ||1 just because this not implemented yet in the test design..
@@ -237,9 +237,14 @@ if($ENV{'QUERY_STRING'} =~ /getmap/) {
           if ($inclHigh->{$addr}>>12&0xF) {
             $feat .= "\nInput monitor:";
             my $d = trb_register_read($addr,0xdf8f) // trb_register_read($addr,0xdf8f);
-            $feat .= " ".($d->{$addr}>>8&0x1F)." inputs";
-            $feat .= ", single Fifo" if     $d->{$addr}&0x8000;
-            $feat .= ", indiv. Fifos" unless $d->{$addr}&0x8000;
+            if(($d->{$addr}>>8&0x1F)) {
+              $feat .= " ".($d->{$addr}>>8&0x1F)." inputs";
+              $feat .= ", single Fifo" if     $d->{$addr}&0x8000;
+              $feat .= ", indiv. Fifos" unless $d->{$addr}&0x8000;
+              }
+            else {
+              $feat .= " none";
+              }
           }
           
           if(($inclHigh->{$addr}>>16&0xF) == 1 || ($inclHigh->{$addr}>>16&0xF) == 2) {
@@ -343,39 +348,51 @@ else {
 
 sub GetTDCInfo {
     my ($addr,$info,$inp) = @_;
-    my $d = trb_register_read($addr,0xc100);
     my $feat = "";
-    my $module = ($info>>16&0x3)+1;
-    $feat .= " ".($d->{$addr}>>8&0xFF)." channels";
-    $feat .= " read by ".$module." module(s)";
-    $feat .= ", version ".(($d->{$addr}&0x0e000000)>>25).".".(($d->{$addr}&0x1e00000)>>21).".".(($d->{$addr}&0x1e0000)>>17);
-    my $value;
-    if($inp) {
-      $value = $info&0xFF;
-      if ($value==0) {$feat .=", input select by mux";}
-      if ($value==1) {$feat .=", input 1-to-1";}
-      if ($value==2) {$feat .=", on every second input";}
-      if ($value==3) {$feat .=", on every fourth input";}
-      if ($value==128) {$feat .=", input from 32pin";}
-      if ($value==129) {$feat .=", input from 4conn";}
-      if ($value==130) {$feat .=", input from onboard KEL";}
-      if ($value==131) {$feat .=", input from ADA, w/ test signals";}
-      if ($value==132) {$feat .=", input from ADA, every fourth pair";}
-      
-      $value = $info>>8&0xF;
-      if ($value==0) {$feat .=", single edge";}
-      if ($value==1) {$feat .=", dual edge in same channel";}
-      if ($value==2) {$feat .=", dual edge in alternating channels";}
-      if ($value==3) {$feat .=", dual edge same channel + stretcher";}
-      
-      $value = $info>>12&0x7;
-      if ($value==0) {$feat .=", RingBuffer size: 12 words";}
-      if ($value==1) {$feat .=", RingBuffer size: 44 words";}
-      if ($value==2) {$feat .=", RingBuffer size: 76 words";}
-      if ($value==3) {$feat .=", RingBuffer size: 108 words";}
-      if ($value==7) {$feat .=", RingBuffer size: dynamic";}
-    }
-      
+    
+    if(($info>>8&0xF) == 5) {  #MDC TDC
+      my $d = trb_register_read($addr,0xc020);
+      $feat .= "clocked TDC";
+      $feat .= ", ".($d->{$addr}>>0&0xFF)." channels";
+      $feat .= ", ".($d->{$addr}>>8&0xFF)." buffer depth";
+      if($d->{$addr}>>16&0xFF == 1) {
+        $feat .= ", both edges in same word";
+        }
+    
+      }
+    else {  
+      my $module = ($info>>16&0x3)+1;
+      my $d = trb_register_read($addr,0xc100);
+      $feat .= " ".($d->{$addr}>>8&0xFF)." channels";
+      $feat .= " read by ".$module." module(s)";
+      $feat .= ", version ".(($d->{$addr}&0x0e000000)>>25).".".(($d->{$addr}&0x1e00000)>>21).".".(($d->{$addr}&0x1e0000)>>17);
+      my $value;
+      if($inp) {
+        $value = $info&0xFF;
+        if ($value==0) {$feat .=", input select by mux";}
+        if ($value==1) {$feat .=", input 1-to-1";}
+        if ($value==2) {$feat .=", on every second input";}
+        if ($value==3) {$feat .=", on every fourth input";}
+        if ($value==128) {$feat .=", input from 32pin";}
+        if ($value==129) {$feat .=", input from 4conn";}
+        if ($value==130) {$feat .=", input from onboard KEL";}
+        if ($value==131) {$feat .=", input from ADA, w/ test signals";}
+        if ($value==132) {$feat .=", input from ADA, every fourth pair";}
+        
+        $value = $info>>8&0xF;
+        if ($value==0) {$feat .=", single edge";}
+        if ($value==1) {$feat .=", dual edge in same channel";}
+        if ($value==2) {$feat .=", dual edge in alternating channels";}
+        if ($value==3) {$feat .=", dual edge same channel + stretcher";}
+        
+        $value = $info>>12&0x7;
+        if ($value==0) {$feat .=", RingBuffer size: 12 words";}
+        if ($value==1) {$feat .=", RingBuffer size: 44 words";}
+        if ($value==2) {$feat .=", RingBuffer size: 76 words";}
+        if ($value==3) {$feat .=", RingBuffer size: 108 words";}
+        if ($value==7) {$feat .=", RingBuffer size: dynamic";}
+        }
+      } 
     return $feat;
 }
 
index 7e0070f79c5fe2937ae7ae1803535bfee44ff6d8..b76d0c2e429f09e51a80f9c7b3d383595780819c 100644 (file)
       </field>    
     </register>
 
-    
+    <register name="TdcInfo" address="0020" >
+      <description>TDC Information</description>
+      <field name="TdcChannels" start="0" bits="8" format="unsigned"  noflag="true" mode="r">
+        <description>Number of implemented TDC channels</description>
+      </field>
+      <field name="TdcBuffer" start="8" bits="8" format="unsigned"  noflag="true" mode="r">
+        <description>Depth of the hit buffer for each channel</description>
+      </field>    
+      <field name="DataFormat" start="16" bits="8" format="unsigned"  noflag="true" mode="r">
+        <description>DataFormat. 1: two hits in one word, no further processing</description>
+      </field>
+    </register>    
     
     </group>