<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.ice-online.com/index.php?action=history&amp;feed=atom&amp;title=PICDRIVER</id>
	<title>PICDRIVER - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.ice-online.com/index.php?action=history&amp;feed=atom&amp;title=PICDRIVER"/>
	<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=PICDRIVER&amp;action=history"/>
	<updated>2026-04-11T16:10:38Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.34.1</generator>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=PICDRIVER&amp;diff=678&amp;oldid=prev</id>
		<title>ConvertBot: Peripheral Interconnect Component driver routines</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=PICDRIVER&amp;diff=678&amp;oldid=prev"/>
		<updated>2020-04-27T19:19:49Z</updated>

		<summary type="html">&lt;p&gt;Peripheral Interconnect Component driver routines&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 19:19, 27 April 2020&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l177&quot; &gt;Line 177:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 177:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:ICE_Explain]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>ConvertBot</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.ice-online.com/index.php?title=PICDRIVER&amp;diff=635&amp;oldid=prev</id>
		<title>ConvertBot: Peripheral Interconnect Component driver routines</title>
		<link rel="alternate" type="text/html" href="https://wiki.ice-online.com/index.php?title=PICDRIVER&amp;diff=635&amp;oldid=prev"/>
		<updated>2020-04-27T18:59:58Z</updated>

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