LOG IN
[1039] I used one of your sample programs to develop my own program for my ATS9373. When I run my program, the acquired data has a huge offset. However, if I run AlazarDSO before running my program, this problem disappears and the acquired data is good. I don’t want to have to run AlazarDSO before my program. How can I fix this problem?

There was a bug in one of our drivers that caused the on-board flash memory not to be read correctly when the driver is loaded. As such, all input offsets and gains were not set correctly.

AlazarDSO used a backdoor method to read the flash memory correctly. That is why it was able to set the offsets properly. And once AlazarDSO had read these correct values, your program was also able to use those correct values and the acquired data was good.

This issue affected the ATS9373, ATS9360 & ATS9416, and was fixed in driver 5.10.19 and later versions, i.e. the driver reads the flash memory properly upon startup.

Please update your driver and DLL to the latest version to correct this issue. You can find the latest drivers on the product page of the affected product (ATS9373, ATS9360, ATS9416)

[1036] I just downloaded ATS-SDK v7.1.5 and I cannot compile the example programs that come with it. AlazarInputControlEx returns an error on my system. Previous versions of ATS-SDK work just fine.  Why?

AlazarInputControlEx is a superset to AlazarInputControl which allows to address boards with more than 8 channels. Version 7.1.5 uses this function by default on all boards, but it is only fully supported with library 5.10.14 and above. To solve the error, the recommended solution is to update your library (DLL) to 5.10.14 or above. If updating is not an option, you can replace calls to AlazarInputControlEx with AlazarInputControl. Please note that all errors relating to unsupported parameters (input range, impedance) will still appear irrespective of which function you use.

[1035] Where can I find the hardware or PCB version number for my ATS9373?

In the recent versions of the ATS9373, PCB V1.1 or later, it is possible to read PCB version number via software.

In AlazarDSO software, Press F4 to open up the Board Properties window. PCB revision number is displayed as shown below:



User software can also read this version number using AlazarGetBoardRevision API call. Note that older versions of PCB that do not support this feature will return PCB Revision number as 1.15 (0xF).

In all cases, the PCB version is silkscreened on the circuit board as shown here:

[1034] Where can I find the hardware or PCB version number for my ATS9360?

In the recent versions of the ATS9360, PCB V1.2 or later, it is possible to read PCB version number via software.

In AlazarDSO software, Press F4 to open up the Board Properties window. PCB revision number is displayed as shown below:



User software can also read this version number using AlazarGetBoardRevision API call. Note that older versions of PCB that do not support this feature will return PCB Revision number as 1.15 (0xF).

In all cases, the PCB version is silkscreened on the circuit board as shown here:

[1033] Where can I find the hardware or PCB version number for my ATS9870?

In the recent versions of the ATS9870, PCB V1.6 or later, it is possible to read PCB version number via software.

In AlazarDSO software, Press F4 to open up the Board Properties window. PCB revision number is displayed as shown below:



User software can also read this version number using AlazarGetBoardRevision API call. Note that older versions of PCB that do not support this feature will return PCB Revision number as 1.15 (0xF). In all cases, the PCB version is silkscreened on the circuit board as shown here:

[1032] Where can I find the hardware or PCB version number for my ATS9350?

In the recent versions of the ATS9350, PCB V1.7 or later, it is possible to read PCB version number via software.

In AlazarDSO software, Press F4 to open up the Board Properties window. PCB revision number is displayed as shown below:



User software can also read this version number using AlazarGetBoardRevision API call. Note that older versions of PCB that do not support this feature will return PCB Revision number as 1.15 (0xF).

In all cases, the PCB version is silkscreened on the circuit board as shown here:

[1031] Where can I find the hardware or PCB version number for my ATS9351?

In the recent versions of the ATS9351, PCB V1.9 or later, it is possible to read PCB version number via software.

In AlazarDSO software, Press F4 to open up the Board Properties window. PCB revision number is displayed as shown below:



User software can also read this version number using AlazarGetBoardRevision API call. Note that older versions of PCB that do not support this feature will return PCB Revision number as 1.15 (0xF).

In all cases, the PCB version is silkscreened on the circuit board as shown here:


 

