Texas Memory Systems Computer Hardware XP 15 User Manual

XP-15 Vector Processor  
User Guide  
Any trademarks or registered trademarks used in this document belong to the companies that own them.  
Copyright © 2001, Texas Memory Systems, Inc. All rights are reserved. No part of this work may be  
reproduced or used in any form or by any means - graphic, electronic or mechanical, including photocopying,  
recording, taping, or information storage and retrieval systems - without permission of the copyright owner.  
 
Chapter 1 - Introduction  
The XP-15 vector processor is a PCI card that can be installed in a workstation and that delivers  
SuperComputer-class vector processing performance. This document is concerned with the installation and  
set-up of the XP-15.  
Chapter 2 gives an overview of the functionality of the XP-15. Chapter 3 describes the hardware and  
software installation of the XP-15. Chapter 4 describes a programming example for the XP-15 for use in an  
X-Midas environment.  
1.1 Related Texts  
The following Texas Memory Systems user documentation may be useful for reference purposes:  
TM-44 Programming Overview  
VP Scientific Math Library Reference Manual  
1.2 Typographical Conventions  
Text within this document is typed in the same typeface as this paragraph. User input and information is in  
the same typeface as the word filename in the example below:  
Filename  
XP-15 User Guide  
Texas Memory Systems, Inc. (8/6/01)  
1-1  
 
Chapter 2 - Overview  
The XP-15 is a high-performance vector processor implemented on a single card suitable for installing in a  
PCI Local Bus card slot in a general-purpose computer. The XP-15 is based on the 8 GFLOPS TM-44 DSP  
chip from Texas Memory Systems and includes four 32 MB banks of fast local memory. The XP-15 is  
programmed by making calls to move data from host memory to XP-15 local memory, to perform one or more  
vector processing operations on the data, and to move results back to host memory. There are more than  
400 such function calls available to the XP-15 programmer; detailed specifications for these functions can be  
found in the VP Scientific Math Library Reference Manual, and an introduction to XP-15 programming  
techniques can be found in the TM-44 Programming Overview.  
Although many computer systems provide PCI Local Bus card slots, a driver for the XP15 is currently  
available for computer systems from Compaq under Tru64 version 5.1 only. Accordingly, this document  
covers the installation and checkout of an XP-15 in a Compaq Alpha-based computer system under Tru64.  
XP-15 User Guide  
Texas Memory Systems, Inc. (8/6/01)  
2-1  
 
Chapter 3 - Installation  
The XP-15 vector processor has currently been tested in the following computer platforms:  
qCompaq ALPHASERVER ES40.  
qCompaq ALPHASERVER DS10.  
XP-15 Software is currently available for the following operating system revisions:  
qTRU64 (Digital Unix) 5.1  
3.1 Installing the XP-15 Hardware  
3.1.1 Jumper Settings  
The XP-15 has no user-selectable jumpers.  
3.1.2 Installing the XP-15 in a Computer  
Power-off the computer system. Select a suitable vacant PCI slot and remove the faceplate. Insert the XP15  
card firmly into the vacant slot. Lock down the XP15 faceplate using the screw that previously held in the  
blank faceplate.  
3.2 Installing the XP-15 Software  
XP-15 software is delivered on CDROM. This chapter describes the steps that should be used to install the  
software. The account that performs the installation must have certain system privileges, and is normally  
the system account.  
Release notes for the delivered version of the XP-15 hardware and software are included on the CDROM in a  
file called README.TXT. This file lists enhancements since the previous version, known hardware and  
software deficiencies, documentation errors, and other information not included in the manuals.  
3.2.1 Tru64 (Digital Unix) Installation  
Log on to the computer with system privileges, this is normally root. Insert and mount the CDROM using a  
command along the lines of the one below:  
# mount –r /dev/disk/cdrom0c /cdrom  
There are two script files located on the CDROM, one is to load the user software and the other is to load the  
XP15 driver. First load the user software as follows:  
# cd /cdrom  
# ./install_software  
change directory to the CDROM mount point  
invoke the software install script  
The script will run and will ask questions about where the software is located and where to install it on the  
host machine. A typical run is shown below with normal user responses underlined.  
Installing Texas Memory Systems XP15 USER software  
Are you installing the software on a Compaq Tru64 system (y/n)?yes  
XP-15 User Guide  
Texas Memory Systems, Inc. (8/6/01)  
3-1  
 
