Spectrum Brands MI.61XX Buffer processing, Fifo Mode Programming, Digital I/O board 7005 only

Page 51

FIFO Mode

 

 

 

 

Programming

 

 

 

 

 

 

Analog acquisition or generation boards

 

 

 

 

 

 

Buffer length to be programmed in Bytes

 

 

 

 

 

 

 

 

 

8 bit resolution

12 bit resolution

14 bit resolution

16 bit resolution

1

Channel

1 x [Samples in Buffer]

1 x 2 x [Samples in Buffer]

1 x 2 x [Samples in Buffer]

1 x 2 x [Samples in Buffer]

 

2

Channels

2 x [Samples in Buffer]

2 x 2 x [Samples in Buffer]

2 x 2 x [Samples in Buffer]

2 x 2 x [Samples in Buffer]

4

Channels

4 x [Samples in Buffer]

4 x 2 x [Samples in Buffer]

4 x 2 x [Samples in Buffer]

4 x 2 x [Samples in Buffer]

8

Channels

8 x [Samples in Buffer]

8 x 2 x [Samples in Buffer]

8 x 2 x [Samples in Buffer]

8 x 2 x [Samples in Buffer]

Digital I/O (701x or 702x ) or pattern generator boards (72xx)

 

 

Buffer length to be programmed in Bytes

 

 

 

8 bit mode

16 bit mode

 

32 bit mode

64 bit mode

 

 

[Samples in Buffer]

2 x [Samples in Buffer]

 

4 x [Samples in Buffer]

8 x [Samples in Buffer]

 

Digital I/O board 7005 only

 

 

 

 

 

 

 

 

Buffer length to be programmed in Bytes

 

 

 

 

 

 

1 bit mode

2 bit mode

 

4 bit mode

8 bit mode

16 bit mode

1 Channel

1/8 x [Samples in Buffer]

1/4 x [Samples in Buffer]

 

1/2 x [Samples in Buffer]

[Samples in Buffer]

2 x [Samples in Buffer]

We at Spectrum achieved best results when programming the buffer length to a number of samples that can hold approximately 100 ms of data. However if going to the limit of the PCI bus with the FIFO mode or when having buffer overruns it can be useful to have larger FIFO buffers to buffer more data in it.

When the goal is a fast update in FIFO mode smaller buffers and a larger number of buffers can be a better setup.

Register

Value

Direction

Description

SPC_FIFO_BUFADR0

60100

r/w

32 bit address of FIFO buffer 0. Must be allocated by application program

SPC_FIFO_BUFADR1

60101

r/w

32 bit address of FIFO buffer 1. Must be allocated by application program

 

 

 

 

...

 

 

...

 

 

 

 

SPC_FIFO_BUFADR255

60355

r/w

32 bit address of FIFO buffer 255. Must be allocated by application program

The driver handles the programmed number of buffers. To speed up FIFO transfer the driver uses buffers that are allocated and maintained by the application program. Before starting the FIFO mode the addresses of the allocated buffers must be set to the driver.

Example of FIFO buffer setup. No memory allocation error checking in the example to improve readability:

// -----

setup FIFO buffers -----

64);

// 64 FIFO buffers used in the example

SpcSetParam

(hDrv, SPC_FIFO_BUFFERS,

SpcSetParam

(hDrv, SPC_FIFO_BUFLEN,

8192);

// Each FIFO buffer is 8 kBytes long

// -----

allocate memory for data -----

 

 

for (i =

0;

i < 64; i++)

 

// memory allocation for 12, 14, 16 bit analog boards

pnData[i] = (ptr16) malloc (8192);

 

// pbyData[i] = (ptr8) malloc (8192);

 

// and digital boards

 

// memory allocation for 8 bit analog boards

// -----

tell the used buffer adresses to the driver -----

for (i =

0;

i < 64; i++)

 

 

nErr = SpcSetParam (hDrv, SPC_FIFO_BUFADR0 + i,

(int32) pnData[i]); // for 12, 14, 16 bit analog boards

// nErr = SpcSetParam (hDrv, SPC_FIFO_BUFADR0 + i,

// and digital boards only

(int32) pbyData[i]); // for 8 bit analog boards only

Buffer processing

The driver counts all the software buffers that have been transferred. This number can be read out from the driver to know the exact amount of data that has been transferred.

Register

Value

Direction

Description

SPC_FIFO_BUFCOUNT

60020

r

Number of transferred buffers until now

If one knows before starting FIFO mode how long this should run it is possible to program the numer of buffers that the driver should process. After transferring this number of buffer the driver will automatically stop. If FIFO mode should run endless a zero must be programmed to this register. Then the FIFO mode must be stoped by the user.

Register

Value

Direction

Description

SPC_FIFO_BUFMAXCNT

60030

r/w

Number of buffers to be transferred until automatic stop. Zero runs endless

(c) Spectrum GmbH

51