[1030] Where can I find the hardware or PCB version number for my ATS9625?

In the recent versions of the ATS9625, PCB V1.2 or later, it is possible to read PCB version number via software.

In AlazarDSO software, Press F4 to open up the Board Properties window. PCB revision number is displayed as shown below:



User software can also read this version number using AlazarGetBoardRevision API call. Note that older versions of PCB that do not support this feature will return PCB Revision number as 1.15 (0xF).

In all cases, the PCB version is silkscreened on the circuit board as shown here:


 

[1029] Where can I find the hardware or PCB version number for my ATS9626?

In the recent versions of the ATS9626, PCB V1.1 or later, it is possible to read PCB version number via software.

In AlazarDSO software, Press F4 to open up the Board Properties window. PCB revision number is displayed as shown below:



User software can also read this version number using AlazarGetBoardRevision API call. Note that older versions of PCB that do not support this feature will return PCB Revision number as 1.15 (0xF).

In all cases, the PCB version is silkscreened on the circuit board as shown here:


 

[1027] Where can I find the hardware or PCB version number for my ATS9440?

Where can I find the hardware or PCB version number for my ATS9440? In the recent versions of the ATS9440, PCB V1.3 or later, it is possible to read PCB version number via software.

In AlazarDSO software, Press F4 to open up the Board Properties window. PCB revision number is displayed as shown below:




User software can also read this version number using AlazarGetBoardRevision API call. Note that older versions of PCB that do not support this feature will return PCB Revision number as 1.15 (0xF).

In all cases, the PCB version is silkscreened on the circuit board as shown here:

[1026] Where can I find the hardware or PCB version number for my ATS9416?

In the recent versions of the ATS9416, PCB V1.0 or later, it is possible to read PCB version number via software.

In AlazarDSO software, Press F4 to open up the Board Properties window. PCB revision number is displayed as shown below:



User software can also read this version number using AlazarGetBoardRevision API call. Note that older versions of PCB that do not support this feature will return PCB Revision number as 1.15 (0xF).

In all cases, the PCB version is silkscreened on the circuit board as shown here:

[1025] Where can I find the hardware or PCB version number for my ATS660?

PCB version for ATS660 waveform digitizer board is silkscreened on the circuit board as shown below:

[1024] Where can I find the hardware or PCB version number for my ATS460?

PCB version for ATS460 waveform digitizer board is silkscreened on the circuit board as shown below:

[1023] Where can I find the hardware or PCB version number for my ATS330?

PCB version for ATS330 waveform digitizer board is silkscreened on the circuit board as shown below:

[1022] Where can I find the hardware or PCB version number for my ATS310?

PCB version for ATS310 waveform digitizer board is silkscreened on the circuit board as shown below:

[1021] Where can I find the hardware or PCB version number for my ATS860?

PCB version for ATS860 waveform digitizer board is silkscreened on the circuit board as shown below:

[1020] Where can I find the hardware or PCB version number for my ATS850?

PCB version for ATS850 waveform digitizer board is silkscreened on the circuit board as shown below:

[1019] I have a few ATS460 boards that we have bought in the past. Can I use them as one Master/Slave system using a SyncBoard? Two of the boards have 128M memory and one has 8M memory.

The requirements for being able to Master/Slave boards are:

  1. All boards must have the same amount of memory
  2. All boards must have the same hardware version

You may be able to use the two ATS460-128M boards in Master/Slave configuration, as long as they are of the same hardware version. Hardware version number is silkscreened on the printed circuit board.

 

[1018] What does "screened" mean? We would like to know why it is introduced in this card, what it does, and what may happen without this option. Does this option (ATS9360-006 or ATS9373-006) includes the option -005 External Clock Upgrade?

The ADCs used on ATS9360 and ATS9373 have a “minimum clock frequency” specification of 300 MHz, i.e. if the external clock signal is lower than 300 MHz, the ADC may not be able to make proper measurement.  Typical problem is that user will see glitches in the output data.  Many customer applications need the ATS9360 or ATS9373 to work with external clock frequencies lower than 300 MHz.