Enter the mount point of the CDROM - /cdrom  
What directory do you want to install the XP-15 software to - /usr/tms  
The XP15 software will be installed from /cdrom to /usr/tms  
Is this correct (y/n)?yes  
Installing the XP15 software.  
Finished installing the USER part of the XP15 software.  
The final step in installing the XP15 is to install the driver using a script that also asks a few questions. A  
typical run is shown, again with user responses underlined.  
#cd /cdrom  
#./install_driver  
Installing Texas Memory Systems XP15 DRIVER software  
Are you installing the DRIVER software on a Compaq Tru64 system (y/n)?yes  
Enter the mount point of the CDROM - /cdrom  
The XP15 driver software will be install from /cdrom  
Copy driver source  
Add path to driver source files  
Create make and make the driver  
Create soft links  
Update system configuration and load the XP15 driver  
You need to reboot the system to make the new driver available  
Do you want to reboot the system now (y/n)?yes  
3.3 Running the XP-15 Confidence Test  
The XP-15 confidence test is a two-stage process, starting with a simple diagnostic test followed by running a  
simple programming example.  
3.3.1 Diagnostic Confidence Test  
The XP-15 diagnostic is located in the $TMS/bindirectory that was installed from the cdrom and is called  
XPMON. XPMON has many features and commands, but the one command that tests the basic operation of  
the XP-15 is the T99command. A sample run is shown, the XP-15 to be tested is /dev/xp0.  
$xpmon –d /dev/xp0  
XP-15 Diagnostic Monitor v1.0  
XP-15 device “/dev/xp0” opened successfully  
Allocating host data buffers:  
DMA write buffer size = 0x2000000 bytes  
DMA read buffer size = 0x2000000 bytes  
Verbosity set to HIGH  
XP-15 User Guide  
Texas Memory Systems, Inc. (8/6/01)  
3-2  
 
