PICDRIVER
Peripheral Interconnect Component driver routines.
PICDRIVER - Peripheral Interconnect Component driver routines
<function> Function to perform (RESET,ACQUIRE,PLAY, ...)
<device name> PIC alias in HW file (i.e. PIC, PIC1, PIC2, MOD1A, TUN2B ...)
<addr/file/key> Address for READ,WRITE, File for ACQUIRE,PLAY,LOAD*, KeyName for SET,GET
<value/result> Value for WRITE,SET,MAP,OVSR,... result name for READ,GET,TDEC,TFREQ,...
<tuner port> Tuner port mask
<tuner dec> Tuner Decimation
<tuner freq> Tuner center freq in Hz (or normalized by 1/Nyquist if TFREQ|TUNER func)
<tuner gain> Tuner gain in dB (-100 to 100)
<tuner form> Tuner output Format (SB,CB,SI,CI,SL,CL)
This primitive is a high-level interface to the ICE-PIC card. It can be
used to perform data acquisition/playback into/from a Midas file, load user
programs into the SHARC, or for test and debug purposes.
The valid functions are:
SNIFF - query state of PCI interface
RESET - reset the card (optional IOC code override)
ACQUIRE - acquire data into a file
PLAY - play back data from a file
START - starts a SPIN mode test transfer
STOP - stops a SPIN or LOOPBACK mode transfer
HALT - shutdown card and release any hung locks
LOOP - loops active alternate input module to this output module
LOOPIO - loops input module-1 to output module-2 (feedthrough)
SET - set a keyed variable (see HELP on SETKEY)
GET - get a keyed variable (see HELP on GETKEY)
JOIN - join a multicast group specified in <addr> (ex 224.1.2.3)
LEAVE - leave a multicast group specified in <addr> (ex 224.1.2.3)
SEND - send a file of data to a processing module (value=byteOffset)
RECV - receive a file of data from a processing module (value=byteOffset)
LOADIOC - load special (non-default) Altera code into the I/O Controller
Configuration functions for tuners:
OVSR - set the tuner input OVerSampling Ratio (valid until next RESET)
LOADFC - load filter coefficients from a Midas file into the tuner
Use /PORT=CORE<n> to load a file into the special filter cores
Configuration functions for application specific processing include:
LOADPM - load Xilinx code into a Processor Module
LOADPPC - load application specific code into Virtex PowerPC
LOADSHARC - load application specific code into SHARC
LOADSTRATIX - reprogram Stratix part on a 5+ series card I/O Module from <file>
LOADVIRTEX - reprogram Virtex part on a 5+ series card from <file>
Maintanance functions not to be called by applications include:
TEST - suite of operational readiness tests
DMAC - display DMA Channel Parameters <addr..> = DMA Channel
DUMP - dump a buffer of data in ice card memory to a Midas file
SPEC - spec the PCI bus for max speed and latencies
NVREAD - read the PCI NVRAM configuration registers
READ - read a register from PCI or SHARC/PPC
WRITE - write a register to PCI or SHARC/PPC (this can crash a machine!)
MAP - attempts to map physical PCI space (to test user quotas)
TCGEN - generates SDN timecode in a ramdisk file
LOADFLASH - reprogram PCI EPROM on a 5+ series card from <file>
UNLOADFLASH - verify PCI EPROM on a 5+ series card to <file>
Deprecated functions not to be called by applications include:
TUNER - setup the on-board tuner chips (use SET)
TIMER - sets the IOC internal clock dividers (use SET)
TDEC - get closest tuner decimation to <tuner dec> (use GET NDEC)
TFREQ - get closest normalized tuner frequency to <tuner freq> (use GET NFREQ)
The RESET function should be performed by an application when it gains access to
the card to make sure its is properly configured. Other applications may have
downloaded non-standard software configurations. When <function>=RESET, the
<address/file> argument, if specified, overrides the default IOC code module.
The standard IOC configurations are:
II - two input modules with separate clocks
IIX - two input modules with the same muxed clock (see MUXCLK flag)
IIR - two input modules with muxed clock and internally generated ramp
IO - input on module1, output on module2
OO - two output modules (outputs always use muxed clock)
T1 - module2 out internally looped back to module1/tuner1 in
T2 - module1 out internally looped back to module2/tuner2 in
See PIC HELP IOC for other configurations.
Acquisition/Playback can occur through the following device ports:
MODULE[1-2] - the I/O Modules
TUNER[1-32] - the tuner chips
TBANK[1-3] - the tuner banks
CORE[1-2] - the FPGA processing cores
See PIC HELP IOPORT for other configurations.
The port is usually specified in the hardware config <device> alias,
for example:
PIC1==ICEPIC,PCI-MEM,0xFDFFFC00,,,IOM=A2D,
MOD1A==ALIAS=PIC1,PORT=MODULE1,
MOD1B==ALIAS=PIC1,PORT=MODULE2,
MOD1AB==ALIAS=PIC1,PORT=MODULE3,
TUN1A==ALIAS=PIC1,PORT=TUNER1,
TUN1B==ALIAS=PIC1,PORT=TUNER2,
The port can also be specified as a switch (/PORT=port) if no port is
specified in the <device>s hardware config string. Each port is assigned
to a DMA channel, some of which are shared. A DMA channel can NOT support
more than one port at a time. The user must insure this condition is met.
See HELP CARDS PIC ICE for more details.
The <input file> describes the input data format, sample rate, and
circular buffer size AFTER tuning and/or decimation, because the TUNE and
DECIMATE steps are performed on the ICE-PIC.
The TUNE and DECIMATE functions are not supported in the data playback modes.
The /REPLAY=n switch is used to control circular buffer processing as:
/REPLAY=-N File mode - plays buffer N times and quits (default = -1)
/REPLAY=1 Oneshot - plays buffer once and quits
/REPLAY=2 Continuous - plays buffer continuously
/REPLAY=4 Stop Now - loads buffer once - wait for START command
/REPLAY=5 Spin - loads first ~32Kby (one SHARC buffer) from buffer
into card, and regurgitates it until PICD STOPped
Example 1: 8-bit oneshot acquisition through the B-side module
X-Midas> PIC CREATE RAMFILE SB 8M 10e6
X-Midas> PICD ACQUIRE MOD1B RAMFILE
Example 2: 16-bit oneshot acquisition through the A-side tuner (decimation=256)
X-Midas> PIC CREATE RAMFILE SI 8M/256 10e6/256
X-Midas> PICD ACQUIRE TUN1A RAMFILE ,,, 256 2.5e6
Example 3: 16-bit continuous playback through the A-side module using an
internally generated 10Mhz clock
X-Midas> RAMP RAMFILE SI 64K ,,,, 1e-7
X-Midas> PICD/REPLAY=2/FLAGS=INTCLK PLAY MOD1A RAMFILE
The "flags" switch along with a string in the hwconfig file are used to modify
the default behavior of the device for special purposes. The flags in the
/FLAGS=(flg1,flg2,...) or /FLAGS=flg1|flg2|... switch are logically ORed
with the flags in the HW config file. See HELP FLAGS for a complete list.
The GET (or query) function allows macros to get configuration information from
the card/port into results parameters. See the help on KEYS for a list of the
supported key names.
The syntax is PICD GET <alias> <name> <result label>
For the special keys NFREQ, NDEC, and NRATIO, the result label should be preset
to the desired value, and the function writes back into the result the nearest
available value.
Switches:
/FLAGS=flgs Add specific flags to config string (see PIC HELP FLAGS)
/PORT=port Specifies the port to use if not part of the device alias
/DMAC=n DMA Channel number (1-8) [-1]
/REPLAY=N Acq/play replay mode, see above
/TC=mode Enable time code processing (SDN#F?, SMS#F?), see HELP PIC_TC
/TCOFF=ysec The beginning of year in J1950 seconds (default=current)
/BITS=1|4|8|16 Overrides number of bits per word in file
/ALL Include SHARC side info in SNIFF function
/STAT=label Return status of command in the named results label
/SRATE=freq Overrides the samplerate in the file
/ARATE=label Returns actual sample rate based on wall clock time
/TRIGGER=resname Poll for non-zero result value after setting up transfer
(for loosely synchronizing multiple transfers using /BG)
/WAIT=sec Pause sec seconds after setting up before starting transfer
/BLOCK=n Pseudo SHARC side buffer size (in words) for SPEC function
/START=n Start address for DUMP function (in bytes)
/SIZE=n Size for DUMP function (in words)
/MASK=n Mask of which bits to actually change in a WRITE function
/NCFIR LOADFC filter into the NCFIR, the default is PFIR
/DIR=1|-1 Direction of port transfer for STOP/START if needed (PIC5 bidir port)
Widgets:
1) SPEC BlockSize for SPEC function