
<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.anl.gov/wiki_gsdaq/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Moberling</id>
	<title>GammaSphere DAQ - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.anl.gov/wiki_gsdaq/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Moberling"/>
	<link rel="alternate" type="text/html" href="https://wiki.anl.gov/gsdaq/Special:Contributions/Moberling"/>
	<updated>2026-06-24T08:05:59Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki.anl.gov/wiki_gsdaq/index.php?title=DAQ_system&amp;diff=4310</id>
		<title>DAQ system</title>
		<link rel="alternate" type="text/html" href="https://wiki.anl.gov/wiki_gsdaq/index.php?title=DAQ_system&amp;diff=4310"/>
		<updated>2026-01-21T15:04:02Z</updated>

		<summary type="html">&lt;p&gt;Moberling: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;This is an image map. Click on a section of the picture to go to the page for that item.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;imagemap&amp;gt;&lt;br /&gt;
Image:GammasphereDAQupgrade.jpg|700px|center|thumb|Figure 1. DAQ System circled in red; one rack for each of the four &amp;quot;hemispheres&amp;quot; of Gammasphere&lt;br /&gt;
poly 135 204 209 219 258 192 250 266 213 293 137 268 [[VME Crates]]&lt;br /&gt;
poly 904 385 977 402 1030 373 1029 438 979 470 904 452 [[VME Crates]]&lt;br /&gt;
poly 1039 326 1097 339 1143 308 1148 378 1096 406 1058 376 1027 364 [[VME Crates]]&lt;br /&gt;
poly 134 167 135 197 209 217 257 184 256 162 208 185 [[Collector Box]]&lt;br /&gt;
poly 906 347 906 367 977 395 1022 369 1025 345 977 367 [[Collector Box]]&lt;br /&gt;
poly 1034 287 1103 301 1146 275 1146 299 1100 323 1042 311 [[Collector Box]]&lt;br /&gt;
poly 199 104 137 158 206 175 269 139 [[DAQ Power Supply]]&lt;br /&gt;
poly 312 42 253 96 317 113 375 58 [[DAQ Power Supply]]&lt;br /&gt;
poly 902 339 966 285 1034 321 976 356 [[DAQ Power Supply]]&lt;br /&gt;
poly 1021 274 1081 225 1140 242 1089 293 [[DAQ Power Supply]]&lt;br /&gt;
poly 445 151 432 123 398 113 351 138 305 218 291 285 290 337 300 382 336 429 370 423 421 413 356 454 276 423 251 353 252 293 267 219 304 138 344 95 379 79 428 88 472 135 [[Liquid Nitrogen]]&lt;br /&gt;
poly 838 557 809 506 804 446 808 384 828 320 865 258 911 222 960 212 1010 233 1021 293 991 288 969 251 950 241 935 239 901 264 876 300 860 331 846 378 839 428 839 470 847 516 850 532[[Liquid Nitrogen]]&lt;br /&gt;
poly 502 374 499 305 519 251 564 207 615 184 660 181 713 195 759 233 783 277 796 329 788 382 764 427 710 470 648 483 587 471 533 431 [[Gammasphere|Gammasphere frame (without detectors in it)]]&lt;br /&gt;
&amp;lt;/imagemap&amp;gt;&lt;br /&gt;
Gammasphere&#039;s DAQ system (data acquisition system) is now placed on relay racks by each side of its &amp;quot;hemispheres&amp;quot;. Each of the racks for the DAQ consists of a [[DAQ Power Supply|power supply]], a [[Collector Box|collector box]], and a [[VME Crates|VME crate]]. The data acquisition system observes, interprets, and modifies data taken from [[Gammasphere]] and appropriately presents it to the user.  &lt;br /&gt;
&lt;br /&gt;
The picture above provides an overall map to the naming conventions associated with the system.  Cardinal directions are shown in &#039;&#039;&#039;purple&#039;&#039;&#039; text, process variable (EPICS) names are shown in &#039;&#039;&#039;green&#039;&#039;&#039; text and network IDs are shown in &#039;&#039;&#039;red&#039;&#039;&#039; text.  There are multiple computers within the DAQ system:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+These devices are used both by data acquisition and by control &amp;amp; monitoring&lt;br /&gt;
|-&lt;br /&gt;
!  scope=col | Network name&lt;br /&gt;
!  scope=col | IP address &lt;br /&gt;
!  scope=col | Description&lt;br /&gt;
|-&lt;br /&gt;
| ioc01: || 192.168.203.141 || MVME5500 VME processor used for control and readout&lt;br /&gt;
|-&lt;br /&gt;
| ioc02: || 192.168.203.142 || MVME5500 VME processor used for control and readout&lt;br /&gt;
|-&lt;br /&gt;
| ioc03: || 192.168.203.143 || MVME5500 VME processor used for control and readout&lt;br /&gt;
|-&lt;br /&gt;
| ioc04: || 192.168.203.144 || MVME5500 VME processor used for control and readout&lt;br /&gt;
|-&lt;br /&gt;
| ioc05: || 192.168.203.145 || MVME5500 VME processor used for control and readout&lt;br /&gt;
|-&lt;br /&gt;
| ioc06: || 192.168.203.177 || MVME5500 VME processor used for control and readout&lt;br /&gt;
|-&lt;br /&gt;
| ioc07: || 192.168.203.178 || MVME5500 VME processor used for control and readout&lt;br /&gt;
|-&lt;br /&gt;
| ioc08: || 192.168.203.179 || MVME5500 VME processor used for control and readout&lt;br /&gt;
|-&lt;br /&gt;
| ioc09: || 192.168.203.180 || MVME5500 VME processor used for control and readout&lt;br /&gt;
|-&lt;br /&gt;
| ioc10: || 192.168.203.183 || MVME5500 VME processor used for control and readout&lt;br /&gt;
|-&lt;br /&gt;
| ioc11: || 192.168.203.181 || MVME5500 VME processor used for control and readout&lt;br /&gt;
|-&lt;br /&gt;
| ioc12: || 192.168.203.182 || MVME5500 VME processor used for control and readout&lt;br /&gt;
|-}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+These devices are used by control &amp;amp; monitoring only.&lt;br /&gt;
|-&lt;br /&gt;
!  scope=col | Network name&lt;br /&gt;
!  scope=col | IP address &lt;br /&gt;
!  scope=col | Description&lt;br /&gt;
|-&lt;br /&gt;
| piserver1 || 192.168.203.154 || Collector Boot Host&lt;br /&gt;
|-&lt;br /&gt;
| gs-cne || 192.168.203.88 || Raspberry Pi inside the North East Collector box&lt;br /&gt;
|-&lt;br /&gt;
| gs-cnw || 192.168.203.149 || Raspberry Pi inside the North West Collector box&lt;br /&gt;
|-&lt;br /&gt;
| gs-cse || 192.168.203.42 || Raspberry Pi inside the South East Collector box&lt;br /&gt;
|-&lt;br /&gt;
| gs-csw || 192.168.203.26 || Raspberry Pi inside the South West Collector box&lt;br /&gt;
|-}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+These devices are used by directly logging into them to control power to the VME crates, network switches and terminal servers.&lt;br /&gt;
|-&lt;br /&gt;
!  scope=col | Network name&lt;br /&gt;
!  scope=col | IP address &lt;br /&gt;
!  scope=col | Description&lt;br /&gt;
|-&lt;br /&gt;
| gs-pdu-north || 192.168.203.224 || Power Distribution Unit for the North Hemisphere&lt;br /&gt;
|-&lt;br /&gt;
| gs-pdu-south || 192.168.203.225 || Power Distribution Unit for the North Hemisphere&lt;br /&gt;
|-}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+These devices are used by directly logging into them to connect to the console ports of IOC01 through IOC12.&lt;br /&gt;
|-&lt;br /&gt;
!  scope=col | Network name&lt;br /&gt;
!  scope=col | IP address &lt;br /&gt;
!  scope=col | Description&lt;br /&gt;
|-&lt;br /&gt;
| gs-ts-north || 192.168.203.91 || Terminal server providing console port access for ioc07 through ioc12&lt;br /&gt;
|-&lt;br /&gt;
| gs-ts-south || 192.168.203.186 || Terminal server providing console port access for ioc01 through ioc06&lt;br /&gt;
|-}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+These devices are associated with the liquid nitrogen subsystem.&lt;br /&gt;
|-&lt;br /&gt;
!  scope=col | Network name&lt;br /&gt;
!  scope=col | IP address &lt;br /&gt;
!  scope=col | Description&lt;br /&gt;
|-&lt;br /&gt;
| lnfill || 192.168.203.121 || Embedded VME processor that hosts the EPICS databases for valve status and valve control&lt;br /&gt;
|-&lt;br /&gt;
| ln2con || 192.168.203.148 || Linux computer that lnfill boots from&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When [[Gammasphere]] collects data, single-ended [[Detector Signals|signals]] are first collected from the slope box for the Ge Center, Ge Sides, and BGO segment. The signals are converted to differential signals by the [[The Slope Box Extension|SBX]], and are then sent to the collector box so the signals can properly be routed to the digitizers. The digitizers process and output the desired information to the user based upon their data specifications. The DAQ system is an FPGA-based design that provides communication hub interfacing the [[Preamplifier|preamp]], power board, dongle and slope box to EPICS through serial interface. Analog signal paths are completely software controlled.  &lt;br /&gt;
==DAQ System Function==&lt;br /&gt;
The Gammasphere DAQ system consists of VME crates, IOC Modules, Digitizers and Trigger Modules.  The original &amp;quot;analog&amp;quot; implementation of Gammasphere using the VXI modules used a charge-integrating ADC methodology and did not continuously digitize the data from the detectors.  The Digital Gammasphere system (2010s) introduced the digitizers as a replacement for the charge-integrating ADC functions of the VXI modules and replaces the &amp;quot;analog&amp;quot; system&#039;s trigger by a new trigger system, requiring a redesign of the DAQ.  The later &amp;quot;Gammasphere Upgrade&amp;quot; project (2019-2023) that resulted in the SBX, preamp and collector box hardware did not materially affect the DAQ but replaced all of the remaining control, monitoring and power distribution functions of the VXI system allowing removal of the VXI system and associated cable plant.&lt;br /&gt;
&lt;br /&gt;
Each digitizer in the system consists of 10 channels, but should be conceptualized as a pair of two &#039;&#039;sub-digitizers&#039;&#039; consisting of five channels each. There are two types of digitizers: master and slave. A pair of channels in a master digitizer receives signals from the Ge center and BGO sum from a single Gammasphere detector, while a channel-pair in the slave digitizer receives signals from the Ge side and BGO pattern. All channels in all digitizers run continuously. There are two types of digitizers (master and slave) as well as two types of triggers (master and router).&lt;br /&gt;
&lt;br /&gt;
When discriminator logic within the digitizer firmware marks edges of gamma-ray signals, energy sums, timing and other data are stored in a header identifying the event. If the event is selected for readout by the trigger system, the header and a programmable amount of waveform is transferred from the channel to the board-wide FIFO (first in, first out) data holder. Similarly the trigger modules have FIFO buffers that store information each time a trigger acceptance message is issued to the digitizers.  The IOC scans the FIFOs of all modules to see if there is data to read out through a series of programs named inLoop, outLoop and MiniSender. If data is available, the inLoop program reads it and stores the data read into memory buffers. Program outLoop verifies the integrity of the buffers and then hands control of the buffers to the MiniSender program.  A separate program running on a different computer called “gtReceiver” sends messages to each IOC&#039;s MiniSender program when it is capable of receiving data. The MiniSender program of each IOC, in response to requests from gtReceiver, then breaks apart buffers into UDP packets and sends them to gtReceiver. The gtReceiver program then stores the data received to files that may be organized by digitizer or by channel. &lt;br /&gt;
&amp;lt;imagemap&amp;gt;&lt;br /&gt;
Image:DAQSystem.png|center|thumb|700px|Figure 2. Diagram of the DAQ system process. &lt;br /&gt;
rect 454 225 478 241 [[Gammasphere Detectors]]&lt;br /&gt;
rect 550 225 575 242 [[Gammasphere Detectors]]&lt;br /&gt;
rect 642 225 665 241 [[Gammasphere Detectors]]&lt;br /&gt;
poly 451 211 449 224 481 224 480 213 [[The Slope Box]]&lt;br /&gt;
poly 546 212 545 224 575 224 576 216 [[The Slope Box]]&lt;br /&gt;
poly 637 209 637 222 667 223 667 214 [[The Slope Box]]&lt;br /&gt;
rect 435 211 448 222 [[The Slope Box Extension]]&lt;br /&gt;
rect 532 213 544 223 [[The Slope Box Extension]]&lt;br /&gt;
rect 624 211 635 221[[The Slope Box Extension]]&lt;br /&gt;
&amp;lt;/imagemap&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;To view how this system is controlled, go to [[DGS Commander EDM Screens]].&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Go back to [[Digital Gammasphere Upgrade Project]]&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Moberling</name></author>
	</entry>
	<entry>
		<id>https://wiki.anl.gov/wiki_gsdaq/index.php?title=DAQ_system&amp;diff=4309</id>
		<title>DAQ system</title>
		<link rel="alternate" type="text/html" href="https://wiki.anl.gov/wiki_gsdaq/index.php?title=DAQ_system&amp;diff=4309"/>
		<updated>2026-01-21T15:01:07Z</updated>

		<summary type="html">&lt;p&gt;Moberling: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;This is an image map. Click on a section of the picture to go to the page for that item.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;imagemap&amp;gt;&lt;br /&gt;