Xpmon[0]> t99  
Running all tests:  
Performing SPRAG tests …  
.
.
testing many functions  
.
.
All tests should run without any errors. If any errors occur please contact Texas Memory Systems.  
3.3.2 Programming Example Confidence Test  
The XP-15 confidence test is located on the XP-15 software CDROM in the examples/cfftdirectory, and a  
listing of the source code can be found in Appendix A. This simple application creates a signal containing a  
single impulse, transfers the signal from host memory to XP-15 local memory, performs a one million point  
complex FFT on the signal in the XP-15, reads the results back to host memory, and checks the results.  
Copy the contents of the examples/cfft/directory from the CDROM to a suitable local directory. For  
instructions on reading the CDROM, please refer to the Installing the XP-15 Software section for the  
relevant computer and operating system earlier in this document.  
% cp $CDROM/sources/examples/cfft/* .  
This will copy two files from the CDROM: cfft.cand Makefile. The make utility can be used to build the  
program. The make file assumes that the XP-15 software has been installed in the $TMS directory as  
described in the software installation section above. If this is not so, then the make file will have to be  
modified to reflect the new software location.  
% make  
gcc -I$TMS/include -o cfft cfft.c -L$TMS/lib –lvp -lsam  
XP-15 User Guide  
Texas Memory Systems, Inc. (8/6/01)  
3-3  
 
The sample application is executed with one parameter on the command line: the XP-15 unit to be used.  
Typically, this will be unit 0 (zero) unless multiple XP-15s are installed in this host computer.  
% cfft -x 0  
XP-15 Confidence test performing a 1048576 point CFFT on XP-15 #0  
Allocate memory for test signal and FFT results  
Clearing results buffer  
Creating test signal  
Performing CFFT  
Wait for all XP-15 functions to complete  
First 10 values of CFFT results:  
00: [ 16.0000, 0.0000]  
01: [ 16.0000, 0.0000]  
02: [ 16.0000, 0.0000]  
03: [ 16.0000, 0.0000]  
04: [ 16.0000, 0.0000]  
05: [ 16.0000, 0.0000]  
06: [ 16.0000, 0.0000]  
07: [ 16.0000, 0.0000]  
08: [ 16.0000, 0.0000]  
09: [ 16.0000, 0.0000]  
Checking result vector..  
XP-15 confidence test completed with no errors  
XP-15 User Guide  
Texas Memory Systems, Inc. (8/6/01)  
3-4  
 
Chapter 4 - X-Midas Programming Example: XTMIC  
This chapter describes the X-Midas programming example, how to execute it, and how to use it as a template  
for XP-15 applications. The source code is located on the XP-15 software CDROM in the examples/xtmic/  
directory.  
4.1 Overview  
The X-Midas programming example is a less robust version of the SAMTMIC software that currently runs  
on the SAM-450. The XP-15 implementation, referred to as the XTMIC, performs the same basic processing  
as the SAMTMIC, but with predefined parameters and static weight files. The XTMIC performs spectral  
analysis and interference canceling on two channels of 16-bit data using an FFT size of 128K. The algorithm  
starts with a forward four-tap polyphase filter, and a forward FFT, applies a set of predefined weights,  
performs the inverse FFT, and then the inverse polyphase filter. The auto spectrum of each signal is  
calculated, as well as the cross spectrum of the two signals, and averaged versions of these spectra are sent  
to the host computer for display. In addition to the auto and cross spectra signals, the end result of the TMIC  
calculations is also piped back to the host.  
4.2 Running the XTMIC Example  
Copy the contents of the examples/xtmic/directory from the CDROM to a suitable local directory. For  
instructions on reading the CDROM, please refer to the Installing the XP-15 Software section for the  
relevant computer and operating system earlier in this document.  
% cp –r $CDROM/examples/xtmic/* .  
This will copy the entire option tree to the specified location. Start the X-Midas programming environment,  
and then associate the XTMIC option tree with this location using the X-Midas xmoptfunction. For  
example, if the xtmic option tree was copied to /home/midas/projects/xtmic/, then one would type:  
% xmopt XTMIC /home/midas/projects/xtmic/  
Then, to add the XTMIC project to the current path:  
% xmpath +XTMIC  
The xmboptutility can then be used to build the program.  
% xmbopt XTMIC  
The build file assumes that the XP-15 software has been installed in the $TMS directory as described in the  
software installation section above. If this is not so, then the build file will have to be modified to reflect the  
new software location.  
XP-15 User Guide  
Texas Memory Systems, Inc. (8/6/01)  
4-1  
 
The XTMIC macro requires two command line parameters that determine which files the XTMIC will use for  
its processing. The input files must contain 16-bit integer data, and must have at least 1507328 elements.  
Assuming the input files are called input_a and input_b, the command line required to run the XTMIC  
would look like:  
% X-Midas> run_x input_a input_b  
XTMIC> Starting xtmic demo.  
XTMIC> Setting up files/pipes.  
XTMIC> Initializing XP15 buffers.  
XTMIC> Entering loop.  
Total iterations:  
10.0000000000000  
Elapsed seconds:  
5.945312  
Average outer loop speed was  
XTMIC> Finished xtmic demo.  
2.01839685440063  
XP-15 User Guide  
Texas Memory Systems, Inc. (8/6/01)  
4-2  
 
Appendix A – XP-15 Confidence Test  
/**************************************************************************  
Copyright (c) 2001 by Texas Memory Systems, Inc.  
Texas Memory Systems, Inc.  
11200 Westheimer #1000  
Houston, TX 77042  
(713) 266-3200  
Module Name:  
Package:  
Version:  
Release Date:  
Description:  
cfft.c  
CFFT demo  
$Revision:  
$Date:  
$
$
XP15 FFT demo  
**************************************************************************/  
#include <stdio.h>  
#include <stdlib.h>  
#include <strings.h>  
#include <samdef.h>  
#include <vp.h>  
#define FFT_SIZE (1024*1024)  
static void help(void);  
/**********************************************************************  
Function: main  
Description:  
entry point for XP15 FFT demo  
Arguments: argc -  
argv -  
number of inputs  
pointer to array of inputs  
Returns:  
none  
***********************************************************************/  
int main (int argc, char *argv[])  
{
int  
cc;  
extern char *optarg;  
extern int optind;  
int  
ii;  
int  
ecount;  
float  
real_val, imag_val;  
TMS_INT  
TMS_INT  
TMS_INT  
xp15  
= -1;  
fft_size = FFT_SIZE;  
status;  
TMS_COMPLEX *signal, *results;  
TMS_COMPLEX *cu, *cy;  
/*  
* Get command line arguments  
XP-15 User Guide  
Texas Memory Systems, Inc. (8/6/01)  
A-1  
 
*/  
while ((cc = getopt(argc, argv, "hx:")) != EOF)  
{
switch (cc)  
{
case 'x':  
xp15 = atoi(optarg);  
break;  
case 'h':  
case '?':  
default :  
help();  
}
}
/*  
* Print some useful information  
*/  
printf("XP-15 Confidence test performing a %d point CFFT on XP-15 #%d\n",  
fft_size,  
xp15);  
/*  
* Allocate host memory for a test signal  
*/  
printf("Allocate memory for test signal and FFT results\n");  
signal = (TMS_COMPLEX *)malloc(fft_size * sizeof(TMS_COMPLEX));  
if (signal == NULL)  
{
printf("Failed to allocate signal buffer memory\n");  
exit(-1);  
}
results = (TMS_COMPLEX *)malloc(fft_size * sizeof(TMS_COMPLEX));  
if (results == NULL)  
{
printf("Failed to allocate results buffer memory\n");  
exit(-1);  
}
/*  
* Create a test signal, a single spike, and clear results buffer  
*/  
printf("Clearing results buffer\n");  
memset(results, 0, fft_size * sizeof(TMS_COMPLEX));  
printf("Creating test signal\n");  
memset(signal, 0, fft_size * sizeof(TMS_COMPLEX));  
signal[0].real = 16.0;  
real_val = signal[0].real;  
imag_val = 0.0;  
/*  
* Allocate XP-15 buffers  
*/  
cu = (TMS_COMPLEX *)vb_pointer(xp15, VP_RAM_A_MEM, 0);  
cy = (TMS_COMPLEX *)vb_pointer(xp15, VP_RAM_B_MEM, 0);  
/*  
* Move the input signal into XP-15 local memory  
*/  
XP-15 User Guide  
Texas Memory Systems, Inc. (8/6/01)  
A-2  
 
status = vmov((TMS_FLOAT *)signal, (TMS_FLOAT *)cu, fft_size * 2);  
if (status < 0)  
sam_error(status);  
/*  
* Perform the CFFT  
*/  
printf("Performing CFFT\n");  
status = cfft(cu,  
/* input buffer  
/* Twids not needed by XP-15 */  
/* output/scratch buffer */  
/* repeat value - 1 this time */  
/* forward FFT scaled by 1.0 */  
/* one million complex points */  
*/  
NULL,  
cy,  
1,  
1.0,  
fft_size);  
if (status < 0)  
sam_error(status);  
/*  
* Move the FFT results back to host memory  
*
(returned status indicates which buffer holds the final results)  
*/  
if (status == 1)  
status = vmov((TMS_FLOAT *)cu, (TMS_FLOAT *)results, fft_size * 2);  
else  
status = vmov((TMS_FLOAT *)cy, (TMS_FLOAT *)results, fft_size * 2);  
if (status < 0)  
sam_error(status);  
/*  
* Synchronize with the XP-15  
*/  
printf("Wait for all XP-15 functions to complete\n");  
status = viper_sync(xp15, -1);  
if (status < 0)  
sam_error(status);  
/*  
* Print values  
*/  
printf ("First 10 values of CFFT results:\n");  
for (ii=0; ii<10; ii++)  
printf ("%02d: [%8.4f, %8.4f]\n",  
ii, results[ii].real, results[ii].imag);  
/*  
* Check result vector  
*/  
ecount = 0;  
printf ("Checking result vector..\n");  
for (ii=0; ii<fft_size; ii++)  
{
if ((results[ii].real != real_val) || (results[ii].imag != imag_val))  
{
if (ecount < 5)  
{
printf ("Error in element %d", ii);  
printf ("  
ShB: [%8.4f, %8.4f] ", real_val, imag_val);  
printf ("Is: [%8.4f, %8.4f]\n",  
results[ii].real,  
XP-15 User Guide  
Texas Memory Systems, Inc. (8/6/01)  
A-3  
 
results[ii].imag);  
}
ecount++;  
}
}
if (ecount == 0)  
printf ("XP-15 confidence test completed with no errors\n");  
else  
printf ("XP-15 confidence test completed with %d errors\n", ecount);  
exit(0);  
}
/**********************************************************************  
Function: help  
Description:  
display help screen, and exits  
Arguments: none  
Returns:  
none  
***********************************************************************/  
static void help(void)  
{
fprintf (stdout, "parameters:\n");  
fprintf (stdout,  
"
-x  
: XP-15 device name\n");  
fprintf (stdout,  
"
-h  
: this message\n");  
exit (0);  
}
XP-15 User Guide  
Texas Memory Systems, Inc. (8/6/01)  
A-4  
 
Appendix B – PCI Local Bus Specifications  
The XP-15 interface adapter is a 3.3V signaling environment expansion card, as defined by the PCI Local  
Bus Specification 2.0, 2.1, and 2.2. This means that the XP-15 is designed to operate exclusively in 3.3V  
signaling environment system motherboards.  
During the development of the XP-15, the liberty was taken to add a second key slot on the PCI edge  
connector. This allows for operation and testing in most 5V signaling environment motherboards that  
provide a 3.3V power rail. This is neither a recommended nor a supported configuration.  
The following table clarifies the requirements for system motherboards under the different revisions of the  
PCI Specification.  
System Motherboards  
5V Signaling Environment  
3.3V Signaling Environment  
PCI Local Bus  
Specification 2.0  
+5V, +12V, and -12V required.  
+3.3V may either be included with  
system, or a means to add it  
afterwards must be provided.  
+5V, +12V, and -12V required.  
+3.3V may either be included with  
system, or a means to add it  
afterwards must be provided.  
+5V, +3.3V, +12V, and -12V rails  
are all required.  
+5V, +3.3V, +12V, and -12V rails  
are all required.  
PCI Local Bus  
Specification 2.1  
+5V, +3.3V, +12V, and -12V rails  
are all required.  
PCI Local Bus  
Specification 2.2  
+5V, +3.3V, +12V, and -12V rails  
are all required.  
The following table clarifies the requirements for expansion cards in the different signaling environments.  
Expansion Cards  
5V Signaling Environment  
3.3V Signaling Environment  
5V Expansion Card  
I/O Buffers are powered by the 5V  
power rail.  
5V Expansion Cards are not  
designed to work in a 3.3V  
signaling environment.  
2.0,2.1: +5V, +12V, -12V supplied.  
If +3.3V is needed, expansion card  
must provide its own 3.3V.  
2.2: +5V, +3.3V, +12V, and -12V  
rails are all supplied.  
3.3V Expansion Card 3.3V Expansion Cards are not  
I/O Buffers are powered by the  
3.3V power rail.  
+5V, +3.3V, +12V, and -12V rails  
are all supplied.  
(XP-15)  
designed to work in a 5V signaling  
environment.  
Universal Expansion  
Card  
I/O Buffers are powered by the 5V  
power rail.  
I/O Buffers are powered by the  
3.3V power rail.  
2.0,2.1: +5V, +12V, -12V supplied.  
If +3.3V is needed, expansion card  
must provide its own 3.3V.  
2.2: +5V, +3.3V, +12V, and -12V  
rails are all supplied.  
2.0,2.1: +5V, +12V, -12V supplied.  
If +3.3V is needed, expansion card  
must provide its own 3.3V.  
2.2: +5V, +3.3V, +12V, and -12V  
rails are all supplied.  
Texas Memory Systems recommends the XP-15 adapter for use in 3.3V signaling environments.  
XP15 User Guide  
Texas Memory Systems, Inc. (8/6/01)  
B-1  
 
Appendix C – XP-15 Hardware Control and Status Registers  
The XP-15 is a custom hardware adapter designed to provide processing power to a host computer (DEC  
Alpha, Intel PC, etc..). The XP-15's data bus is 32-bits or 64-bits wide (depending on the host PCI slot).  
The following tables describe the XP-15's hardware control registers. Each register is classified as read only,  
write only, or read/write. The least significant bit of each register is always tied to the least significant bit of  
the PCI bus. Any unspecified bits should be masked in software after they are read, even though they will  
not be used.  
As defined by the PCI Local Bus Specification Rev. 2.2, the XP-15 has one Base Address Regions. All  
registers are defined as offsets into this one address region. Bit-level definitions of all registers, including  
rules for their use, appear in the following tables and paragraphs.  
XP-15 Hardware Registers  
Register Name  
Base  
Address  
Region  
0
Offset  
Type  
Size  
Control-Status Register (CSR)  
0h  
4h  
R/W  
R/W  
R/W  
R/W  
R/W  
32 bits  
32 bits  
32 bits  
32 bits  
32 bits  
Low PCI SN command address register[31..0]  
High PCI SN command address register[63..32]  
Low PCI SN response address register[31..0]  
High PCI SN response address register[63..32]  
0
0
0
0
8h  
Ch  
10h  
Control-Status Register (32 bits, R/W)  
Type Description  
Bit #  
Name  
RESERVED  
Reset  
31-16  
N/A These bits are reserved.  
15  
14  
13  
12-10  
9
WO Softreset, puts the XP-15 in the power-up state.  
WO Informs XP-15 to start processing SN command.  
WO Indicates host is big Endian.  
Start  
END  
RESERVED  
64  
N/A These bits are reserved.  
WO Indicates XP-15 is in a 64-bit PCI slot  
N/A This bit is reserved.  
8
RESERVED  
DMADONE  
STOP  
7
RO Indicates the DMA is finished.  
6
RO Indicates the STOP bit has been encountered.  
RO Indicates the XP-15 is paused.  
5
PAUSE  
ERR  
4
RO Indicates the XP-15 has received an SN checksum error.  
PCI200 User Guide  
Texas Memory Systems, Inc. (8/6/01)  
C-1  
 
3
2
1
0
ECHO  
SPR  
RO Indicates the XP-15 has returned an ECHO packet  
RO Indicates the XP-15 has returned an SPR packet  
RO Indicates the XP-15 has returned a diagnostic packet  
RO Indicates the XP-15 has returned a status packet  
DIAG  
STAT  
Low PCI SN command address register (32 bits, R/W)  
Type Description  
Bit #  
31-3  
Name  
NA  
R/W This register is used to establish the low 32-bits of the PCI  
address for SN commands to the XP-15. This register consists  
of the bottom 32-bits of a 32-bit counter with the low-order  
three bits hardwired to zeroes. Transfers must begin on a  
Double DWORD (64-bit) boundary.  
2-0  
Reserved  
RO These bits are reserved (must be written with zeroes).  
High PCI SN command address register (32 bits, R/W)  
Bit #  
63-32  
Name  
Type Description  
NA  
R/W Upper bits of this register are not used.  
Low PCI SN response address register (32 bits, R/W)  
Type Description  
Bit #  
31-3  
Name  
NA  
R/W This register is used to establish the low 32-bits of the PCI  
address for SN responses from the XP-15. This register  
consists of the bottom 32-bits of a 32-bit counter with the low-  
order three bits hardwired to zeroes. Transfers must begin  
on a Double DWORD (64-bit) boundary.  
2-0  
Reserved  
RO These bits are reserved (must be written with zeroes).  
High PCI SN response address register (32 bits, R/W)  
Type Description  
Bit #  
63-32  
Name  
NA  
R/W Upper bits of this register are not used.  
PCI200 User Guide  
Texas Memory Systems, Inc. (8/6/01)  
C-2  
 

TDK Network Card iQN 35V 6A User Manual
Texas Instruments Stereo Amplifier TAS5066PAG User Manual
Toro Lawn Mower 98958SL User Manual
Toshiba Flat Panel Television 13A21C User Manual
Traulsen Refrigerator RAC3T User Manual
Vermont Casting Gas Grill VCS4027 User Manual
Victor Calculator 1240 3A User Manual
ViewSonic Computer Monitor VA1938WA LED User Manual
Walker Lawn Mower MT MTL MTEFI MTLEFI User Manual
Weed Eater Lawn Mower WE16542D User Manual