Fortunately, we have seen that many ATS9360 work perfectly down to 70 MHz clock rate.Similarly, many ATS9373 boards work perfectly down to 100 MHz external clock rate. We have developed a process by which we can “screen” the board for external clock operation down to 70 MHz (ATS9360) or 100 MHz (ATS9373), i.e. select ATS9360 (ATS9373) that works down to 70 MHz (100 MHz) clock frequency.

If customer purchases the screened External Clock Upgrade, we will test the ATS9360 (or ATS9373) at external clock frequency down to 70 MHz (or 100 MHz) to make sure that it works before shipping it to the customer. If the ATS9360 (ATS9373) we are testing does not work down to 70 MHz (100 MHz), we will not ship it to the customer and use a different unit that does work down to 70 MHz (100 MHz). Yes, the screened option (ATS9360-006) includes ATS9360-005, i.e. you purchase one or the other.

[1017] How can I log API calls I make to the AlazarTech library in Linux?

To activate API logging under Linux, you need to modify the ~/.alazarrc file to change this line:

 

EnableApiTrace=false

Into this:

EnableApiTrace=true

The path where the log file is located is defined by this line, which can be edited as well:

LogFilePath=/tmp/ATSApi.log

Any change to the ~/.alazarrc file takes place when the library is loaded.

[1016] How to store acquired data into a file (CreateStreamFile).

Please refer to section “Saving binary files” and “AlazarCreateStreamFile” in the ATS-SDK Programmer’s Guide.

 

In a LabVIEW application, you may decide to store the data in file and analyze the data only after the acquisition is finished. The main reason for taking this decision is to minimize extra delays and avoid an overflow. In this case you can combine storing data into a file and “Skipping DMA buffers in LabVIEW”.

 

[1015] In LabVIEW applications, how to bypass copying of DMA buffers into LabVIEW buffers
  • AlazarWaitNextAsyncBuffer with BytesToCopy =0
  • AlazarGetParameter with parameters GET_ASYNC_BUFFERS_PENDING, GET_ASYNC_BUFFERS_PENDING_FULL, GET_ASYNC_BUFFERS_PENDING_EMPTY,
[1014] How to get all the properties (serial number, FPGA Version, driver version...) of an AlazarTech waveform digitizer board
  • For Windows operating system:
    • Launch AlazarDSO application and press <F4>
    • A Properties dialog box will appear that shows detailed information about the board in question
       
  • For Linux operating system:
    • Launch AlazarFrontPanel application and press <F4>
    • A Properties dialog box will appear that shows detailed information about the board in question
       
[1013] I would like to acquire a very long (40GByte) dataset without any gaps and then analyze the data. I noticed that there is an upper limit on the DMA buffer size. Is there any way I can still acquire this data?

The upper limit on the DMA buffer size is currently set at 32 Megabytes. While this limit can be increased somewhat by making a custom driver, it is not the method preferred by the operating system. Windows and Linux prefer to keep physical buffer sizes small, so they can work on a “scatter-gather” basis and reuse as much of the memory as possible.

There are two ways in which you can capture a 40 GByte dataset.

If the goal is to consume the data (analyze or store to disk) in real time, the best approach is to use multiple buffers of smaller size, say 8 Megabytes.  You can post a queue of these buffers and consume the data as it becomes available and re-post the used buffers back to the queue.  This way, you can keep acquiring and consuming data for ever. 

On the other hand, if the goal is to acquire a large dataset for post-processing, you can DMA the data into motherboard memory and analyze or store it after the fact. Of course, you must have enough free memory in your motherboard to store this data.

In the following paragraphs, we will discuss the second approach.

The first step is to make sure you have enough memory in your motherboard to store data.  A good rule of thumb is that today’s operating systems need around 16 Gigabytes of memory for themselves.  So, if you need to store 40 GBytes of data, you must have 56 GB of RAM, which effectively means 64 GB.

The next step is to decide whether you want to acquire this data using AlazarDSO (Windows) or AlazarFrontPanel (Linux), or do you want to do it under programmatic control. 

In AlazarDSO or AlazarFrontPanel, you can use the Stream To Memory command to acquire data to motherboard memory.  After the transfer is complete AlazarDSO or AlazarFrontPanel will save the acquired data to a file.