Image:GammasphereDAQupgrade.jpg|700px|center|thumb|Figure 1. DAQ System circled in red; one rack for each of the four &amp;quot;hemispheres&amp;quot; of Gammasphere&lt;br /&gt;
poly 135 204 209 219 258 192 250 266 213 293 137 268 [[VME Crates]]&lt;br /&gt;
poly 904 385 977 402 1030 373 1029 438 979 470 904 452 [[VME Crates]]&lt;br /&gt;
poly 1039 326 1097 339 1143 308 1148 378 1096 406 1058 376 1027 364 [[VME Crates]]&lt;br /&gt;
poly 134 167 135 197 209 217 257 184 256 162 208 185 [[Collector Box]]&lt;br /&gt;
poly 906 347 906 367 977 395 1022 369 1025 345 977 367 [[Collector Box]]&lt;br /&gt;
poly 1034 287 1103 301 1146 275 1146 299 1100 323 1042 311 [[Collector Box]]&lt;br /&gt;
poly 199 104 137 158 206 175 269 139 [[DAQ Power Supply]]&lt;br /&gt;
poly 312 42 253 96 317 113 375 58 [[DAQ Power Supply]]&lt;br /&gt;
poly 902 339 966 285 1034 321 976 356 [[DAQ Power Supply]]&lt;br /&gt;
poly 1021 274 1081 225 1140 242 1089 293 [[DAQ Power Supply]]&lt;br /&gt;
poly 445 151 432 123 398 113 351 138 305 218 291 285 290 337 300 382 336 429 370 423 421 413 356 454 276 423 251 353 252 293 267 219 304 138 344 95 379 79 428 88 472 135 [[Liquid Nitrogen]]&lt;br /&gt;
poly 838 557 809 506 804 446 808 384 828 320 865 258 911 222 960 212 1010 233 1021 293 991 288 969 251 950 241 935 239 901 264 876 300 860 331 846 378 839 428 839 470 847 516 850 532[[Liquid Nitrogen]]&lt;br /&gt;
poly 502 374 499 305 519 251 564 207 615 184 660 181 713 195 759 233 783 277 796 329 788 382 764 427 710 470 648 483 587 471 533 431 [[Gammasphere|Gammasphere frame (without detectors in it)]]&lt;br /&gt;
&amp;lt;/imagemap&amp;gt;&lt;br /&gt;
Gammasphere&#039;s DAQ system (data acquisition system) is now placed on relay racks by each side of its &amp;quot;hemispheres&amp;quot;. Each of the racks for the DAQ consists of a [[DAQ Power Supply|power supply]], a [[Collector Box|collector box]], and a [[VME Crates|VME crate]]. The data acquisition system observes, interprets, and modifies data taken from [[Gammasphere]] and appropriately presents it to the user.  &lt;br /&gt;
&lt;br /&gt;
The picture above provides an overall map to the naming conventions associated with the system.  Cardinal directions are shown in &#039;&#039;&#039;purple&#039;&#039;&#039; text, process variable (EPICS) names are shown in &#039;&#039;&#039;green&#039;&#039;&#039; text and network IDs are shown in &#039;&#039;&#039;red&#039;&#039;&#039; text.  There are multiple computers within the DAQ system:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+These devices are used both by data acquisition and by control &amp;amp; monitoring&lt;br /&gt;
|-&lt;br /&gt;
!  scope=col | Network name&lt;br /&gt;
!  scope=col | IP address &lt;br /&gt;
!  scope=col | Description&lt;br /&gt;
|-&lt;br /&gt;
| ioc01: || 192.168.203.141 || MVME5500 VME processor used for control and readout&lt;br /&gt;
|-&lt;br /&gt;
| ioc02: || 192.168.203.142 || MVME5500 VME processor used for control and readout&lt;br /&gt;
|-&lt;br /&gt;
| ioc03: || 192.168.203.143 || MVME5500 VME processor used for control and readout&lt;br /&gt;
|-&lt;br /&gt;
| ioc04: || 192.168.203.144 || MVME5500 VME processor used for control and readout&lt;br /&gt;
|-&lt;br /&gt;
| ioc05: || 192.168.203.145 || MVME5500 VME processor used for control and readout&lt;br /&gt;
|-&lt;br /&gt;
| ioc06: || 192.168.203.177 || MVME5500 VME processor used for control and readout&lt;br /&gt;
|-&lt;br /&gt;
| ioc07: || 192.168.203.178 || MVME5500 VME processor used for control and readout&lt;br /&gt;
|-&lt;br /&gt;
| ioc08: || 192.168.203.179 || MVME5500 VME processor used for control and readout&lt;br /&gt;
|-&lt;br /&gt;
| ioc09: || 192.168.203.180 || MVME5500 VME processor used for control and readout&lt;br /&gt;
|-&lt;br /&gt;
| ioc10: || 192.168.203.183 || MVME5500 VME processor used for control and readout&lt;br /&gt;
|-&lt;br /&gt;
| ioc11: || 192.168.203.181 || MVME5500 VME processor used for control and readout&lt;br /&gt;
|-&lt;br /&gt;
| ioc12: || 192.168.203.182 || MVME5500 VME processor used for control and readout&lt;br /&gt;
|-}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+These devices are used by control &amp;amp; monitoring only.&lt;br /&gt;
|-&lt;br /&gt;
!  scope=col | Network name&lt;br /&gt;
!  scope=col | IP address &lt;br /&gt;
!  scope=col | Description&lt;br /&gt;
|-&lt;br /&gt;
| gs-cne || 192.168.203.88 || Raspberry Pi inside the North East Collector box&lt;br /&gt;
|-&lt;br /&gt;
| gs-cnw || 192.168.203.149 || Raspberry Pi inside the North West Collector box&lt;br /&gt;
|-&lt;br /&gt;
| gs-cse || 192.168.203.42 || Raspberry Pi inside the South East Collector box&lt;br /&gt;
|-&lt;br /&gt;
| gs-csw || 192.168.203.26 || Raspberry Pi inside the South West Collector box&lt;br /&gt;
|-}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+These devices are used by directly logging into them to control power to the VME crates, network switches and terminal servers.&lt;br /&gt;
|-&lt;br /&gt;
!  scope=col | Network name&lt;br /&gt;
!  scope=col | IP address &lt;br /&gt;
!  scope=col | Description&lt;br /&gt;
|-&lt;br /&gt;
| gs-pdu-north || 192.168.203.224 || Power Distribution Unit for the North Hemisphere&lt;br /&gt;
|-&lt;br /&gt;
| gs-pdu-south || 192.168.203.225 || Power Distribution Unit for the North Hemisphere&lt;br /&gt;
|-}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+These devices are used by directly logging into them to connect to the console ports of IOC01 through IOC12.&lt;br /&gt;
|-&lt;br /&gt;
!  scope=col | Network name&lt;br /&gt;
!  scope=col | IP address &lt;br /&gt;
!  scope=col | Description&lt;br /&gt;
|-&lt;br /&gt;
| gs-ts-north || 192.168.203.91 || Terminal server providing console port access for ioc07 through ioc12&lt;br /&gt;
|-&lt;br /&gt;
| gs-ts-south || 192.168.203.186 || Terminal server providing console port access for ioc01 through ioc06&lt;br /&gt;
|-}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+These devices are associated with the liquid nitrogen subsystem.&lt;br /&gt;
|-&lt;br /&gt;
!  scope=col | Network name&lt;br /&gt;
!  scope=col | IP address &lt;br /&gt;
!  scope=col | Description&lt;br /&gt;
|-&lt;br /&gt;
| lnfill || 192.168.203.121 || Embedded VME processor that hosts the EPICS databases for valve status and valve control&lt;br /&gt;
|-&lt;br /&gt;
| ln2con || 192.168.203.148 || Linux computer that lnfill boots from&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When [[Gammasphere]] collects data, single-ended [[Detector Signals|signals]] are first collected from the slope box for the Ge Center, Ge Sides, and BGO segment. The signals are converted to differential signals by the [[The Slope Box Extension|SBX]], and are then sent to the collector box so the signals can properly be routed to the digitizers. The digitizers process and output the desired information to the user based upon their data specifications. The DAQ system is an FPGA-based design that provides communication hub interfacing the [[Preamplifier|preamp]], power board, dongle and slope box to EPICS through serial interface. Analog signal paths are completely software controlled.  &lt;br /&gt;
==DAQ System Function==&lt;br /&gt;
The Gammasphere DAQ system consists of VME crates, IOC Modules, Digitizers and Trigger Modules.  The original &amp;quot;analog&amp;quot; implementation of Gammasphere using the VXI modules used a charge-integrating ADC methodology and did not continuously digitize the data from the detectors.  The Digital Gammasphere system (2010s) introduced the digitizers as a replacement for the charge-integrating ADC functions of the VXI modules and replaces the &amp;quot;analog&amp;quot; system&#039;s trigger by a new trigger system, requiring a redesign of the DAQ.  The later &amp;quot;Gammasphere Upgrade&amp;quot; project (2019-2023) that resulted in the SBX, preamp and collector box hardware did not materially affect the DAQ but replaced all of the remaining control, monitoring and power distribution functions of the VXI system allowing removal of the VXI system and associated cable plant.&lt;br /&gt;
&lt;br /&gt;
Each digitizer in the system consists of 10 channels, but should be conceptualized as a pair of two &#039;&#039;sub-digitizers&#039;&#039; consisting of five channels each. There are two types of digitizers: master and slave. A pair of channels in a master digitizer receives signals from the Ge center and BGO sum from a single Gammasphere detector, while a channel-pair in the slave digitizer receives signals from the Ge side and BGO pattern. All channels in all digitizers run continuously. There are two types of digitizers (master and slave) as well as two types of triggers (master and router).&lt;br /&gt;
&lt;br /&gt;
When discriminator logic within the digitizer firmware marks edges of gamma-ray signals, energy sums, timing and other data are stored in a header identifying the event. If the event is selected for readout by the trigger system, the header and a programmable amount of waveform is transferred from the channel to the board-wide FIFO (first in, first out) data holder. Similarly the trigger modules have FIFO buffers that store information each time a trigger acceptance message is issued to the digitizers.  The IOC scans the FIFOs of all modules to see if there is data to read out through a series of programs named inLoop, outLoop and MiniSender. If data is available, the inLoop program reads it and stores the data read into memory buffers. Program outLoop verifies the integrity of the buffers and then hands control of the buffers to the MiniSender program.  A separate program running on a different computer called “gtReceiver” sends messages to each IOC&#039;s MiniSender program when it is capable of receiving data. The MiniSender program of each IOC, in response to requests from gtReceiver, then breaks apart buffers into UDP packets and sends them to gtReceiver. The gtReceiver program then stores the data received to files that may be organized by digitizer or by channel. &lt;br /&gt;
&amp;lt;imagemap&amp;gt;&lt;br /&gt;
Image:DAQSystem.png|center|thumb|700px|Figure 2. Diagram of the DAQ system process. &lt;br /&gt;
rect 454 225 478 241 [[Gammasphere Detectors]]&lt;br /&gt;
rect 550 225 575 242 [[Gammasphere Detectors]]&lt;br /&gt;
rect 642 225 665 241 [[Gammasphere Detectors]]&lt;br /&gt;
poly 451 211 449 224 481 224 480 213 [[The Slope Box]]&lt;br /&gt;
poly 546 212 545 224 575 224 576 216 [[The Slope Box]]&lt;br /&gt;
poly 637 209 637 222 667 223 667 214 [[The Slope Box]]&lt;br /&gt;
rect 435 211 448 222 [[The Slope Box Extension]]&lt;br /&gt;
rect 532 213 544 223 [[The Slope Box Extension]]&lt;br /&gt;
rect 624 211 635 221[[The Slope Box Extension]]&lt;br /&gt;
&amp;lt;/imagemap&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;To view how this system is controlled, go to [[DGS Commander EDM Screens]].&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Go back to [[Digital Gammasphere Upgrade Project]]&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Moberling</name></author>
	</entry>
	<entry>
		<id>https://wiki.anl.gov/wiki_gsdaq/index.php?title=Updating_Firmware_in_Digitizers_and_Triggers&amp;diff=4263</id>
		<title>Updating Firmware in Digitizers and Triggers</title>
		<link rel="alternate" type="text/html" href="https://wiki.anl.gov/wiki_gsdaq/index.php?title=Updating_Firmware_in_Digitizers_and_Triggers&amp;diff=4263"/>
		<updated>2024-02-22T23:56:10Z</updated>

		<summary type="html">&lt;p&gt;Moberling: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==New Procedure for DGS:==&lt;br /&gt;