Image 51
Contents English version October 5 MI.61xxPage Software Hardware InstallationSoftware Driver Installation IntroductionStandard generation modes Fifo ModeProgramming the Board Analog OutputsAppendix Option Gated ReplayOption Extra I/O Synchronization OptionPreface IntroductionPreface General InformationDifferent models of the MI.61xx series MI.6110 MI.6111Introduction Additional options Extra I/O Option -XMFExtra I/O Option -XIO Introduction Additional options StarhubSpectrum type plate Hardware information Block diagram Technical DataFilter Dynamic ParametersOrder information Hardware informationIntroductionHardware Installation Installing the board in the systemSystem Requirements Installing a board with extra I/O Option -XMF Installing a board with digital inputs/outputsOnly use the included flat ribbon cables Installing multiple boards synchronized by starhubMounting the wired boards Hooking up the boardsInstalling multiple synchronized boards Software Driver Installation Software Driver InstallationInterrupt Sharing Installation WindowsVersion control Driver Update Windows Software Driver Installation Windows Windows XP Windows XP Adding boards to the Windows NT driver Windows NTOverview LinuxAutomatic load of the driver Installing the deviceNow it is possible to access the board using this device Driver infoSoftware SoftwareSoftware Overview First Test with SBenchLinux Gnu C ++ Driver InterfaceHeader files Microsoft Visual C++Include Drivers Other Windows C/C++ compilersNational Instruments LabWindows/CVI Driver functionsFunction SpcGetData Function SpcSetParamFunction SpcSetParam Function SpcSetData WindowsSpectrum GmbH Examples Delphi Pascal Programming InterfaceType definition Include DriverDelphi Pascal Programming Interface Visual Basic Programming Interface Visual Basic ExamplesVBA for Excel Examples Visual Basic Programming Interface Register tables Error handlingProgramming the Board OverviewPCI Register Example for error checkingInitialization Starting the automatic initialization routineSerial number Installed memoryHardware version Date of productionDriver version Installed features and optionsUsed interrupt line Used type of driverSpcpciserialno Powerdown and resetExample program for the board initialization SpcpcimemsizeDisabling the outputs Analog OutputsChannel Selection Important note on channels selectionRegister Value Direction Description Amplitude range Setting up the outputsOutput Amplifiers Output offsetFilter Specifications Maximum Output RangeOutput Filters Standard generation modes General descriptionProgramming Minimum and stepsize of memsize and posttrigger in samples Standard generation modes ProgrammingMaximum memsize Maximum posttrigger in MSamplesProgrammingStandard generation modes Starting without interrupt classic modeStarting with interrupt driven mode Command registerValue ’len’ as a 32 bit integer value Data organizationWriting data with SpcSetData Value ’start’ as a 32 bit integer valueStandard mode Bit Standard ModeSample format Speed Limitations Fifo ModeGeneral Information Background Fifo Write60040 Read out the number of available Fifo buffers Programming Fifo ModeSoftware Buffers Theoretical maximum sample rate PCI Bus ThroughputDigital I/O 701x or 702x or pattern generator boards Fifo Mode ProgrammingBuffer processing Analog acquisition or generation boardsSpcfifowait Example Fifo generation mode== Maxbuf SpcfifostartProgramming Clock generation Internally generated sample rateStandard internal sample rate Using plain quartz with no PLL External reference clockExternal clocking Direct external clock Minimum external sample rateMaximum external samplerate in MS/s External clock with divider ExampleCHANNEL0 CHANNEL1 CHANNEL2 CHANNEL3 External TTL trigger Example for setting up the software triggerTrigger modes and appendant registers Software triggerPositive TTL trigger Example on how to set up the board for positive TTL triggerEdge triggers Trigger modes and appendant registersPositive and negative TTL trigger Trigger modes Standard ModeOption Multiple Replay Output modesTrigger modes Option Multiple Replay Resulting start delaysValue Direction Description General information and trigger delayOption Gated Replay Option Gated ReplaySpctriggermode Tmttlpos Example programAllowed trigger modes External TTL edge triggerTransfer Data Option Extra I/ODigital I/Os Channel directionAnalog Outputs Programming exampleAnalog Outputs Option Extra I/O Synchronization with option starhub Synchronization OptionDifferent synchronization options Synchronization with option cascadingWrite Data to on-board memory output boards only Setup order for the different synchronization optionsSet up the board parameters Example of board setup for three boardsDefine the remaining boards as trigger slaves Define the boards for trigger masterExample of board #2 set as trigger master 3a Define synchronization or triggerArm the boards for synchronization Define the board for clock masterExample board number 0 is clock master Define the remaining boards as clock slavesExample for data reading Start all of the trigger master boardsWait for the end of the measurement Read data from the on-board memory acquisition boards onlySpcsyncslavefifo Allocate the Fifo software buffers2a Write first data for output boards SpcsyncmasterfifoAs trigger slaves 20xx 30xx 31xx 40xx 45xx 60xx 61xx 70xx 72xx Additions for synchronizing different boardsGeneral information Calculating the clock dividersBoard type 3025 3131 Setting up the clock dividerBoard type 3122 3120 40 MS/sAdditions for equal boards with different sample rates Resulting delays using different boards or speedsDelay in standard non Fifo modes Delay in Fifo modeAppendix Error CodesError name Value hex Value dec Error description AppendixPin assignment of the multipin connector Extra I/O with external connectorOption -XMFPin assignment of the multipin cable D15 D13 D11 Pin assignment of the internal multipin connectorExtra I/O with internal connector Option -XIO D14 D12 D10