If you want to acquire this data programmatically you have to:

  • Allocate a buffer of required size within your application.  Remember, this is a logical buffer scattered all over the address space of the motherboard’s memory.
  • Lock a small portion of the buffer (we call this a segment) so AlazarTech’s board can DMA into it
  • Do the DMA
  • Lock the next segment of the buffer and unlock the used segment
  • Continue this until the entire buffer is complete

In this scheme, only a small portion of the buffer is locked to physical memory at any given time, which is what the operating system prefers.  An added benefit is that your analysis software can deal with the entire buffer using one pointer.

Note that this scheme will work with continuous streaming, triggered streaming and NPT modes of AutoDMA.

There are a few constraints that must be kept in mind:

  • All segments must be page-aligned
  • All segment sizes must be a multiple of the page size.  Page size is 4096 bytes.

AlazarTech publishes example code in C that demonstrates how to acquire using segments.  This example program is called Stream to Memory and is available here.

[1012] How to upgrade the FPGA Firmware on a PCIe digitizer board on a computer running Windows OS
  • Go to AlazarTech's website and choose your board from the PRODUCTS drop-down menu
  • Down on the product`s page, from the Software section:
          • download the Firmware Update Utility
          • download the Firmware file – Eg.: ATS9870 Firmware
  • Unarchive both files and run the executable file AlazarFwUpdater.exe. Make sure that the Windows Driver is installed on this computer. Also make sure that all other applications using this driver or ATSAPI.dll are closed (Eg.: AlazarDSO).

  • Click NEXT

  • For Select a firmware file choose the correspondent firmware (.pof file) you have previously downloaded

       

  • Click NEXT
  • Allow your computer to be shut down (not just a restart, as FPGA is loaded on power-on)

  • Turn on your computer
  • Run AlazarDSO software
  • Press F4 key. It will display the Board Properties page. One of the lines is FPGA version. Make sure the version number displayed corresponds to the version of the FPGA you downloaded (.exe file name).

[1011] How can I use ApiFlags utility to log API calls I make to the AlazarTech DLL for Windows?

AlazarTech prides itself in the quality of technical support it provides to its customers.  Whenever a customer reports a problem, our technical staff try to reproduce the probem in our lab.

There are many occasions, however, in which it is impossible for our engineers to reproduce the problem. For example, the customer's software may include calls to other equipment (motor controllers, lasers etc.) and in the absence of this equipment, we cannot run customer's software.  Or, the customer may not want to disclose the source code of their software for intellectual property protection purposes.

AlazarTech has developed a unique software utility for Windows called APIFlags, using which the customer can report problems to our software engineers without disclosing any source code. 

Linux programmers can do API logging as well, but they must modify their .alazarrc file to enable or disable logging.  For more details, see How can I log API calls I make to the AlazarTech library in Linux?

ApiFlags utility sets a flag in the AlazarTech Windows DLL that forces each API call made to the DLL to be logged to a text file.  In vast majority of cases, the information contained in this log files gives our software engineers sufficient information to identify the problem in the customer's software and suggest a solution.

Latest versions of AlazarDSO software also provide this API logging capability.  Go to Tools menu, select Debugging and click on Start logging calls made to ATSAPI.dll.

Cautionary note:  After you are done debugging, you MUST disable API logging function using APIFlags or AlazarDSO. If you do not, your software's performance may be severely degraded, as writing to file is a slow function.

Here is how you would use APIFlags:

  • Download the ApiFlags setup program from our website.
    • ApiFlags is packaged as a zip file that contains the executable and a short menual on how to use it
  • Extract ApiFlagsSetup.exe from the zip file and run it to install ApiFlags.exe on your computer
  • Exit all applications that use AlazarTech DLL
  • Run ApiFlags.exe
  • Check the ApiFlags "Log API calls" button, and press the "Apply" button to enable logging
  • Run your application until you see the problem, then exit your application
  • Click on the ApiFlags "View" button to open the log file in notepad, and save this file to your "Documents" folder. You can email us this log file later
  • Click on the ApiFlags "Delete" button to delete the log file from your temporary files directory
  • Uncheck the ApiFlags "Log API calls" button and press the "Apply" button to disable logging
    • If you do not dsable logging, your program's performance may be severely degraded
  • Exit ApiFlags.exe
[1010] Skipping DMA buffers in LabVIEW

In LabVIEW, special care must be given to managing DMA buffers.

First, LabVIEW will only use buffers allocated by LabVIEW itself.

Second, the buffers allocated by LabVIEW do not satisfy the alignment requirement of Alazar driver’s library.

The combination of the above two restrictions, imposes the restriction of the DMA buffers be allocated independent of LabVIEW. These memory aligned buffers are used by the DMA engine to transfer the data from the digitizer board memory into PC memory, and once the transfer is finished, one needs to copy the content into a LabVIEW buffer. Only then the data can be processed by LabVIEW VI’s.

In some situations you may find it more convenient to allow the driver library to allocate and manage a list of buffers available to be filled by the board. In these applications you should call AlazarBeforeAsyncRead() with the AMDA_ALLOC_BUFFERS option selected in the “Flags” parameter.

This option will cause the library to allocate and manage a list of buffers available to be filled by the board. The application must call AlazarWaitNextAsyncBufferComplete to wait for a buffer to be filled. When the board receives sufficient trigger events to fill a buffer, the API will copy the data from the internal buffer to the user-supplied/LabVIEW buffer.

The process of copying DMA buffer into a new location introduces some delay and slows down the overall chain of data acquisition. If the speed at which buffers are transferred from DMA buffers into LabVIEW buffers becomes slower that the speed at which the board is acquiring data, a buffer overflow will happen.

In some situations, it may be acceptable for the application to prevent buffer overflow at the expense of losing some of the DMA buffers. In other words, if we are able to monitor the number of DMA buffers pending for transfer to LabVIEW buffers, then we might decide to momentarily skip DMA buffers (and loose the content) to reduce the pending buffer queue.

AlazarGetParameter() is the function that allows to query the DMA queue status, using one of the following parameters:

 

GET_ASYNC_BUFFERS_PENDING 0x10000050

Get the number of DMA buffers that have been queued by an application to this board.

GET_ASYNC_BUFFERS_PENDING_FULL 0x10000051

Get the number of DMA buffers for this board that are full and waiting to be processed by the application.

GET_ASYNC_BUFFERS_PENDING_EMPTY 0x10000052

Get the number of DMA buffers for this board that are empty and waiting to be filled by the board.

 

If the application decides to skip a buffer, then in the call to AlazarWaitNextAsyncBufferComplete() it will pass BytesToCopy = 0. This way the content of the DMA buffer is not copied and the DMA buffer is simply returned to the queue of buffers to be used for DMA transfer.

[1009] I installed an ATS9440 in a new PC running Windows 7 Professional. After installing the driver, the board is not detected in Device Manager. I tried 3 different PCIe slots available on the motherboard, no success. The graphics card works in all 3 slots. Motherboard model: EVGA 131-HE-E095-KR
CPU: Intel i7

The motherboard EVGA 131-HE-E095-KR supports PCIe Gen3.  After a great deal of testing, it was discovered that this particular motherboard's BIOS had a bug in that it did not negotiate a PCIe link properly if the "PCIe Slot Generation" is set to "Auto" and the Add-on board is not a Gen3 board.  A BIOS update (when available) would fix this bug. In the meantime, we helped the customer find a workaround.

ATS9440 is a PCIe Gen1 board.  According to PCIe specification, a motherboard slot that supports Gen3 must also be able to negotiate a Gen2 or Gen1 link with Gen2 or Gen1 add-on boards. EVGA 131-HE-E095-KR does not seem to be meeting this specification with the current BIOS.

Once the customer changed the "PCI Slot Generation" field to GEN1, the motherboard was able to successfully detect ATS9440. The problem was that this BIOS did not do a good job of negotiating the link speed in "Auto" mode. 

Workaround was to set the "PCIe Slot Generation" field to "GEN1".

In case a similar problem happens with your computer, follow the following steps:

  1. Always make sure your BIOS is the latest version. Check manufacturer's web site.
  2. In the BIOS, look for a field that allows you to set the "PCIe Generation" for the slots and set it to match the PCIe Generation of the AlazarTech board you are trying to install.
  3. Contact the manufacturer of the motherboard to report the bug in their BIOS.
[1008] I installed an ATS860 board in a PCI slot of a Windows XP machine. Then I installed the driver which I downloaded from Alazar website. I went to the Device Manager to check if the board is properly detected. But I can only see a PCI device with a yellow question mark in front of it.

Possible cause 1: BAR2 range is too small.

Possible solution 1: To make sure your board is functional, try installing the board on another computer. Once you have a computer where the board is recognized, run AlazarPatchEEPROM utility that you can download from Alazar website. Move the board back to the original computer and check if it works.

[1007] I have used waveform digitizers from other manufacturers.  A big problem with their board was that if we run our software and there is no board in the system, the computer would crash with a "blue-screen".  We'd like to avoid this "Crashing-Driver Syndrome".  Can we trust that your drivers will not do the same?

You can rest assured that AlazarTech drivers will not "blue-screen" crash if the board is not present.  We return an error code that the calling program can use to find out if the board was present in the system or not.  This avoids the "Crashing-Driver Syndrome" that some other manufacturers have - even though their products are usually twice as expensive as AlazarTech.

[1006] I am programming your card in C/C++.  I want to disable trigger timeout.  How do I do it?  There does not seem to be a flag I can set or reset to disable it.

You can disable trigger timeout by setting a timeout value of zero.  You can do this by calling AlazarSetTriggerTimeout (0)

[1005] We injected a 10 KHz, 1Vp-p sine wave into the ATS850 using AlazarDSO software. We selected 50Ω impedance and AC coupling. Software displayed a sine wave of only 300 mV amplitude. This does not seem right.Is my hardware defective?

Your hardware is functioning exactly as it should. Note that the lower cut-off frequency in AC coupled mode when you have 50Ω impedance is 100 KHz. This means that any signal lower than approximately 150 KHz will be attenuated (even 100 KHz signals will be attenuated by about 30%) Since your signal is only 10 KHz, it will be attenuated much more.

To measure your signal using AC coupling, set input impedance to be 1 MΩ The lower cut-off frequency in AC coupled mode when you have 1 MΩ impedance is 10 Hz.

[1004] I installed my ATS850 in my PC.  I see that there are four LEDs that are always lit, whereas the others go on and off as I operate the device.  Is this normal?

Yes, this is perfectly normal.  The four LEDs that are always on signify that four of the most important parts of the circuit are working properly.  The three other LEDs show the status of BUSY, TRIGGERED, and PCI ACCESS flags.  They tend to go on and off depending on how you exercise the card through software.

[1003] How long is your calibration valid for?

Just like any other instrument, we recommend that you have the calibration verified at least once a year.  Recalibration due date is always shown on the calibration label affixed to the digitizer card.

[1002] How can I program your ATS digitizers?

If you want to write software using C/C++/C#, MATLAB, Python or LabVIEW, you will have to purchase the ATS-SDK (software development kit) in order to be able to program our digitizers.  ATS-SDK comes with a reference manual, header files as well as sample programs that show you how to use our API.  
 

[1001] What operating systems do you support?

AlazarTech products support Windows and Linux operating systems.

For Windows, AlazarTech Windows driver installation programs will detect the operating system and install the appropriate driver files. The following operating systems have been sucessfully tested:

  • Windows 10, 32/64 bit
  • Windows 8.x, 32/64 bit
  • Windows 7, 32/64 bit
  • Windows XP, 32/64 bit
  • Windows Server 2012
  • Windows Server 2008

Many Linux distributions have been successfully tested (CentOS, Ubuntu, Fedora, Debian...), but officially, AlazarTech supports CentOS, which is binary compatible with RHEL.

A more complete list of available Linux drivers can be seen here:
ftp://release@ftp.alazartech.com/outgoing/linux

[1000] What bus do your current products support?

AlazarTech products currently support PCI and PCI Express bus.