[https://wiki.anl.gov/wiki_gsdaq/images/d/d7/Flash_Maintenance_Instructions_20240222.odt Flash_Maintenance_Instructions_20240222.odt]&lt;br /&gt;
&lt;br /&gt;
==Old Procedure for DFMA, DUB, DXA:==&lt;br /&gt;
# Log into dgs account on dgs1&lt;br /&gt;
# Get the *.bin from directory /Digitizer/MAIN_FPGA/Work11_DGS&lt;br /&gt;
## We have 4 flavors, MSTR_digitizer, SLAVE_digitizer, trigger_top and router_top&lt;br /&gt;
# copy to /home/dgs/tmadden/DGSDigFirmware or  /home/dgs/tmadden/DGSTrigFirmware &lt;br /&gt;
## You can rename file to reflect the date compiled e.g. MSTR_digitizer_2020722.bin&lt;br /&gt;
# cd /home/dgs/tmadden/swWork/workspace/epicsClient/src&lt;br /&gt;
# issue following: java -classpath jca-2.3.5.jar:caj-1.1.9.jar:fpgasender.jar plotControl &amp;lt;br&amp;gt;&lt;br /&gt;
# copy and paste below&lt;br /&gt;
&lt;br /&gt;
epics.epics_init(); &amp;lt;br&amp;gt;&lt;br /&gt;
var fn0=new String(&amp;quot;/home/dgs/tmadden/swWork/workspace/epicsClient/src/asynRecords.txt&amp;quot;); &amp;lt;br&amp;gt;&lt;br /&gt;
var fn1=new String(&amp;quot;/home/dgs/tmadden/retfile.bin&amp;quot;); &amp;lt;br&amp;gt;&lt;br /&gt;
epics.connectPVs(fn0); &amp;lt;br&amp;gt;&lt;br /&gt;
var digware=new String(&amp;quot;/home/dgs/tmadden/DGSDigFirmware/MSTR_digitizer_20200722.bin&amp;quot;); &amp;lt;br&amp;gt;&lt;br /&gt;
var slvware=new String(&amp;quot;/home/dgs/tmadden/DGSDigFirmware/SLAVE_digitizer_20200602.bin&amp;quot;);&amp;lt;br&amp;gt;&lt;br /&gt;
var mastware=new String(&amp;quot;/home/dgs/tmadden/DGSTrigFirmware/trigger_top_20160626.bin&amp;quot;);&amp;lt;br&amp;gt;&lt;br /&gt;
var routware=new String(&amp;quot;/home/dgs/tmadden/DGSTrigFirmware/router_top_20160601.bin&amp;quot;);&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-&#039;&#039;&#039;NOTE: Need to define add current name of master, slave digitizer bin files and trigger &amp;amp; router bin file names&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
-&#039;&#039;&#039;NOTE: If bin file name is wrong, program will still try to flash and result will be yellow fever.&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
-&#039;&#039;&#039;NOTE: The asynRecords.txt file defines the active crates. If you get a missing PV during setup, edit this file or better yet, make a new one and assign it instead.&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you get this far, you are now ready to flash the individual digitizers&lt;br /&gt;
&lt;br /&gt;
* To flash digitizer type epics.sendFpga(digware, fn1, 1, 0,1, 1, 1);&lt;br /&gt;
** This line sends the firmware file defined in digware to the board.&lt;br /&gt;
** The args of the function are defined as: epics.sendFgga(Firmwarename, ret file name, Crate num, Board num, erase, program, verify)&lt;br /&gt;
** IN the above function, we send digware to crate 1, board 0 and erase, program and verify the fpga.&lt;br /&gt;
* To Update the FPGA so it runs the new firmware. ON the dig boards there is a PV called GLBL:DIG:config_main_fpga that will reconfigure ALL digitizer FPGAs in DGS. This is convenient. &lt;br /&gt;
* To update a single FPGA, say in VME1, we use VME01:DIG1:config_main_fpga. Simple write a 1 to these PVs to reconfig the FPGAs. &lt;br /&gt;
* For the Trigger crate, a power cycle is needed but power cycle also works for digitizers too. &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Below are cut and paste commands to use with DFMA ==&lt;br /&gt;
=== Trigger and Routers ===&lt;br /&gt;
&#039;&#039;&#039;For master trigger&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(mastware, fn1, 0, 0,1, 1, 1);&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;For routers&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(routware, fn1, 0, 1,1, 1, 1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(routware, fn1, 0, 2,1, 1, 1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(routware, fn1, 0, 3,1, 1, 1);&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;add these for FMA&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
epics.sendFpga(routware, fn1, 0, 4,1, 1, 1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(routware, fn1, 0, 5,1, 1, 1);&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DGS Digitizers===&lt;br /&gt;
&#039;&#039;&#039;master digitzers&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 1, 0, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 1, 2, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 2, 0, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 2, 2, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 3, 0, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 3, 2, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 4, 0, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 4, 2, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 5, 0, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 5, 2, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 6, 0, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 7, 0, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 7, 2, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 8, 0, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 8, 2, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 9, 0, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 9, 2, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 10, 0, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 11, 0, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 11, 2, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 12, 0, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 12, 2, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;slave digitzers&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 1, 1, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 1, 3, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 2, 1, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 2, 3, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 3, 1, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 3, 3, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 4, 1, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 4, 3, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 5, 1, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 5, 3, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 6, 1, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 7, 1, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 7, 3, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 8, 1, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 8, 3, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 9, 1, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 9, 3, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 10, 1, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 11, 1, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 11, 3, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 12, 1, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 12, 3, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===For Non-Slave Configuration (FMA):===&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 1, 0, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 1, 1, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 1, 2, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 1, 3, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 2, 0, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 2, 1, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 2, 2, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 2, 3, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 3, 0, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 3, 1, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 3, 2, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 3, 3, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 4, 0, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 4, 1, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 4, 2, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 4, 3, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 5, 0, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 5, 1, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 5, 2, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 5, 3, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 6, 0, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 6, 1, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 6, 2, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 6, 3, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 7, 0, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 7, 1, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 7, 2, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 7, 3, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 8, 0, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 8, 1, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 8, 2, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 8, 3, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 9, 0, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 9, 1, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 9, 2, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 9, 3, 1,1,1);&amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Moberling</name></author>
	</entry>
	<entry>
		<id>https://wiki.anl.gov/wiki_gsdaq/index.php?title=Updating_Firmware_in_Digitizers_and_Triggers&amp;diff=4262</id>
		<title>Updating Firmware in Digitizers and Triggers</title>
		<link rel="alternate" type="text/html" href="https://wiki.anl.gov/wiki_gsdaq/index.php?title=Updating_Firmware_in_Digitizers_and_Triggers&amp;diff=4262"/>
		<updated>2024-02-22T23:54:04Z</updated>

		<summary type="html">&lt;p&gt;Moberling: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==New Procedure for DGS:==&lt;br /&gt;
[https://wiki.anl.gov/wiki_gsdaq/images/d/d7/Flash_Maintenance_Instructions_20240222.odt Flash_Maintenance_Instructions_20240222.odt]&lt;br /&gt;
&lt;br /&gt;
==Some more notes about flashing digitizers or triggers:==&lt;br /&gt;
# Log into dgs account on dgs1&lt;br /&gt;
# Get the *.bin from directory /Digitizer/MAIN_FPGA/Work11_DGS&lt;br /&gt;
## We have 4 flavors, MSTR_digitizer, SLAVE_digitizer, trigger_top and router_top&lt;br /&gt;
# copy to /home/dgs/tmadden/DGSDigFirmware or  /home/dgs/tmadden/DGSTrigFirmware &lt;br /&gt;
## You can rename file to reflect the date compiled e.g. MSTR_digitizer_2020722.bin&lt;br /&gt;
# cd /home/dgs/tmadden/swWork/workspace/epicsClient/src&lt;br /&gt;
# issue following: java -classpath jca-2.3.5.jar:caj-1.1.9.jar:fpgasender.jar plotControl &amp;lt;br&amp;gt;&lt;br /&gt;
# copy and paste below&lt;br /&gt;
&lt;br /&gt;
epics.epics_init(); &amp;lt;br&amp;gt;&lt;br /&gt;
var fn0=new String(&amp;quot;/home/dgs/tmadden/swWork/workspace/epicsClient/src/asynRecords.txt&amp;quot;); &amp;lt;br&amp;gt;&lt;br /&gt;
var fn1=new String(&amp;quot;/home/dgs/tmadden/retfile.bin&amp;quot;); &amp;lt;br&amp;gt;&lt;br /&gt;
epics.connectPVs(fn0); &amp;lt;br&amp;gt;&lt;br /&gt;
var digware=new String(&amp;quot;/home/dgs/tmadden/DGSDigFirmware/MSTR_digitizer_20200722.bin&amp;quot;); &amp;lt;br&amp;gt;&lt;br /&gt;
var slvware=new String(&amp;quot;/home/dgs/tmadden/DGSDigFirmware/SLAVE_digitizer_20200602.bin&amp;quot;);&amp;lt;br&amp;gt;&lt;br /&gt;
var mastware=new String(&amp;quot;/home/dgs/tmadden/DGSTrigFirmware/trigger_top_20160626.bin&amp;quot;);&amp;lt;br&amp;gt;&lt;br /&gt;
var routware=new String(&amp;quot;/home/dgs/tmadden/DGSTrigFirmware/router_top_20160601.bin&amp;quot;);&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-&#039;&#039;&#039;NOTE: Need to define add current name of master, slave digitizer bin files and trigger &amp;amp; router bin file names&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
-&#039;&#039;&#039;NOTE: If bin file name is wrong, program will still try to flash and result will be yellow fever.&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
-&#039;&#039;&#039;NOTE: The asynRecords.txt file defines the active crates. If you get a missing PV during setup, edit this file or better yet, make a new one and assign it instead.&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you get this far, you are now ready to flash the individual digitizers&lt;br /&gt;
&lt;br /&gt;
* To flash digitizer type epics.sendFpga(digware, fn1, 1, 0,1, 1, 1);&lt;br /&gt;
** This line sends the firmware file defined in digware to the board.&lt;br /&gt;
** The args of the function are defined as: epics.sendFgga(Firmwarename, ret file name, Crate num, Board num, erase, program, verify)&lt;br /&gt;
** IN the above function, we send digware to crate 1, board 0 and erase, program and verify the fpga.&lt;br /&gt;
* To Update the FPGA so it runs the new firmware. ON the dig boards there is a PV called GLBL:DIG:config_main_fpga that will reconfigure ALL digitizer FPGAs in DGS. This is convenient. &lt;br /&gt;
* To update a single FPGA, say in VME1, we use VME01:DIG1:config_main_fpga. Simple write a 1 to these PVs to reconfig the FPGAs. &lt;br /&gt;
* For the Trigger crate, a power cycle is needed but power cycle also works for digitizers too. &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Below are cut and paste commands to use with DGS or DFMA ==&lt;br /&gt;
=== Trigger and Routers ===&lt;br /&gt;
&#039;&#039;&#039;For master trigger&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(mastware, fn1, 0, 0,1, 1, 1);&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;For routers&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(routware, fn1, 0, 1,1, 1, 1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(routware, fn1, 0, 2,1, 1, 1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(routware, fn1, 0, 3,1, 1, 1);&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;add these for FMA&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
epics.sendFpga(routware, fn1, 0, 4,1, 1, 1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(routware, fn1, 0, 5,1, 1, 1);&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DGS Digitizers===&lt;br /&gt;
&#039;&#039;&#039;master digitzers&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 1, 0, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 1, 2, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 2, 0, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 2, 2, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 3, 0, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 3, 2, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 4, 0, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 4, 2, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 5, 0, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 5, 2, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 6, 0, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 7, 0, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 7, 2, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 8, 0, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 8, 2, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 9, 0, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 9, 2, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 10, 0, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 11, 0, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 11, 2, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 12, 0, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 12, 2, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;slave digitzers&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 1, 1, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 1, 3, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 2, 1, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 2, 3, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 3, 1, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 3, 3, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 4, 1, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 4, 3, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 5, 1, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 5, 3, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 6, 1, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 7, 1, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 7, 3, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 8, 1, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 8, 3, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 9, 1, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 9, 3, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 10, 1, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 11, 1, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 11, 3, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 12, 1, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(slvware, fn1, 12, 3, 1,1,0);&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===For Non-Slave Configuration (FMA):===&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 1, 0, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 1, 1, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 1, 2, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 1, 3, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 2, 0, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 2, 1, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 2, 2, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 2, 3, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 3, 0, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 3, 1, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 3, 2, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 3, 3, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 4, 0, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 4, 1, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 4, 2, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 4, 3, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 5, 0, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 5, 1, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 5, 2, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 5, 3, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 6, 0, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 6, 1, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 6, 2, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 6, 3, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 7, 0, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 7, 1, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 7, 2, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 7, 3, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 8, 0, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 8, 1, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 8, 2, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 8, 3, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 9, 0, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 9, 1, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 9, 2, 1,1,1);&amp;lt;br/&amp;gt;&lt;br /&gt;
epics.sendFpga(digware, fn1, 9, 3, 1,1,1);&amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Moberling</name></author>
	</entry>
	<entry>
		<id>https://wiki.anl.gov/wiki_gsdaq/index.php?title=File:Flash_Maintenance_Instructions_20240222.odt&amp;diff=4261</id>
		<title>File:Flash Maintenance Instructions 20240222.odt</title>
		<link rel="alternate" type="text/html" href="https://wiki.anl.gov/wiki_gsdaq/index.php?title=File:Flash_Maintenance_Instructions_20240222.odt&amp;diff=4261"/>
		<updated>2024-02-22T23:51:53Z</updated>

		<summary type="html">&lt;p&gt;Moberling: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Moberling</name></author>
	</entry>
	<entry>
		<id>https://wiki.anl.gov/wiki_gsdaq/index.php?title=Building_the_Entire_System&amp;diff=4260</id>
		<title>Building the Entire System</title>
		<link rel="alternate" type="text/html" href="https://wiki.anl.gov/wiki_gsdaq/index.php?title=Building_the_Entire_System&amp;diff=4260"/>
		<updated>2024-02-22T00:35:47Z</updated>

		<summary type="html">&lt;p&gt;Moberling: /* Compiling the Code used in the VME IOCs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A multi-stage make is required to build the .munch files for the IOCs.  Munch files are raw binary executable for the MVME5500&#039;s VxWorks operating system generated by a cross compiler.  The cross compiler resides on machine con6, a Sun Solaris machine.  This machine has no internal hard disk, it connects to the network file server.  This means files &#039;&#039;can&#039;&#039; be copied willy-nilly but that doesn&#039;t mean they &#039;&#039;should&#039;&#039; be.  Yes, physicists, I speak to you. &#039;&#039;&#039;DO NOT TOUCH /dk/fs2/dgs/global_sanbox EVER.  NO, NEVER!!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== How Gammasphere VME IOCs boot ===&lt;br /&gt;
Each of the VME processors in Gammasphere (VME01 - VME12) are embedded processors running the VxWorks operating system, version 5.5.  For some history see https://www.windriver.com/blog/vxworks-past-and-future, but don&#039;t allow the maximally stupid concept of &amp;quot;upgrading&amp;quot; to enter your mind.  Everything in the system is specifically dependent and designed for VxWorks version 5.5, and if you change that, you have contracted to spend the next 5 years of your life attempting to rebuild everything for ZERO functional gain.&lt;br /&gt;
&lt;br /&gt;
When the VxWorks processors are powered on they first boot from an onboard boot loader PROM.  If one has access to a console terminal window the data in the PROM may be viewed or edited.  The PROM specifies the IP address, user name and location of the boot script that the VME processor will load and execute after the initial PROM boot, and also the location of the VxWorks image.&lt;br /&gt;
&lt;br /&gt;
==== Boot Host for VME processors ====&lt;br /&gt;
Machine DGS1 is the boot host for VME processors. The VxWorks OS image and the boot scripts for all the VME processors are located on machine DGS1, starting at the folder /global/ioc.&lt;br /&gt;
&lt;br /&gt;
==== Shared File System ====&lt;br /&gt;
Machine DGS1 and other machines in the data room use a shared file server.  The /global folder on many machines is actually just a symbolic link.  /global, &#039;&#039;depending upon which machine you log into&#039;&#039;, may be one of &#039;&#039;&#039;&#039;&#039;THREE&#039;&#039;&#039;&#039;&#039; different locations on the file server:&lt;br /&gt;
&lt;br /&gt;
   * Machines running a 64-bit OS like Rocky Linux will map /global to /dk/fs2/dgs/global_64.&lt;br /&gt;
   * Machines running Scientific Linux 6 (e.g. DGS1) will map /global to /dk/fs2/dgs/global_32.&lt;br /&gt;
   * One specific machine (CON6), critical to the maintenance of the system, maps /global to /dk/fs2/dgs/global_sandbox.&lt;br /&gt;
&lt;br /&gt;
== File Structure of Boot Host DGS1 ==&lt;br /&gt;
&lt;br /&gt;
The root of the boot host is the folder &#039;&#039;&#039;/global/ioc&#039;&#039;&#039; that has subfolders&lt;br /&gt;
&lt;br /&gt;
*    bin&lt;br /&gt;
*    boot&lt;br /&gt;
*    db&lt;br /&gt;
*    dbd&lt;br /&gt;
*    dgsSoftIOC&lt;br /&gt;
*    epics&lt;br /&gt;
*    FW_Maint    (Will be deprecated in the &#039;&#039;&#039;imminent&#039;&#039;&#039; future)&lt;br /&gt;
*    gui&lt;br /&gt;
&lt;br /&gt;
The places that change when the system is rebuilt are the &#039;&#039;&#039;bin&#039;&#039;&#039;, &#039;&#039;&#039;boot&#039;&#039;&#039; and &#039;&#039;&#039;gui&#039;&#039;&#039; areas.&lt;br /&gt;
&lt;br /&gt;
=== Compiling the Code used in the VME IOCs ===&lt;br /&gt;
# ssh -XY dgs@dgs1&lt;br /&gt;
# cd /dk/fs/dgs/global_sandbox/devel/dgsDrivers/dgsDriverApp/src&lt;br /&gt;
# ./Export_SVN_ParameterFiles_from_dgs1.sh &lt;br /&gt;
# ssh -XY dgs@con6&lt;br /&gt;
# cd /global/devel/dgsDrivers&lt;br /&gt;
# make clean&lt;br /&gt;
# make&lt;br /&gt;
## There should be ZERO errors and ZERO warnings.  Anything else is a fatal, full, stop.&lt;br /&gt;
# cd ../dgsIoc&lt;br /&gt;
# make clean&lt;br /&gt;
# make&lt;br /&gt;
## There should be ZERO errors and ZERO warnings.  Anything else is a fatal, full, stop.&lt;br /&gt;
# Log out of con6&lt;br /&gt;
# Log into dgs1 as dgs&lt;br /&gt;
# cd /global/ioc/bin/vxWorks-ppc604_long&lt;br /&gt;
# ./CopyNewMunch.sh&lt;br /&gt;
&lt;br /&gt;
=== Ensuring EPICS databases are up to date ===&lt;br /&gt;
# ssh -XY dgs@dgs1&lt;br /&gt;
# cd /global/ioc/db&lt;br /&gt;
# ./Export_SVN_Databases.sh&lt;br /&gt;
# You will have to reboot all the VME IOCs to load the new databases.&lt;br /&gt;
# You will have to stop and restart the Soft IOC to load the new databases&lt;br /&gt;
&lt;br /&gt;
=The entire sequence from spreadsheet to boot=&lt;br /&gt;
&lt;br /&gt;
==Spreadsheet general path==&lt;br /&gt;
&lt;br /&gt;
* Checkout or update a local working copy of https://svn.inside.anl.gov/repos/psg/CodeGeneratingSpreadsheetsGeneric onto a Windows PC.&lt;br /&gt;
* Make any modifications to the spreadsheet needed to update desired functionality in firmware, EPICS, C structs, etc.&lt;br /&gt;
* There are different projects for every kind of FPGA/board.&lt;br /&gt;
* After the spreadsheet is run then the entire folder tree for the project must be committed to SVN.&lt;br /&gt;
&lt;br /&gt;
===Spreadsheet outputs===&lt;br /&gt;
&lt;br /&gt;
A spreadsheet for the digitizer or the master trigger or the router trigger has a folder &#039;&#039;&#039;SS_output&#039;&#039;&#039; that contains all of its output products.&lt;br /&gt;
The output products of interest for the Area IV data acquisition systems are&lt;br /&gt;
&lt;br /&gt;
====files for rebuilding the VxWorks driver====&lt;br /&gt;
* asyn&amp;lt;boardtype&amp;gt;Params.c&lt;br /&gt;
* asyn&amp;lt;boardtype&amp;gt;Params.h&lt;br /&gt;
&lt;br /&gt;
The Solaris machine &#039;con6&#039; has no &#039;svn&#039; program installed on it, so some other machine that has &#039;svn&#039; must be used to pull the files down.&lt;br /&gt;
This is done by&lt;br /&gt;
&lt;br /&gt;
* cd /dk/fs2/dgs/global_sandbox/devel/dgsDrivers/dgsDriverApp/src&lt;br /&gt;
* ./Export_Parameter_Files_from_dgs1.sh&lt;br /&gt;
&lt;br /&gt;
After you have exported the parameter files, then compile as described above.&lt;br /&gt;
&lt;br /&gt;
Once you have successfully compiled, then you must go to the &#039;&#039;&#039;boot machine&#039;&#039;&#039; (e.g. DGS1) and do the following:&lt;br /&gt;
&lt;br /&gt;
* cd /global/ioc/bin/vxWorks-ppc604_long&lt;br /&gt;
* ./CopyNewMunch.sh&lt;br /&gt;
&lt;br /&gt;
====files used by the VME IOCs to generate PVs====&lt;br /&gt;
* &amp;lt;boardtype&amp;gt;Registers.template&lt;br /&gt;
* &amp;lt;boardtype&amp;gt;User.template&lt;br /&gt;
* A series of &#039;VMExx.db&#039; files (however many were defined in the system definition file of the spreadsheet)&lt;br /&gt;
&lt;br /&gt;
These files must be exported from SVN to the folder on the boot host machine (e.g. dgs1) for use by the VME IOC processor&lt;br /&gt;
during the boot of that specific processor.  This is done by&lt;br /&gt;
&lt;br /&gt;
* cd /global/ioc/db&lt;br /&gt;
* ./Export_SVN_Databases.sh&lt;br /&gt;
&lt;br /&gt;
====files used by the Soft IOC (run on the host machine, e.g. DGS1)====&lt;br /&gt;
* JustGlobals.db&lt;br /&gt;
&lt;br /&gt;
This file must be exported from SVN to the folder on the boot host machine where the Soft IOC resides.  This is done by&lt;br /&gt;
&lt;br /&gt;
* cd /global/ioc/dgsSoftIOC/db&lt;br /&gt;
* ./Export_SVN_SoftIOC_Database.sh&lt;/div&gt;</summary>
		<author><name>Moberling</name></author>
	</entry>
	<entry>
		<id>https://wiki.anl.gov/wiki_gsdaq/index.php?title=Building_the_Entire_System&amp;diff=4259</id>
		<title>Building the Entire System</title>
		<link rel="alternate" type="text/html" href="https://wiki.anl.gov/wiki_gsdaq/index.php?title=Building_the_Entire_System&amp;diff=4259"/>
		<updated>2024-02-20T02:17:51Z</updated>

		<summary type="html">&lt;p&gt;Moberling: /* Compiling the Code used in the VME IOCs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A multi-stage make is required to build the .munch files for the IOCs.  Munch files are raw binary executable for the MVME5500&#039;s VxWorks operating system generated by a cross compiler.  The cross compiler resides on machine con6, a Sun Solaris machine.  This machine has no internal hard disk, it connects to the network file server.  This means files &#039;&#039;can&#039;&#039; be copied willy-nilly but that doesn&#039;t mean they &#039;&#039;should&#039;&#039; be.  Yes, physicists, I speak to you. &#039;&#039;&#039;DO NOT TOUCH /dk/fs2/dgs/global_sanbox EVER.  NO, NEVER!!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== How Gammasphere VME IOCs boot ===&lt;br /&gt;
Each of the VME processors in Gammasphere (VME01 - VME12) are embedded processors running the VxWorks operating system, version 5.5.  For some history see https://www.windriver.com/blog/vxworks-past-and-future, but don&#039;t allow the maximally stupid concept of &amp;quot;upgrading&amp;quot; to enter your mind.  Everything in the system is specifically dependent and designed for VxWorks version 5.5, and if you change that, you have contracted to spend the next 5 years of your life attempting to rebuild everything for ZERO functional gain.&lt;br /&gt;
&lt;br /&gt;
When the VxWorks processors are powered on they first boot from an onboard boot loader PROM.  If one has access to a console terminal window the data in the PROM may be viewed or edited.  The PROM specifies the IP address, user name and location of the boot script that the VME processor will load and execute after the initial PROM boot, and also the location of the VxWorks image.&lt;br /&gt;
&lt;br /&gt;
==== Boot Host for VME processors ====&lt;br /&gt;
Machine DGS1 is the boot host for VME processors. The VxWorks OS image and the boot scripts for all the VME processors are located on machine DGS1, starting at the folder /global/ioc.&lt;br /&gt;
&lt;br /&gt;
==== Shared File System ====&lt;br /&gt;
Machine DGS1 and other machines in the data room use a shared file server.  The /global folder on many machines is actually just a symbolic link.  /global, &#039;&#039;depending upon which machine you log into&#039;&#039;, may be one of &#039;&#039;&#039;&#039;&#039;THREE&#039;&#039;&#039;&#039;&#039; different locations on the file server:&lt;br /&gt;
&lt;br /&gt;
   * Machines running a 64-bit OS like Rocky Linux will map /global to /dk/fs2/dgs/global_64.&lt;br /&gt;
   * Machines running Scientific Linux 6 (e.g. DGS1) will map /global to /dk/fs2/dgs/global_32.&lt;br /&gt;
   * One specific machine (CON6), critical to the maintenance of the system, maps /global to /dk/fs2/dgs/global_sandbox.&lt;br /&gt;
&lt;br /&gt;
== File Structure of Boot Host DGS1 ==&lt;br /&gt;
&lt;br /&gt;
The root of the boot host is the folder &#039;&#039;&#039;/global/ioc&#039;&#039;&#039; that has subfolders&lt;br /&gt;
&lt;br /&gt;
*    bin&lt;br /&gt;
*    boot&lt;br /&gt;
*    db&lt;br /&gt;
*    dbd&lt;br /&gt;
*    dgsSoftIOC&lt;br /&gt;
*    epics&lt;br /&gt;
*    FW_Maint    (Will be deprecated in the &#039;&#039;&#039;imminent&#039;&#039;&#039; future)&lt;br /&gt;
*    gui&lt;br /&gt;
&lt;br /&gt;
The places that change when the system is rebuilt are the &#039;&#039;&#039;bin&#039;&#039;&#039;, &#039;&#039;&#039;boot&#039;&#039;&#039; and &#039;&#039;&#039;gui&#039;&#039;&#039; areas.&lt;br /&gt;
&lt;br /&gt;
=== Compiling the Code used in the VME IOCs ===&lt;br /&gt;
# ssh -XY dgs@con6&lt;br /&gt;
# cd /global/devel/dgsDrivers/dgsDriverApp/src&lt;br /&gt;
# ./Export_SVN_ParameterFiles.sh&lt;br /&gt;
## Or run ./Export_SVN_ParameterFiles_from_dgs1.sh from /dk/fs/dgs/global_sandbox/devel/dgsDrivers/dgsDriverApp/src&lt;br /&gt;
# cd /global/devel/dgsDrivers&lt;br /&gt;
# make clean&lt;br /&gt;
# make&lt;br /&gt;
## There should be ZERO errors and ZERO warnings.  Anything else is a fatal, full, stop.&lt;br /&gt;
# cd ../dgsIoc&lt;br /&gt;
# make clean&lt;br /&gt;
# make&lt;br /&gt;
## There should be ZERO errors and ZERO warnings.  Anything else is a fatal, full, stop.&lt;br /&gt;
# Log out of con6&lt;br /&gt;
# Log into dgs1 as dgs&lt;br /&gt;
# cd /global/ioc/bin/vxWorks-ppc604_long&lt;br /&gt;
# ./CopyNewMunch.sh&lt;br /&gt;
&lt;br /&gt;
=== Ensuring EPICS databases are up to date ===&lt;br /&gt;
# ssh -XY dgs@dgs1&lt;br /&gt;
# cd /global/ioc/db&lt;br /&gt;
# ./Export_SVN_Databases.sh&lt;br /&gt;
# You will have to reboot all the VME IOCs to load the new databases.&lt;br /&gt;
# You will have to stop and restart the Soft IOC to load the new databases&lt;br /&gt;
&lt;br /&gt;
=The entire sequence from spreadsheet to boot=&lt;br /&gt;
&lt;br /&gt;
==Spreadsheet general path==&lt;br /&gt;
&lt;br /&gt;
* Checkout or update a local working copy of https://svn.inside.anl.gov/repos/psg/CodeGeneratingSpreadsheetsGeneric onto a Windows PC.&lt;br /&gt;
* Make any modifications to the spreadsheet needed to update desired functionality in firmware, EPICS, C structs, etc.&lt;br /&gt;
* There are different projects for every kind of FPGA/board.&lt;br /&gt;
* After the spreadsheet is run then the entire folder tree for the project must be committed to SVN.&lt;br /&gt;
&lt;br /&gt;
===Spreadsheet outputs===&lt;br /&gt;
&lt;br /&gt;
A spreadsheet for the digitizer or the master trigger or the router trigger has a folder &#039;&#039;&#039;SS_output&#039;&#039;&#039; that contains all of its output products.&lt;br /&gt;
The output products of interest for the Area IV data acquisition systems are&lt;br /&gt;
&lt;br /&gt;
====files for rebuilding the VxWorks driver====&lt;br /&gt;
* asyn&amp;lt;boardtype&amp;gt;Params.c&lt;br /&gt;
* asyn&amp;lt;boardtype&amp;gt;Params.h&lt;br /&gt;
&lt;br /&gt;
The Solaris machine &#039;con6&#039; has no &#039;svn&#039; program installed on it, so some other machine that has &#039;svn&#039; must be used to pull the files down.&lt;br /&gt;
This is done by&lt;br /&gt;
&lt;br /&gt;
* cd /dk/fs2/dgs/global_sandbox/devel/dgsDrivers/dgsDriverApp/src&lt;br /&gt;
* ./Export_Parameter_Files_from_dgs1.sh&lt;br /&gt;
&lt;br /&gt;
After you have exported the parameter files, then compile as described above.&lt;br /&gt;
&lt;br /&gt;
Once you have successfully compiled, then you must go to the &#039;&#039;&#039;boot machine&#039;&#039;&#039; (e.g. DGS1) and do the following:&lt;br /&gt;
&lt;br /&gt;
* cd /global/ioc/bin/vxWorks-ppc604_long&lt;br /&gt;
* ./CopyNewMunch.sh&lt;br /&gt;
&lt;br /&gt;
====files used by the VME IOCs to generate PVs====&lt;br /&gt;
* &amp;lt;boardtype&amp;gt;Registers.template&lt;br /&gt;
* &amp;lt;boardtype&amp;gt;User.template&lt;br /&gt;
* A series of &#039;VMExx.db&#039; files (however many were defined in the system definition file of the spreadsheet)&lt;br /&gt;
&lt;br /&gt;
These files must be exported from SVN to the folder on the boot host machine (e.g. dgs1) for use by the VME IOC processor&lt;br /&gt;
during the boot of that specific processor.  This is done by&lt;br /&gt;
&lt;br /&gt;
* cd /global/ioc/db&lt;br /&gt;
* ./Export_SVN_Databases.sh&lt;br /&gt;
&lt;br /&gt;
====files used by the Soft IOC (run on the host machine, e.g. DGS1)====&lt;br /&gt;
* JustGlobals.db&lt;br /&gt;
&lt;br /&gt;
This file must be exported from SVN to the folder on the boot host machine where the Soft IOC resides.  This is done by&lt;br /&gt;
&lt;br /&gt;
* cd /global/ioc/dgsSoftIOC/db&lt;br /&gt;
* ./Export_SVN_SoftIOC_Database.sh&lt;/div&gt;</summary>
		<author><name>Moberling</name></author>
	</entry>
	<entry>
		<id>https://wiki.anl.gov/wiki_gsdaq/index.php?title=Main_Page&amp;diff=4220</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.anl.gov/wiki_gsdaq/index.php?title=Main_Page&amp;diff=4220"/>
		<updated>2023-03-29T20:21:17Z</updated>

		<summary type="html">&lt;p&gt;Moberling: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
These are the official Wikipedia pages for the now digital and previously analog Gammasphere Data Acquisition systems (GS DAQs). Procedures for running the DAQs and the data format will be documented here, as well as details of the hardware and processes of Gammasphere.&lt;br /&gt;
&lt;br /&gt;
The GS DAQ serves the [http://www.phy.anl.gov/gammasphere/ Gammasphere detector array], located at the [http://www.phy.anl.gov/atlas ATLAS accelerator], home of the [http://www.phy.anl.gov/atlas/caribu/ CAlifornium Rare Isotope Breeder Upgrade (CARIBU)].&lt;br /&gt;
&lt;br /&gt;
Contact mailto:torben@anl.gov for comments on, and write access to, these wiki pages. &lt;br /&gt;
==[[Understanding Gammasphere Interactively]]==&lt;br /&gt;
* [[Interactive Image Map]]&lt;br /&gt;
&lt;br /&gt;
* [[Gammasphere]]&lt;br /&gt;
&lt;br /&gt;
* [[DGS Commander EDM Screens]]&lt;br /&gt;
&lt;br /&gt;
* [[DAQ system]]&lt;br /&gt;
&lt;br /&gt;
==[[Digital Gammasphere Upgrade Project]]==&lt;br /&gt;
* [[Digital Gammasphere Upgrade Project]]&lt;br /&gt;
&lt;br /&gt;
* [[User Guides for Experiments]]&lt;br /&gt;
&lt;br /&gt;
* [[Advanced User Guides]]&lt;br /&gt;
&lt;br /&gt;
* [[Expert Documentation]]&lt;br /&gt;
&lt;br /&gt;
==[[Original Content prior to the &#039;&#039;Gammasphere Upgrade Project&#039;&#039;]]==&lt;br /&gt;
The intro section contains an interactive block diagram of Gammasphere system prior to the &#039;&#039;2021 Upgrade Project&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* [[Intro]]&lt;br /&gt;
&lt;br /&gt;
* [[Analog Gammasphere]]&lt;br /&gt;
&lt;br /&gt;
* [[List of experimental runs/analysis]]&lt;br /&gt;
&lt;br /&gt;
* [[Typical DGS run procedures]]&lt;br /&gt;
&lt;br /&gt;
* [[Analysis codes]]&lt;br /&gt;
&lt;br /&gt;
* [[Some problems and their solutions]]&lt;br /&gt;
&lt;br /&gt;
* [[Beginner Guide to Digitizer Firmware]]&lt;br /&gt;
&lt;br /&gt;
* [[Computers and networks]]&lt;br /&gt;
&lt;br /&gt;
* [[Receivers/GEBMerge/GEBsort]]&lt;br /&gt;
&lt;br /&gt;
* [[Raspberry Pi camera use]]&lt;br /&gt;
&lt;br /&gt;
* [[Handeling removable disks under ESATA]]&lt;br /&gt;
&lt;br /&gt;
* [[Data formats]]&lt;br /&gt;
&lt;br /&gt;
* [[Triggers and digitizers]]&lt;br /&gt;
&lt;br /&gt;
* [[Digitizer Tester]]&lt;br /&gt;
&lt;br /&gt;
* [[The DGS/DFMA EPICS Implementation]]&lt;br /&gt;
&lt;br /&gt;
* [[Firmware documentation]]&lt;br /&gt;
&lt;br /&gt;
* [[Tim Madden software documentation]]&lt;br /&gt;
&lt;br /&gt;
* [[JohnSandbox]]&lt;br /&gt;
&lt;br /&gt;
==Hardware==&lt;br /&gt;
Gammasphere is comprised of many different kinds of hardware for function and data acquisition. Below is an outline of the different hardware that is detailed in separate pages. It also contains details of the Liquid Nitrogen (LN) system. &lt;br /&gt;
* [[DAQ system]] &lt;br /&gt;
* [[Gammasphere Detectors]]  &lt;br /&gt;
* [[Detector Signals]]  &lt;br /&gt;
* [[Liquid Nitrogen]] &lt;br /&gt;
* [[LN system]]&lt;br /&gt;
* [[Preamplifier]] &lt;br /&gt;
* [[The Slope Box]] &lt;br /&gt;
* [[The Slope Box Extension]] &lt;br /&gt;
* [[SBX Power Board]]  &lt;br /&gt;
* [[The Pickoff Card]]  &lt;br /&gt;
* [[DAQ Power Supply]]  &lt;br /&gt;
* [[Collector Box]]  &lt;br /&gt;
* [[VME Crates]]  &lt;br /&gt;
* [[Digitizers]] &lt;br /&gt;
* [[Triggers]]&lt;br /&gt;
* [[Digitizer IOCs|IOC]]&lt;br /&gt;
&lt;br /&gt;
== Support Devices ==&lt;br /&gt;
* [[Network Accessible Power Control Units of DGS]]&lt;br /&gt;
* [https://wiki.anl.gov/wiki_gsdaq/images/4/40/MyRIAD_User_Manaual.pdf MyRIAD_User_Manaual]&lt;br /&gt;
* [https://wiki.anl.gov/wiki_gsdaq/images/1/16/MyRIAD_Abridged_User_Notes.pdf MyRIAD_Abridged_User_Notes]&lt;br /&gt;
* [[Attempts at Inventory]]&lt;br /&gt;
* [[CrateAndBoardMapping]]&lt;br /&gt;
&lt;br /&gt;
==On-Site Experts Only==&lt;br /&gt;
&lt;br /&gt;
* [[Building the Entire System]]&lt;br /&gt;
&lt;br /&gt;
* [[Linking Systems Together]]&lt;br /&gt;
&lt;br /&gt;
* [[Updating Firmware in Digitizers and Triggers]]&lt;br /&gt;
&lt;br /&gt;
* [[IOC Code Design]]&lt;br /&gt;
&lt;br /&gt;
==Contact List==&lt;br /&gt;
&lt;br /&gt;
Mike Carpenter, mailto:carpenter@anl.gov&lt;br /&gt;
&lt;br /&gt;
John Anderson, mailto:jta@anl.gov&lt;br /&gt;
&lt;br /&gt;
Michael Oberling, mailto:moberling@anl.gov&lt;br /&gt;
&lt;br /&gt;
Torben Lauritsen, mailto:torben@anl.gov&lt;br /&gt;
&lt;br /&gt;
Darek Seweryniak, mailto:seweryniak@anl.gov&lt;br /&gt;
&lt;br /&gt;
Amel Korichi, mailto:korichi@csnsm.in2p3.fr&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Template:Standard Footer}}&lt;/div&gt;</summary>
		<author><name>Moberling</name></author>
	</entry>
</feed>