Problem with comparison.
/Modules/CPLD_FPGA/XILINX_XVC/XVC_SOFTWARE/XVC_1x/BIN/10-MLAB-XVC-FTDI.rules
0,0 → 1,23
# Rule for unbinding XVC_FT220X device from ftdi_sio driver and setting permissions for everyone
# Put this file to /etc/udev/rules.d
 
# MLAB Module XVC_FT220X for JTAG programming of Xilinx uses standard VendorID and DeviceID
# of used FTDI chips. Unfortunately on latest Linux there is udev automaticaly loading
# device driver ftdi_sio which creates ttyUSBxx device for any attached FTDI chip.
# This driver prevents XVC program to comunicate with FTDI chip via FT2XX library.
# It is necessary to disconnect (unbind) our FTDI device (identifyed by its name) from
# ftdi_sio driver.
 
# (c)miho 2013 http://www.mlab.cz
 
# Hints:
# lsusb -v
# udevadm info -a -p /devices/pci0000:00/0000:00:06.0/usb1/1-2/1-2:1.0
# udevadm control --reload-rules
 
# Ubind "MLAB XVC with FTxxxx" form ftdi_sio driver to release it for mlab_xvc program
SUBSYSTEM=="usb", ATTRS{interface}=="MLAB XVC with FT*", RUN="/bin/sh -c 'echo %k > /sys/bus/usb/drivers/ftdi_sio/unbind'"
 
# Set permissions to the device to enable run mlab_xvc program without root permissions
# If you do not want everyone remove MODE and add GROUP
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{product}=="MLAB XVC with FT*", MODE:="0666", RUN+="/bin/sh -c 'echo k: %k p: %p >> /tmp/XVC'"
/Modules/CPLD_FPGA/XILINX_XVC/XVC_SOFTWARE/XVC_1x/BIN/mlab_xvcd.exe
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_SOFTWARE/XVC_1x/BIN/mlab_xvcd_i386
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_SOFTWARE/XVC_1x/linuxBuild.sh
0,0 → 1,8
# For fresh Ubuntu 64bit needs to install tools:
# sudo apt-get install build-essential
 
# On 64bit system you need 32bit library support to build 32bit application:
# sudo apt-get install g++-multilib
 
# Just compile and link the target executable:
gcc mlab_xvcd*.cpp lib_linux_i386/libftd2xx.a -m32 -ldl -lpthread -lrt -Os -o mlab_xvcd_i386
/Modules/CPLD_FPGA/XILINX_XVC/XVC_SOFTWARE/XVC_1x/mlab_xvcd.cpp
0,0 → 1,750
// MLAB Xilinx Virtual Cable Network Server
// ----------------------------------------
//
// (c) miho 2012, 2013 http://www.mlab.cz/PermaLink/XVC_SOFTWARE
//
// This program if free.
//
//
// History:
//
// 1.00 2012_09 Proof of concept (no configuration, not for public release)
// 1.01 2012_09 Added parameter for device selection
// 1.02 2012_12 Error handling and debugged
// 1.03 2012_12 Release version ready to publish
// 1.04 2013_04 Socket Bind Error with explanation (multiple instance of XVC Server)
// 1.05 2013_04 Test FTDI cable during wait for Accept (to stop the server immediately when cable is disconnected)
// 1.06 2013_04 Added support for Linux (thanks to Martin Poviser)
// 1.07 2013_04 Rewritten Host Address function for Linux (function gethostbyname returns 127.0.1.1 on Debian systems)
// Solved compatibility problems on Linux (FT_SetLatncyTimer requires delay, udev problem with ftdi_sio driver)
//
//
// Purpose:
//
// XILINX development software (ISE, WebPack) supports several types of JTAG programming
// cables. Among them there is one particularly interesting. It is Xilinx Virtual Cable
// which uses (documented) XVC network protocol to send JTAG commands across TCP/IP network.
// So it is possible to realize own hardware/software and have it directly supported by
// XILINX development software (both IMPACT and ChipScope).
//
// This program listens TCP data send by XILINX ISE IMAPACT (or ChipScope) and sends it
// to the JTAG device (typically FPGA) connected to FTDI USB Chip. You can use ordinary
// USB/RS232 translator based on FT232R chip or you can use our own module from
// http://www.mlab.cz/PermaLink/XVC_FT220X
//
// Target device JTAG port is connected to pins on FTDI USB chip. Program writes to standard
// output Which pins are used. Program writes what to set in ISE to enable XVC plugin.
//
//
// Environment:
//
// This is Win32 Console Application and run in WinXP / Win7 / Win8 both 32 and 64 bit.
//
// Program needs to listen to the network so it is necessary to allow doing so. In Windows
// firewall configuration enable networking for the exe file.
// WinXP: run as Administrator c:\WINDOWS\System32\firewall.cpl and add the exe file
// Win7: the system asks directly to do so
//
//
// Technology:
//
// The program uses Windows WINSOCK2 library for network communication
// and FTDI ftd2xx library for communication with FTDI USB chip.
// It can be staticly linked to minimize dependencies on libraries.
// Program requires FTDI drivers installed.
// Because of the usage of standard libraries you don't need to solve how to sign drivers.
//
// The program was debug with FT232R and FT220X device.
// It should work with any similar FTDI USB chip.
//
// XVC protocol is documented (you have to ask XILINX support to gain access).
// The program is inspired by the work http://debugmo.de/2012/02/xvcd-the-xilinx-virtual-cable-daemon/
// Ask Google about Xilinx Virtual Cable.
//
//
// Compilation for Windows:
//
// MS Visual C++ 2010 Express (free, registration required)
// Create new empty project for Win32 Console Application and name project mlab_xvcd (to build mlab_xvcd.exe)
// Header Files / Add / Existing Items - all .h files
// Source Files / Add / Existing Items - all .cpp files
// Library Files / Add / Existing Items - all .lib .h files from lib_win32 directory
// Select Release version (no debug info)
// Set static linkage Project Properties / Configuration Release / Configuration Properties
// / Code Generation / Runtime Library = Multithreaded (/MT)
//
// Compilation for Linux:
//
// On Ubuntu 12.04LTS just run the .sh file
//
// Problems:
//
// Programming of SPI FLASH configuration memory connected to FPGA does not work. No idea why.
// It does not work for internal FLASH of Spartan XC3SxxAN either.
//
//
// Possible improvements:
//
// External definition of JTAG pins.
// Enable Socket Number (to be able to run multiple XVC Servers), now it is constant XVC_TCP_PORT (should be only a default)
 
 
// Library Definitions
// -------------------
 
#undef UNICODE
#define WIN32_LEAN_AND_MEAN
 
#include "mlab_xvcd.h" // Program Configuration
#include <stdlib.h> // Standard Library (exit, atoi, ...)
#include <stdio.h> // Standard IO (printf, ...)
#include <signal.h> // CTRL+C handling
 
#ifdef WIN32
 
#include <windows.h> // Windows Console Application
#include <winsock2.h> // Windows WinSock2
#include <ws2tcpip.h> // Windows WinSock2
 
// Link with library
#pragma comment (lib, "Ws2_32.lib")
//#pragma comment (lib, "../lib_win32/ftd2xx.lib") // Add this file to Resources
 
#else // not WIN32
 
#include "lib_linux_i386/WinTypes.h"
#include <sys/types.h>
#include <sys/socket.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#include <netdb.h>
#include <net/if.h>
#include <sys/ioctl.h>
#include <arpa/inet.h>
 
#endif
 
#define XVC_RX_BUFLEN (XVC_JTAG_LEN/8*2+20) // Length of receive buffer in bytes (command+length+TMSbuffer+TDIbuffer)
#define XVC_TX_BUFLEN (XVC_JTAG_LEN/8) // Length of transmit buffer in bytes (TDObuffer)
 
#ifdef WIN32
 
typedef int socklen_t;
 
#else //not WIN32
 
typedef int SOCKET;
 
#define SOCKET_ERROR -1
#define INVALID_SOCKET -1
 
void closesocket(int socket)
{
close(socket);
}
 
void WSACleanup()
{
}
 
int WSAGetLastError()
{
return errno;
}
 
#endif
 
// JTAG state machine
// ------------------
 
// JTAG States
enum
{
test_logic_reset, run_test_idle, // Starts from 0
 
select_dr_scan, capture_dr, shift_dr,
exit1_dr, pause_dr, exit2_dr, update_dr,
 
select_ir_scan, capture_ir, shift_ir,
exit1_ir, pause_ir, exit2_ir, update_ir,
 
num_states
};
 
 
// JTAG State Machine transfer Function
static int jtagStep(int state, int tms)
{
static const int next_state[num_states][2] =
{
/* JTAG State -->> New State */
/* -------------------------------------------------------------*/
/* | TMS=0 | TMS=1 */
/* -------------------------------------------------------------*/
/* [test_logic_reset] -> */ { run_test_idle, test_logic_reset },
/* [run_test_idle] -> */ { run_test_idle, select_dr_scan },
/* [select_dr_scan] -> */ { capture_dr, select_ir_scan },
/* [capture_dr] -> */ { shift_dr, exit1_dr },
/* [shift_dr] -> */ { shift_dr, exit1_dr },
/* [exit1_dr] -> */ { pause_dr, update_dr },
/* [pause_dr] -> */ { pause_dr, exit2_dr },
/* [exit2_dr] -> */ { shift_dr, update_dr },
/* [update_dr] -> */ { run_test_idle, select_dr_scan },
/* [select_ir_scan] -> */ { capture_ir, test_logic_reset },
/* [capture_ir] -> */ { shift_ir, exit1_ir },
/* [shift_ir] -> */ { shift_ir, exit1_ir },
/* [exit1_ir] -> */ { pause_ir, update_ir },
/* [pause_ir] -> */ { pause_ir, exit2_ir },
/* [exit2_ir] -> */ { shift_ir, update_ir },
/* [update_ir] -> */ { run_test_idle, select_dr_scan }
};
 
return next_state[state][tms];
}
 
 
int handleData(SOCKET ClientSocket)
{
 
bool seen_tlr = false;
bool jtagError = false;
 
static int jtag_state;
 
do
{
int iResult;
 
// Read Command
char command[16];
unsigned int commandLen = 0;
 
// Read String terminated by ':'
do
{
iResult = recv(ClientSocket, command+commandLen, 1, 0);
if (iResult==0)
{
printf("\n Connection Closed\n\n");
return -1;
}
else if (iResult==1)
{
commandLen++;
}
else
{
fprintf(stderr, "Error Reading Command\n");
return -2;
}
}
while (command[commandLen-1]!=':' && commandLen<sizeof(command)-1 );
command[commandLen] = char(0);
 
if (0==strncmp(command, "shift:", sizeof(command)))
{
}
else
{
fprintf(stderr, "Invalid Command '%s'\n", command);
return -2;
}
 
// Read Length (in bits, 32bit integer)
int len;
 
iResult = recv(ClientSocket, (char *)&len, 4, 0); // pøepsat pøenositelnì
if (iResult==0)
{
printf("\n Connection Closed\n\n");
return -1;
}
if (iResult != 4)
{
fprintf(stderr, "Reading Length Failed\n");
return -2;
}
 
char buffer[2048];
 
// Read Data (data string for TMS and TDI)
unsigned int nr_bytes = (len + 7) / 8;
if (nr_bytes * 2 > sizeof(buffer))
{
fprintf(stderr, "Buffer Size Exceeded\n");
return -2;
}
 
unsigned int iReceivedBytes=0;
while (iReceivedBytes<nr_bytes * 2)
{
iResult = recv(ClientSocket, buffer+iReceivedBytes, nr_bytes * 2 - iReceivedBytes, 0);
if (iResult==0)
{
printf("\n Connection Closed\n\n");
return -1;
}
if (iResult<=0)
{
fprintf(stderr, "Reading Data Failed %d %d\n", iResult, nr_bytes * 2);
return -2;
}
iReceivedBytes += iResult;
}
 
char result[1024];
memset(result, 0, nr_bytes);
 
// Deal with JTAG
 
// Only allow exiting if the state is rti and the IR
// has the default value (IDCODE) by going through test_logic_reset.
// As soon as going through capture_dr or capture_ir no exit is
// allowed as this will change DR/IR.
seen_tlr = (seen_tlr || jtag_state == test_logic_reset) && (jtag_state != capture_dr) && (jtag_state != capture_ir);
// Due to a weird bug(??) xilinx impacts goes through another "capture_ir"/"capture_dr" cycle after
// reading IR/DR which unfortunately sets IR to the read-out IR value.
// Just ignore these transactions.
if ((jtag_state == exit1_ir && len == 5 && buffer[0] == 0x17) || (jtag_state == exit1_dr && len == 4 && buffer[0] == 0x0b))
{
// printf("Ignoring Bogus jtag State movement at jtag_state %d\n", jtag_state);
}
else
{
for (int i = 0; i < len; ++i)
{
//
// Do the actual cycle.
//
int tms = !!(buffer[i/8] & (1<<(i&7)));
//
// Track the state.
//
jtag_state = jtagStep(jtag_state, tms);
}
if (jtagScan((unsigned char *) buffer, (unsigned char *) buffer + nr_bytes, (unsigned char *) result, len) < 0)
{
//fprintf(stderr, "jtagScan failed\n");
// Can't stop now, have to sent (any) answer not to hung the IMPACT
jtagError = true;
}
}
 
// Send the Ansver
iResult = send(ClientSocket, result, nr_bytes, 0 );
if (iResult == SOCKET_ERROR)
{
printf("Send Failed with Error: %d\n", WSAGetLastError());
closesocket(ClientSocket);
WSACleanup();
return -2;
}
// printf("Bytes Sent: %d\n", iSendResult);
// printf("jtag state %d\n", jtag_state);
}
while (!(seen_tlr && jtag_state == run_test_idle));
 
return jtagError ? -2 : 0;
}
 
 
// Stop Handler - switch JTAG port off and stop program
void stopHandler(int)
{
jtagClosePort();
exit(1);
}
 
 
// Print help and stop program with error
void Help(char *progName)
{
fprintf(stderr, "Bad Parameters\n");
fprintf(stderr, "\n");
fprintf(stderr, "Usage: %s [arg]\n", progName);
fprintf(stderr, "\n");
fprintf(stderr, " Where [arg] is one of: \n");
fprintf(stderr, " -d Description Fing FTDI device by Description\n");
fprintf(stderr, " -l Location Fing FTDI device by Loaction\n");
fprintf(stderr, " -s Serial_number Fing FTDI device by it's SN\n");
fprintf(stderr, " -n Number Use N-th FTDI device\n");
fprintf(stderr, " The first FTDI device is used if no argument\n");
exit(2);
}
 
 
int main(int argc, char *argv[])
{
// Variables
bool verbose = true;
 
// Program Info
printf("\n");
printf("Xilinx Virtual Cable Network Server\n");
printf("===================================\n");
printf("(c) miho " YEAR " v " VERSION "\n\n");
 
// Get program name
char *cp;
char *progName;
cp = argv[0];
progName=cp;
while (cp[0]!='\0')
{
if (cp[0]=='/' || cp[0]=='\\')
progName=cp+1;
cp++;
}
 
// Process command line params
char *findDeviceByStr = 0; // String parameter
int findDeviceBy = 0; // What does the string means
 
if (argc>1)
{
if (argc==3)
{
findDeviceByStr = argv[2];
if (strcmp(argv[1], "-d")==0)
{
findDeviceBy = OPEN_BY_DESCRIPTION;
}
else if (strcmp(argv[1], "-l")==0)
{
findDeviceBy = OPEN_BY_LOCATION;
}
else if (strcmp(argv[1], "-s")==0)
{
findDeviceBy = OPEN_BY_SERIAL_NUMBER;
}
else if (strcmp(argv[1], "-n")==0)
{
findDeviceBy = 0;
}
else
{
Help(progName);
}
}
else
{
Help(progName);
}
}
else
{
// Empty String - find device by number and number is empty
findDeviceBy = 0;
findDeviceByStr = (char *)"";
}
 
// Find, Init and Open FTDI USB Chip
if (jtagOpenPort(findDeviceBy, findDeviceByStr)<0) {
// No Device Found
fprintf(stderr, "ERROR: No Device Found\n");
return -1;
}
 
// Signal Handler (for CRTL+C)
signal(SIGINT, &stopHandler);
 
printf("Starting Network Server\n");
int iResult;
 
SOCKET ListenSocket = INVALID_SOCKET;
SOCKET ClientSocket = INVALID_SOCKET;
 
#ifdef WIN32
// Initialize Winsock
WSADATA wsaData;
iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
if (iResult != 0)
{
fprintf(stderr, "WSAStartup failed with error: %d\n", iResult);
jtagClosePort();
return -2;
}
#endif
 
// Display HostName
char sMyName[255];
gethostname(sMyName, sizeof(sMyName));
printf(" Host Name %s\n", sMyName);
 
// Display Address
#ifdef WIN32
hostent * pHostInfo;
pHostInfo = gethostbyname(sMyName);
printf(" Network Name %s\n", pHostInfo->h_name);
if (pHostInfo->h_length>0 && pHostInfo->h_length<=16)
{
printf(" Host Address ");
for (int i=0; i<pHostInfo->h_length-1; i++)
{
printf("%d.", (unsigned char)pHostInfo->h_addr_list[0][i]);
}
printf("%d\n", (unsigned char)pHostInfo->h_addr_list[0][pHostInfo->h_length-1]);
}
#else
int TempSocket;
struct ifreq ifreqs[20];
struct ifconf ic;
 
ic.ifc_len = sizeof ifreqs;
ic.ifc_req = ifreqs;
 
TempSocket = socket(AF_INET, SOCK_DGRAM, 0);
if (TempSocket < 0) {
perror("socket");
return -2;
}
 
if (ioctl(TempSocket, SIOCGIFCONF, &ic) < 0) {
perror("SIOCGIFCONF");
return -2;
}
 
for (int i = 0; i < ic.ifc_len/sizeof(struct ifreq); ++i)
{
if (ifreqs[i].ifr_name[0]!='l')// remove lo
printf(" Host Address %s: %s\n",
ifreqs[i].ifr_name,
inet_ntoa(((struct sockaddr_in*)&ifreqs[i].ifr_addr)->sin_addr));
}
#endif
 
// Create Protocol Structure
struct addrinfo hints;
memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_INET; // IP6
hints.ai_socktype = SOCK_STREAM; // Reliable two-way connection
hints.ai_protocol = IPPROTO_TCP; // Protocol TCP
hints.ai_flags = AI_PASSIVE;
 
// Resolve the server address and port (allocate structure "result")
struct addrinfo *result = NULL;
iResult = getaddrinfo(NULL, XVC_TCP_PORT, &hints, &result);
if ( iResult != 0 )
{
fprintf(stderr, "getaddrinfo failed with error: %d\n", iResult);
WSACleanup();
jtagClosePort();
return -2;
}
 
// Create a SOCKET
ListenSocket = socket(result->ai_family, result->ai_socktype, result->ai_protocol);
if (ListenSocket == INVALID_SOCKET)
{
fprintf(stderr, "socket failed with error: %d\n", WSAGetLastError());
freeaddrinfo(result);
WSACleanup();
jtagClosePort();
return -2;
}
 
// Bind the SOCKED (assign the address)
iResult = bind(ListenSocket, result->ai_addr, (int)result->ai_addrlen);
if (iResult == SOCKET_ERROR)
{
int LastError=WSAGetLastError();
fprintf(stderr, "Bind failed with error: %d\n", LastError);
#ifdef WIN32
if (LastError==WSAEADDRINUSE)
#else
if (LastError==EADDRINUSE)
#endif
fprintf(stderr, "Trying to start second instance of XVC Server?\n");
freeaddrinfo(result);
closesocket(ListenSocket);
WSACleanup();
jtagClosePort();
return -2;
}
 
if (verbose)
{
printf(" Bound Socket %s\n", XVC_TCP_PORT);
}
 
// Help for user
printf(" Set in IMPACT xilinx_xvc host=%s:%s disableversioncheck=true\n", sMyName, XVC_TCP_PORT);
 
freeaddrinfo(result);
 
// Listen SOCKET
iResult = listen(ListenSocket, SOMAXCONN);
if (iResult == SOCKET_ERROR)
{
fprintf(stderr, "listen failed with error: %d\n", WSAGetLastError());
closesocket(ListenSocket);
WSACleanup();
jtagClosePort();
return -2;
}
 
printf("\n");
 
do
{
printf(" Listen\n");
jtagSetLED(true);
 
// Set ListenSocket to non-blocking mode
// We need during waiting for Accept to detect FTDI disconnect
 
#ifdef WIN32
u_long iMode = 1;
iResult = ioctlsocket(ListenSocket, FIONBIO, &iMode);
if (iResult != NO_ERROR)
{
fprintf(stderr, "ioctlsocket failed with error: %ld\n", iResult);
WSACleanup();
jtagClosePort();
return -2;
}
#else
iResult = fcntl(ListenSocket, F_GETFL, 0);
if (iResult < 0 || fcntl(ListenSocket, F_SETFL, iResult | O_NONBLOCK) < 0)
{
fprintf(stderr, "fcntl failed with error: %d\n", errno);
jtagClosePort();
return -2;
}
#endif
 
// Accept a client SOCKET (wait for Accept)
sockaddr ClientSocetAddr;
socklen_t ClientSocetAddrLen = sizeof(sockaddr);
do
{
// Try Accept (non-blocking)
ClientSocket = accept(ListenSocket, &ClientSocetAddr, &ClientSocetAddrLen);
if (ClientSocket == INVALID_SOCKET)
{
// Accept Error
#ifdef WIN32
if (WSAGetLastError() != WSAEWOULDBLOCK)
#else
if (WSAGetLastError() != EAGAIN && WSAGetLastError() != EWOULDBLOCK)
#endif
{
fprintf(stderr, "accept failed with error: %d\n", WSAGetLastError());
closesocket(ListenSocket);
WSACleanup();
jtagClosePort();
return -2;
}
// Not yet Accepted
{
// Check FTDI
if (!CheckCable())
{
fprintf(stderr, "XVC Cable unexpectedly disconnected\n");
closesocket(ListenSocket);
WSACleanup();
jtagClosePort();
return -2;
}
// Sleep some time (do not eat CPU time for nothong)
#ifdef WIN32
Sleep(100); //ms
#else
usleep(100000); //us
#endif
}
}
}
while (ClientSocket == INVALID_SOCKET);
 
// Set (Accepted) Socket to blocking mode
 
#ifdef WIN32
iMode = 0;
iResult = ioctlsocket(ClientSocket, FIONBIO, &iMode);
if (iResult != NO_ERROR)
{
fprintf(stderr, "ioctlsocket failed with error: %ld\n", iResult);
WSACleanup();
jtagClosePort();
return -2;
}
#else
iResult = fcntl(ListenSocket, F_GETFL, 0);
if (iResult < 0 || fcntl(ListenSocket, F_SETFL, iResult & ~O_NONBLOCK) < 0)
{
fprintf(stderr, "fcntl failed with error: %d\n", errno);
jtagClosePort();
return -2;
}
#endif
 
// Print Accepted + Address
printf(" Accepted ");
jtagSetLED(false);
for (int i=2; i<2+4-1; i++)
{
printf("%d.", (unsigned char)ClientSocetAddr.sa_data[i]);
}
printf("%d:%d\n", (unsigned char)ClientSocetAddr.sa_data[2+4-1], (unsigned char)ClientSocetAddr.sa_data[0]*256+(unsigned char)ClientSocetAddr.sa_data[1]);
 
// Process Data until the peer shuts down the connection
int Cnt = 0;
printf(" Handle Data ");
do
{
iResult = handleData(ClientSocket);
if (iResult>=0)
{
printf(".");
fflush(stdout);
Cnt++;
if (Cnt>40)
{
Cnt = 0;
printf("\n ");
}
}
}
while (iResult >= 0);
 
// Connection Closed by peer
if (iResult==-1)
{
// JTAG port
jtagSetIdle();
}
 
// Error - shutdown the connection
if (iResult==-2)
{
fprintf(stderr, " Disconnect\n");
#ifdef WIN32
iResult = shutdown(ClientSocket, SD_SEND);
#else
iResult = shutdown(ClientSocket, SHUT_WR);
#endif
if (iResult == SOCKET_ERROR)
{
fprintf(stderr, "shutdown failed with error: %d\n", WSAGetLastError());
}
iResult=-2; // Error
}
 
// cleanup
closesocket(ClientSocket);
 
}
// If not Error Listen Again
while (iResult!=-2);
 
// cleanup
closesocket(ListenSocket);
WSACleanup();
jtagClosePort();
 
return 1;
}
/Modules/CPLD_FPGA/XILINX_XVC/XVC_SOFTWARE/XVC_1x/mlab_xvcd.h
0,0 → 1,37
// Program Version
// ---------------
 
#define VERSION "1.07" // Program version
#define YEAR "2013" // Year of the program
 
// JTAG Port Definitions
// ---------------------
 
// Use FTDI as Port Interface
#include "mlab_xvcd_port_FTDI.h"
 
// JTAG Port Pin Masks (look at mlab_xvcd_port_FTDI.h for pin names)
#define PORT_TCK ( FTDI_TXD ) // JTAG TCK (output)
#define PORT_TDI ( FTDI_RXD ) // JTAG TDI (output)
#define PORT_TDO ( FTDI_RTS ) // JTAG TDO (input)
#define PORT_TMS ( FTDI_CTS ) // JTAG TMS (output)
#define PORT_LED ( FTDI_RI | CBUS3 ) // Activituy LED (output)
 
// FTDI Settings
#define BAUD_RATE 1000000 // Baoud Rate (mult it by 16)
#define USB_LATENCY 1 // FTDI USB Latency Timer in ms (FT232R 0, FT2232 1)
 
// Performance Data (configuring XC3S50AN)
// ----------------
// BAUD_RATE USB_LATENCY --> FT220X FT232R
// 1000000 1 3s 2s
// 10000000 1 3s
// 1000000 0 2.8s
 
 
// Network Definitions
// -------------------
 
// TCP/IP
#define XVC_TCP_PORT "2542" // TCP Port Number to Listen to (string!)
#define XVC_JTAG_LEN (1024*8) // JTAG String Length in bits
/Modules/CPLD_FPGA/XILINX_XVC/XVC_SOFTWARE/XVC_1x/mlab_xvcd_port_FTDI.cpp
0,0 → 1,504
// Include FTDI library
#include "mlab_xvcd_port_FTDI.h"
 
#ifdef WIN32
 
#include <windows.h> // Windows Console Application (Sleep)
 
#else
 
#include <unistd.h> // sleep
 
#endif
 
// JTAG Output Pin Mask
#define IO_OUTPUT_MASK (PORT_TCK|PORT_TDI|PORT_TMS|PORT_LED) // Mask for all Output Pins
 
 
// Global Variables
FT_HANDLE ftHandle; // Handle for FTDI device
bool ftHandleValid = false; // Valid Handle
unsigned char PinStatus = 0; // Status of DBUS pins
unsigned char LedMask = 0; // LED Mask for DBUS data transfer
 
 
// Convert string to int (both decimal and hex string)
int atoiEx(char *s)
{
if (s[0]=='0' && (s[1]=='x' || s[1]=='X'))
{
// Hex Value
int i;
#pragma warning(disable: 4996) // Disable MS warning about scanf
sscanf(s, "%x", &i);
return i;
}
else
{
// Decimal Value
return atoi(s);
}
}
 
 
// Print FTDI Pin Names (from mask value)
void jtagPrintPinNames(int pinMask)
{
// 16bit (MSB is CBUS, LSB is DBUS)
int bit=15;
bool useDelimiter=false;
 
do
{
int mask = 1 << bit;
if (pinMask & mask)
{
if (useDelimiter)
{
printf("+");
}
if (bit > 7)
{
printf("CBUS%c", '0' + bit - 8);
}
else
{
printf("DBUS%c", '0' + bit);
switch (mask)
{
case FTDI_TXD: printf("(TXD)"); break;
case FTDI_RXD: printf("(RXD)"); break;
case FTDI_RTS: printf("(RTS)"); break;
case FTDI_CTS: printf("(CTS)"); break;
case FTDI_DTR: printf("(DTR)"); break;
case FTDI_DSR: printf("(DSR)"); break;
case FTDI_DCD: printf("(DCD)"); break;
case FTDI_RI: printf("(RI) "); break;
}
}
useDelimiter = true;
}
}
while (bit-- > 0);
}
 
 
// Verify pin usage
void jtagCheckPinConfig()
{
// Check CBUS usage
if ( PORT_TCK > 0x00FF )
fprintf(stderr, "\nFTDI: INTERNAL ERROR: TCK can't use CBUS signal"), exit(2);
if ( PORT_TCK == 0 )
fprintf(stderr, "\nFTDI: INTERNAL ERROR: TCK not defined"), exit(2);
if ( PORT_TDI > 0x00FF )
fprintf(stderr, "\nFTDI: INTERNAL ERROR: TDI can't use CBUS signal"), exit(2);
if ( PORT_TDI == 0 )
fprintf(stderr, "\nFTDI: INTERNAL ERROR: TDI not defined"), exit(2);
 
if ( PORT_TDO > 0x00FF )
fprintf(stderr, "\nFTDI: INTERNAL ERROR: TDO can't use CBUS signal"), exit(2);
if ( PORT_TDO == 0 )
fprintf(stderr, "\nFTDI: INTERNAL ERROR: TDO not defined"), exit(2);
 
if ( PORT_TMS > 0x00FF)
fprintf(stderr, "\nFTDI: INTERNAL ERROR: TMS can't use CBUS signal"), exit(2);
if ( PORT_TMS == 0 )
fprintf(stderr, "\nFTDI: INTERNAL ERROR: TMS not defined"), exit(2);
 
if ( PORT_LED > 0x0FFF)
fprintf(stderr, "\nFTDI: INTERNAL ERROR: LED can't use CBUS signal > 3"), exit(2);
}
 
 
// Print JTAG Pin Assignment
void jtagPrintPinConfig()
{
// Print pin masks human readable
printf(" JTAG Port Pins "); printf("TCK->"); jtagPrintPinNames(PORT_TCK); printf("\n");
printf(" "); printf("TDI->"); jtagPrintPinNames(PORT_TDI); printf("\n");
printf(" "); printf("TDO->"); jtagPrintPinNames(PORT_TDO); printf("\n");
printf(" "); printf("TMS->"); jtagPrintPinNames(PORT_TMS); printf("\n");
printf(" "); printf("LED->"); jtagPrintPinNames(PORT_LED); printf("\n");
}
 
 
// Connect to FTDI driver
int jtagOpenPort(int findDeviceBy, char *findDeviceByStr)
{
// Enumerate FTDI Devices
// ----------------------
 
FT_STATUS ftStatus;
 
// Print Library Version
printf("FTDI Connect\n");
DWORD dwLibraryVer;
ftStatus = FT_GetLibraryVersion(&dwLibraryVer);
if (ftStatus == FT_OK)
printf(" Library Version 0x%x\n", dwLibraryVer);
else
fprintf(stderr, "\nFTDI: Error Reading Library Version\n");
 
// Create Device Information List
DWORD numDevs = 0;
ftStatus = FT_CreateDeviceInfoList(&numDevs);
if (ftStatus == FT_OK)
printf(" Devices Found %d\n", numDevs);
else
printf(" No FTDI Device Found\n");
 
if (numDevs==0)
return -1;
 
// Print Config Info
jtagPrintPinConfig();
jtagCheckPinConfig();
printf("\n");
 
// List All FTDI Devices
FT_HANDLE ftHandleTemp;
DWORD Flags;
DWORD ID;
DWORD Type;
DWORD LocId;
char SerialNumber[16];
char Description[64];
for (DWORD i=0; i<numDevs; i++)
{
ftStatus = FT_GetDeviceInfoDetail(i, &Flags, &Type, &ID, &LocId, SerialNumber, Description, &ftHandleTemp);
if (ftStatus == FT_OK)
{
printf("Device %d\n", i);
if (Flags & FT_FLAGS_OPENED)
{
printf(" Description Device is used by another process\n");
}
else
{
printf(" Description \"%s\"\n", Description);
printf(" SerialNumber \"%s\"\n", SerialNumber);
//printf(" Flags 0x%x\n", Flags);
//printf(" Type 0x%x\n", Type);
//printf(" ID 0x%x\n", ID);
printf(" Location 0x%x\n", LocId);
}
printf("\n");
}
}
 
// Select one Device and Open It
unsigned int selectedDeviceIndex = 0;
if (findDeviceBy==0)
{
// Select by Device Number
selectedDeviceIndex = atoiEx(findDeviceByStr);
if (numDevs<=selectedDeviceIndex)
{
fprintf(stderr, " There is no Device Number %d\n\n", selectedDeviceIndex);
return -1;
}
// Open device
ftStatus = FT_Open(selectedDeviceIndex, &ftHandle);
}
else
{
// Select by Description / Serial Number / Location
if (findDeviceBy==FT_OPEN_BY_LOCATION)
{
// Open device (location is number, not string)
int findDeviceByInt = atoiEx(findDeviceByStr);
ftStatus = FT_OpenEx((void*)findDeviceByInt, findDeviceBy, &ftHandle);
}
else
{
ftStatus = FT_OpenEx(findDeviceByStr, findDeviceBy, &ftHandle);
}
}
 
// Check Status
if (ftStatus == FT_OK)
{
ftHandleValid = true;
//printf(" FTDI Device Opened\n");
}
else
{
fprintf(stderr, " Can't Open FTDI Device (error code %d)\n\n", ftStatus);
return -1;
}
 
// Selected Device
ftStatus = FT_GetDeviceInfo(ftHandle, &Type, &ID, SerialNumber, Description, 0);
if (ftStatus == FT_OK)
{
printf("Selected Device\n");
printf(" Description \"%s\"\n", Description);
printf(" SerialNumber \"%s\"\n", SerialNumber);
//printf(" Type 0x%x\n", Type);
//printf(" ID 0x%x\n", ID);
}
 
// Get Driver Version
DWORD dwDriverVer;
ftStatus = FT_GetDriverVersion(ftHandle, &dwDriverVer);
if (ftStatus == FT_OK)
{
printf(" Device Driver Ver 0x%x\n", dwDriverVer);
}
else
{
fprintf(stderr, "FTDI: Error Reading Driver Version\n");
}
 
// Set BitBang Mode
ftStatus = FT_SetBitMode(ftHandle, (UCHAR)(0xFF & IO_OUTPUT_MASK), FT_BITMODE_SYNC_BITBANG); //FT_BITMODE_SYNC_BITBANG / FT_BITMODE_ASYNC_BITBANG
if (ftStatus == FT_OK)
{
// printf("Set BitBang Mode\n");
}
else
{
fprintf(stderr, "FTDI: Set BitBang Mode Failed %d\n", ftStatus);
}
 
// Set Baud Rate
ftStatus = FT_SetBaudRate(ftHandle, BAUD_RATE);
if (ftStatus == FT_OK)
{
printf(" Baud Rate %d\n", BAUD_RATE);
}
else
{
fprintf(stderr, "FTDI: Set Baud Rate Failed %d\n", ftStatus);
}
 
ftStatus = FT_Purge(ftHandle, FT_PURGE_RX | FT_PURGE_TX); // Purge both Rx and Tx buffers
if (ftStatus == FT_OK)
{
// printf("Purge \n");
}
else
{
fprintf(stderr, "FTDI: FT_Purge failed %d\n", ftStatus);
}
 
ftStatus = FT_SetLatencyTimer(ftHandle, USB_LATENCY); // Latency in ms
if (ftStatus == FT_OK)
{
printf(" USB Latency %d\n", USB_LATENCY);
}
else
{
fprintf(stderr, "FTDI: Set USB Latency Timer Failed %d\n", ftStatus);
}
 
// Fix (without this delay the next FT_Read hang for ever)
// My Linux i5 notebook requires at least 2500us
#ifdef WIN32
Sleep(10); //ms
#else
usleep(10000); //us
#endif
 
printf("\n");
return 0;
}
 
 
// Enable or Disable Activity LED
void jtagSetLED(bool LedEnable)
{
// DBUS Connected LED (BitBang Mode)
LedMask = LedEnable ? (0xFF & PORT_LED) : 0; // Set mask for jtagScan function
if (PORT_LED & 0xFF)
{
// Set / Reset LED Pin
DWORD BytesWritten;
DWORD BytesReceived;
unsigned char DataOut = LedMask | (PinStatus & ~PORT_LED); // Preserve PinStatus
unsigned char Dummy;
FT_Write(ftHandle, &DataOut, 1, &BytesWritten ); // Send 1 byte
FT_Read (ftHandle, &Dummy, 1, &BytesReceived); // Read 1 byte
}
 
// CBUS Connected LED (BitBang Mode) 1 and 0 state of the port
const unsigned char On = ( ((PORT_LED & 0x0F00) >> 4) | ((PORT_LED & 0x0F00) >> 8) );
const unsigned char Off = ( ((PORT_LED & 0x0F00) >> 4) );
 
if (On)
{
// Set / Reset LED Pin
FT_SetBitMode(ftHandle, LedEnable ? On : Off, FT_BITMODE_CBUS_BITBANG);
 
// Return to used Mode
FT_SetBitMode(ftHandle, (UCHAR)(0xFF & IO_OUTPUT_MASK), FT_BITMODE_SYNC_BITBANG); //FT_BITMODE_SYNC_BITBANG / FT_BITMODE_ASYNC_BITBANG
}
}
 
 
// Set port to Idle state
void jtagSetIdle()
{
char b = 0; // Idle State for JTAG pins
DWORD BytesWritten;
DWORD BytesReceived;
 
// Write (idle state of pins)
FT_Write(ftHandle, &b, 1, &BytesWritten);
// Read (not to left data in input fifo)
FT_Read(ftHandle, &b, 1, &BytesReceived);
}
 
 
// Close FTDI connection
int jtagClosePort()
{
if (ftHandleValid)
{
jtagSetLED(false);
// Switch Off the Outputs
FT_Purge(ftHandle, FT_PURGE_RX | FT_PURGE_TX); // Purge both Rx and Tx buffers
FT_SetBitMode(ftHandle, 0, FT_BITMODE_SYNC_BITBANG);
// Close FTDI Lib
FT_Close(ftHandle);
ftHandleValid = false;
}
return 0;
}
 
 
// Send data to JTAG port and bring returned data
int jtagScan(const unsigned char *TMS, const unsigned char *TDI, unsigned char *TDO, unsigned int bits)
{
FT_STATUS ftStatus;
DWORD BytesWritten;
DWORD BytesReceived;
unsigned int r, t;
 
// Decompose TDI and TMS byte array to raw bitstream
//(1 TDI bit + 1 TMS bit --> 1 byte + 1 byte with TCK)
unsigned char buffer[16384];
if (bits > sizeof(buffer)/2)
{
fprintf(stderr, "\n FTDI: Out of Buffer Space for %d bits\n", bits);
return -1;
}
 
// Switch LED On
jtagSetLED(true);
 
// Prepare transmit data to buffer
for (unsigned int i = 0; i < bits; ++i)
{
unsigned char v = 0 | LedMask; // LED On / Off (on DBUS)
if (TMS[i/8] & (1<<(i&7)))
{
v |= PORT_TMS;
// printf("T");
}
else
{
// printf("t");
}
if (TDI[i/8] & (1<<(i&7)))
{
v |= PORT_TDI;
// printf("|");
}
else
{
// printf(".");
}
buffer[i * 2 + 0] = v;
buffer[i * 2 + 1] = v | PORT_TCK;
}
PinStatus = buffer[bits*2-1];
// printf("\n");
 
// Send data to FTDI
r = 0;
while (r < bits * 2)
{
t = bits * 2 - r;
if (t > FTDI_MAX_WRITESIZE)
{
t = FTDI_MAX_WRITESIZE;
}
// printf("writing %d bytes to FTDI\n", t);
ftStatus = FT_Write(ftHandle, buffer+r, t, &BytesWritten);
if (ftStatus != FT_OK)
{
fprintf(stderr, "\n FTDI: Error Writing\n");
return -2;
}
 
unsigned int i = 0;
while (i < t)
{
FT_SetTimeouts(ftHandle, 5000, 0); // timeout 5 sec
ftStatus = FT_Read(ftHandle, buffer+r+i, t-i, &BytesReceived);
if (ftStatus == FT_OK)
{
if (BytesReceived == t-i)
{
// FT_Read OK
// printf("Read from FTDI %d bytes", BytesReceived);
}
else
{
// FT_Read Timeout
fprintf(stderr, "\n FTDI: Read Timeout\n");
return -2;
}
}
else
{
fprintf(stderr, "\n FTDI: Error Reading\n");// Error
return -2;
}
 
i += BytesReceived;
}
r += t;
}
 
// Pack TDO bitstream from receive buffer to byte array
memset(TDO, 0, (bits + 7) / 8);
for (unsigned int i = 0; i < bits; ++i)
{
if (buffer[i * 2 + 1] & PORT_TDO)
{
TDO[i/8] |= 1 << (i&7);
// printf("H");
}
else
{
// printf("L");
}
}
// printf("\n");
// printf(" Bits %d ", bit_counter);
 
// Switch LED Off
jtagSetLED(false);
 
return 0;
}
 
// Check if Cable is still connected and accesible
// True is o.k.
bool CheckCable()
{
FT_STATUS ftStatus;
 
DWORD lpdwAmountInRxQueue, lpdwAmountInTxQueue, lpdwEventStatus;
 
ftStatus = FT_GetStatus(ftHandle, &lpdwAmountInRxQueue, &lpdwAmountInTxQueue, &lpdwEventStatus);
return (ftStatus==FT_OK);
}
/Modules/CPLD_FPGA/XILINX_XVC/XVC_SOFTWARE/XVC_1x/!____!.txt
0,0 → 1,20
FTDI D2XX library (for Windows), use latest version from http://www.ftdichip.com/Drivers/D2XX.htm
 
lib_win\ftd2xx.h <-- CDM v2.08.28 Certified\ftd2xx.h
lib_win\ftd2xx.lib <-- CDM v2.08.28 Certified\i386\ftd2xx.lib
 
FTDI D2XX library (for Linux), use latest version from http://www.ftdichip.com/Drivers/D2XX.htm
 
lib_linux_i386\WinTypes.h <-- libftd2xx1.1.12.tar.gz/release/WinTypes.h
lib_linux_i386\ftd2xx.h <-- libftd2xx1.1.12.tar.gz/release/examples/ftd2xx.h
lib_linux_i386\libftd2xx.a <-- libftd2xx1.1.12.tar.gz/release/build/i386/libftd2xx.a
 
Main program, pin configuration is here in .h file
 
mlab_xvcd.h
mlab_xvcd.cpp
 
Hardware layer, uses FTDI D2XX library
 
mlab_xvcd_port_FTDI.h
mlab_xvcd_port_FTDI.cpp
/Modules/CPLD_FPGA/XILINX_XVC/XVC_SOFTWARE/XVC_1x/lib_win32/ftd2xx.h
0,0 → 1,1341
/*++
 
Copyright © 2001-2011 Future Technology Devices International Limited
 
THIS SOFTWARE IS PROVIDED BY FUTURE TECHNOLOGY DEVICES INTERNATIONAL LIMITED "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
FUTURE TECHNOLOGY DEVICES INTERNATIONAL LIMITED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
OF SUBSTITUTE GOODS OR SERVICES LOSS OF USE, DATA, OR PROFITS OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
FTDI DRIVERS MAY BE USED ONLY IN CONJUNCTION WITH PRODUCTS BASED ON FTDI PARTS.
 
FTDI DRIVERS MAY BE DISTRIBUTED IN ANY FORM AS LONG AS LICENSE INFORMATION IS NOT MODIFIED.
 
IF A CUSTOM VENDOR ID AND/OR PRODUCT ID OR DESCRIPTION STRING ARE USED, IT IS THE
RESPONSIBILITY OF THE PRODUCT MANUFACTURER TO MAINTAIN ANY CHANGES AND SUBSEQUENT WHQL
RE-CERTIFICATION AS A RESULT OF MAKING THESE CHANGES.
 
 
Module Name:
 
ftd2xx.h
 
Abstract:
 
Native USB device driver for FTDI FT232x, FT245x, FT2232x and FT4232x devices
FTD2XX library definitions
 
Environment:
 
kernel & user mode
 
 
--*/
 
 
#ifndef FTD2XX_H
#define FTD2XX_H
 
// The following ifdef block is the standard way of creating macros
// which make exporting from a DLL simpler. All files within this DLL
// are compiled with the FTD2XX_EXPORTS symbol defined on the command line.
// This symbol should not be defined on any project that uses this DLL.
// This way any other project whose source files include this file see
// FTD2XX_API functions as being imported from a DLL, whereas this DLL
// sees symbols defined with this macro as being exported.
 
#ifdef FTD2XX_EXPORTS
#define FTD2XX_API __declspec(dllexport)
#else
#define FTD2XX_API __declspec(dllimport)
#endif
 
 
typedef PVOID FT_HANDLE;
typedef ULONG FT_STATUS;
 
//
// Device status
//
enum {
FT_OK,
FT_INVALID_HANDLE,
FT_DEVICE_NOT_FOUND,
FT_DEVICE_NOT_OPENED,
FT_IO_ERROR,
FT_INSUFFICIENT_RESOURCES,
FT_INVALID_PARAMETER,
FT_INVALID_BAUD_RATE,
 
FT_DEVICE_NOT_OPENED_FOR_ERASE,
FT_DEVICE_NOT_OPENED_FOR_WRITE,
FT_FAILED_TO_WRITE_DEVICE,
FT_EEPROM_READ_FAILED,
FT_EEPROM_WRITE_FAILED,
FT_EEPROM_ERASE_FAILED,
FT_EEPROM_NOT_PRESENT,
FT_EEPROM_NOT_PROGRAMMED,
FT_INVALID_ARGS,
FT_NOT_SUPPORTED,
FT_OTHER_ERROR,
FT_DEVICE_LIST_NOT_READY,
};
 
 
#define FT_SUCCESS(status) ((status) == FT_OK)
 
//
// FT_OpenEx Flags
//
 
#define FT_OPEN_BY_SERIAL_NUMBER 1
#define FT_OPEN_BY_DESCRIPTION 2
#define FT_OPEN_BY_LOCATION 4
 
//
// FT_ListDevices Flags (used in conjunction with FT_OpenEx Flags
//
 
#define FT_LIST_NUMBER_ONLY 0x80000000
#define FT_LIST_BY_INDEX 0x40000000
#define FT_LIST_ALL 0x20000000
 
#define FT_LIST_MASK (FT_LIST_NUMBER_ONLY|FT_LIST_BY_INDEX|FT_LIST_ALL)
 
//
// Baud Rates
//
 
#define FT_BAUD_300 300
#define FT_BAUD_600 600
#define FT_BAUD_1200 1200
#define FT_BAUD_2400 2400
#define FT_BAUD_4800 4800
#define FT_BAUD_9600 9600
#define FT_BAUD_14400 14400
#define FT_BAUD_19200 19200
#define FT_BAUD_38400 38400
#define FT_BAUD_57600 57600
#define FT_BAUD_115200 115200
#define FT_BAUD_230400 230400
#define FT_BAUD_460800 460800
#define FT_BAUD_921600 921600
 
//
// Word Lengths
//
 
#define FT_BITS_8 (UCHAR) 8
#define FT_BITS_7 (UCHAR) 7
 
//
// Stop Bits
//
 
#define FT_STOP_BITS_1 (UCHAR) 0
#define FT_STOP_BITS_2 (UCHAR) 2
 
//
// Parity
//
 
#define FT_PARITY_NONE (UCHAR) 0
#define FT_PARITY_ODD (UCHAR) 1
#define FT_PARITY_EVEN (UCHAR) 2
#define FT_PARITY_MARK (UCHAR) 3
#define FT_PARITY_SPACE (UCHAR) 4
 
//
// Flow Control
//
 
#define FT_FLOW_NONE 0x0000
#define FT_FLOW_RTS_CTS 0x0100
#define FT_FLOW_DTR_DSR 0x0200
#define FT_FLOW_XON_XOFF 0x0400
 
//
// Purge rx and tx buffers
//
#define FT_PURGE_RX 1
#define FT_PURGE_TX 2
 
//
// Events
//
 
typedef void (*PFT_EVENT_HANDLER)(DWORD,DWORD);
 
#define FT_EVENT_RXCHAR 1
#define FT_EVENT_MODEM_STATUS 2
#define FT_EVENT_LINE_STATUS 4
 
//
// Timeouts
//
 
#define FT_DEFAULT_RX_TIMEOUT 300
#define FT_DEFAULT_TX_TIMEOUT 300
 
//
// Device types
//
 
typedef ULONG FT_DEVICE;
 
enum {
FT_DEVICE_BM,
FT_DEVICE_AM,
FT_DEVICE_100AX,
FT_DEVICE_UNKNOWN,
FT_DEVICE_2232C,
FT_DEVICE_232R,
FT_DEVICE_2232H,
FT_DEVICE_4232H,
FT_DEVICE_232H,
FT_DEVICE_X_SERIES
};
 
//
// Bit Modes
//
 
#define FT_BITMODE_RESET 0x00
#define FT_BITMODE_ASYNC_BITBANG 0x01
#define FT_BITMODE_MPSSE 0x02
#define FT_BITMODE_SYNC_BITBANG 0x04
#define FT_BITMODE_MCU_HOST 0x08
#define FT_BITMODE_FAST_SERIAL 0x10
#define FT_BITMODE_CBUS_BITBANG 0x20
#define FT_BITMODE_SYNC_FIFO 0x40
 
//
// FT232R CBUS Options EEPROM values
//
 
#define FT_232R_CBUS_TXDEN 0x00 // Tx Data Enable
#define FT_232R_CBUS_PWRON 0x01 // Power On
#define FT_232R_CBUS_RXLED 0x02 // Rx LED
#define FT_232R_CBUS_TXLED 0x03 // Tx LED
#define FT_232R_CBUS_TXRXLED 0x04 // Tx and Rx LED
#define FT_232R_CBUS_SLEEP 0x05 // Sleep
#define FT_232R_CBUS_CLK48 0x06 // 48MHz clock
#define FT_232R_CBUS_CLK24 0x07 // 24MHz clock
#define FT_232R_CBUS_CLK12 0x08 // 12MHz clock
#define FT_232R_CBUS_CLK6 0x09 // 6MHz clock
#define FT_232R_CBUS_IOMODE 0x0A // IO Mode for CBUS bit-bang
#define FT_232R_CBUS_BITBANG_WR 0x0B // Bit-bang write strobe
#define FT_232R_CBUS_BITBANG_RD 0x0C // Bit-bang read strobe
 
//
// FT232H CBUS Options EEPROM values
//
 
#define FT_232H_CBUS_TRISTATE 0x00 // Tristate
#define FT_232H_CBUS_TXLED 0x01 // Tx LED
#define FT_232H_CBUS_RXLED 0x02 // Rx LED
#define FT_232H_CBUS_TXRXLED 0x03 // Tx and Rx LED
#define FT_232H_CBUS_PWREN 0x04 // Power Enable
#define FT_232H_CBUS_SLEEP 0x05 // Sleep
#define FT_232H_CBUS_DRIVE_0 0x06 // Drive pin to logic 0
#define FT_232H_CBUS_DRIVE_1 0x07 // Drive pin to logic 1
#define FT_232H_CBUS_IOMODE 0x08 // IO Mode for CBUS bit-bang
#define FT_232H_CBUS_TXDEN 0x09 // Tx Data Enable
#define FT_232H_CBUS_CLK30 0x0A // 30MHz clock
#define FT_232H_CBUS_CLK15 0x0B // 15MHz clock
#define FT_232H_CBUS_CLK7_5 0x0C // 7.5MHz clock
 
//
// FT X Series CBUS Options EEPROM values
//
 
#define FT_X_SERIES_CBUS_TRISTATE 0x00 // Tristate
#define FT_X_SERIES_CBUS_RXLED 0x01 // Tx LED
#define FT_X_SERIES_CBUS_TXLED 0x02 // Rx LED
#define FT_X_SERIES_CBUS_TXRXLED 0x03 // Tx and Rx LED
#define FT_X_SERIES_CBUS_PWREN 0x04 // Power Enable
#define FT_X_SERIES_CBUS_SLEEP 0x05 // Sleep
#define FT_X_SERIES_CBUS_DRIVE_0 0x06 // Drive pin to logic 0
#define FT_X_SERIES_CBUS_DRIVE_1 0x07 // Drive pin to logic 1
#define FT_X_SERIES_CBUS_IOMODE 0x08 // IO Mode for CBUS bit-bang
#define FT_X_SERIES_CBUS_TXDEN 0x09 // Tx Data Enable
#define FT_X_SERIES_CBUS_CLK24 0x0A // 24MHz clock
#define FT_X_SERIES_CBUS_CLK12 0x0B // 12MHz clock
#define FT_X_SERIES_CBUS_CLK6 0x0C // 6MHz clock
#define FT_X_SERIES_CBUS_BCD_CHARGER 0x0D // Battery charger detected
#define FT_X_SERIES_CBUS_BCD_CHARGER_N 0x0E // Battery charger detected inverted
#define FT_X_SERIES_CBUS_I2C_TXE 0x0F // I2C Tx empty
#define FT_X_SERIES_CBUS_I2C_RXF 0x10 // I2C Rx full
#define FT_X_SERIES_CBUS_VBUS_SENSE 0x11 // Detect VBUS
#define FT_X_SERIES_CBUS_BITBANG_WR 0x12 // Bit-bang write strobe
#define FT_X_SERIES_CBUS_BITBANG_RD 0x13 // Bit-bang read strobe
#define FT_X_SERIES_CBUS_TIMESTAMP 0x14 // Toggle output when a USB SOF token is received
#define FT_X_SERIES_CBUS_KEEP_AWAKE 0x15 //
 
 
// Driver types
#define FT_DRIVER_TYPE_D2XX 0
#define FT_DRIVER_TYPE_VCP 1
 
 
 
#ifdef __cplusplus
extern "C" {
#endif
 
 
FTD2XX_API
FT_STATUS WINAPI FT_Open(
int deviceNumber,
FT_HANDLE *pHandle
);
 
FTD2XX_API
FT_STATUS WINAPI FT_OpenEx(
PVOID pArg1,
DWORD Flags,
FT_HANDLE *pHandle
);
 
FTD2XX_API
FT_STATUS WINAPI FT_ListDevices(
PVOID pArg1,
PVOID pArg2,
DWORD Flags
);
 
FTD2XX_API
FT_STATUS WINAPI FT_Close(
FT_HANDLE ftHandle
);
 
FTD2XX_API
FT_STATUS WINAPI FT_Read(
FT_HANDLE ftHandle,
LPVOID lpBuffer,
DWORD dwBytesToRead,
LPDWORD lpBytesReturned
);
 
FTD2XX_API
FT_STATUS WINAPI FT_Write(
FT_HANDLE ftHandle,
LPVOID lpBuffer,
DWORD dwBytesToWrite,
LPDWORD lpBytesWritten
);
 
FTD2XX_API
FT_STATUS WINAPI FT_IoCtl(
FT_HANDLE ftHandle,
DWORD dwIoControlCode,
LPVOID lpInBuf,
DWORD nInBufSize,
LPVOID lpOutBuf,
DWORD nOutBufSize,
LPDWORD lpBytesReturned,
LPOVERLAPPED lpOverlapped
);
 
FTD2XX_API
FT_STATUS WINAPI FT_SetBaudRate(
FT_HANDLE ftHandle,
ULONG BaudRate
);
 
FTD2XX_API
FT_STATUS WINAPI FT_SetDivisor(
FT_HANDLE ftHandle,
USHORT Divisor
);
 
FTD2XX_API
FT_STATUS WINAPI FT_SetDataCharacteristics(
FT_HANDLE ftHandle,
UCHAR WordLength,
UCHAR StopBits,
UCHAR Parity
);
 
FTD2XX_API
FT_STATUS WINAPI FT_SetFlowControl(
FT_HANDLE ftHandle,
USHORT FlowControl,
UCHAR XonChar,
UCHAR XoffChar
);
 
FTD2XX_API
FT_STATUS WINAPI FT_ResetDevice(
FT_HANDLE ftHandle
);
 
FTD2XX_API
FT_STATUS WINAPI FT_SetDtr(
FT_HANDLE ftHandle
);
 
FTD2XX_API
FT_STATUS WINAPI FT_ClrDtr(
FT_HANDLE ftHandle
);
 
FTD2XX_API
FT_STATUS WINAPI FT_SetRts(
FT_HANDLE ftHandle
);
 
FTD2XX_API
FT_STATUS WINAPI FT_ClrRts(
FT_HANDLE ftHandle
);
 
FTD2XX_API
FT_STATUS WINAPI FT_GetModemStatus(
FT_HANDLE ftHandle,
ULONG *pModemStatus
);
 
FTD2XX_API
FT_STATUS WINAPI FT_SetChars(
FT_HANDLE ftHandle,
UCHAR EventChar,
UCHAR EventCharEnabled,
UCHAR ErrorChar,
UCHAR ErrorCharEnabled
);
 
FTD2XX_API
FT_STATUS WINAPI FT_Purge(
FT_HANDLE ftHandle,
ULONG Mask
);
 
FTD2XX_API
FT_STATUS WINAPI FT_SetTimeouts(
FT_HANDLE ftHandle,
ULONG ReadTimeout,
ULONG WriteTimeout
);
 
FTD2XX_API
FT_STATUS WINAPI FT_GetQueueStatus(
FT_HANDLE ftHandle,
DWORD *dwRxBytes
);
 
FTD2XX_API
FT_STATUS WINAPI FT_SetEventNotification(
FT_HANDLE ftHandle,
DWORD Mask,
PVOID Param
);
 
FTD2XX_API
FT_STATUS WINAPI FT_GetStatus(
FT_HANDLE ftHandle,
DWORD *dwRxBytes,
DWORD *dwTxBytes,
DWORD *dwEventDWord
);
 
FTD2XX_API
FT_STATUS WINAPI FT_SetBreakOn(
FT_HANDLE ftHandle
);
 
FTD2XX_API
FT_STATUS WINAPI FT_SetBreakOff(
FT_HANDLE ftHandle
);
 
FTD2XX_API
FT_STATUS WINAPI FT_SetWaitMask(
FT_HANDLE ftHandle,
DWORD Mask
);
 
FTD2XX_API
FT_STATUS WINAPI FT_WaitOnMask(
FT_HANDLE ftHandle,
DWORD *Mask
);
 
FTD2XX_API
FT_STATUS WINAPI FT_GetEventStatus(
FT_HANDLE ftHandle,
DWORD *dwEventDWord
);
 
FTD2XX_API
FT_STATUS WINAPI FT_ReadEE(
FT_HANDLE ftHandle,
DWORD dwWordOffset,
LPWORD lpwValue
);
 
FTD2XX_API
FT_STATUS WINAPI FT_WriteEE(
FT_HANDLE ftHandle,
DWORD dwWordOffset,
WORD wValue
);
 
FTD2XX_API
FT_STATUS WINAPI FT_EraseEE(
FT_HANDLE ftHandle
);
 
//
// structure to hold program data for FT_EE_Program, FT_EE_ProgramEx, FT_EE_Read
// and FT_EE_ReadEx functions
//
typedef struct ft_program_data {
 
DWORD Signature1; // Header - must be 0x00000000
DWORD Signature2; // Header - must be 0xffffffff
DWORD Version; // Header - FT_PROGRAM_DATA version
// 0 = original
// 1 = FT2232 extensions
// 2 = FT232R extensions
// 3 = FT2232H extensions
// 4 = FT4232H extensions
// 5 = FT232H extensions
 
WORD VendorId; // 0x0403
WORD ProductId; // 0x6001
char *Manufacturer; // "FTDI"
char *ManufacturerId; // "FT"
char *Description; // "USB HS Serial Converter"
char *SerialNumber; // "FT000001" if fixed, or NULL
WORD MaxPower; // 0 < MaxPower <= 500
WORD PnP; // 0 = disabled, 1 = enabled
WORD SelfPowered; // 0 = bus powered, 1 = self powered
WORD RemoteWakeup; // 0 = not capable, 1 = capable
//
// Rev4 (FT232B) extensions
//
UCHAR Rev4; // non-zero if Rev4 chip, zero otherwise
UCHAR IsoIn; // non-zero if in endpoint is isochronous
UCHAR IsoOut; // non-zero if out endpoint is isochronous
UCHAR PullDownEnable; // non-zero if pull down enabled
UCHAR SerNumEnable; // non-zero if serial number to be used
UCHAR USBVersionEnable; // non-zero if chip uses USBVersion
WORD USBVersion; // BCD (0x0200 => USB2)
//
// Rev 5 (FT2232) extensions
//
UCHAR Rev5; // non-zero if Rev5 chip, zero otherwise
UCHAR IsoInA; // non-zero if in endpoint is isochronous
UCHAR IsoInB; // non-zero if in endpoint is isochronous
UCHAR IsoOutA; // non-zero if out endpoint is isochronous
UCHAR IsoOutB; // non-zero if out endpoint is isochronous
UCHAR PullDownEnable5; // non-zero if pull down enabled
UCHAR SerNumEnable5; // non-zero if serial number to be used
UCHAR USBVersionEnable5; // non-zero if chip uses USBVersion
WORD USBVersion5; // BCD (0x0200 => USB2)
UCHAR AIsHighCurrent; // non-zero if interface is high current
UCHAR BIsHighCurrent; // non-zero if interface is high current
UCHAR IFAIsFifo; // non-zero if interface is 245 FIFO
UCHAR IFAIsFifoTar; // non-zero if interface is 245 FIFO CPU target
UCHAR IFAIsFastSer; // non-zero if interface is Fast serial
UCHAR AIsVCP; // non-zero if interface is to use VCP drivers
UCHAR IFBIsFifo; // non-zero if interface is 245 FIFO
UCHAR IFBIsFifoTar; // non-zero if interface is 245 FIFO CPU target
UCHAR IFBIsFastSer; // non-zero if interface is Fast serial
UCHAR BIsVCP; // non-zero if interface is to use VCP drivers
//
// Rev 6 (FT232R) extensions
//
UCHAR UseExtOsc; // Use External Oscillator
UCHAR HighDriveIOs; // High Drive I/Os
UCHAR EndpointSize; // Endpoint size
UCHAR PullDownEnableR; // non-zero if pull down enabled
UCHAR SerNumEnableR; // non-zero if serial number to be used
UCHAR InvertTXD; // non-zero if invert TXD
UCHAR InvertRXD; // non-zero if invert RXD
UCHAR InvertRTS; // non-zero if invert RTS
UCHAR InvertCTS; // non-zero if invert CTS
UCHAR InvertDTR; // non-zero if invert DTR
UCHAR InvertDSR; // non-zero if invert DSR
UCHAR InvertDCD; // non-zero if invert DCD
UCHAR InvertRI; // non-zero if invert RI
UCHAR Cbus0; // Cbus Mux control
UCHAR Cbus1; // Cbus Mux control
UCHAR Cbus2; // Cbus Mux control
UCHAR Cbus3; // Cbus Mux control
UCHAR Cbus4; // Cbus Mux control
UCHAR RIsD2XX; // non-zero if using D2XX driver
//
// Rev 7 (FT2232H) Extensions
//
UCHAR PullDownEnable7; // non-zero if pull down enabled
UCHAR SerNumEnable7; // non-zero if serial number to be used
UCHAR ALSlowSlew; // non-zero if AL pins have slow slew
UCHAR ALSchmittInput; // non-zero if AL pins are Schmitt input
UCHAR ALDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
UCHAR AHSlowSlew; // non-zero if AH pins have slow slew
UCHAR AHSchmittInput; // non-zero if AH pins are Schmitt input
UCHAR AHDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
UCHAR BLSlowSlew; // non-zero if BL pins have slow slew
UCHAR BLSchmittInput; // non-zero if BL pins are Schmitt input
UCHAR BLDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
UCHAR BHSlowSlew; // non-zero if BH pins have slow slew
UCHAR BHSchmittInput; // non-zero if BH pins are Schmitt input
UCHAR BHDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
UCHAR IFAIsFifo7; // non-zero if interface is 245 FIFO
UCHAR IFAIsFifoTar7; // non-zero if interface is 245 FIFO CPU target
UCHAR IFAIsFastSer7; // non-zero if interface is Fast serial
UCHAR AIsVCP7; // non-zero if interface is to use VCP drivers
UCHAR IFBIsFifo7; // non-zero if interface is 245 FIFO
UCHAR IFBIsFifoTar7; // non-zero if interface is 245 FIFO CPU target
UCHAR IFBIsFastSer7; // non-zero if interface is Fast serial
UCHAR BIsVCP7; // non-zero if interface is to use VCP drivers
UCHAR PowerSaveEnable; // non-zero if using BCBUS7 to save power for self-powered designs
//
// Rev 8 (FT4232H) Extensions
//
UCHAR PullDownEnable8; // non-zero if pull down enabled
UCHAR SerNumEnable8; // non-zero if serial number to be used
UCHAR ASlowSlew; // non-zero if A pins have slow slew
UCHAR ASchmittInput; // non-zero if A pins are Schmitt input
UCHAR ADriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
UCHAR BSlowSlew; // non-zero if B pins have slow slew
UCHAR BSchmittInput; // non-zero if B pins are Schmitt input
UCHAR BDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
UCHAR CSlowSlew; // non-zero if C pins have slow slew
UCHAR CSchmittInput; // non-zero if C pins are Schmitt input
UCHAR CDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
UCHAR DSlowSlew; // non-zero if D pins have slow slew
UCHAR DSchmittInput; // non-zero if D pins are Schmitt input
UCHAR DDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
UCHAR ARIIsTXDEN; // non-zero if port A uses RI as RS485 TXDEN
UCHAR BRIIsTXDEN; // non-zero if port B uses RI as RS485 TXDEN
UCHAR CRIIsTXDEN; // non-zero if port C uses RI as RS485 TXDEN
UCHAR DRIIsTXDEN; // non-zero if port D uses RI as RS485 TXDEN
UCHAR AIsVCP8; // non-zero if interface is to use VCP drivers
UCHAR BIsVCP8; // non-zero if interface is to use VCP drivers
UCHAR CIsVCP8; // non-zero if interface is to use VCP drivers
UCHAR DIsVCP8; // non-zero if interface is to use VCP drivers
//
// Rev 9 (FT232H) Extensions
//
UCHAR PullDownEnableH; // non-zero if pull down enabled
UCHAR SerNumEnableH; // non-zero if serial number to be used
UCHAR ACSlowSlewH; // non-zero if AC pins have slow slew
UCHAR ACSchmittInputH; // non-zero if AC pins are Schmitt input
UCHAR ACDriveCurrentH; // valid values are 4mA, 8mA, 12mA, 16mA
UCHAR ADSlowSlewH; // non-zero if AD pins have slow slew
UCHAR ADSchmittInputH; // non-zero if AD pins are Schmitt input
UCHAR ADDriveCurrentH; // valid values are 4mA, 8mA, 12mA, 16mA
UCHAR Cbus0H; // Cbus Mux control
UCHAR Cbus1H; // Cbus Mux control
UCHAR Cbus2H; // Cbus Mux control
UCHAR Cbus3H; // Cbus Mux control
UCHAR Cbus4H; // Cbus Mux control
UCHAR Cbus5H; // Cbus Mux control
UCHAR Cbus6H; // Cbus Mux control
UCHAR Cbus7H; // Cbus Mux control
UCHAR Cbus8H; // Cbus Mux control
UCHAR Cbus9H; // Cbus Mux control
UCHAR IsFifoH; // non-zero if interface is 245 FIFO
UCHAR IsFifoTarH; // non-zero if interface is 245 FIFO CPU target
UCHAR IsFastSerH; // non-zero if interface is Fast serial
UCHAR IsFT1248H; // non-zero if interface is FT1248
UCHAR FT1248CpolH; // FT1248 clock polarity - clock idle high (1) or clock idle low (0)
UCHAR FT1248LsbH; // FT1248 data is LSB (1) or MSB (0)
UCHAR FT1248FlowControlH; // FT1248 flow control enable
UCHAR IsVCPH; // non-zero if interface is to use VCP drivers
UCHAR PowerSaveEnableH; // non-zero if using ACBUS7 to save power for self-powered designs
} FT_PROGRAM_DATA, *PFT_PROGRAM_DATA;
 
FTD2XX_API
FT_STATUS WINAPI FT_EE_Program(
FT_HANDLE ftHandle,
PFT_PROGRAM_DATA pData
);
 
FTD2XX_API
FT_STATUS WINAPI FT_EE_ProgramEx(
FT_HANDLE ftHandle,
PFT_PROGRAM_DATA pData,
char *Manufacturer,
char *ManufacturerId,
char *Description,
char *SerialNumber
);
 
FTD2XX_API
FT_STATUS WINAPI FT_EE_Read(
FT_HANDLE ftHandle,
PFT_PROGRAM_DATA pData
);
 
FTD2XX_API
FT_STATUS WINAPI FT_EE_ReadEx(
FT_HANDLE ftHandle,
PFT_PROGRAM_DATA pData,
char *Manufacturer,
char *ManufacturerId,
char *Description,
char *SerialNumber
);
 
FTD2XX_API
FT_STATUS WINAPI FT_EE_UASize(
FT_HANDLE ftHandle,
LPDWORD lpdwSize
);
 
FTD2XX_API
FT_STATUS WINAPI FT_EE_UAWrite(
FT_HANDLE ftHandle,
PUCHAR pucData,
DWORD dwDataLen
);
 
FTD2XX_API
FT_STATUS WINAPI FT_EE_UARead(
FT_HANDLE ftHandle,
PUCHAR pucData,
DWORD dwDataLen,
LPDWORD lpdwBytesRead
);
 
 
typedef struct ft_eeprom_header {
FT_DEVICE deviceType; // FTxxxx device type to be programmed
// Device descriptor options
WORD VendorId; // 0x0403
WORD ProductId; // 0x6001
UCHAR SerNumEnable; // non-zero if serial number to be used
// Config descriptor options
WORD MaxPower; // 0 < MaxPower <= 500
UCHAR SelfPowered; // 0 = bus powered, 1 = self powered
UCHAR RemoteWakeup; // 0 = not capable, 1 = capable
// Hardware options
UCHAR PullDownEnable; // non-zero if pull down in suspend enabled
} FT_EEPROM_HEADER, *PFT_EEPROM_HEADER;
 
 
// FT232B EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program
typedef struct ft_eeprom_232b {
// Common header
FT_EEPROM_HEADER common; // common elements for all device EEPROMs
} FT_EEPROM_232B, *PFT_EEPROM_232B;
 
 
// FT2232 EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program
typedef struct ft_eeprom_2232 {
// Common header
FT_EEPROM_HEADER common; // common elements for all device EEPROMs
// Drive options
UCHAR AIsHighCurrent; // non-zero if interface is high current
UCHAR BIsHighCurrent; // non-zero if interface is high current
// Hardware options
UCHAR AIsFifo; // non-zero if interface is 245 FIFO
UCHAR AIsFifoTar; // non-zero if interface is 245 FIFO CPU target
UCHAR AIsFastSer; // non-zero if interface is Fast serial
UCHAR BIsFifo; // non-zero if interface is 245 FIFO
UCHAR BIsFifoTar; // non-zero if interface is 245 FIFO CPU target
UCHAR BIsFastSer; // non-zero if interface is Fast serial
// Driver option
UCHAR ADriverType; //
UCHAR BDriverType; //
} FT_EEPROM_2232, *PFT_EEPROM_2232;
 
 
// FT232R EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program
typedef struct ft_eeprom_232r {
// Common header
FT_EEPROM_HEADER common; // common elements for all device EEPROMs
// Drive options
UCHAR IsHighCurrent; // non-zero if interface is high current
// Hardware options
UCHAR UseExtOsc; // Use External Oscillator
UCHAR InvertTXD; // non-zero if invert TXD
UCHAR InvertRXD; // non-zero if invert RXD
UCHAR InvertRTS; // non-zero if invert RTS
UCHAR InvertCTS; // non-zero if invert CTS
UCHAR InvertDTR; // non-zero if invert DTR
UCHAR InvertDSR; // non-zero if invert DSR
UCHAR InvertDCD; // non-zero if invert DCD
UCHAR InvertRI; // non-zero if invert RI
UCHAR Cbus0; // Cbus Mux control
UCHAR Cbus1; // Cbus Mux control
UCHAR Cbus2; // Cbus Mux control
UCHAR Cbus3; // Cbus Mux control
UCHAR Cbus4; // Cbus Mux control
// Driver option
UCHAR DriverType; //
} FT_EEPROM_232R, *PFT_EEPROM_232R;
 
 
// FT2232H EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program
typedef struct ft_eeprom_2232h {
// Common header
FT_EEPROM_HEADER common; // common elements for all device EEPROMs
// Drive options
UCHAR ALSlowSlew; // non-zero if AL pins have slow slew
UCHAR ALSchmittInput; // non-zero if AL pins are Schmitt input
UCHAR ALDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
UCHAR AHSlowSlew; // non-zero if AH pins have slow slew
UCHAR AHSchmittInput; // non-zero if AH pins are Schmitt input
UCHAR AHDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
UCHAR BLSlowSlew; // non-zero if BL pins have slow slew
UCHAR BLSchmittInput; // non-zero if BL pins are Schmitt input
UCHAR BLDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
UCHAR BHSlowSlew; // non-zero if BH pins have slow slew
UCHAR BHSchmittInput; // non-zero if BH pins are Schmitt input
UCHAR BHDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
// Hardware options
UCHAR AIsFifo; // non-zero if interface is 245 FIFO
UCHAR AIsFifoTar; // non-zero if interface is 245 FIFO CPU target
UCHAR AIsFastSer; // non-zero if interface is Fast serial
UCHAR BIsFifo; // non-zero if interface is 245 FIFO
UCHAR BIsFifoTar; // non-zero if interface is 245 FIFO CPU target
UCHAR BIsFastSer; // non-zero if interface is Fast serial
UCHAR PowerSaveEnable; // non-zero if using BCBUS7 to save power for self-powered designs
// Driver option
UCHAR ADriverType; //
UCHAR BDriverType; //
} FT_EEPROM_2232H, *PFT_EEPROM_2232H;
 
 
// FT4232H EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program
typedef struct ft_eeprom_4232h {
// Common header
FT_EEPROM_HEADER common; // common elements for all device EEPROMs
// Drive options
UCHAR ASlowSlew; // non-zero if A pins have slow slew
UCHAR ASchmittInput; // non-zero if A pins are Schmitt input
UCHAR ADriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
UCHAR BSlowSlew; // non-zero if B pins have slow slew
UCHAR BSchmittInput; // non-zero if B pins are Schmitt input
UCHAR BDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
UCHAR CSlowSlew; // non-zero if C pins have slow slew
UCHAR CSchmittInput; // non-zero if C pins are Schmitt input
UCHAR CDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
UCHAR DSlowSlew; // non-zero if D pins have slow slew
UCHAR DSchmittInput; // non-zero if D pins are Schmitt input
UCHAR DDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
// Hardware options
UCHAR ARIIsTXDEN; // non-zero if port A uses RI as RS485 TXDEN
UCHAR BRIIsTXDEN; // non-zero if port B uses RI as RS485 TXDEN
UCHAR CRIIsTXDEN; // non-zero if port C uses RI as RS485 TXDEN
UCHAR DRIIsTXDEN; // non-zero if port D uses RI as RS485 TXDEN
// Driver option
UCHAR ADriverType; //
UCHAR BDriverType; //
UCHAR CDriverType; //
UCHAR DDriverType; //
} FT_EEPROM_4232H, *PFT_EEPROM_4232H;
 
 
// FT232H EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program
typedef struct ft_eeprom_232h {
// Common header
FT_EEPROM_HEADER common; // common elements for all device EEPROMs
// Drive options
UCHAR ACSlowSlew; // non-zero if AC bus pins have slow slew
UCHAR ACSchmittInput; // non-zero if AC bus pins are Schmitt input
UCHAR ACDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
UCHAR ADSlowSlew; // non-zero if AD bus pins have slow slew
UCHAR ADSchmittInput; // non-zero if AD bus pins are Schmitt input
UCHAR ADDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
// CBUS options
UCHAR Cbus0; // Cbus Mux control
UCHAR Cbus1; // Cbus Mux control
UCHAR Cbus2; // Cbus Mux control
UCHAR Cbus3; // Cbus Mux control
UCHAR Cbus4; // Cbus Mux control
UCHAR Cbus5; // Cbus Mux control
UCHAR Cbus6; // Cbus Mux control
UCHAR Cbus7; // Cbus Mux control
UCHAR Cbus8; // Cbus Mux control
UCHAR Cbus9; // Cbus Mux control
// FT1248 options
UCHAR FT1248Cpol; // FT1248 clock polarity - clock idle high (1) or clock idle low (0)
UCHAR FT1248Lsb; // FT1248 data is LSB (1) or MSB (0)
UCHAR FT1248FlowControl; // FT1248 flow control enable
// Hardware options
UCHAR IsFifo; // non-zero if interface is 245 FIFO
UCHAR IsFifoTar; // non-zero if interface is 245 FIFO CPU target
UCHAR IsFastSer; // non-zero if interface is Fast serial
UCHAR IsFT1248 ; // non-zero if interface is FT1248
UCHAR PowerSaveEnable; //
// Driver option
UCHAR DriverType; //
} FT_EEPROM_232H, *PFT_EEPROM_232H;
 
 
// FT X Series EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program
typedef struct ft_eeprom_x_series {
// Common header
FT_EEPROM_HEADER common; // common elements for all device EEPROMs
// Drive options
UCHAR ACSlowSlew; // non-zero if AC bus pins have slow slew
UCHAR ACSchmittInput; // non-zero if AC bus pins are Schmitt input
UCHAR ACDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
UCHAR ADSlowSlew; // non-zero if AD bus pins have slow slew
UCHAR ADSchmittInput; // non-zero if AD bus pins are Schmitt input
UCHAR ADDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
// CBUS options
UCHAR Cbus0; // Cbus Mux control
UCHAR Cbus1; // Cbus Mux control
UCHAR Cbus2; // Cbus Mux control
UCHAR Cbus3; // Cbus Mux control
UCHAR Cbus4; // Cbus Mux control
UCHAR Cbus5; // Cbus Mux control
UCHAR Cbus6; // Cbus Mux control
// UART signal options
UCHAR InvertTXD; // non-zero if invert TXD
UCHAR InvertRXD; // non-zero if invert RXD
UCHAR InvertRTS; // non-zero if invert RTS
UCHAR InvertCTS; // non-zero if invert CTS
UCHAR InvertDTR; // non-zero if invert DTR
UCHAR InvertDSR; // non-zero if invert DSR
UCHAR InvertDCD; // non-zero if invert DCD
UCHAR InvertRI; // non-zero if invert RI
// Battery Charge Detect options
UCHAR BCDEnable; // Enable Battery Charger Detection
UCHAR BCDForceCbusPWREN; // asserts the power enable signal on CBUS when charging port detected
UCHAR BCDDisableSleep; // forces the device never to go into sleep mode
// I2C options
WORD I2CSlaveAddress; // I2C slave device address
DWORD I2CDeviceId; // I2C device ID
UCHAR I2CDisableSchmitt; // Disable I2C Schmitt trigger
// FT1248 options
UCHAR FT1248Cpol; // FT1248 clock polarity - clock idle high (1) or clock idle low (0)
UCHAR FT1248Lsb; // FT1248 data is LSB (1) or MSB (0)
UCHAR FT1248FlowControl; // FT1248 flow control enable
// Hardware options
UCHAR RS485EchoSuppress; //
UCHAR PowerSaveEnable; //
// Driver option
UCHAR DriverType; //
} FT_EEPROM_X_SERIES, *PFT_EEPROM_X_SERIES;
 
 
FTD2XX_API
FT_STATUS WINAPI FT_EEPROM_Read(
FT_HANDLE ftHandle,
void *eepromData,
DWORD eepromDataSize,
char *Manufacturer,
char *ManufacturerId,
char *Description,
char *SerialNumber
);
 
 
FTD2XX_API
FT_STATUS WINAPI FT_EEPROM_Program(
FT_HANDLE ftHandle,
void *eepromData,
DWORD eepromDataSize,
char *Manufacturer,
char *ManufacturerId,
char *Description,
char *SerialNumber
);
 
 
FTD2XX_API
FT_STATUS WINAPI FT_SetLatencyTimer(
FT_HANDLE ftHandle,
UCHAR ucLatency
);
 
FTD2XX_API
FT_STATUS WINAPI FT_GetLatencyTimer(
FT_HANDLE ftHandle,
PUCHAR pucLatency
);
 
FTD2XX_API
FT_STATUS WINAPI FT_SetBitMode(
FT_HANDLE ftHandle,
UCHAR ucMask,
UCHAR ucEnable
);
 
FTD2XX_API
FT_STATUS WINAPI FT_GetBitMode(
FT_HANDLE ftHandle,
PUCHAR pucMode
);
 
FTD2XX_API
FT_STATUS WINAPI FT_SetUSBParameters(
FT_HANDLE ftHandle,
ULONG ulInTransferSize,
ULONG ulOutTransferSize
);
 
FTD2XX_API
FT_STATUS WINAPI FT_SetDeadmanTimeout(
FT_HANDLE ftHandle,
ULONG ulDeadmanTimeout
);
 
FTD2XX_API
FT_STATUS WINAPI FT_GetDeviceInfo(
FT_HANDLE ftHandle,
FT_DEVICE *lpftDevice,
LPDWORD lpdwID,
PCHAR SerialNumber,
PCHAR Description,
LPVOID Dummy
);
 
FTD2XX_API
FT_STATUS WINAPI FT_StopInTask(
FT_HANDLE ftHandle
);
 
FTD2XX_API
FT_STATUS WINAPI FT_RestartInTask(
FT_HANDLE ftHandle
);
 
FTD2XX_API
FT_STATUS WINAPI FT_SetResetPipeRetryCount(
FT_HANDLE ftHandle,
DWORD dwCount
);
 
FTD2XX_API
FT_STATUS WINAPI FT_ResetPort(
FT_HANDLE ftHandle
);
 
FTD2XX_API
FT_STATUS WINAPI FT_CyclePort(
FT_HANDLE ftHandle
);
 
 
//
// Win32-type functions
//
 
FTD2XX_API
FT_HANDLE WINAPI FT_W32_CreateFile(
LPCTSTR lpszName,
DWORD dwAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreate,
DWORD dwAttrsAndFlags,
HANDLE hTemplate
);
 
FTD2XX_API
BOOL WINAPI FT_W32_CloseHandle(
FT_HANDLE ftHandle
);
 
FTD2XX_API
BOOL WINAPI FT_W32_ReadFile(
FT_HANDLE ftHandle,
LPVOID lpBuffer,
DWORD nBufferSize,
LPDWORD lpBytesReturned,
LPOVERLAPPED lpOverlapped
);
 
FTD2XX_API
BOOL WINAPI FT_W32_WriteFile(
FT_HANDLE ftHandle,
LPVOID lpBuffer,
DWORD nBufferSize,
LPDWORD lpBytesWritten,
LPOVERLAPPED lpOverlapped
);
 
FTD2XX_API
DWORD WINAPI FT_W32_GetLastError(
FT_HANDLE ftHandle
);
 
FTD2XX_API
BOOL WINAPI FT_W32_GetOverlappedResult(
FT_HANDLE ftHandle,
LPOVERLAPPED lpOverlapped,
LPDWORD lpdwBytesTransferred,
BOOL bWait
);
 
FTD2XX_API
BOOL WINAPI FT_W32_CancelIo(
FT_HANDLE ftHandle
);
 
 
//
// Win32 COMM API type functions
//
typedef struct _FTCOMSTAT {
DWORD fCtsHold : 1;
DWORD fDsrHold : 1;
DWORD fRlsdHold : 1;
DWORD fXoffHold : 1;
DWORD fXoffSent : 1;
DWORD fEof : 1;
DWORD fTxim : 1;
DWORD fReserved : 25;
DWORD cbInQue;
DWORD cbOutQue;
} FTCOMSTAT, *LPFTCOMSTAT;
 
typedef struct _FTDCB {
DWORD DCBlength; /* sizeof(FTDCB) */
DWORD BaudRate; /* Baudrate at which running */
DWORD fBinary: 1; /* Binary Mode (skip EOF check) */
DWORD fParity: 1; /* Enable parity checking */
DWORD fOutxCtsFlow:1; /* CTS handshaking on output */
DWORD fOutxDsrFlow:1; /* DSR handshaking on output */
DWORD fDtrControl:2; /* DTR Flow control */
DWORD fDsrSensitivity:1; /* DSR Sensitivity */
DWORD fTXContinueOnXoff: 1; /* Continue TX when Xoff sent */
DWORD fOutX: 1; /* Enable output X-ON/X-OFF */
DWORD fInX: 1; /* Enable input X-ON/X-OFF */
DWORD fErrorChar: 1; /* Enable Err Replacement */
DWORD fNull: 1; /* Enable Null stripping */
DWORD fRtsControl:2; /* Rts Flow control */
DWORD fAbortOnError:1; /* Abort all reads and writes on Error */
DWORD fDummy2:17; /* Reserved */
WORD wReserved; /* Not currently used */
WORD XonLim; /* Transmit X-ON threshold */
WORD XoffLim; /* Transmit X-OFF threshold */
BYTE ByteSize; /* Number of bits/byte, 4-8 */
BYTE Parity; /* 0-4=None,Odd,Even,Mark,Space */
BYTE StopBits; /* 0,1,2 = 1, 1.5, 2 */
char XonChar; /* Tx and Rx X-ON character */
char XoffChar; /* Tx and Rx X-OFF character */
char ErrorChar; /* Error replacement char */
char EofChar; /* End of Input character */
char EvtChar; /* Received Event character */
WORD wReserved1; /* Fill for now. */
} FTDCB, *LPFTDCB;
 
typedef struct _FTTIMEOUTS {
DWORD ReadIntervalTimeout; /* Maximum time between read chars. */
DWORD ReadTotalTimeoutMultiplier; /* Multiplier of characters. */
DWORD ReadTotalTimeoutConstant; /* Constant in milliseconds. */
DWORD WriteTotalTimeoutMultiplier; /* Multiplier of characters. */
DWORD WriteTotalTimeoutConstant; /* Constant in milliseconds. */
} FTTIMEOUTS,*LPFTTIMEOUTS;
 
 
FTD2XX_API
BOOL WINAPI FT_W32_ClearCommBreak(
FT_HANDLE ftHandle
);
 
FTD2XX_API
BOOL WINAPI FT_W32_ClearCommError(
FT_HANDLE ftHandle,
LPDWORD lpdwErrors,
LPFTCOMSTAT lpftComstat
);
 
FTD2XX_API
BOOL WINAPI FT_W32_EscapeCommFunction(
FT_HANDLE ftHandle,
DWORD dwFunc
);
 
FTD2XX_API
BOOL WINAPI FT_W32_GetCommModemStatus(
FT_HANDLE ftHandle,
LPDWORD lpdwModemStatus
);
 
FTD2XX_API
BOOL WINAPI FT_W32_GetCommState(
FT_HANDLE ftHandle,
LPFTDCB lpftDcb
);
 
FTD2XX_API
BOOL WINAPI FT_W32_GetCommTimeouts(
FT_HANDLE ftHandle,
FTTIMEOUTS *pTimeouts
);
 
FTD2XX_API
BOOL WINAPI FT_W32_PurgeComm(
FT_HANDLE ftHandle,
DWORD dwMask
);
 
FTD2XX_API
BOOL WINAPI FT_W32_SetCommBreak(
FT_HANDLE ftHandle
);
 
FTD2XX_API
BOOL WINAPI FT_W32_SetCommMask(
FT_HANDLE ftHandle,
ULONG ulEventMask
);
 
FTD2XX_API
BOOL WINAPI FT_W32_GetCommMask(
FT_HANDLE ftHandle,
LPDWORD lpdwEventMask
);
 
FTD2XX_API
BOOL WINAPI FT_W32_SetCommState(
FT_HANDLE ftHandle,
LPFTDCB lpftDcb
);
 
FTD2XX_API
BOOL WINAPI FT_W32_SetCommTimeouts(
FT_HANDLE ftHandle,
FTTIMEOUTS *pTimeouts
);
 
FTD2XX_API
BOOL WINAPI FT_W32_SetupComm(
FT_HANDLE ftHandle,
DWORD dwReadBufferSize,
DWORD dwWriteBufferSize
);
 
FTD2XX_API
BOOL WINAPI FT_W32_WaitCommEvent(
FT_HANDLE ftHandle,
PULONG pulEvent,
LPOVERLAPPED lpOverlapped
);
 
 
//
// Device information
//
 
typedef struct _ft_device_list_info_node {
ULONG Flags;
ULONG Type;
ULONG ID;
DWORD LocId;
char SerialNumber[16];
char Description[64];
FT_HANDLE ftHandle;
} FT_DEVICE_LIST_INFO_NODE;
 
// Device information flags
enum {
FT_FLAGS_OPENED = 1,
FT_FLAGS_HISPEED = 2
};
 
 
FTD2XX_API
FT_STATUS WINAPI FT_CreateDeviceInfoList(
LPDWORD lpdwNumDevs
);
 
FTD2XX_API
FT_STATUS WINAPI FT_GetDeviceInfoList(
FT_DEVICE_LIST_INFO_NODE *pDest,
LPDWORD lpdwNumDevs
);
 
FTD2XX_API
FT_STATUS WINAPI FT_GetDeviceInfoDetail(
DWORD dwIndex,
LPDWORD lpdwFlags,
LPDWORD lpdwType,
LPDWORD lpdwID,
LPDWORD lpdwLocId,
LPVOID lpSerialNumber,
LPVOID lpDescription,
FT_HANDLE *pftHandle
);
 
 
//
// Version information
//
 
FTD2XX_API
FT_STATUS WINAPI FT_GetDriverVersion(
FT_HANDLE ftHandle,
LPDWORD lpdwVersion
);
 
FTD2XX_API
FT_STATUS WINAPI FT_GetLibraryVersion(
LPDWORD lpdwVersion
);
 
 
FTD2XX_API
FT_STATUS WINAPI FT_Rescan(
void
);
 
FTD2XX_API
FT_STATUS WINAPI FT_Reload(
WORD wVid,
WORD wPid
);
 
FTD2XX_API
FT_STATUS WINAPI FT_GetComPortNumber(
FT_HANDLE ftHandle,
LPLONG lpdwComPortNumber
);
 
 
//
// FT232H additional EEPROM functions
//
 
FTD2XX_API
FT_STATUS WINAPI FT_EE_ReadConfig(
FT_HANDLE ftHandle,
UCHAR ucAddress,
PUCHAR pucValue
);
 
FTD2XX_API
FT_STATUS WINAPI FT_EE_WriteConfig(
FT_HANDLE ftHandle,
UCHAR ucAddress,
UCHAR ucValue
);
 
FTD2XX_API
FT_STATUS WINAPI FT_EE_ReadECC(
FT_HANDLE ftHandle,
UCHAR ucOption,
LPWORD lpwValue
);
 
FTD2XX_API
FT_STATUS WINAPI FT_GetQueueStatusEx(
FT_HANDLE ftHandle,
DWORD *dwRxBytes
);
 
 
#ifdef __cplusplus
}
#endif
 
 
#endif /* FTD2XX_H */
 
/Modules/CPLD_FPGA/XILINX_XVC/XVC_SOFTWARE/XVC_1x/lib_win32/ftd2xx.lib
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_SOFTWARE/XVC_1x/mlab_xvcd_port_FTDI.h
0,0 → 1,93
#ifndef MLAB_XVCD_PORT_FTDI_H
#define MLAB_XVCD_PORT_FTDI_H
 
 
// Pin Defs
// --------
 
// FTDI Pin Mask Definitions (valid for FT232R)
#define DBUS0 0x0001 // Bit 0 Data Bus
#define DBUS1 0x0002 // Bit 1
#define DBUS2 0x0004 // Bit 2
#define DBUS3 0x0008 // Bit 3
#define DBUS4 0x0010 // Bit 4
#define DBUS5 0x0020 // Bit 5
#define DBUS6 0x0040 // Bit 6
#define DBUS7 0x0080 // Bit 7
 
#define CBUS0 0x0100 // Bit 0 Control Bus
#define CBUS1 0x0200 // Bit 1
#define CBUS2 0x0400 // Bit 2
#define CBUS3 0x0800 // Bit 3
 
#define FTDI_TXD DBUS0 // Bit 0 RS232 Signal Alias
#define FTDI_RXD DBUS1 // Bit 1
#define FTDI_RTS DBUS2 // Bit 2
#define FTDI_CTS DBUS3 // Bit 3
#define FTDI_DTR DBUS4 // Bit 4
#define FTDI_DSR DBUS5 // Bit 5
#define FTDI_DCD DBUS6 // Bit 6
#define FTDI_RI DBUS7 // Bit 7
 
 
// Includes
// --------
#undef UNICODE
#define WIN32_LEAN_AND_MEAN
 
#include <stdlib.h> // Standard Library (exit, atoi, ...)
#include <stdio.h> // Standard IO (printf, ...)
#include "mlab_xvcd.h" // Program Config (pin defs, settings, ...)
 
#ifdef WIN32
#include <windows.h> // Windows Console Application
#else
#include <string.h>
#endif
 
// Link with library
#ifdef WIN32
#include "lib_win32\ftd2xx.h" // FTDI Library
#else
#include "lib_linux_i386/ftd2xx.h"
#endif
 
 
// Public Definitions
// ------------------
 
 
// Find Mode (for port open)
#define OPEN_BY_DESCRIPTION FT_OPEN_BY_DESCRIPTION // Find device by Description String
#define OPEN_BY_LOCATION FT_OPEN_BY_LOCATION // Find device by Bus Location
#define OPEN_BY_SERIAL_NUMBER FT_OPEN_BY_SERIAL_NUMBER // Find device by it's Serial Number
 
// Max Data lengt to send to FTDI as one block
#define FTDI_MAX_WRITESIZE 1024
 
 
// Function Prototypes (public functions only)
// -------------------------------------------
 
// Connect to FTDI driver
// Find the device and open driver
int jtagOpenPort(int findDeviceBy, char *findDeviceByStr);
 
// Enable or Disable Activity LED
void jtagSetLED(bool LedEnable);
 
// Set port to Idle state (all zeroes)
void jtagSetIdle();
 
// Close FTDI connection
int jtagClosePort();
 
// Send data to JTAG port and bring returned data
// Turn LED On during processing
int jtagScan(const unsigned char *TMS, const unsigned char *TDI, unsigned char *TDO, unsigned int bits);
 
// Check if Cable is still connected and accesible
// True is o.k.
bool CheckCable();
 
#endif
/Modules/CPLD_FPGA/XILINX_XVC/XVC_SOFTWARE/XVC_1x
Property changes:
Added: svn:ignore
+mlab_xvcd
/Modules/CPLD_FPGA/XILINX_XVC/XVC_SOFTWARE/PrjInfo.txt
0,0 → 1,29
//
// Toto je popisný soubor pro popis obsahu adresáře (příklad)
//
 
[InfoShortDescription.en]
Xilinx Virtual Cable Sofware (program mlab_xvcd)
[InfoShortDescription.cs]
Xilinx Virtual Cable Sofware (program mlab_xvcd)
 
[InfoLongDescription.en]
The mlab_xvcd program converts JTAG commands received across TCP/IP
network via XVC protocol to outputs of the programming
cable (module) which is based on FTDI's USB chips like
popular FT232R, FT220X etc.
Used XVC protocol is directly supported by XILINX development
tools (both configuration tool IMPACT and debugging
embedded logic analyzer ChipScope Analyzer).
 
[InfoLongDescription.cs]
Program mlab_xvcd je obslužný program, který převádí JTAG příkazy
zasílané prostřednictvím XVC protokolu přes TCP/IP síť
na příslušné výstupy JTAG kabelu (modulku) založeného
na USB převodnících firmy FTDI (FT232R, FT220X, ...).
Protokol XVC přímo podporují vývojové nástroje XILINX
(nahrávání konfigurace program IMPACT a ladění pomocí
logického analyzátoru ChipScope Analyzer).
 
[End]
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/CAM_DOC/O2.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/CAM_DOC/O1.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/CAM_DOC/V1.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/CAM_DOC/drill.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/DOC/HTML/XVC_FT220X02A.cs.html
0,0 → 1,650
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title> XVC_FT220X02A </title>
<meta name="keywords" content="stavebnice MLAB univerzální moduly JTAG XVC Xilinx Virtual Cable XVC_FT220X01A FTDI USB">
<meta name="description" content="Xilinx Virtual Cable založený na obvodu FT220X, JTAG programování FPGA a CPLD přes USB">
<!-- AUTOINCLUDE START "Page/Head.cs.ihtml" DO NOT REMOVE -->
<link rel="StyleSheet" href="../../../../../../Web/CSS/MLAB.css" type="text/css" title="MLAB základní styl">
<link rel="StyleSheet" href="../../../../../../Web/CSS/MLAB_Print.css" type="text/css" media="print">
<link rel="shortcut icon" type="image/x-icon" href="../../../../../../Web/PIC/MLAB.ico">
<script type="text/javascript" src="../../../../../../Web/JS/MLAB_Menu.js"></script>
<!-- AUTOINCLUDE END -->
</head>
 
<body lang="cs">
 
<!-- AUTOINCLUDE START "Page/Header.cs.ihtml" DO NOT REMOVE -->
<!-- ============== HLAVICKA ============== -->
<div class="Header">
<script type="text/javascript">
<!--
SetRelativePath("../../../../../../");
DrawHeader();
// -->
</script>
<noscript>
<p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p>
</noscript>
</div>
<!-- AUTOINCLUDE END -->
 
<!-- AUTOINCLUDE START "Page/Menu.cs.ihtml" DO NOT REMOVE -->
<!-- ============== MENU ============== -->
<div class="Menu">
<script type="text/javascript">
<!--
SetRelativePath("../../../../../../");
DrawMenu();
// -->
</script>
<noscript>
<p><b> Pro zobrazení (vložení) menu je potřeba JavaScript </b></p>
</noscript>
</div>
<!-- AUTOINCLUDE END -->
 
<!-- ============== TEXT ============== -->
<div class="Text">
 
<p class="Title">
Xilinx Virtual Cable s USB obvodem FTDI FT220X
</p>
 
<p class=Autor>
Milan Horkel
</p>
 
<p class="Subtitle">
Vývojové prostředí ISE pro práci s obvody programovatelné logiky
(FPGA/CPLD) firmy XILINX přímo podporuje protokol XVC, kterým se
přenáší JTAG příkazy prostřednictvím sítě TCP/IP. Na vzdáleném konci
musí běžet příslušný obslužný program a k němu musí být připojen
programovací kabel. Toto je modul programovacího kabelu s obvodem FTDI
FT220X s USB rozhraním na jedné straně a JTAG konektorem na straně
druhé.
</p>
 
<p class="Subtitle">
<img width="301" height="224" src="XVC_FT220X02A.cs_soubory/image001.jpg"
alt="Vzhled modulu XVC_FT220X02A">
</p>
 
<h1> Technické parametry </h1>
 
<table>
<tr>
<th> Parametr </th>
<th> Hodnota </th>
<th> Poznámka </th>
</tr>
<tr>
<td> Vstupní rozhraní </td>
<td> USB 2.0 </td>
<td> Standardní velký konektor typu B </td>
</tr>
<tr>
<td> Výstupní rozhraní </td>
<td> JTAG </td>
<td> Obvyklý jednořadý hřebínek </td>
</tr>
<tr>
<td> Napájení </td>
<td> +5V do 100mA </td>
<td> Z rozhraní USB, s pojistkou 0.75A </td>
</tr>
<tr>
<td> Signalizační napětí </td>
<td> +1.8 až +3.3V / +3.3V </td>
<td> Z cílového systému / fixní z FTDI </td>
</tr>
<tr>
<td> Síťový protokol / program </td>
<td> XVC / mlab_xvcd.exe </td>
<td> UDP, port 2542 / Windows aplikace </td>
</tr>
<tr>
<td> Vývojové prostředí </td>
<td> XILINX ISE – IMPACT<br>
XILINX ISE – ChipScope </td>
<td> Včetně volné verze WebPack,<br>
ChipScope vyžaduje licenci </td>
</tr>
<tr>
<td> Rozměry </td>
<td> 40x30x18mm </td>
<td> Výška nad základnou </td>
</tr>
</table>
 
<h1> Popis konstrukce </h1>
 
<h2> Úvodem </h2>
 
<p>
Pro práci s programovatelnými obvody FPGA a CPLD firmy XILINX je
potřeba příslušné vybavení. Jednou z nezbytností je vhodný programovací
kabel pro nahrávání konfigurace do cílové součástky. Jelikož LPT port
se postupně stěhuje do muzea, jsou programovací kabely vyrobené jako
klony známého Parallel Cable III zastaralé a je nutné nalézt nové
řešení.
</p>
 
<p>
Vývojové prostředí ISE přímo podporuje připojení programovacího kabelu
prostřednictvím TCP/IP sítě a použitý protokol Xilinx Virtual Cable (ve
zkratce XVC) je dokumentovaný. Díky tomu lze realizovat programovací
kabel za použití některého vhodného standardního obvodu rozhraní a
dopsat jen poměrně jednoduchý obslužný program.
</p>
 
<p>
<img width="676" height="621" src="XVC_FT220X02A.cs_soubory/image002.png"
alt="Schéma toku dat ve vývojovém cyklu">
</p>
 
<p>
Volba padla na obvod FTDI FT220X s rozhraním USB. Jedná se o nový (v
roce 2012) obvod, jehož cena je překvapivě nízká (cca 40Kč). Obslužný
program s obvodem FTDI komunikuje v režimu BitBang, tedy nevyužívá
žádné speciální vlastnosti tohoto obvodu a může tak pracovat prakticky
se všemi obvody FTDI (včetně populárního FT232R).
</p>
 
<p>
Tato konstrukce představuje modul s USB rozhraním na jedné straně a
JTAG konektorem na straně druhé. Konektor je zapojen dle zvyklostí
XILINX programovacích kabelů. Modul podporuje signalizační napětí na
JTAG rozhraní v rozmezí 1.8 až 3.3V a navíc obsahuje indikační diody.
</p>
 
<p>
Obslužný program běží na počítači, ke kterému je připojen programovací
kabel a návrhový program ISE (přesněji komponenta IMPACT, případně
ChipScope Analyser) se s programem spojí prostřednictvím TCP/IP sítě.
Vývojové prostředí může samozřejmě běžet jak na dálku (přes skutečnou
síť), tak i na stejném počítači (síťuje se jen uvnitř počítače).
Současná verze programu běží pod systémem Windows (WinXP až Win8,
32/64bit), verze pro Linux se připravuje.
</p>
 
<p>
Obslužný program má samostatnou dokumentaci a stránku, kde lze stáhnout
přeložený binární soubor (ale i zdrojové texty).
</p>
 
<p>
<a href="http://www.mlab.cz/PermaLink/XVC-SOFTWARE">http://www.mlab.cz/PermaLink/XVC-SOFTWARE</a>
</p>
 
<h2> Zapojení modulu </h2>
 
<p>
<img width="721" height="448" src="XVC_FT220X02A.cs_soubory/image003.png"
alt="Elektrické zapojení modulu XVC_FT220X02A">
</p>
 
<p>
Obvod U1 FT220X je obvod rozhraní USB/SPI, ale ve skutečnosti se
používá v BitBang režimu, kdy se jeho SPI specifické vlastnosti
nepoužijí. V zapojení by mělo jít použít i další obvody řady FT200X,
zapojení vývodů je stejné.
</p>
 
<p>
Konektor J4 slouží pro napájení cílového zařízení z napětí +5V z USB
rozhraní. Modul obsahuje samoopravnou pojistku 0.75A, nepřetěžujte
napájení USB portu!
</p>
 
<p>
Hřebínek J3 slouží pro přepínání napájecího napětí IO vývodů USB
obvodu. Standardně se používá napětí poskytované cílovou platformou z
JTAG konektoru J2.1. Toto napětí může ležet v rozmezí 1.8 až 3.3V.
Dioda D4 slouží jako ochranná.
</p>
 
<p>
Pokud cílová platforma neposkytuje napájecí napětí (někdy bývá značené
jako VTG) na JTAG konektoru, lze použít napětí 3.3V z vnitřního
stabilizátoru obvodu FTDI. <i>Pozor na to, že některé
obvody FPGA nemusejí akceptovat 3.3V.</i>
</p>
 
<p>
Dioda D1 indikuje přítomnost napájecího napětí cílové platformy.
</p>
 
<p>
Dioda D2 indikuje aktivitu obslužného programu (spuštění programu a
přenos dat).
</p>
 
<p>
Dioda D3 indikuje zapojení do USB (věci fungují mnohem lépe, když jsou
zapojené).
</p>
 
<p>
Zbývající součástky jsou blokovací kondenzátory, obvody odrušení a
ochranné odpory R3 až R6.
</p>
 
<h2> Mechanická konstrukce </h2>
 
<p>
Jedná se o standardní MLAB modul k přišroubování k základnové desce.
</p>
 
<h1> Osazení a oživení </h1>
 
<h2> Osazení </h2>
 
<p>
Strana spojů obsahuje SMD součástky. Je vhodné připájet nejdříve C5 a
L1 a pak obvod U1. Dioda D4 má anodu připojenou na zemní plochu.
</p>
 
<p>
<img width="566" height="426" src="XVC_FT220X02A.cs_soubory/image004.png"
alt="Osazení součástkami ze strany spojů">
</p>
 
<p>
Strana součástí obsahuje jen hřebínky, konektory a 3 diody LED. Anody
LED diod jsou označeny písmenem A. Konektor J2 má 3 vývody odstraněné
jako klíč.
</p>
 
<p>
<img width="570" height="424" src="XVC_FT220X02A.cs_soubory/image005.png"
alt="Osazení součástkami ze strany součástek">
</p>
 
<table class="soupiska">
<tr>
<th> Reference </th>
<th> Hodnota </th>
<th> Pouzdro </th>
<th> &nbsp; </th>
<th> Reference </th>
<th> Hodnota </th>
<th> Pouzdro </th>
</tr>
<tr>
<th colspan="3"> Odpory </th>
<td> &nbsp; </td>
<th colspan="3"> Tranzistory </th>
</tr>
<tr>
<td> R1, R2 </td>
<td> 27 </td>
<td> R0805 </td>
<td> &nbsp; </td>
<td> Q1, Q2 </td>
<td> 2N7000SMD </td>
<td> SOT23 </td>
</tr>
<tr>
<td> R3, R4, R5, R6 </td>
<td> 100 </td>
<td> R0805 </td>
<td> &nbsp; </td>
<th colspan="3"> Integrované obvody </th>
</tr>
<tr>
<td> R7, R8, R9 </td>
<td> 330 </td>
<td> R0805 </td>
<td> &nbsp; </td>
<td> U1 </td>
<td> FT220XS </td>
<td> SSO16_154 </td>
</tr>
<tr>
<td> R10, R11 </td>
<td> 10k </td>
<td> R0805 </td>
<td> &nbsp; </td>
<th colspan="3"> Konektory </th>
</tr>
<tr>
<th colspan="3"> Kondenzátory </th>
<td> &nbsp; </td>
<td> J1 </td>
<td> USB_B_01 </td>
<td> USB_B_01 </td>
</tr>
<tr>
<td> C1, C2 </td>
<td> 47pF </td>
<td> C0805 </td>
<td> &nbsp; </td>
<td> J2 </td>
<td> JUMP9_X3_X5_X8 </td>
<td> JUMP9_X3_X5_X8 </td>
</tr>
<tr>
<td> C3 </td>
<td> 10nF </td>
<td> C0805 </td>
<td> &nbsp; </td>
<td> J3 </td>
<td> JUMP3 </td>
<td> JUMP3 </td>
</tr>
<tr>
<td> C4, C6, C7 </td>
<td> 100nF </td>
<td> C0805 </td>
<td> &nbsp; </td>
<td> J4 </td>
<td> JUMP2X3 </td>
<td> JUMP2X3 </td>
</tr>
<tr>
<td> C5 </td>
<td> 10uF </td>
<td> C0805 </td>
<td> &nbsp; </td>
<th colspan="3"> Mechanické součásti </th>
</tr>
<tr>
<th colspan="3"> Pojistky </th>
<td> &nbsp; </td>
<td> 1ks </td>
<td> XVC_FT220X02A </td>
<td> Plošný spoj </td>
</tr>
<tr>
<td> F1 </td>
<td> SR075-06_SMD0805 </td>
<td> R0805 </td>
<td> &nbsp; </td>
<td> 4ks </td>
<td> Screw M3x12 </td>
<td> Šroub pozinkovaný </td>
</tr>
<tr>
<th colspan="3"> Indukčnosti </th>
<td> &nbsp; </td>
<td> 4ks </td>
<td> Washer M3 </td>
<td> Podložka </td>
</tr>
<tr>
<td> L1 </td>
<td> MI0805K400R-10 </td>
<td> R0805 </td>
<td> &nbsp; </td>
<td> 4ks </td>
<td> Standoff M3x5 </td>
<td> Distanční sloupek </td>
</tr>
<tr>
<th colspan="3"> Diody </th>
<td> &nbsp; </td>
<td> 1ks </td>
<td> JUMPER </td>
<td> Propojka </td>
</tr>
<tr>
<td> D1, D3 </td>
<td> HCL-1505-4(RED) </td>
<td> LED1206REV </td>
<td> &nbsp; </td>
<td> &nbsp; </td>
<td> &nbsp; </td>
<td> &nbsp; </td>
</tr>
<tr>
<td> D2 </td>
<td> HCL-1503-4(GREEN) </td>
<td> LED1206REV </td>
<td> &nbsp; </td>
<td> &nbsp; </td>
<td> &nbsp; </td>
<td> &nbsp; </td>
</tr>
<tr>
<td> D4 </td>
<td> BZV55-B3V6 </td>
<td> MINIMELF </td>
<td> &nbsp; </td>
<td> &nbsp; </td>
<td> &nbsp; </td>
<td> &nbsp; </td>
</tr>
</table>
 
<h2> Oživení </h2>
 
<p>
Po umytí desky a optické kontrole (zkraty, otočený U1) přistoupíme k
oživení. Nejprve připojíme +5V na prostřední pin J4 a změříme napětí na
J3.1 (mělo by být +3.3V). Dioda D3 (s nápisem USB) by měla svítit.
</p>
 
<p>
Odpojíme zdroj a připojíme USB kabelem k počítači. Počítač by měl najít
nový hardware a nainstalovat driver. Ovladač (typu D2XX) se najde na
stránce výrobce čipu <a href=
"http://www.ftdichip.com/Drivers/D2XX.htm">http://www.ftdichip.com/Drivers/D2XX.htm</a>.
</p>
 
<p>
Dále je třeba nastavit správně konfiguraci obvodu FTDI tak, aby vývod
CBUS3 fungoval jako obyčejná IO nožička. Když se to neudělá, nebude
fungovat indikace LED D2 (indikuje aktivitu programu a přenos dat). To
se dělá pomocným programem FT_Prog od FTDI. Program je zašitý na webu
výrobce tak, aby ho laici nenašli <a href=
"http://www.ftdichip.com/Support/Utilities.htm">http://www.ftdichip.com/Support/Utilities.htm</a>.
</p>
 
<p>
Stažený ZIP archiv rozbalíme a můžeme spustit FT_Prog.exe a provést
změnu nastavení ručně, případně můžeme použít připravenou konfiguraci
ze souboru&nbsp; XVC_FT220X.xml.
</p>
 
<p>
Na obrázku je zvýrazněné požadované nastavení vývodu CBUS3.
</p>
 
<p>
<img width="641" height="406" src="XVC_FT220X02A.cs_soubory/image006.png"
alt="Nastavení funkce vývodu C3 u obvodu FTDI">
</p>
 
<p>
Když už měníme konfiguraci je vhodné zadat smysluplné jméno do položky
Product Description. Toto jméno pak bude vypisovat obslužný program a
usnadní se tím výběr zařízení v případě, že je v systému více FTDI USB
převodníků. Pro operační systém se zařízení bude i nadále tvářit jako
USB Serial Converer (kdybychom změnili identifikaci zařízení, museli
bychom do systému doplnit INF soubor tak, aby systém věděl, že se má
pro zařízení použít FTDI driver).
</p>
 
<p>
<img width="642" height="448" src="XVC_FT220X02A.cs_soubory/image007.png"
alt="Nastavení USB identifikace obvodu FTDI">
</p>
 
<p>
Tím by mělo být nastavení dokončené a je možné spustit obslužný program
mlab_xvcd.exe a pokud vše funguje správně, program vypíše spoustu
informací a na konci slovo „Listen“ a je připraven k navázání síťového
spojení ze strany vývojového prostředí. Dále postupujeme podle návodu k
použití (abychom se zde neopakovali).
</p>
 
<h1> Software a návod k použití </h1>
 
<h2> Instalace programu a první spuštění </h2>
 
<p>
Program pro obsluhu XVC_FT220X se jmenuje mlab_xvcd.exe a je k
dispozici na adrese
<a href="http://www.mlab.cz/PermaLink/XVC-SOFTWARE/XVC-1x/BIN">http://www.mlab.cz/PermaLink/XVC-SOFTWARE/XVC-1x/BIN</a>.
Program se neinstaluje (je slinkovaný jako jediný exe soubor), ale
potřebuje aby na počítači byly nainstalované drivery FTDI, které jsou
ke stažení na stránce výrobce
<a href="http://www.ftdichip.com/Drivers/D2XX.htm">http://www.ftdichip.com/Drivers/D2XX.htm</a>.
</p>
 
<p>
Program při prvním spuštění potřebuje povolit ve firewallu Windows
síťovou komunikaci (ve Win7 si o to systém sám řekne, ve starších
verzích Windows je třeba spustit konfiguraci systému firewall ručně a
povolit programu síťování). Připomínám, že nastavení je třeba
zopakovat, když program přesunete do jiného adresáře, nebo
přejmenujete, protože nastavení platí pro konkrétní program na
konkrétním místě v systému.
</p>
 
<h2> Spuštění mlab_xvcd.exe </h2>
 
<p>
Program po spuštění vypíše informace a nalezené obvody FTDI a spojí se
se zadaným zařízením, a když není zadáno tak s prvním nalezeným. Na
příkazové řádce lze zadat spojení podle názvu, sériového čísla,
umístění na USB sběrnici nebo podle pořadí nalezených obvodů FTDI.
</p>
 
<p>
<samp class="Block">
D:\...\BIN>mlab_xvcd.exe
 
Xilinx Virtual Cable Network Server
===================================
(c) miho 2012 v 1.03
 
FTDI Connect
Library Version 0x30207
Devices Found 1
JTAG Port Pins TCK->DBUS0(TXD)
TDI->DBUS1(RXD)
TDO->DBUS2(RTS)
TMS->DBUS3(CTS)
LED->CBUS3+DBUS7(RI)
 
Device 0
Description "XVC_FT220X"
SerialNumber "DAVY7XCB"
Location 0x111
 
Selected Device
Description "XVC_FT220X"
SerialNumber "DAVY7XCB"
Device Driver Ver 0x20824
Baud Rate 1000000
USB Latency 1
 
Starting Network Server
Host Name mihomsi
Network Name mihomsi
Host Address 192.168.22.14
Bound Socket 2542
Set in IMPACT xilinx_xvc host=mihomsi:2542 disableversioncheck=true
 
Listen
</samp>
</p>
 
<p>
Je-li na konci výpisu slovo Listen, je program připraven k navázání
spojení ze strany vývojového systému. Současně se rozsvítí LED indikace
aktivity (na plošném spoji označená ACT).
</p>
 
<h2> Spuštění a nastavení programu IMPACT </h2>
 
<p>
Nyní je třeba ve vývojovém prostředí spustit program IMPACT a v něm
nastavit plugin pro XVC protokol. Abychom si nemuseli pamatovat jaké
parametry se zadávají, program mlab_xvcd.exe vypisuje přesně to, co je
třeba do programu IMPACT zadat. Lze použít klipboard, ale pozor aby na
začátku nebyla mezera (není vidět, ale plugin se nenajde a nespustí).
Nastavení je v položce Output / Cable Setup.
</p>
 
<p>
<img width="397" height="440" src="XVC_FT220X02A.cs_soubory/image008.png"
alt="Nastavení XVC kabelu v programu iMPACT">
</p>
 
<p>
Po odklepnutí dojde k navázání spojení a program mlab_xvcd.exe začne
vypisovat tečky (program IMPACT každou sekundu pošle data po síti i
když nemá co na práci). Současně zhasne indikační LED a jen poblikává
při zpracování dat.
</p>
 
<p>
<samp class="Block">
Listen
Accepted 192.168.22.14:63280
Handle Data .........................................
.........
</samp>
</p>
 
<p>
Nyní lze nahrát do obvodu FPGA konfiguraci, což bylo cílem našeho
snažení.
</p>
 
<p>
<img width="834" height="432" src="XVC_FT220X02A.cs_soubory/image009.png"
alt="Funkční program iMPACT">
</p>
 
<h2> XVC a ChipScope </h2>
 
<p>
Použití XVC kabelu není omezeno jen na nahrávání obvodů FPGA, ale lze
jej použít i ve spojení s IP jádrem ChipScope (licencované) a zabudovat
si tak do obvodu FPGA velmi šikovný logický analyzátor. Tomuto tématu
se věnuje samostatný článek na adrese
<a href="http://www.mlab.cz/PermaLink/XVC-ChipScope">http://www.mlab.cz/PermaLink/XVC-ChipScope</a>.
</p>
 
<h2> Omezení </h2>
 
<p>
Řešení má i svá omezení. Zatím se mi nepodařilo rozchodit programování
pamětí SPI připojených k obvodu FPGA ani vnitřní SPI paměti obvodů
Spartan3AN. Tato funkce totiž nahrává obsah paměti tak, že nejdříve do
obvodu FPGA nahraje pomocný obsah (což se povede) a pak pomocí tohoto
pomocného zapojení získá přístup k pinům, ke kterým je připojena
(vnější nebo vnitřní) sériová FLASH paměť. To už se bohužel nepovede.
Zatím nevím proč.
</p>
 
<p>
Pro nahrávání SPI pamětí tedy i nadále používám LPT port s paralelním
kabelem (na některých počítačích to taky občas nefunguje), nebo XILINX
USB kabel (když si ho nezapomenu vypůjčit).
</p>
 
</div>
 
<!-- AUTOINCLUDE START "Page/Footer.cs.ihtml" DO NOT REMOVE -->
<!-- ============== PATIČKA ============== -->
<div class="Footer">
<script type="text/javascript">
<!--
SetRelativePath("../../../../../../");
DrawFooter();
// -->
</script>
<noscript>
<p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p>
</noscript>
</div>
<!-- AUTOINCLUDE END -->
 
</body>
</html>
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/DOC/HTML/XVC_FT220X02A.cs_soubory/image001.jpg
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/DOC/HTML/XVC_FT220X02A.cs_soubory/image002.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/DOC/HTML/XVC_FT220X02A.cs_soubory/image003.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/DOC/HTML/XVC_FT220X02A.cs_soubory/image004.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/DOC/HTML/XVC_FT220X02A.cs_soubory/image005.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/DOC/HTML/XVC_FT220X02A.cs_soubory/image006.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/DOC/HTML/XVC_FT220X02A.cs_soubory/image007.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/DOC/HTML/XVC_FT220X02A.cs_soubory/image008.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/DOC/HTML/XVC_FT220X02A.cs_soubory/image009.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/DOC/SRC/!____!.txt
0,0 → 1,0
Ostatní zdrojové soubory jsou brané z verze XVC_FT220X01A
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/DOC/SRC/XVC_FT220X02A.cs.doc
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/DOC/SRC/XVC_FT220X02A_Bot.JPG
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/DOC/SRC/XVC_FT220X02A_Top.JPG
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/DOC/XVC_FT220X02A.cs.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/PCB/XVC_FT220X02A.pcb
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/SCH/XVC_FT220X02A_BOM.xls
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/SCH/XVC_FT220X02A.ASC
0,0 → 1,121
*PADS-PCB*
*PART*
C1 C,47pF@C0805
C2 C,47pF@C0805
C3 C,10nF@C0805
C4 C,100nF@C0805
C5 C,10uF@C0805
C6 C,100nF@C0805
C7 C,100nF@C0805
D1 LED,HCL-1505-4(RED)@LED1206REV
D2 LED,HCL-1503-4(GREEN)@LED1206REV
D3 LED,HCL-1505-4(RED)@LED1206REV
D4 D,BZV55-B3V6@MINIMELF
F1 R0805,SR075-06@R0805
J1 USB_B,USB_B_01@USB_B_01
J2 JUMP9_X3_X5_X8,JUMP9_X3_X5_X8@JUMP9_X3_X5_X8
J3 JUMP3,JUMP3@JUMP3
J4 JUMP2X3,JUMP2X3@JUMP2X3
L1 R0805,MI0805K400R-10@R0805
M1 PAD,HOLE_M3@HOLE_M3
M100 No_PCB_Device,Screw M3x12@No_PCB_Footprint
M101 No_PCB_Device,Screw M3x12@No_PCB_Footprint
M102 No_PCB_Device,Screw M3x12@No_PCB_Footprint
M103 No_PCB_Device,Screw M3x12@No_PCB_Footprint
M104 No_PCB_Device,Washer M3@No_PCB_Footprint
M105 No_PCB_Device,Washer M3@No_PCB_Footprint
M106 No_PCB_Device,Washer M3@No_PCB_Footprint
M107 No_PCB_Device,Washer M3@No_PCB_Footprint
M108 No_PCB_Device,Standoff M3x5@No_PCB_Footprint
M109 No_PCB_Device,Standoff M3x5@No_PCB_Footprint
M110 No_PCB_Device,Standoff M3x5@No_PCB_Footprint
M111 No_PCB_Device,Standoff M3x5@No_PCB_Footprint
M112 No_PCB_Device,JUMPER@No_PCB_Footprint
M2 PAD,HOLE_M3@HOLE_M3
M3 PAD,HOLE_M3@HOLE_M3
M4 PAD,HOLE_M3@HOLE_M3
M5 FIDU,FIDU@FIDU
M6 FIDU,FIDU@FIDU
M7 FIDU_PASTE,FIDU_PASTE@FIDU_PASTE
M8 FIDU_PASTE,FIDU_PASTE@FIDU_PASTE
Q1 T-FET-GSD,2N7000SMD@SOT23
Q2 T-FET-GSD,2N7000SMD@SOT23
R1 R,27@R0805
R10 R,10k@R0805
R11 R,10k@R0805
R2 R,27@R0805
R3 R,100@R0805
R4 R,100@R0805
R5 R,100@R0805
R6 R,100@R0805
R7 R,330@R0805
R8 R,330@R0805
R9 R,330@R0805
TP1 TP,TPS@TPS
TP2 TP,TPS@TPS
TP3 TP,TPS@TPS
U1 SSO16_154,FT220XS@SSO16_154
 
*NET*
*SIGNAL* TMS
U1.6 R6.1
*SIGNAL* N00894
D1.C Q1.D
*SIGNAL* GND
J2.2 J1.4 C1.1 C2.1 C4.1 C5.1 C6.1 C7.1
D3.C Q1.S Q2.S R11.1 U1.13 U1.5 J1.6 J1.5
D4.A M1.1 M2.1 M3.1 M4.1 J4.1 J4.2 J4.5
J4.6 C3.1
*SIGNAL* VCC
L1.2 C4.2 C5.2 U1.12
*SIGNAL* N00158
J1.1 F1.1
*SIGNAL* N00742
R6.2 J2.9
*SIGNAL* N01042
R8.2 D2.A
*SIGNAL* VCC_3V3
C6.2 U1.10 U1.11 R7.1 R8.1 R9.1 J3.1
*SIGNAL* VCC_IO
C7.2 U1.3 J3.2
*SIGNAL* USBDM
J1.2 C1.2 R1.1
*SIGNAL* USBDP
J1.3 C2.2 R2.1
*SIGNAL* N00252
R1.2 U1.9
*SIGNAL* VCC_TARGET
J2.1 R10.2 J3.3 D4.C
*SIGNAL* TDI
U1.4 R5.1
*SIGNAL* N01044
Q2.D D2.C
*SIGNAL* CBUS3
Q2.G R11.2 U1.16
*SIGNAL* N00821
R9.2 D3.A
*SIGNAL* N00733
R3.2 J2.4
*SIGNAL* N00739
R5.2 J2.7
*SIGNAL* N00830
R7.2 D1.A
*SIGNAL* N00736
R4.2 J2.6
*SIGNAL* N00254
R2.2 U1.8
*SIGNAL* TCK
U1.1 R3.1
*SIGNAL* N0000914
U1.14 TP2.1
*SIGNAL* N000094
U1.7 TP1.1
*SIGNAL* N0000915
U1.15 TP3.1
*SIGNAL* N00353
F1.2 L1.1 C3.2 J4.3 J4.4
*SIGNAL* N00934
Q1.G R10.1
*SIGNAL* TDO
U1.2 R4.1
*END*
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/SCH/XVC_FT220X02A.DSN
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/SCH/XVC_FT220X02A_SCH.PDF
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/SCH
Property changes:
Added: svn:ignore
+*.DBK
+*.ONL
+*.opj
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/XVC_FT220X02A_Bot_Small.JPG
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/XVC_FT220X02A_Top_Small.JPG
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/CAM_PROFI/M1.PHO
0,0 → 1,208
*
*
G04 PADS 9.2 Build Number: 414666 generated Gerber (RS-274-X) file*
G04 PC Version=2.1*
*
%IN "XVC_FT220X01A.pcb"*%
*
%MOIN*%
*
%FSLAX35Y35*%
*
*
*
*
G04 PC Standard Apertures*
*
*
G04 Thermal Relief Aperture macro.*
%AMTER*
1,1,$1,0,0*
1,0,$1-$2,0,0*
21,0,$3,$4,0,0,45*
21,0,$3,$4,0,0,135*
%
*
*
G04 Annular Aperture macro.*
%AMANN*
1,1,$1,0,0*
1,0,$2,0,0*
%
*
*
G04 Odd Aperture macro.*
%AMODD*
1,1,$1,0,0*
1,0,$1-0.005,0,0*
%
*
*
G04 PC Custom Aperture Macros*
*
*
*
*
*
*
G04 PC Aperture Table*
*
%ADD024C,0.001*%
%ADD052R,0.046X0.046*%
%ADD070C,0.15*%
%ADD100R,0.062X0.045*%
%ADD101R,0.045X0.062*%
%ADD102R,0.056X0.081*%
%ADD103C,0.071*%
%ADD104R,0.076X0.076*%
%ADD105C,0.076*%
%ADD106C,0.24213*%
%ADD107C,0.2*%
%ADD108R,0.045X0.057*%
%ADD109R,0.057X0.045*%
%ADD110O,0.018X0.066*%
%ADD111C,0.036*%
%ADD112R,0.0374X0.0689*%
%ADD113C,0.0374*%
*
*
*
*
G04 PC Circuitry*
G04 Layer Name XVC_FT220X01A.pcb - circuitry*
%LPD*%
*
*
G04 PC Custom Flashes*
G04 Layer Name XVC_FT220X01A.pcb - flashes*
%LPD*%
*
*
G04 PC Circuitry*
G04 Layer Name XVC_FT220X01A.pcb - circuitry*
%LPD*%
*
G54D24*
G54D52*
G01X216000Y110000D03*
X224000D03*
X220000Y118000D03*
X222000Y135000D03*
X214000D03*
X218000Y127000D03*
G54D70*
X142000Y136000D03*
Y184000D03*
G54D100*
X161500Y140200D03*
Y147800D03*
X153000Y140200D03*
Y147800D03*
X205000Y132200D03*
Y139800D03*
X196000Y132200D03*
Y139800D03*
X222000Y157200D03*
Y164800D03*
G54D101*
X172200Y187000D03*
X179800D03*
X192800Y159000D03*
X185200D03*
G54D102*
X215900Y202500D03*
X202100D03*
G54D103*
X161000Y165000D03*
Y155000D03*
X153000D03*
Y165000D03*
G54D104*
X218000Y211000D03*
X230000Y155000D03*
Y165000D03*
Y175000D03*
X191000Y169000D03*
Y179000D03*
X181000Y169000D03*
Y179000D03*
X171000Y169000D03*
Y179000D03*
G54D105*
X208000Y211000D03*
X188000D03*
X168000D03*
X158000D03*
X138000D03*
G54D106*
X120000Y120000D03*
X240000D03*
Y200000D03*
X120000D03*
G54D107*
Y145000D03*
X246000D03*
X120000Y175000D03*
X246000D03*
G54D108*
X170200Y141000D03*
X177800D03*
X170200Y151000D03*
X177800D03*
X184300Y202000D03*
X176700D03*
X165800D03*
X158200D03*
X176800Y124000D03*
X169200D03*
X161800D03*
X154200D03*
X170200Y159000D03*
X177800D03*
G54D109*
X232000Y136200D03*
Y143800D03*
X222000Y149800D03*
Y142200D03*
X218000Y181200D03*
Y188800D03*
X203000Y180700D03*
Y188300D03*
X189000Y122800D03*
Y115200D03*
X186000Y143200D03*
Y150800D03*
G54D110*
X215750Y172500D03*
X213250D03*
X210750D03*
X208250D03*
X205750D03*
X203250D03*
X200750D03*
X198250D03*
Y149500D03*
X200750D03*
X203250D03*
X205750D03*
X208250D03*
X210750D03*
X213250D03*
X215750D03*
G54D111*
X197000Y179000D03*
X212500Y141500D03*
X216500Y142000D03*
G54D112*
X210087Y114000D03*
X195913D03*
X181087D03*
X166913D03*
X152087D03*
X137913D03*
G54D113*
X203000D03*
X174000D03*
X145000D03*
X0Y0D02*
M02*
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/CAM_PROFI/P1.pho
0,0 → 1,161
*
*
G04 PADS 9.2 Build Number: 414666 generated Gerber (RS-274-X) file*
G04 PC Version=2.1*
*
%IN "XVC_FT220X01A.pcb"*%
*
%MOIN*%
*
%FSLAX35Y35*%
*
*
*
*
G04 PC Standard Apertures*
*
*
G04 Thermal Relief Aperture macro.*
%AMTER*
1,1,$1,0,0*
1,0,$1-$2,0,0*
21,0,$3,$4,0,0,45*
21,0,$3,$4,0,0,135*
%
*
*
G04 Annular Aperture macro.*
%AMANN*
1,1,$1,0,0*
1,0,$2,0,0*
%
*
*
G04 Odd Aperture macro.*
%AMODD*
1,1,$1,0,0*
1,0,$1-0.005,0,0*
%
*
*
G04 PC Custom Aperture Macros*
*
*
*
*
*
*
G04 PC Aperture Table*
*
%ADD024C,0.001*%
%ADD040R,0.06X0.06*%
%ADD076R,0.052X0.035*%
%ADD077R,0.035X0.052*%
%ADD078R,0.046X0.071*%
%ADD079R,0.036X0.036*%
%ADD080R,0.035X0.047*%
%ADD081R,0.047X0.035*%
%ADD082O,0.01X0.06*%
%ADD083R,0.02559X0.05709*%
*
*
*
*
G04 PC Circuitry*
G04 Layer Name XVC_FT220X01A.pcb - circuitry*
%LPD*%
*
*
G04 PC Custom Flashes*
G04 Layer Name XVC_FT220X01A.pcb - flashes*
%LPD*%
*
*
G04 PC Circuitry*
G04 Layer Name XVC_FT220X01A.pcb - circuitry*
%LPD*%
*
G54D24*
G54D40*
G01X120000Y175000D03*
X246000D03*
G54D76*
X161500Y140200D03*
Y147800D03*
X153000Y140200D03*
Y147800D03*
X205000Y132200D03*
Y139800D03*
X196000Y132200D03*
Y139800D03*
X222000Y157200D03*
Y164800D03*
G54D77*
X172200Y187000D03*
X179800D03*
X192800Y159000D03*
X185200D03*
G54D78*
X215900Y202500D03*
X202100D03*
G54D79*
X216000Y110000D03*
X224000D03*
X220000Y118000D03*
X222000Y135000D03*
X214000D03*
X218000Y127000D03*
G54D80*
X170200Y141000D03*
X177800D03*
X170200Y151000D03*
X177800D03*
X184300Y202000D03*
X176700D03*
X165800D03*
X158200D03*
X176800Y124000D03*
X169200D03*
X161800D03*
X154200D03*
X170200Y159000D03*
X177800D03*
G54D81*
X232000Y136200D03*
Y143800D03*
X222000Y149800D03*
Y142200D03*
X218000Y181200D03*
Y188800D03*
X203000Y180700D03*
Y188300D03*
X189000Y122800D03*
Y115200D03*
X186000Y143200D03*
Y150800D03*
G54D82*
X215750Y172500D03*
X213250D03*
X210750D03*
X208250D03*
X205750D03*
X203250D03*
X200750D03*
X198250D03*
Y149500D03*
X200750D03*
X203250D03*
X205750D03*
X208250D03*
X210750D03*
X213250D03*
X215750D03*
G54D83*
X210087Y114000D03*
X195913D03*
X181087D03*
X166913D03*
X152087D03*
X137913D03*
X0Y0D02*
M02*
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/CAM_PROFI/V1.PHO
0,0 → 1,2033
*
*
G04 PADS 9.2 Build Number: 414666 generated Gerber (RS-274-X) file*
G04 PC Version=2.1*
*
%IN "XVC_FT220X01A.pcb"*%
*
%MOIN*%
*
%FSLAX35Y35*%
*
*
*
*
G04 PC Standard Apertures*
*
*
G04 Thermal Relief Aperture macro.*
%AMTER*
1,1,$1,0,0*
1,0,$1-$2,0,0*
21,0,$3,$4,0,0,45*
21,0,$3,$4,0,0,135*
%
*
*
G04 Annular Aperture macro.*
%AMANN*
1,1,$1,0,0*
1,0,$2,0,0*
%
*
*
G04 Odd Aperture macro.*
%AMODD*
1,1,$1,0,0*
1,0,$1-0.005,0,0*
%
*
*
G04 PC Custom Aperture Macros*
*
*
*
*
*
*
G04 PC Aperture Table*
*
%ADD012R,0.07X0.07*%
%ADD013C,0.23622*%
%ADD014C,0.05*%
%ADD017C,0.02*%
%ADD019C,0.03*%
%ADD020C,0.012*%
%ADD024C,0.001*%
%ADD025C,0.01*%
%ADD031C,0.07*%
%ADD035C,0.065*%
%ADD036C,0.008*%
%ADD040R,0.06X0.06*%
%ADD055R,0.056X0.039*%
%ADD056R,0.039X0.056*%
%ADD057R,0.05X0.075*%
%ADD058C,0.14*%
%ADD059R,0.04X0.04*%
%ADD060R,0.039X0.051*%
%ADD061R,0.051X0.039*%
%ADD062O,0.012X0.06*%
%ADD063R,0.0315X0.06299*%
%ADD064C,0.0315*%
%ADD065C,0.016*%
*
*
*
*
G04 PC Circuitry*
G04 Layer Name XVC_FT220X01A.pcb - circuitry*
%LPD*%
*
*
G04 PC Custom Flashes*
G04 Layer Name XVC_FT220X01A.pcb - flashes*
%LPD*%
*
*
G04 PC Circuitry*
G04 Layer Name XVC_FT220X01A.pcb - circuitry*
%LPD*%
*
G54D12*
G01X218000Y211000D03*
X230000Y155000D03*
Y165000D03*
Y175000D03*
X191000Y169000D03*
Y179000D03*
X181000Y169000D03*
Y179000D03*
X171000Y169000D03*
Y179000D03*
G54D13*
X120000Y120000D03*
X240000D03*
Y200000D03*
X120000D03*
G54D14*
Y145000D03*
X246000D03*
G54D17*
X179800Y187000D02*
Y180200D01*
X181000Y179000*
X172200Y187000D02*
Y187850D01*
X176150Y191800*
X182578*
X184875Y189503*
Y185125*
X191000Y179000*
X177800Y159000D02*
Y165800D01*
X181000Y169000*
X174000Y147000D02*
X175000Y146000D01*
X181050*
X181550Y146500*
X182100*
X185400Y143200*
X186000*
X171000Y179000D02*
Y185800D01*
X172200Y187000*
X171000Y169000D02*
Y179000D01*
X161000Y165000D02*
X164800D01*
X170200Y159600*
Y159000*
X174000Y155000D02*
X177800Y158800D01*
Y159000*
X186000Y150800D02*
Y154000D01*
X186000*
X196000*
X197000Y155000*
X204300*
X204600Y154700*
X181000Y169000D02*
Y179000D01*
X191000D02*
Y169000D01*
X229750Y164750D02*
X230000Y165000D01*
X222000Y164800D02*
X229550D01*
X229600Y164750*
X185200Y159000D02*
X186000D01*
Y150800*
X138000Y211000D02*
X154150Y194850D01*
X186622*
X193172Y188300*
X203000*
X158000Y211000D02*
Y202000D01*
X168000Y211000D02*
X172500Y206500D01*
X172800*
X176700Y202600*
Y202000*
X202100Y202500D02*
Y203750D01*
X208000Y209650*
Y211000*
X215900Y202500D02*
Y208900D01*
X218000Y211000*
X215900Y202500D02*
Y201250D01*
X229800Y187350*
Y175200*
X230000Y175000*
X188000Y211000D02*
X194603Y204397D01*
Y200918*
X198872Y196650*
X209550*
X217400Y188800*
X218000*
G54D19*
X197000Y179000D03*
X212500Y141500D03*
X216500Y142000D03*
G54D20*
X137913Y114000D02*
Y119000D01*
X142913Y124000*
X154200*
X166913Y114000D02*
Y119000D01*
X166913*
X168200*
X169200Y120000*
Y124000*
X181087Y114000D02*
Y115575D01*
X184512Y119000*
X192000*
X198000Y125000*
X211000*
X213000Y127000*
X218000*
X210087Y114000D02*
X216000D01*
X220000Y118000*
X189000Y115200D02*
X193000D01*
Y114000*
X195913*
X216000Y110000D02*
X220000Y114000D01*
X223000*
X225000Y116000*
Y125000*
X232000Y132000*
Y136200*
X161500Y147800D02*
X162350D01*
X165650Y144500*
X167300*
X170200Y141600*
Y141000*
X161800Y124000D02*
Y124600D01*
X166200Y129000*
X172400*
X176800Y124600*
Y124000*
X182000*
X183200Y122800*
X189000*
X177800Y151000D02*
Y151600D01*
X181500Y155300*
Y162313*
X182837Y163650*
X194913*
X198250Y166987*
Y172500*
X177800Y141000D02*
X181000D01*
X183000Y139000*
X189000*
X191000Y141000*
Y142000*
X193000Y144000*
X195150*
X198250Y147100*
Y149500*
X153000Y155000D02*
X158000Y160000D01*
X163000*
X166000Y157000*
Y155800*
X170200Y151600*
Y151000*
X153000Y155000D02*
Y147800D01*
X161000Y155000D02*
Y148300D01*
X161500Y147800*
X203000Y180700D02*
Y177500D01*
X203250Y177250*
Y172500*
X197000Y179000D02*
X197500D01*
X200750Y175750*
Y172500*
X191000Y128000D02*
Y135650D01*
X195150Y139800*
X196000*
X191000Y128000D02*
X210000D01*
X213000Y131000*
X225000*
X227000Y133000*
Y147000*
X230000Y150000*
Y155000*
X209400Y135750D02*
X210150Y135000D01*
X214000*
X204600Y154700D02*
X205050D01*
X205750Y154000*
Y149500*
X200750D02*
Y143800D01*
X203000*
X203250Y144050*
Y149500*
X191000Y179000D02*
X196500Y184500D01*
X206000*
X207500Y183000*
Y180700*
X229600Y164750D02*
X229750D01*
X208250Y149500D02*
Y157100D01*
X208350Y157200*
X222000*
X206000Y160700D02*
X208250Y158450D01*
Y157100*
X215750Y149500D02*
Y147100D01*
X217550Y145300*
X218300*
X221400Y142200*
X222000*
X213250Y149500D02*
Y146250D01*
X216500Y143000*
Y142000*
X210750Y149500D02*
Y145250D01*
X212500Y143500*
Y141500*
X208250Y149500D02*
Y144450D01*
X209400Y143300*
Y135750*
X205750Y172500D02*
Y160950D01*
X206000Y160700*
X205750Y172500D02*
Y176700D01*
X205975Y176925*
X205988*
X207500Y178437*
Y180700*
X208250Y172500D02*
Y175794D01*
X209700Y177244*
Y180700*
X210750Y172500D02*
Y168300D01*
X214250Y164800*
X222000*
X215750Y172500D02*
Y176700D01*
X216350Y177300*
X217300*
X218000Y178000*
Y181200*
X189000Y122800D02*
Y126000D01*
X191000Y128000*
X232000Y143800D02*
Y147000D01*
X236000Y151000*
Y165000*
X222000Y135000D02*
Y142200D01*
X230000Y175000D02*
X236000Y169000D01*
Y165000*
X222000Y157200D02*
Y149800D01*
X196000Y139800D02*
X196850D01*
X200750Y143700*
Y143800*
X196000Y132200D02*
X205000D01*
X192800Y159000D02*
X204300D01*
X206000Y160700*
X205000Y139800D02*
X205750Y140550D01*
Y149500*
X205000Y132200D02*
X205850D01*
X209400Y135750*
X165800Y202000D02*
Y201400D01*
X169750Y197450*
X187699*
X193299Y191850*
X206213*
X209700Y188363*
Y180700*
X184300Y202000D02*
X187450D01*
X195400Y194050*
X207124*
X213250Y187924*
Y172500*
G54D24*
G54D25*
X218677Y138068D02*
G75*
G03X218552Y138806I-389J314D01*
G01X218317Y138983D02*
G03X218552Y138806I1133J1267D01*
G01X218317Y138983D02*
G03X217783Y139068I-334J-373D01*
G01X215103Y139121D02*
G03X217783Y139068I1397J2879D01*
G01X215103Y139121D02*
G03X214563Y139053I-218J-450D01*
G01X210338Y139141D02*
G03X214563Y139053I2162J2359D01*
G01X210338Y139141D02*
G03X209500Y138772I-338J-369D01*
G01Y137850*
X207800Y136150D02*
G03X209500Y137850I0J1700D01*
G01X207800Y136150D02*
X202200D01*
X200886Y136771D02*
G03X202200Y136150I1314J1079D01*
G01X200886Y136771D02*
G03X200114I-386J-317D01*
G01X198800Y136150D02*
G03X200114Y136771I0J1700D01*
G01X198800Y136150D02*
X194960D01*
G03X194606Y136004I-0J-500*
G01X193446Y134844*
G03X193300Y134490I354J-354*
G01Y130800*
G03X193800Y130300I500J0*
G01X208840*
G03X209194Y130446I0J500*
G01X211374Y132626*
X213000Y133300D02*
G03X211374Y132626I0J-2300D01*
G01X213000Y133300D02*
X217800D01*
G03X218300Y133800I-0J500*
G01Y137000*
X218677Y138068D02*
G03X218300Y137000I1323J-1068D01*
G01X225908Y149160D02*
G03X225769Y149965I-354J354D01*
G01X224800Y151500D02*
G03X225769Y149965I1700J0D01*
G01X224800Y151500D02*
Y158500D01*
X225256Y159659D02*
G03X224800Y158500I1244J-1159D01*
G01X225256Y159659D02*
G03Y160341I-365J341D01*
G01X224932Y160843D02*
G03X225256Y160341I1568J657D01*
G01X224932Y160843D02*
G03X224471Y161150I-461J-193D01*
G01X219200*
X217632Y162193D02*
G03X219200Y161150I1568J657D01*
G01X217632Y162193D02*
G03X217171Y162500I-461J-193D01*
G01X214250*
X212624Y163174D02*
G03X214250Y162500I1626J1626D01*
G01X212624Y163174D02*
X209124Y166674D01*
X208601Y167481D02*
G03X209124Y166674I2149J819D01*
G01X208601Y167481D02*
G03X208154Y167802I-467J-179D01*
G01X207223Y168042D02*
G03X208154Y167802I1027J2058D01*
G01X207223Y168042D02*
G03X206777I-223J-448D01*
G01X204723D02*
G03X206777I1027J2058D01*
G01X204723D02*
G03X204277I-223J-448D01*
G01X202223D02*
G03X204277I1027J2058D01*
G01X202223D02*
G03X201777I-223J-448D01*
G01X200996Y167813D02*
G03X201777Y168042I-246J2287D01*
G01X200996Y167813D02*
G03X200550Y167316I54J-497D01*
G01Y166987*
X199876Y165361D02*
G03X200550Y166987I-1626J1626D01*
G01X199876Y165361D02*
X196539Y162024D01*
X194913Y161350D02*
G03X196539Y162024I-0J2300D01*
G01X194913Y161350D02*
X189350D01*
G03X188850Y160850I0J-500*
G01Y157200*
G03X189350Y156700I500J0*
G01X194675*
G03X195028Y156846I-0J500*
G01X195091Y156909*
X197000Y157700D02*
G03X195091Y156909I0J-2700D01*
G01X197000Y157700D02*
X204300D01*
X206209Y156909D02*
G03X204300Y157700I-1909J-1909D01*
G01X206209Y156909D02*
X206509Y156609D01*
X206889Y156131D02*
G03X206509Y156609I-2289J-1431D01*
G01X206889Y156131D02*
G03X206960Y156043I424J266D01*
G01X207376Y155626*
X207979Y154568D02*
G03X207376Y155626I-2229J-568D01*
G01X207979Y154568D02*
G03X208425Y154193I484J124D01*
G01X209277Y153958D02*
G03X208425Y154193I-1027J-2058D01*
G01X209277Y153958D02*
G03X209723I223J448D01*
G01X211777D02*
G03X209723I-1027J-2058D01*
G01X211777D02*
G03X212223I223J448D01*
G01X214277D02*
G03X212223I-1027J-2058D01*
G01X214277D02*
G03X214723I223J448D01*
G01X218050Y151900D02*
G03X214723Y153958I-2300J0D01*
G01X218050Y151900D02*
Y149500D01*
Y148260*
G03X218196Y147906I500J-0*
G01X218392Y147711*
G03X218666Y147571I353J353*
G01X219926Y146926D02*
G03X218666Y147571I-1626J-1626D01*
G01X219926Y146926D02*
X220856Y145996D01*
G03X221210Y145850I354J354*
G01X224200*
G03X224700Y146350I-0J500*
G01Y147000*
X225374Y148626D02*
G03X224700Y147000I1626J-1626D01*
G01X225374Y148626D02*
X225908Y149160D01*
X199530Y184080D02*
G03Y184920I-271J420D01*
G01X199051Y185384D02*
G03X199530Y184920I1399J966D01*
G01X199051Y185384D02*
G03X198640Y185600I-411J-284D01*
G01X193172*
X191263Y186391D02*
G03X193172Y185600I1909J1909D01*
G01X191263Y186391D02*
X185650Y192004D01*
G03X185297Y192150I-353J-354*
G01X182941*
G03X182670Y191230I-0J-500*
G01X183450Y189800D02*
G03X182670Y191230I-1700J0D01*
G01X183450Y189800D02*
Y184700D01*
G03X183950Y184200I500J0*
G01X184500*
X186200Y182500D02*
G03X184500Y184200I-1700J0D01*
G01X186200Y182500D02*
Y175500D01*
X185744Y174341D02*
G03X186200Y175500I-1244J1159D01*
G01X185744Y174341D02*
G03Y173659I365J-341D01*
G01X186200Y172500D02*
G03X185744Y173659I-1700J0D01*
G01X186200Y172500D02*
Y166450D01*
G03X186700Y165950I500J0*
G01X193753*
G03X194106Y166096I-0J500*
G01X195804Y167794*
G03X195950Y168147I-354J353*
G01Y170100*
Y174900*
X196023Y175476D02*
G03X195950Y174900I2227J-576D01*
G01X196023Y175476D02*
G03X195736Y176060I-484J125D01*
G01X198081Y182012D02*
G03X195736Y176060I-1081J-3012D01*
G01X198081Y182012D02*
G03X198750Y182482I169J470D01*
G01Y182650*
X199530Y184080D02*
G03X198750Y182650I920J-1430D01*
G01X257500Y178776D02*
Y217000D01*
G03X257000Y217500I-500J-0*
G01X103000*
G03X102500Y217000I0J-500*
G01Y192309*
G03X103000Y191809I500J0*
G01X111150*
X112650Y190309D02*
G03X111150Y191809I-1500J0D01*
G01X112650Y190309D02*
Y184399D01*
G03X113445Y183995I500J-0*
G01Y166005D02*
G03Y183995I6555J8995D01*
G01Y166005D02*
G03X112650Y165601I-295J-404D01*
G01Y154399*
G03X113445Y153995I500J-0*
G01Y136005D02*
G03Y153995I6555J8995D01*
G01Y136005D02*
G03X112650Y135601I-295J-404D01*
G01Y134600*
X111150Y133100D02*
G03X112650Y134600I0J1500D01*
G01X111150Y133100D02*
X103000D01*
G03X102500Y132600I0J-500*
G01Y103000*
G03X103000Y102500I500J0*
G01X257000*
G03X257500Y103000I-0J500*
G01Y141224*
G03X256527Y141386I-500J-0*
G01X237148Y138253D02*
G03X256527Y141386I8852J6747D01*
G01X237148Y138253D02*
G03X236250Y137950I-398J-303D01*
G01Y134250*
X234743Y132561D02*
G03X236250Y134250I-193J1689D01*
G01X234743Y132561D02*
G03X234300Y132064I57J-497D01*
G01Y132000*
X233626Y130374D02*
G03X234300Y132000I-1626J1626D01*
G01X233626Y130374D02*
X227446Y124194D01*
G03X227300Y123840I354J-354*
G01Y116000*
X226626Y114374D02*
G03X227300Y116000I-1626J1626D01*
G01X226626Y114374D02*
X224626Y112374D01*
X223000Y111700D02*
G03X224626Y112374I0J2300D01*
G01X223000Y111700D02*
X221160D01*
G03X220806Y111554I-0J-500*
G01X219846Y110594*
G03X219700Y110240I354J-354*
G01Y108000*
X218000Y106300D02*
G03X219700Y108000I0J1700D01*
G01X218000Y106300D02*
X214000D01*
X212300Y108000D02*
G03X214000Y106300I1700J0D01*
G01X212300Y108000D02*
Y108655D01*
G03X211768Y109154I-500J-0*
G01X211661Y109150D02*
G03X211768Y109154I0J1700D01*
G01X211661Y109150D02*
X208512D01*
X208061Y109211D02*
G03X208512Y109150I451J1639D01*
G01X208061Y109211D02*
G03X207587Y109094I-132J-482D01*
G01X198413D02*
G03X207587I4587J4906D01*
G01X198413D02*
G03X197939Y109211I-342J-365D01*
G01X197488Y109150D02*
G03X197939Y109211I0J1700D01*
G01X197488Y109150D02*
X194339D01*
X192639Y110850D02*
G03X194339Y109150I1700J0D01*
G01X192639Y110850D02*
Y111130D01*
G03X192005Y111612I-500J0*
G01X191550Y111550D02*
G03X192005Y111612I0J1700D01*
G01X191550Y111550D02*
X186450D01*
X185222Y112074D02*
G03X186450Y111550I1228J1176D01*
G01X185222Y112074D02*
G03X184361Y111728I-361J-346D01*
G01Y110850*
X182661Y109150D02*
G03X184361Y110850I0J1700D01*
G01X182661Y109150D02*
X179512D01*
X179061Y109211D02*
G03X179512Y109150I451J1639D01*
G01X179061Y109211D02*
G03X178587Y109094I-132J-482D01*
G01X169413D02*
G03X178587I4587J4906D01*
G01X169413D02*
G03X168939Y109211I-342J-365D01*
G01X168488Y109150D02*
G03X168939Y109211I0J1700D01*
G01X168488Y109150D02*
X165339D01*
X163639Y110850D02*
G03X165339Y109150I1700J0D01*
G01X163639Y110850D02*
Y117150D01*
X164392Y118562D02*
G03X163639Y117150I947J-1412D01*
G01X164392Y118562D02*
G03X164613Y118977I-279J415D01*
G01Y119000*
X164625Y119232D02*
G03X164613Y119000I2288J-232D01*
G01X164625Y119232D02*
G03X164042Y119775I-497J51D01*
G01X163750Y119750D02*
G03X164042Y119775I0J1700D01*
G01X163750Y119750D02*
X159850D01*
X158420Y120530D02*
G03X159850Y119750I1430J920D01*
G01X158420Y120530D02*
G03X157580I-420J-271D01*
G01X156150Y119750D02*
G03X157580Y120530I0J1700D01*
G01X156150Y119750D02*
X152250D01*
X150561Y121257D02*
G03X152250Y119750I1689J193D01*
G01X150561Y121257D02*
G03X150064Y121700I-497J-57D01*
G01X146000*
G03X145500Y121200I0J-500*
G01Y121147*
G03X145931Y120652I500J-0*
G01X140413Y109094D02*
G03X145931Y120652I4587J4906D01*
G01X140413Y109094D02*
G03X139939Y109211I-342J-365D01*
G01X139488Y109150D02*
G03X139939Y109211I0J1700D01*
G01X139488Y109150D02*
X136339D01*
X134639Y110850D02*
G03X136339Y109150I1700J0D01*
G01X134639Y110850D02*
Y117150D01*
X135392Y118562D02*
G03X134639Y117150I947J-1412D01*
G01X135392Y118562D02*
G03X135613Y118977I-279J415D01*
G01Y119000*
X136287Y120626D02*
G03X135613Y119000I1626J-1626D01*
G01X136287Y120626D02*
X141287Y125626D01*
X142913Y126300D02*
G03X141287Y125626I0J-2300D01*
G01X142913Y126300D02*
X150064D01*
G03X150561Y126743I0J500*
G01X152250Y128250D02*
G03X150561Y126743I0J-1700D01*
G01X152250Y128250D02*
X156150D01*
X157580Y127470D02*
G03X156150Y128250I-1430J-920D01*
G01X157580Y127470D02*
G03X158420I420J271D01*
G01X159850Y128250D02*
G03X158420Y127470I0J-1700D01*
G01X159850Y128250D02*
X161990D01*
G03X162344Y128396I0J500*
G01X164574Y130626*
X166200Y131300D02*
G03X164574Y130626I0J-2300D01*
G01X166200Y131300D02*
X172400D01*
X174026Y130626D02*
G03X172400Y131300I-1626J-1626D01*
G01X174026Y130626D02*
X176256Y128396D01*
G03X176610Y128250I354J354*
G01X178750*
X180439Y126743D02*
G03X178750Y128250I-1689J-193D01*
G01X180439Y126743D02*
G03X180936Y126300I497J57D01*
G01X182000*
X183626Y125626D02*
G03X182000Y126300I-1626J-1626D01*
G01X183626Y125626D02*
X184006Y125246D01*
G03X184360Y125100I354J354*
G01X184421*
G03X184882Y125407I-0J500*
G01X186385Y126449D02*
G03X184882Y125407I65J-1699D01*
G01X186385Y126449D02*
G03X186836Y126779I-20J499D01*
G01X187374Y127626D02*
G03X186836Y126779I1626J-1626D01*
G01X187374Y127626D02*
X188554Y128806D01*
G03X188700Y129160I-354J354*
G01Y135650*
X188745Y136102D02*
G03X188700Y135650I2255J-452D01*
G01X188745Y136102D02*
G03X188255Y136700I-490J98D01*
G01X183000*
X181550Y137215D02*
G03X183000Y136700I1450J1785D01*
G01X181550Y137215D02*
G03X180897Y137195I-315J-388D01*
G01X179750Y136750D02*
G03X180897Y137196I0J1700D01*
G01X179750Y136750D02*
X175850D01*
X174420Y137530D02*
G03X175850Y136750I1430J920D01*
G01X174420Y137530D02*
G03X173580I-420J-271D01*
G01X172150Y136750D02*
G03X173580Y137530I0J1700D01*
G01X172150Y136750D02*
X168250D01*
X166550Y138450D02*
G03X168250Y136750I1700J0D01*
G01X166550Y138450D02*
Y141700D01*
G03X166050Y142200I-500J-0*
G01X165650*
X164024Y142874D02*
G03X165650Y142200I1626J1626D01*
G01X164024Y142874D02*
X162894Y144004D01*
G03X162540Y144150I-354J-354*
G01X158700*
X157580Y144571D02*
G03X158700Y144150I1120J1279D01*
G01X157580Y144571D02*
G03X156920I-330J-376D01*
G01X155800Y144150D02*
G03X156920Y144571I0J1700D01*
G01X155800Y144150D02*
X150200D01*
X148500Y145850D02*
G03X150200Y144150I1700J0D01*
G01X148500Y145850D02*
Y149750D01*
X149149Y151086D02*
G03X148500Y149750I1051J-1336D01*
G01X149149Y151086D02*
G03X149222Y151802I-309J393D01*
G01X154205Y159801D02*
G03X149222Y151802I-1205J-4801D01*
G01X154205Y159801D02*
G03X154680Y159933I121J485D01*
G01X156374Y161626*
X156609Y161832D02*
G03X156374Y161626I1391J-1832D01*
G01X156609Y161832D02*
G03X156737Y162484I-302J398D01*
G01X165052Y167844D02*
G03X156737Y162484I-4052J-2844D01*
G01X165052Y167844D02*
G03X165358Y167642I409J287D01*
G01X166709Y166909D02*
G03X165358Y167642I-1909J-1909D01*
G01X166709Y166909D02*
X170222Y163396D01*
G03X170575Y163250I353J354*
G01X172150*
X173580Y162470D02*
G03X172150Y163250I-1430J-920D01*
G01X173580Y162470D02*
G03X174420I420J271D01*
G01X174884Y162949D02*
G03X174420Y162470I966J-1399D01*
G01X174884Y162949D02*
G03X175100Y163360I-284J411D01*
G01Y165800*
X175691Y167485D02*
G03X175100Y165800I2109J-1685D01*
G01X175691Y167485D02*
G03X175800Y167798I-391J313D01*
G01Y172500*
X176256Y173659D02*
G03X175800Y172500I1244J-1159D01*
G01X176256Y173659D02*
G03Y174341I-365J341D01*
G01X175800Y175500D02*
G03X176256Y174341I1700J0D01*
G01X175800Y175500D02*
Y182500D01*
X176105Y183472D02*
G03X175800Y182500I1395J-972D01*
G01X176105Y183472D02*
G03X176185Y183858I-410J286D01*
G01X176150Y184200D02*
G03X176185Y183858I1700J0D01*
G01X176150Y184200D02*
Y189800D01*
X176930Y191230D02*
G03X176150Y189800I920J-1430D01*
G01X176930Y191230D02*
G03X176659Y192150I-271J420D01*
G01X154150*
X152241Y192941D02*
G03X154150Y192150I1909J1909D01*
G01X152241Y192941D02*
X139426Y205755D01*
G03X138979Y205893I-353J-353*
G01X143107Y210021D02*
G03X138979Y205893I-5107J979D01*
G01X143107Y210021D02*
G03X143245Y209574I491J-94D01*
G01X153696Y199122*
G03X154550Y199476I354J354*
G01Y204550*
X155130Y205829D02*
G03X154550Y204550I1120J-1279D01*
G01X155130Y205829D02*
G03X155300Y206205I-330J376D01*
G01Y206283*
G03X155081Y206697I-500J-0*
G01X162561Y213497D02*
G03X155081Y206697I-4561J-2497D01*
G01X162561Y213497D02*
G03X163439I439J240D01*
G01X173107Y210021D02*
G03X163439Y213497I-5107J979D01*
G01X173107Y210021D02*
G03X173245Y209574I491J-94D01*
G01X173749Y209069*
G03X173899Y208966I354J354*
G01X174709Y208409D02*
G03X173899Y208966I-1909J-1909D01*
G01X174709Y208409D02*
X176472Y206646D01*
G03X176825Y206500I353J354*
G01X183939*
G03X184295Y207351I0J500*
G01X193107Y210021D02*
G03X184295Y207351I-5107J979D01*
G01X193107Y210021D02*
G03X193245Y209574I491J-94D01*
G01X196512Y206306*
X197303Y204397D02*
G03X196512Y206306I-2700J-0D01*
G01X197303Y204397D02*
Y202244D01*
G03X197450Y201890I500J-0*
G01X199844Y199496*
G03X200197Y199350I353J354*
G01X209550*
X210942Y198963D02*
G03X209550Y199350I-1392J-2313D01*
G01X210942Y198963D02*
G03X211700Y199392I258J429D01*
G01Y206250*
X212550Y207722D02*
G03X211700Y206250I850J-1472D01*
G01X212550Y207722D02*
G03X212800Y208155I-250J433D01*
G01Y214500*
X214500Y216200D02*
G03X212800Y214500I0J-1700D01*
G01X214500Y216200D02*
X221500D01*
X223200Y214500D02*
G03X221500Y216200I-1700J0D01*
G01X223200Y214500D02*
Y207500D01*
X221500Y205800D02*
G03X223200Y207500I0J1700D01*
G01X221500Y205800D02*
X220600D01*
G03X220100Y205300I0J-500*
G01Y201075*
G03X220246Y200722I500J0*
G01X231709Y189259*
X232500Y187350D02*
G03X231709Y189259I-2700J0D01*
G01X232500Y187350D02*
Y180700D01*
G03X233000Y180200I500J0*
G01X233500*
X234933Y179415D02*
G03X233500Y180200I-1433J-915D01*
G01X234933Y179415D02*
G03X235812Y179482I422J269D01*
G01X256527Y178614D02*
G03X235812Y179482I-10527J-3614D01*
G01X256527Y178614D02*
G03X257500Y178776I473J162D01*
G01X102500Y216799D02*
X257500D01*
X222466Y215899D02*
X257500D01*
X223125Y214999D02*
X257500D01*
X223200Y214099D02*
X257500D01*
X223200Y213199D02*
X257500D01*
X223200Y212299D02*
X257500D01*
X223200Y211399D02*
X257500D01*
X223200Y210499D02*
X257500D01*
X223200Y209599D02*
X257500D01*
X223200Y208699D02*
X257500D01*
X223200Y207799D02*
X257500D01*
X223090Y206899D02*
X257500D01*
X222298Y205999D02*
X257500D01*
X220100Y205099D02*
X257500D01*
X220100Y204199D02*
X257500D01*
X220100Y203299D02*
X257500D01*
X220100Y202399D02*
X257500D01*
X220100Y201499D02*
X257500D01*
X220370Y200599D02*
X257500D01*
X221270Y199699D02*
X257500D01*
X222170Y198799D02*
X257500D01*
X223070Y197899D02*
X257500D01*
X223970Y196999D02*
X257500D01*
X224870Y196099D02*
X257500D01*
X225770Y195199D02*
X257500D01*
X226670Y194299D02*
X257500D01*
X227570Y193399D02*
X257500D01*
X228470Y192499D02*
X257500D01*
X229370Y191599D02*
X257500D01*
X230270Y190699D02*
X257500D01*
X231170Y189799D02*
X257500D01*
X232012Y188899D02*
X257500D01*
X232421Y187999D02*
X257500D01*
X232500Y187099D02*
X257500D01*
X232500Y186199D02*
X257500D01*
X250221Y185299D02*
X257500D01*
X251962Y184399D02*
X257500D01*
X253187Y183499D02*
X257500D01*
X254133Y182599D02*
X257500D01*
X254889Y181699D02*
X257500D01*
X255500Y180799D02*
X257500D01*
X255994Y179899D02*
X257500D01*
X256387Y178999D02*
X257500D01*
X256461Y141199D02*
X257500D01*
X256089Y140299D02*
X257500D01*
X255618Y139399D02*
X257500D01*
X255034Y138499D02*
X257500D01*
X254313Y137599D02*
X257500D01*
X253414Y136699D02*
X257500D01*
X252262Y135799D02*
X257500D01*
X250674Y134899D02*
X257500D01*
X247689Y133999D02*
X257500D01*
X235801Y133099D02*
X257500D01*
X234318Y132199D02*
X257500D01*
X234190Y131299D02*
X257500D01*
X233651Y130399D02*
X257500D01*
X232751Y129499D02*
X257500D01*
X231851Y128599D02*
X257500D01*
X230951Y127699D02*
X257500D01*
X230051Y126799D02*
X257500D01*
X229151Y125899D02*
X257500D01*
X228251Y124999D02*
X257500D01*
X227372Y124099D02*
X257500D01*
X227300Y123199D02*
X257500D01*
X227300Y122299D02*
X257500D01*
X227300Y121399D02*
X257500D01*
X227300Y120499D02*
X257500D01*
X227300Y119599D02*
X257500D01*
X227300Y118699D02*
X257500D01*
X227300Y117799D02*
X257500D01*
X227300Y116899D02*
X257500D01*
X227300Y115999D02*
X257500D01*
X227116Y115099D02*
X257500D01*
X226451Y114199D02*
X257500D01*
X225551Y113299D02*
X257500D01*
X224651Y112399D02*
X257500D01*
X220751Y111499D02*
X257500D01*
X219851Y110599D02*
X257500D01*
X219700Y109699D02*
X257500D01*
X219700Y108799D02*
X257500D01*
X219697Y107899D02*
X257500D01*
X219374Y106999D02*
X257500D01*
X102500Y106099D02*
X257500D01*
X102500Y105199D02*
X257500D01*
X102500Y104299D02*
X257500D01*
X102500Y103399D02*
X257500D01*
X236231Y133999D02*
X244311D01*
X232500Y185299D02*
X241779D01*
X236250Y134899D02*
X241326D01*
X232500Y184399D02*
X240038D01*
X236250Y135799D02*
X239738D01*
X232500Y183499D02*
X238813D01*
X236250Y136699D02*
X238586D01*
X232500Y182599D02*
X237867D01*
X236250Y137599D02*
X237687D01*
X232500Y181699D02*
X237111D01*
X232500Y180799D02*
X236500D01*
X234466Y179899D02*
X236006D01*
X189744Y215899D02*
X213534D01*
X191324Y214999D02*
X212875D01*
X192176Y214099D02*
X212800D01*
X192712Y213199D02*
X212800D01*
X193035Y212299D02*
X212800D01*
X193185Y211399D02*
X212800D01*
X193176Y210499D02*
X212800D01*
X193221Y209599D02*
X212800D01*
X194120Y208699D02*
X212800D01*
X195020Y207799D02*
X212650D01*
X102500Y106999D02*
X212626D01*
X205808Y107899D02*
X212303D01*
X207250Y108799D02*
X212279D01*
X195920Y206899D02*
X211829D01*
X196777Y205999D02*
X211700D01*
X197210Y205099D02*
X211700D01*
X197303Y204199D02*
X211700D01*
X197303Y203299D02*
X211700D01*
X197303Y202399D02*
X211700D01*
X197841Y201499D02*
X211700D01*
X198741Y200599D02*
X211700D01*
X199641Y199699D02*
X211700D01*
X176808Y107899D02*
X200192D01*
X178250Y108799D02*
X198750D01*
X183912Y109699D02*
X193088D01*
X184343Y110599D02*
X192657D01*
X184361Y111499D02*
X192476D01*
X126262Y135799D02*
X188705D01*
X124674Y134899D02*
X188700D01*
X121689Y133999D02*
X188700D01*
X102964Y133099D02*
X188700D01*
X102500Y132199D02*
X188700D01*
X172478Y131299D02*
X188700D01*
X174254Y130399D02*
X188700D01*
X175154Y129499D02*
X188700D01*
X176054Y128599D02*
X188346D01*
X127414Y136699D02*
X188290D01*
X180003Y127699D02*
X187446D01*
X180432Y126799D02*
X186843D01*
X169744Y215899D02*
X186256D01*
X183298Y125899D02*
X185197D01*
X171324Y214999D02*
X184676D01*
X176220Y206899D02*
X184429D01*
X175320Y207799D02*
X183902D01*
X172176Y214099D02*
X183824D01*
X174367Y208699D02*
X183337D01*
X172712Y213199D02*
X183288D01*
X173221Y209599D02*
X182992D01*
X173035Y212299D02*
X182965D01*
X173176Y210499D02*
X182824D01*
X173185Y211399D02*
X182815D01*
X111916Y191599D02*
X177157D01*
X112599Y190699D02*
X176407D01*
X131042Y173599D02*
X176203D01*
X112650Y189799D02*
X176150D01*
X112650Y188899D02*
X176150D01*
X112650Y187999D02*
X176150D01*
X112650Y187099D02*
X176150D01*
X112650Y186199D02*
X176150D01*
X124221Y185299D02*
X176150D01*
X125962Y184399D02*
X176150D01*
X131119Y174499D02*
X176126D01*
X127187Y183499D02*
X176123D01*
X130890Y172699D02*
X175812D01*
X131123Y175399D02*
X175803D01*
X128133Y182599D02*
X175803D01*
X128889Y181699D02*
X175800D01*
X129500Y180799D02*
X175800D01*
X129994Y179899D02*
X175800D01*
X130387Y178999D02*
X175800D01*
X130690Y178099D02*
X175800D01*
X130911Y177199D02*
X175800D01*
X131054Y176299D02*
X175800D01*
X130660Y171799D02*
X175800D01*
X130347Y170899D02*
X175800D01*
X129943Y169999D02*
X175800D01*
X163776Y169099D02*
X175800D01*
X164778Y168199D02*
X175800D01*
X166216Y167299D02*
X175554D01*
X167220Y166399D02*
X175167D01*
X168120Y165499D02*
X175100D01*
X169020Y164599D02*
X175100D01*
X169920Y163699D02*
X175100D01*
X173304Y162799D02*
X174696D01*
X173633Y137599D02*
X174367D01*
X147808Y107899D02*
X171192D01*
X149250Y108799D02*
X169750D01*
X128313Y137599D02*
X166778D01*
X130461Y141199D02*
X166550D01*
X130089Y140299D02*
X166550D01*
X129618Y139399D02*
X166550D01*
X129034Y138499D02*
X166550D01*
X130745Y142099D02*
X166352D01*
X159744Y215899D02*
X166256D01*
X102500Y131299D02*
X166122D01*
X161324Y214999D02*
X164676D01*
X149799Y118699D02*
X164529D01*
X148710Y119599D02*
X164515D01*
X102500Y130399D02*
X164346D01*
X150159Y109699D02*
X164088D01*
X130949Y142999D02*
X163899D01*
X162176Y214099D02*
X163824D01*
X150539Y117799D02*
X163767D01*
X150792Y110599D02*
X163657D01*
X151059Y116899D02*
X163639D01*
X151412Y115999D02*
X163639D01*
X151626Y115099D02*
X163639D01*
X151714Y114199D02*
X163639D01*
X151680Y113299D02*
X163639D01*
X151523Y112399D02*
X163639D01*
X151233Y111499D02*
X163639D01*
X102500Y129499D02*
X163446D01*
X131076Y143899D02*
X162999D01*
X102500Y128599D02*
X162546D01*
X157403Y127699D02*
X158597D01*
X157559Y120499D02*
X158441D01*
X129437Y169099D02*
X158224D01*
X128810Y168199D02*
X157222D01*
X112650Y161899D02*
X156681D01*
X128036Y167299D02*
X156616D01*
X112650Y162799D02*
X156566D01*
X139744Y215899D02*
X156256D01*
X127064Y166399D02*
X156252D01*
X112650Y163699D02*
X156224D01*
X125797Y165499D02*
X156075D01*
X123961Y164599D02*
X156066D01*
X112650Y160999D02*
X155746D01*
X146820Y205999D02*
X155256D01*
X112650Y160099D02*
X154846D01*
X145920Y206899D02*
X154803D01*
X141324Y214999D02*
X154676D01*
X147720Y205099D02*
X154641D01*
X148620Y204199D02*
X154550D01*
X149520Y203299D02*
X154550D01*
X150420Y202399D02*
X154550D01*
X151320Y201499D02*
X154550D01*
X152220Y200599D02*
X154550D01*
X153120Y199699D02*
X154550D01*
X145020Y207799D02*
X153902D01*
X142176Y214099D02*
X153824D01*
X144120Y208699D02*
X153337D01*
X142712Y213199D02*
X153288D01*
X143221Y209599D02*
X152992D01*
X143035Y212299D02*
X152965D01*
X143176Y210499D02*
X152824D01*
X102500Y192499D02*
X152823D01*
X143185Y211399D02*
X152815D01*
X102500Y193399D02*
X151783D01*
X102500Y127699D02*
X150997D01*
X102500Y194299D02*
X150883D01*
X146697Y120499D02*
X150841D01*
X102500Y126799D02*
X150568D01*
X145541Y121399D02*
X150523D01*
X112650Y159199D02*
X150378D01*
X102500Y195199D02*
X149983D01*
X112650Y158299D02*
X149309D01*
X129311Y151099D02*
X149164D01*
X102500Y196099D02*
X149083D01*
X128654Y151999D02*
X149064D01*
X131128Y144799D02*
X148864D01*
X112650Y157399D02*
X148670D01*
X129841Y150199D02*
X148560D01*
X127842Y152899D02*
X148518D01*
X131108Y145699D02*
X148507D01*
X130267Y149299D02*
X148500D01*
X130599Y148399D02*
X148500D01*
X130846Y147499D02*
X148500D01*
X131015Y146599D02*
X148500D01*
X112650Y156499D02*
X148282D01*
X126816Y153799D02*
X148198D01*
X102500Y196999D02*
X148183D01*
X123398Y155599D02*
X148086D01*
X125460Y154699D02*
X148059D01*
X102500Y197899D02*
X147283D01*
X102500Y198799D02*
X146383D01*
X102500Y199699D02*
X145483D01*
X102500Y200599D02*
X144583D01*
X102500Y201499D02*
X143683D01*
X102500Y202399D02*
X142783D01*
X102500Y107899D02*
X142192D01*
X102500Y203299D02*
X141883D01*
X102500Y125899D02*
X141615D01*
X102500Y204199D02*
X140983D01*
X102500Y108799D02*
X140750D01*
X102500Y124999D02*
X140659D01*
X102500Y205099D02*
X140083D01*
X102500Y124099D02*
X139759D01*
X102500Y123199D02*
X138859D01*
X102500Y122299D02*
X137959D01*
X102500Y121399D02*
X137059D01*
X102500Y205999D02*
X136576D01*
X102500Y215899D02*
X136256D01*
X102500Y120499D02*
X136169D01*
X102500Y119599D02*
X135693D01*
X102500Y118699D02*
X135529D01*
X102500Y109699D02*
X135088D01*
X102500Y206899D02*
X134803D01*
X102500Y117799D02*
X134767D01*
X102500Y214999D02*
X134676D01*
X102500Y110599D02*
X134657D01*
X102500Y116899D02*
X134639D01*
X102500Y115999D02*
X134639D01*
X102500Y115099D02*
X134639D01*
X102500Y114199D02*
X134639D01*
X102500Y113299D02*
X134639D01*
X102500Y112399D02*
X134639D01*
X102500Y111499D02*
X134639D01*
X102500Y207799D02*
X133902D01*
X102500Y214099D02*
X133824D01*
X102500Y208699D02*
X133337D01*
X102500Y213199D02*
X133288D01*
X102500Y209599D02*
X132992D01*
X102500Y212299D02*
X132965D01*
X102500Y210499D02*
X132824D01*
X102500Y211399D02*
X132815D01*
X112524Y133999D02*
X118311D01*
X112650Y155599D02*
X116602D01*
X112650Y164599D02*
X116039D01*
X112650Y185299D02*
X115779D01*
X112650Y134899D02*
X115326D01*
X112650Y154699D02*
X114540D01*
X112650Y165499D02*
X114203D01*
X112650Y184399D02*
X114038D01*
X112691Y135799D02*
X113738D01*
X183551Y184399D02*
X199749D01*
X183450Y185299D02*
X199114D01*
X185876Y183499D02*
X198977D01*
X186197Y182599D02*
X198750D01*
X186197Y175399D02*
X196005D01*
X185874Y174499D02*
X195950D01*
X185797Y173599D02*
X195950D01*
X186188Y172699D02*
X195950D01*
X186200Y171799D02*
X195950D01*
X186200Y170899D02*
X195950D01*
X186200Y169999D02*
X195950D01*
X186200Y169099D02*
X195950D01*
X186200Y168199D02*
X195950D01*
X186200Y167299D02*
X195309D01*
X186200Y176299D02*
X195284D01*
X186200Y181699D02*
X195280D01*
X186203Y166399D02*
X194409D01*
X186200Y177199D02*
X194355D01*
X186200Y180799D02*
X194353D01*
X186200Y178099D02*
X193930D01*
X186200Y179899D02*
X193929D01*
X186200Y178999D02*
X193800D01*
X183450Y186199D02*
X191477D01*
X183450Y187099D02*
X190555D01*
X183450Y187999D02*
X189655D01*
X183450Y188899D02*
X188755D01*
X183450Y189799D02*
X187855D01*
X183193Y190699D02*
X186955D01*
X182443Y191599D02*
X186055D01*
X218050Y149299D02*
X226005D01*
X218050Y150199D02*
X225406D01*
X188850Y160099D02*
X225381D01*
X218050Y148399D02*
X225174D01*
X188850Y159199D02*
X224950D01*
X218050Y151099D02*
X224848D01*
X188873Y160999D02*
X224829D01*
X188850Y158299D02*
X224800D01*
X205540Y157399D02*
X224800D01*
X206614Y156499D02*
X224800D01*
X207404Y155599D02*
X224800D01*
X207941Y154699D02*
X224800D01*
X217048Y153799D02*
X224800D01*
X217822Y152899D02*
X224800D01*
X218048Y151999D02*
X224800D01*
X218975Y147499D02*
X224755D01*
X220254Y146599D02*
X224700D01*
X196404Y161899D02*
X217791D01*
X197314Y162799D02*
X213116D01*
X198214Y163699D02*
X212099D01*
X199114Y164599D02*
X211199D01*
X200003Y165499D02*
X210299D01*
X200473Y166399D02*
X209399D01*
X200550Y167299D02*
X208679D01*
X188850Y157399D02*
X195760D01*
X213610Y138499D02*
X218774D01*
X209481Y137599D02*
X218409D01*
X209051Y136699D02*
X218300D01*
X194401Y135799D02*
X218300D01*
X193501Y134899D02*
X218300D01*
X193300Y133999D02*
X218300D01*
X193300Y133099D02*
X212059D01*
X209500Y138499D02*
X211390D01*
X193300Y132199D02*
X210946D01*
X193300Y131299D02*
X210046D01*
X193502Y130399D02*
X209138D01*
X200051Y136699D02*
X200949D01*
G54D31*
X208000Y211000D03*
X188000D03*
X168000D03*
X158000D03*
X138000D03*
G54D35*
X161000Y165000D03*
Y155000D03*
X153000D03*
Y165000D03*
G54D36*
X103750Y135000D02*
X109000Y137545D01*
X103750D02*
X109000Y135000D01*
X103750Y139182D02*
X109000Y140636D01*
X103750Y142091D02*
X109000Y140636D01*
X105000Y146455D02*
X104500Y146273D01*
X104000Y145909*
X103750Y145545*
Y144818*
X104000Y144455*
X104500Y144091*
X105000Y143909*
X105750Y143727*
X107000*
X107750Y143909*
X108250Y144091*
X108750Y144455*
X109000Y144818*
Y145545*
X108750Y145909*
X108250Y146273*
X107750Y146455*
X110000Y148091D02*
Y151909D01*
X103750Y153000D02*
X109000D01*
X103750D02*
Y155364D01*
X106250Y153000D02*
Y154455D01*
X103750Y158273D02*
X109000D01*
X103750Y157000D02*
Y159545D01*
X105000Y161364D02*
X104750D01*
X104250Y161545*
X104000Y161727*
X103750Y162091*
Y162818*
X104000Y163182*
X104250Y163364*
X104750Y163545*
X105250*
X105750Y163364*
X106500Y163000*
X109000Y161182*
Y163727*
X105000Y165545D02*
X104750D01*
X104250Y165727*
X104000Y165909*
X103750Y166273*
Y167000*
X104000Y167364*
X104250Y167545*
X104750Y167727*
X105250*
X105750Y167545*
X106500Y167182*
X109000Y165364*
Y167909*
X103750Y170636D02*
X104000Y170091D01*
X104750Y169727*
X106000Y169545*
X106750*
X108000Y169727*
X108750Y170091*
X109000Y170636*
Y171000*
X108750Y171545*
X108000Y171909*
X106750Y172091*
X106000*
X104750Y171909*
X104000Y171545*
X103750Y171000*
Y170636*
Y173727D02*
X109000Y176273D01*
X103750D02*
X109000Y173727D01*
X103750Y179000D02*
X104000Y178455D01*
X104750Y178091*
X106000Y177909*
X106750*
X108000Y178091*
X108750Y178455*
X109000Y179000*
Y179364*
X108750Y179909*
X108000Y180273*
X106750Y180455*
X106000*
X104750Y180273*
X104000Y179909*
X103750Y179364*
Y179000*
X105000Y182273D02*
X104750D01*
X104250Y182455*
X104000Y182636*
X103750Y183000*
Y183727*
X104000Y184091*
X104250Y184273*
X104750Y184455*
X105250*
X105750Y184273*
X106500Y183909*
X109000Y182091*
Y184636*
X103750Y187727D02*
X109000Y186273D01*
X103750Y187727D02*
X109000Y189182D01*
X107250Y186818D02*
Y188636D01*
X223188Y172000D02*
X223375Y171727D01*
X223938Y171318*
X223938D02*
X220000D01*
G54D40*
X120000Y175000D03*
X246000D03*
G54D55*
X161500Y140200D03*
Y147800D03*
X153000Y140200D03*
Y147800D03*
X205000Y132200D03*
Y139800D03*
X196000Y132200D03*
Y139800D03*
X222000Y157200D03*
Y164800D03*
G54D56*
X172200Y187000D03*
X179800D03*
X192800Y159000D03*
X185200D03*
G54D57*
X215900Y202500D03*
X202100D03*
G54D58*
X142000Y136000D03*
Y184000D03*
G54D59*
X216000Y110000D03*
X224000D03*
X220000Y118000D03*
X222000Y135000D03*
X214000D03*
X218000Y127000D03*
G54D60*
X170200Y141000D03*
X177800D03*
X170200Y151000D03*
X177800D03*
X184300Y202000D03*
X176700D03*
X165800D03*
X158200D03*
X176800Y124000D03*
X169200D03*
X161800D03*
X154200D03*
X170200Y159000D03*
X177800D03*
G54D61*
X232000Y136200D03*
Y143800D03*
X222000Y149800D03*
Y142200D03*
X218000Y181200D03*
Y188800D03*
X203000Y180700D03*
Y188300D03*
X189000Y122800D03*
Y115200D03*
X186000Y143200D03*
Y150800D03*
G54D62*
X215750Y172500D03*
X213250D03*
X210750D03*
X208250D03*
X205750D03*
X203250D03*
X200750D03*
X198250D03*
Y149500D03*
X200750D03*
X203250D03*
X205750D03*
X208250D03*
X210750D03*
X213250D03*
X215750D03*
G54D63*
X210087Y114000D03*
X195913D03*
X181087D03*
X166913D03*
X152087D03*
X137913D03*
G54D64*
X203000D03*
X174000D03*
X145000D03*
G54D65*
X174000Y155000D02*
Y147000D01*
G74*
X0Y0D02*
M02*
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/CAM_PROFI/XVC_FT220X02A.gvp
0,0 → 1,8
(gerbv-file-version! "2.0A")
(define-layer! 4 (cons 'filename "V1.PHO")(cons 'visible #t)(cons 'color #(0 50115 50115)))
(define-layer! 3 (cons 'filename "T2.PHO")(cons 'visible #t)(cons 'color #(30069 62194 26471)))
(define-layer! 2 (cons 'filename "M1.PHO")(cons 'visible #t)(cons 'color #(49601 0 57568)))
(define-layer! 1 (cons 'filename "DRILL.DRL")(cons 'visible #f)(cons 'color #(65535 32639 29555))(cons 'attribs (list (list 'autodetect 'Boolean 1) (list 'zero_supression 'Enum 0) (list 'units 'Enum 0) (list 'digits 'Integer 4))))
(define-layer! 0 (cons 'filename "BOARD.PHO")(cons 'visible #t)(cons 'color #(29555 29555 57054)))
(define-layer! -1 (cons 'filename "/home/kaklik/svnMLAB/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/CAM_PROFI")(cons 'visible #f)(cons 'color #(0 0 0)))
(set-render-type! 3)
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/CAM_PROFI/BOARD.PHO
0,0 → 1,347
*
*
G04 PADS 9.2 Build Number: 414666 generated Gerber (RS-274-X) file*
G04 PC Version=2.1*
*
%IN "XVC_FT220X01A.pcb"*%
*
%MOIN*%
*
%FSLAX35Y35*%
*
*
*
*
G04 PC Standard Apertures*
*
*
G04 Thermal Relief Aperture macro.*
%AMTER*
1,1,$1,0,0*
1,0,$1-$2,0,0*
21,0,$3,$4,0,0,45*
21,0,$3,$4,0,0,135*
%
*
*
G04 Annular Aperture macro.*
%AMANN*
1,1,$1,0,0*
1,0,$2,0,0*
%
*
*
G04 Odd Aperture macro.*
%AMODD*
1,1,$1,0,0*
1,0,$1-0.005,0,0*
%
*
*
G04 PC Custom Aperture Macros*
*
*
*
*
*
*
G04 PC Aperture Table*
*
%ADD024C,0.001*%
%ADD025C,0.01*%
%ADD029C,0.005*%
*
*
*
*
G04 PC Circuitry*
G04 Layer Name XVC_FT220X01A.pcb - circuitry*
%LPD*%
*
*
G04 PC Custom Flashes*
G04 Layer Name XVC_FT220X01A.pcb - flashes*
%LPD*%
*
*
G04 PC Circuitry*
G04 Layer Name XVC_FT220X01A.pcb - circuitry*
%LPD*%
*
G54D24*
G01X101000Y101000D02*
X101003D01*
X259000D02*
X259003D01*
X259000D02*
X259003D01*
X259000Y219000D02*
X259003D01*
G54D25*
X101000Y90000D02*
X162227D01*
X101000D02*
X111000Y92500D01*
Y87500*
X101000Y90000*
X259000D02*
X197773D01*
X259000D02*
X249000Y87500D01*
Y92500*
X259000Y90000*
X101000Y96000D02*
Y85000D01*
X259000Y96000D02*
Y85000D01*
X165227Y91563D02*
X165682Y91875D01*
X166364Y92813*
X166364D02*
Y86250D01*
X171364Y92813D02*
X169091D01*
X169091D02*
X168864Y90000D01*
X169091Y90313*
X169091D02*
X169773Y90625D01*
X170455*
X171136Y90313*
X171136D02*
X171591Y89688D01*
X171591D02*
X171818Y88750D01*
X171591Y88125*
X171364Y87188*
X171364D02*
X170909Y86563D01*
X170909D02*
X170227Y86250D01*
X169545*
X168864Y86563*
X168864D02*
X168636Y86875D01*
X168409Y87500*
X175000Y92813D02*
X174318Y92500D01*
X174091Y91875*
Y91250*
X174318Y90625*
X174773Y90313*
X174773D02*
X175682Y90000D01*
X176364Y89688*
X176364D02*
X176818Y89063D01*
X176818D02*
X177045Y88438D01*
X177045D02*
Y87500D01*
X176818Y86875*
X176591Y86563*
X176591D02*
X175909Y86250D01*
X175000*
X174318Y86563*
X174318D02*
X174091Y86875D01*
X173864Y87500*
Y88438*
X173864D02*
X174091Y89063D01*
X174091D02*
X174545Y89688D01*
X174545D02*
X175227Y90000D01*
X176136Y90313*
X176136D02*
X176591Y90625D01*
X176818Y91250*
Y91875*
X176591Y92500*
X175909Y92813*
X175909D02*
X175000D01*
X180455D02*
X179773Y92500D01*
X179318Y91563*
X179318D02*
X179091Y90000D01*
Y89063*
X179091D02*
X179318Y87500D01*
X179773Y86563*
X179773D02*
X180455Y86250D01*
X180909*
X181591Y86563*
X181591D02*
X182045Y87500D01*
X182273Y89063*
X182273D02*
Y90000D01*
X182045Y91563*
X182045D02*
X181591Y92500D01*
X180909Y92813*
X180909D02*
X180455D01*
X184318Y90625D02*
Y86250D01*
Y89375D02*
X185000Y90313D01*
X185000D02*
X185455Y90625D01*
X186136*
X186591Y90313*
X186591D02*
X186818Y89375D01*
Y86250*
Y89375D02*
X187500Y90313D01*
X187500D02*
X187955Y90625D01*
X188636*
X189091Y90313*
X189091D02*
X189318Y89375D01*
Y86250*
X191364Y92813D02*
X191591Y92500D01*
X191818Y92813*
X191818D02*
X191591Y93125D01*
X191364Y92813*
X191591Y90625D02*
Y86250D01*
X193864Y92813D02*
Y86250D01*
X270000Y101000D02*
Y143364D01*
Y101000D02*
X267500Y111000D01*
X272500*
X270000Y101000*
Y219000D02*
Y176636D01*
Y219000D02*
X272500Y209000D01*
X267500*
X270000Y219000*
X264000Y101000D02*
X275000D01*
X264000Y219000D02*
X275000D01*
X268437Y146364D02*
X268125Y146818D01*
X267187Y147500*
X267187D02*
X273750D01*
X268437Y149545D02*
X268125Y150000D01*
X267187Y150682*
X267187D02*
X273750D01*
X267187Y153864D02*
X267500Y153182D01*
X268125Y152955*
X268750*
X269375Y153182*
X269687Y153636*
X269687D02*
X270000Y154545D01*
X270312Y155227*
X270312D02*
X270937Y155682D01*
X270937D02*
X271562Y155909D01*
X271562D02*
X272500D01*
X273125Y155682*
X273437Y155455*
X273437D02*
X273750Y154773D01*
Y153864*
X273437Y153182*
X273437D02*
X273125Y152955D01*
X272500Y152727*
X271562*
X271562D02*
X270937Y152955D01*
X270937D02*
X270312Y153409D01*
X270312D02*
X270000Y154091D01*
X269687Y155000*
X269687D02*
X269375Y155455D01*
X268750Y155682*
X268125*
X267500Y155455*
X267187Y154773*
X267187D02*
Y153864D01*
Y159318D02*
X267500Y158636D01*
X268437Y158182*
X268437D02*
X270000Y157955D01*
X270937*
X270937D02*
X272500Y158182D01*
X273437Y158636*
X273437D02*
X273750Y159318D01*
Y159773*
X273437Y160455*
X273437D02*
X272500Y160909D01*
X270937Y161136*
X270937D02*
X270000D01*
X268437Y160909*
X268437D02*
X267500Y160455D01*
X267187Y159773*
X267187D02*
Y159318D01*
X269375Y163182D02*
X273750D01*
X270625D02*
X269687Y163864D01*
X269687D02*
X269375Y164318D01*
Y165000*
X269687Y165455*
X269687D02*
X270625Y165682D01*
X273750*
X270625D02*
X269687Y166364D01*
X269687D02*
X269375Y166818D01*
Y167500*
X269687Y167955*
X269687D02*
X270625Y168182D01*
X273750*
X267187Y170227D02*
X267500Y170455D01*
X267187Y170682*
X267187D02*
X266875Y170455D01*
X267187Y170227*
X269375Y170455D02*
X273750D01*
X267187Y172727D02*
X273750D01*
G54D29*
X101000Y101000D02*
X259000D01*
Y219000*
X101000*
Y101000*
X0Y0D02*
M02*
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/CAM_PROFI/DRILL.DRL
0,0 → 1,35
%
T1C.035F197S55
X0138Y0211
X0168Y0211
X0158Y0211
X0188Y0211
X0191Y0179
X0181Y0179
X0171Y0179
X0191Y0169
X0171Y0169
X0181Y0169
X023Y0155
X023Y0165
X023Y0175
X0208Y0211
X0218Y0211
T2C.037F197S55
X0161Y0155
X0153Y0155
X0161Y0165
X0153Y0165
T3C.09F066S55
X0142Y0136
X0142Y0184
T4C.10433F069S658
X0145Y0114
X0174Y0114
X0203Y0114
T5C.12598F035S794
X012Y012
X012Y02
X024Y02
X024Y012
M30
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/CAM_PROFI/DRILL.rep
0,0 → 1,16
 
 
Drill Sizes Report
==================
Tool Size Pltd Feed Speed Qty
==== ==== ==== ==== ===== ===
1 35 - 197 550 15
2 37 - 197 550 4
3 90 - 66 550 2
4 104.33 - 69 658 3
5 125.98 - 35 794 4
 
 
 
 
 
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/CAM_PROFI/T2.PHO
0,0 → 1,1300
*
*
G04 PADS 9.2 Build Number: 414666 generated Gerber (RS-274-X) file*
G04 PC Version=2.1*
*
%IN "XVC_FT220X01A.pcb"*%
*
%MOIN*%
*
%FSLAX35Y35*%
*
*
*
*
G04 PC Standard Apertures*
*
*
G04 Thermal Relief Aperture macro.*
%AMTER*
1,1,$1,0,0*
1,0,$1-$2,0,0*
21,0,$3,$4,0,0,45*
21,0,$3,$4,0,0,135*
%
*
*
G04 Annular Aperture macro.*
%AMANN*
1,1,$1,0,0*
1,0,$2,0,0*
%
*
*
G04 Odd Aperture macro.*
%AMODD*
1,1,$1,0,0*
1,0,$1-0.005,0,0*
%
*
*
G04 PC Custom Aperture Macros*
*
*
*
*
*
*
G04 PC Aperture Table*
*
%ADD020C,0.012*%
%ADD024C,0.001*%
%ADD025C,0.01*%
%ADD029C,0.005*%
%ADD036C,0.008*%
*
*
*
*
G04 PC Circuitry*
G04 Layer Name XVC_FT220X01A.pcb - circuitry*
%LPD*%
*
*
G04 PC Custom Flashes*
G04 Layer Name XVC_FT220X01A.pcb - flashes*
%LPD*%
*
*
G04 PC Circuitry*
G04 Layer Name XVC_FT220X01A.pcb - circuitry*
%LPD*%
*
G54D20*
G01X219875Y167727D02*
X213875D01*
X212750Y167455*
X212375Y167182*
X212000Y166636*
Y166091*
X212375Y165545*
X212750Y165273*
X213875Y165000*
X214625*
X219875Y172091D02*
X212000D01*
X219875Y170182D02*
Y174000D01*
Y178636D02*
X212000Y176455D01*
X219875Y178636D02*
X212000Y180818D01*
X214625Y177273D02*
Y180000D01*
X218000Y187364D02*
X218750Y187091D01*
X219500Y186545*
X219875Y186000*
Y184909*
X219500Y184364*
X218750Y183818*
X218000Y183545*
X216875Y183273*
X215000*
X213875Y183545*
X213125Y183818*
X212375Y184364*
X212000Y184909*
Y186000*
X212375Y186545*
X213125Y187091*
X213875Y187364*
X215000*
Y186000D02*
Y187364D01*
G54D24*
G54D25*
X247000Y147563D02*
X243818Y141000D01*
Y147563D02*
X247000Y141000D01*
X241773Y147563D02*
X241545Y147250D01*
X241318Y147563*
X241318D02*
X241545Y147875D01*
X241773Y147563*
X241545Y145375D02*
Y141000D01*
X239273Y147563D02*
Y141000D01*
X237227Y147563D02*
X237000Y147250D01*
X236773Y147563*
X236773D02*
X237000Y147875D01*
X237227Y147563*
X237000Y145375D02*
Y141000D01*
X234727Y145375D02*
Y141000D01*
Y144125D02*
X234045Y145063D01*
X234045D02*
X233591Y145375D01*
X232909*
X232455Y145063*
X232455D02*
X232227Y144125D01*
Y141000*
X230182Y145375D02*
X227682Y141000D01*
Y145375D02*
X230182Y141000D01*
X220409Y147563D02*
X218591Y141000D01*
X216773Y147563D02*
X218591Y141000D01*
X214727Y147563D02*
X214500Y147250D01*
X214273Y147563*
X214273D02*
X214500Y147875D01*
X214727Y147563*
X214500Y145375D02*
Y141000D01*
X212227Y145375D02*
Y141000D01*
Y143500D02*
X212000Y144438D01*
X212000D02*
X211545Y145063D01*
X211545D02*
X211091Y145375D01*
X210409*
X207682Y147563D02*
Y142250D01*
X207455Y141313*
X207455D02*
X207000Y141000D01*
X206545*
X208364Y145375D02*
X206773D01*
X204500D02*
Y142250D01*
X204273Y141313*
X204273D02*
X203818Y141000D01*
X203136*
X202682Y141313*
X202682D02*
X202000Y142250D01*
Y145375D02*
Y141000D01*
X197227Y145375D02*
Y141000D01*
Y144438D02*
X197682Y145063D01*
X197682D02*
X198136Y145375D01*
X198818*
X199273Y145063*
X199273D02*
X199727Y144438D01*
X199727D02*
X199955Y143500D01*
Y142875*
X199727Y141938*
X199727D02*
X199273Y141313D01*
X199273D02*
X198818Y141000D01*
X198136*
X197682Y141313*
X197682D02*
X197227Y141938D01*
X195182Y147563D02*
Y141000D01*
X184500Y146000D02*
X184727Y146625D01*
X185182Y147250*
X185636Y147563*
X185636D02*
X186545D01*
X186545D02*
X187000Y147250D01*
X187455Y146625*
X187682Y146000*
X187909Y145063*
X187909D02*
Y143500D01*
X187682Y142563*
X187682D02*
X187455Y141938D01*
X187455D02*
X187000Y141313D01*
X187000D02*
X186545Y141000D01*
X185636*
X185182Y141313*
X185182D02*
X184727Y141938D01*
X184727D02*
X184500Y142563D01*
X179727Y145375D02*
Y141000D01*
Y144438D02*
X180182Y145063D01*
X180182D02*
X180636Y145375D01*
X181318*
X181773Y145063*
X181773D02*
X182227Y144438D01*
X182227D02*
X182455Y143500D01*
Y142875*
X182227Y141938*
X182227D02*
X181773Y141313D01*
X181773D02*
X181318Y141000D01*
X180636*
X180182Y141313*
X180182D02*
X179727Y141938D01*
X177682Y147563D02*
Y141000D01*
Y144438D02*
X177227Y145063D01*
X177227D02*
X176773Y145375D01*
X176091*
X175636Y145063*
X175636D02*
X175182Y144438D01*
X175182D02*
X174955Y143500D01*
Y142875*
X175182Y141938*
X175182D02*
X175636Y141313D01*
X175636D02*
X176091Y141000D01*
X176773*
X177227Y141313*
X177227D02*
X177682Y141938D01*
X172909Y147563D02*
Y141000D01*
X170864Y143500D02*
X168136D01*
Y144125*
X168364Y144750*
X168591Y145063*
X168591D02*
X169045Y145375D01*
X169727*
X170182Y145063*
X170182D02*
X170636Y144438D01*
X170636D02*
X170864Y143500D01*
Y142875*
X170636Y141938*
X170636D02*
X170182Y141313D01*
X170182D02*
X169727Y141000D01*
X169045*
X168591Y141313*
X168591D02*
X168136Y141938D01*
X133000Y216000D02*
Y190000D01*
X210000*
Y163000*
X223000*
Y216000*
X133000*
G54D29*
X163594Y131205D02*
X160594D01*
X160031Y131068*
X159844Y130932*
X159656Y130659*
Y130386*
X159844Y130114*
X160031Y129977*
X160594Y129841*
X160969*
X162844Y132432D02*
X163031Y132705D01*
X163594Y133114*
X159656*
X229594Y209591D02*
X226594D01*
X226031Y209455*
X225844Y209318*
X225656Y209045*
Y208773*
X225844Y208500*
X226031Y208364*
X226594Y208227*
X226969*
X228656Y210955D02*
X228844D01*
X229219Y211091*
X229406Y211227*
X229594Y211500*
Y212045*
X229406Y212318*
X229219Y212455*
X228844Y212591*
X228469*
X228094Y212455*
X227531Y212182*
X225656Y210818*
Y212727*
X231594Y183591D02*
X228594D01*
X228031Y183455*
X227844Y183318*
X227656Y183045*
Y182773*
X227844Y182500*
X228031Y182364*
X228594Y182227*
X228969*
X231594Y185091D02*
Y186591D01*
X230094Y185773*
Y186182*
X229906Y186455*
X229719Y186591*
X229156Y186727*
X228781*
X228219Y186591*
X227844Y186318*
X227656Y185909*
Y185500*
X227844Y185091*
X228031Y184955*
X228406Y184818*
X195461Y159773D02*
X192711D01*
X192195Y159636*
X192023Y159500*
X191852Y159227*
Y158955*
X192023Y158682*
X192195Y158545*
X192711Y158409*
X193055*
X195461Y162364D02*
X193055Y161000D01*
Y163045*
X195461Y162364D02*
X191852D01*
G54D36*
X104000Y184000D02*
Y136000D01*
X134000D02*
X101000D01*
Y184000*
X134000*
X150000D02*
X165000D01*
Y136000*
X150000*
X223000Y216000D02*
X133000D01*
Y206000*
X223000*
Y216000*
X235000Y150000D02*
Y180000D01*
X225000*
Y150000*
X235000*
X166000Y164000D02*
X196000D01*
Y184000*
X166000*
Y164000*
X140250Y193273D02*
X135000D01*
X140250Y192000D02*
Y194545D01*
Y196182D02*
X135000D01*
X140250D02*
X135000Y197636D01*
X140250Y199091D02*
X135000Y197636D01*
X140250Y199091D02*
X135000D01*
X139500Y203273D02*
X140000Y202909D01*
X140250Y202364*
Y201636*
X140000Y201091*
X139500Y200727*
X139000*
X138500Y200909*
X138250Y201091*
X138000Y201455*
X137500Y202545*
X137250Y202909*
X137000Y203091*
X136500Y203273*
X135750*
X135250Y202909*
X135000Y202364*
Y201636*
X135250Y201091*
X135750Y200727*
X160250Y195273D02*
X155000D01*
X160250Y194000D02*
Y196545D01*
Y198182D02*
X155000D01*
X160250D02*
Y199455D01*
X160000Y200000*
X159500Y200364*
X159000Y200545*
X158250Y200727*
X157000*
X156250Y200545*
X155750Y200364*
X155250Y200000*
X155000Y199455*
Y198182*
X160250Y202364D02*
X155000D01*
X170250Y193273D02*
X165000D01*
X170250Y192000D02*
Y194545D01*
Y196182D02*
X165000D01*
X170250D02*
Y197455D01*
X170000Y198000*
X169500Y198364*
X169000Y198545*
X168250Y198727*
X167000*
X166250Y198545*
X165750Y198364*
X165250Y198000*
X165000Y197455*
Y196182*
X170250Y201455D02*
X170000Y201091D01*
X169500Y200727*
X169000Y200545*
X168250Y200364*
X167000*
X166250Y200545*
X165750Y200727*
X165250Y201091*
X165000Y201455*
Y202182*
X165250Y202545*
X165750Y202909*
X166250Y203091*
X167000Y203273*
X168250*
X169000Y203091*
X169500Y202909*
X170000Y202545*
X170250Y202182*
Y201455*
X190250Y193273D02*
X185000D01*
X190250Y192000D02*
Y194545D01*
X189000Y198909D02*
X189500Y198727D01*
X190000Y198364*
X190250Y198000*
Y197273*
X190000Y196909*
X189500Y196545*
X189000Y196364*
X188250Y196182*
X187000*
X186250Y196364*
X185750Y196545*
X185250Y196909*
X185000Y197273*
Y198000*
X185250Y198364*
X185750Y198727*
X186250Y198909*
X190250Y200545D02*
X185000D01*
X190250Y203091D02*
X186750Y200545D01*
X188000Y201455D02*
X185000Y203091D01*
X209000Y194727D02*
X209500Y194545D01*
X210000Y194182*
X210250Y193818*
Y193091*
X210000Y192727*
X209500Y192364*
X209000Y192182*
X208250Y192000*
X207000*
X206250Y192182*
X205750Y192364*
X205250Y192727*
X205000Y193091*
Y193818*
X205250Y194182*
X205750Y194545*
X206250Y194727*
X207000*
Y193818D02*
Y194727D01*
X210250Y196364D02*
X205000D01*
X210250D02*
X205000Y198909D01*
X210250D02*
X205000D01*
X210250Y200545D02*
X205000D01*
X210250D02*
Y201818D01*
X210000Y202364*
X209500Y202727*
X209000Y202909*
X208250Y203091*
X207000*
X206250Y202909*
X205750Y202727*
X205250Y202364*
X205000Y201818*
Y200545*
X221250Y191000D02*
X216000Y192455D01*
X221250Y193909D02*
X216000Y192455D01*
X220000Y198273D02*
X220500Y198091D01*
X221000Y197727*
X221250Y197364*
Y196636*
X221000Y196273*
X220500Y195909*
X220000Y195727*
X219250Y195545*
X218000*
X217250Y195727*
X216750Y195909*
X216250Y196273*
X216000Y196636*
Y197364*
X216250Y197727*
X216750Y198091*
X217250Y198273*
X220000Y202636D02*
X220500Y202455D01*
X221000Y202091*
X221250Y201727*
Y201000*
X221000Y200636*
X220500Y200273*
X220000Y200091*
X219250Y199909*
X218000*
X217250Y200091*
X216750Y200273*
X216250Y200636*
X216000Y201000*
Y201727*
X216250Y202091*
X216750Y202455*
X217250Y202636*
X205250Y159000D02*
X201500D01*
X200750Y159182*
X200250Y159545*
X200000Y160091*
Y160455*
X200250Y161000*
X200750Y161364*
X201500Y161545*
X205250*
X204500Y165727D02*
X205000Y165364D01*
X205250Y164818*
Y164091*
X205000Y163545*
X204500Y163182*
X204000*
X203500Y163364*
X203250Y163545*
X203000Y163909*
X202500Y165000*
X202250Y165364*
X202000Y165545*
X201500Y165727*
X200750*
X200250Y165364*
X200000Y164818*
Y164091*
X200250Y163545*
X200750Y163182*
X205250Y167364D02*
X200000D01*
X205250D02*
Y169000D01*
X205000Y169545*
X204750Y169727*
X204250Y169909*
X203750*
X203250Y169727*
X203000Y169545*
X202750Y169000*
Y167364D02*
Y169000D01*
X202500Y169545*
X202250Y169727*
X201750Y169909*
X201000*
X200500Y169727*
X200250Y169545*
X200000Y169000*
Y167364*
X204500Y177364D02*
X200000D01*
X202250Y175727D02*
Y179000D01*
X205250Y183000D02*
Y181182D01*
X203000Y181000*
X203250Y181182*
X203500Y181727*
Y182273*
X203250Y182818*
X202750Y183182*
X202000Y183364*
X201500Y183182*
X200750Y183000*
X200250Y182636*
X200000Y182091*
Y181545*
X200250Y181000*
X200500Y180818*
X201000Y180636*
X205250Y185000D02*
X200000Y186455D01*
X205250Y187909D02*
X200000Y186455D01*
X254250Y152000D02*
X249000Y153455D01*
X254250Y154909D02*
X249000Y153455D01*
X254250Y156545D02*
X249000D01*
X254250Y159273D02*
X254000Y158909D01*
X253500Y158545*
X253000Y158364*
X252250Y158182*
X251000*
X250250Y158364*
X249750Y158545*
X249250Y158909*
X249000Y159273*
Y160000*
X249250Y160364*
X249750Y160727*
X250250Y160909*
X251000Y161091*
X252250*
X253000Y160909*
X253500Y160727*
X254000Y160364*
X254250Y160000*
Y159273*
Y166909D02*
X249000D01*
X254250D02*
Y168545D01*
X254000Y169091*
X253750Y169273*
X253250Y169455*
X252500*
X252000Y169273*
X251750Y169091*
X251500Y168545*
Y166909*
X254250Y171091D02*
X249000Y172000D01*
X254250Y172909D02*
X249000Y172000D01*
X254250Y172909D02*
X249000Y173818D01*
X254250Y174727D02*
X249000Y173818D01*
X254250Y176364D02*
X249000D01*
X254250D02*
Y178000D01*
X254000Y178545*
X253750Y178727*
X253250Y178909*
X252750*
X252250Y178727*
X252000Y178545*
X251750Y178000*
Y176364*
Y177636D02*
X249000Y178909D01*
X246250Y152364D02*
Y154364D01*
X244250Y153273*
Y153818*
X244000Y154182*
X243750Y154364*
X243000Y154545*
X242500*
X241750Y154364*
X241250Y154000*
X241000Y153455*
Y152909*
X241250Y152364*
X241500Y152182*
X242000Y152000*
X241500Y156364D02*
X241250Y156182D01*
X241000Y156364*
X241250Y156545*
X241500Y156364*
X246250Y158545D02*
Y160545D01*
X244250Y159455*
Y160000*
X244000Y160364*
X243750Y160545*
X243000Y160727*
X242500*
X241750Y160545*
X241250Y160182*
X241000Y159636*
Y159091*
X241250Y158545*
X241500Y158364*
X242000Y158182*
X246250Y162364D02*
X241000Y163818D01*
X246250Y165273D02*
X241000Y163818D01*
X246250Y172273D02*
X241000D01*
X246250Y171000D02*
Y173545D01*
X245000Y177909D02*
X245500Y177727D01*
X246000Y177364*
X246250Y177000*
Y176273*
X246000Y175909*
X245500Y175545*
X245000Y175364*
X244250Y175182*
X243000*
X242250Y175364*
X241750Y175545*
X241250Y175909*
X241000Y176273*
Y177000*
X241250Y177364*
X241750Y177727*
X242250Y177909*
X243000*
Y177000D02*
Y177909D01*
X246250Y180818D02*
X241000D01*
X246250Y179545D02*
Y182091D01*
X157250Y109000D02*
X153500D01*
X152750Y109182*
X152250Y109545*
X152000Y110091*
Y110455*
X152250Y111000*
X152750Y111364*
X153500Y111545*
X157250*
X156500Y115727D02*
X157000Y115364D01*
X157250Y114818*
Y114091*
X157000Y113545*
X156500Y113182*
X156000*
X155500Y113364*
X155250Y113545*
X155000Y113909*
X154500Y115000*
X154250Y115364*
X154000Y115545*
X153500Y115727*
X152750*
X152250Y115364*
X152000Y114818*
Y114091*
X152250Y113545*
X152750Y113182*
X157250Y117364D02*
X152000D01*
X157250D02*
Y119000D01*
X157000Y119545*
X156750Y119727*
X156250Y119909*
X155750*
X155250Y119727*
X155000Y119545*
X154750Y119000*
Y117364D02*
Y119000D01*
X154500Y119545*
X154250Y119727*
X153750Y119909*
X153000*
X152500Y119727*
X152250Y119545*
X152000Y119000*
Y117364*
X215250Y110273D02*
X210000D01*
X215250Y109000D02*
Y111545D01*
X214000Y115909D02*
X214500Y115727D01*
X215000Y115364*
X215250Y115000*
Y114273*
X215000Y113909*
X214500Y113545*
X214000Y113364*
X213250Y113182*
X212000*
X211250Y113364*
X210750Y113545*
X210250Y113909*
X210000Y114273*
Y115000*
X210250Y115364*
X210750Y115727*
X211250Y115909*
X212000*
Y115000D02*
Y115909D01*
X215250Y118818D02*
X210000D01*
X215250Y117545D02*
Y120091D01*
X187250Y110455D02*
X182000Y109000D01*
X187250Y110455D02*
X182000Y111909D01*
X183750Y109545D02*
Y111364D01*
X186000Y116273D02*
X186500Y116091D01*
X187000Y115727*
X187250Y115364*
Y114636*
X187000Y114273*
X186500Y113909*
X186000Y113727*
X185250Y113545*
X184000*
X183250Y113727*
X182750Y113909*
X182250Y114273*
X182000Y114636*
Y115364*
X182250Y115727*
X182750Y116091*
X183250Y116273*
X187250Y119182D02*
X182000D01*
X187250Y117909D02*
Y120455D01*
X221000Y156250D02*
X218455Y151000D01*
Y156250D02*
X221000Y151000D01*
X216818Y156250D02*
X215364Y151000D01*
X213909Y156250D02*
X215364Y151000D01*
X209545Y155000D02*
X209727Y155500D01*
X210091Y156000*
X210455Y156250*
X211182*
X211545Y156000*
X211909Y155500*
X212091Y155000*
X212273Y154250*
Y153000*
X212091Y152250*
X211909Y151750*
X211545Y151250*
X211182Y151000*
X210455*
X210091Y151250*
X209727Y151750*
X209545Y152250*
X207909Y150000D02*
X204091D01*
X203000Y156250D02*
Y151000D01*
Y156250D02*
X200636D01*
X203000Y153750D02*
X201545D01*
X197727Y156250D02*
Y151000D01*
X199000Y156250D02*
X196455D01*
X194636Y155000D02*
Y155250D01*
X194455Y155750*
X194273Y156000*
X193909Y156250*
X193182*
X192818Y156000*
X192636Y155750*
X192455Y155250*
Y154750*
X192636Y154250*
X193000Y153500*
X194818Y151000*
X192273*
X190455Y155000D02*
Y155250D01*
X190273Y155750*
X190091Y156000*
X189727Y156250*
X189000*
X188636Y156000*
X188455Y155750*
X188273Y155250*
Y154750*
X188455Y154250*
X188818Y153500*
X190636Y151000*
X188091*
X185364Y156250D02*
X185909Y156000D01*
X186273Y155250*
X186455Y154000*
Y153250*
X186273Y152000*
X185909Y151250*
X185364Y151000*
X185000*
X184455Y151250*
X184091Y152000*
X183909Y153250*
Y154000*
X184091Y155250*
X184455Y156000*
X185000Y156250*
X185364*
X182273D02*
X179727Y151000D01*
Y156250D02*
X182273Y151000D01*
X177000Y156250D02*
X177545Y156000D01*
X177909Y155250*
X178091Y154000*
Y153250*
X177909Y152000*
X177545Y151250*
X177000Y151000*
X176636*
X176091Y151250*
X175727Y152000*
X175545Y153250*
Y154000*
X175727Y155250*
X176091Y156000*
X176636Y156250*
X177000*
X173727Y155000D02*
Y155250D01*
X173545Y155750*
X173364Y156000*
X173000Y156250*
X172273*
X171909Y156000*
X171727Y155750*
X171545Y155250*
Y154750*
X171727Y154250*
X172091Y153500*
X173909Y151000*
X171364*
X168273Y156250D02*
X169727Y151000D01*
X168273Y156250D02*
X166818Y151000D01*
X169182Y152750D02*
X167364D01*
X212000Y137250D02*
X211091Y132000D01*
X210182Y137250D02*
X211091Y132000D01*
X210182Y137250D02*
X209273Y132000D01*
X208364Y137250D02*
X209273Y132000D01*
X206727Y137250D02*
X205818Y132000D01*
X204909Y137250D02*
X205818Y132000D01*
X204909Y137250D02*
X204000Y132000D01*
X203091Y137250D02*
X204000Y132000D01*
X201455Y137250D02*
X200545Y132000D01*
X199636Y137250D02*
X200545Y132000D01*
X199636Y137250D02*
X198727Y132000D01*
X197818Y137250D02*
X198727Y132000D01*
X196000Y132500D02*
X196182Y132250D01*
X196000Y132000*
X195818Y132250*
X196000Y132500*
X194182Y137250D02*
Y132000D01*
Y137250D02*
X192727Y132000D01*
X191273Y137250D02*
X192727Y132000D01*
X191273Y137250D02*
Y132000D01*
X189636Y137250D02*
Y132000D01*
X187455*
X184364Y137250D02*
X185818Y132000D01*
X184364Y137250D02*
X182909Y132000D01*
X185273Y133750D02*
X183455D01*
X181273Y137250D02*
Y132000D01*
Y137250D02*
X179636D01*
X179091Y137000*
X178909Y136750*
X178727Y136250*
Y135750*
X178909Y135250*
X179091Y135000*
X179636Y134750*
X181273D02*
X179636D01*
X179091Y134500*
X178909Y134250*
X178727Y133750*
Y133000*
X178909Y132500*
X179091Y132250*
X179636Y132000*
X181273*
X176909Y132500D02*
X177091Y132250D01*
X176909Y132000*
X176727Y132250*
X176909Y132500*
X172364Y136000D02*
X172545Y136500D01*
X172909Y137000*
X173273Y137250*
X174000*
X174364Y137000*
X174727Y136500*
X174909Y136000*
X175091Y135250*
Y134000*
X174909Y133250*
X174727Y132750*
X174364Y132250*
X174000Y132000*
X173273*
X172909Y132250*
X172545Y132750*
X172364Y133250*
X168182Y137250D02*
X170727Y132000D01*
Y137250D02*
X168182D01*
X170727Y132000D02*
X168182D01*
X253727Y138250D02*
X254091Y137750D01*
X254455Y137000*
X254818Y136000*
X255000Y134750*
Y133750*
X254818Y132500*
X254455Y131500*
X254091Y130750*
X253727Y130250*
X249909Y134750D02*
X250273Y135250D01*
X250636Y135500*
X251182*
X251545Y135250*
X251909Y134750*
X252091Y134000*
Y133500*
X251909Y132750*
X251545Y132250*
X251182Y132000*
X250636*
X250273Y132250*
X249909Y132750*
X248273Y138250D02*
X247909Y137750D01*
X247545Y137000*
X247182Y136000*
X247000Y134750*
Y133750*
X247182Y132500*
X247545Y131500*
X247909Y130750*
X248273Y130250*
X245364Y135500D02*
Y132000D01*
Y134500D02*
X244818Y135250D01*
X244455Y135500*
X243909*
X243545Y135250*
X243364Y134500*
Y132000*
Y134500D02*
X242818Y135250D01*
X242455Y135500*
X241909*
X241545Y135250*
X241364Y134500*
Y132000*
X239727Y137250D02*
X239545Y137000D01*
X239364Y137250*
X239545Y137500*
X239727Y137250*
X239545Y135500D02*
Y132000D01*
X237727Y137250D02*
Y132000D01*
Y134500D02*
X237182Y135250D01*
X236818Y135500*
X236273*
X235909Y135250*
X235727Y134500*
Y132000*
X233182Y135500D02*
X233545Y135250D01*
X233909Y134750*
X234091Y134000*
Y133500*
X233909Y132750*
X233545Y132250*
X233182Y132000*
X232636*
X232273Y132250*
X231909Y132750*
X231727Y133500*
Y134000*
X231909Y134750*
X232273Y135250*
X232636Y135500*
X233182*
X229909Y136000D02*
Y136250D01*
X229727Y136750*
X229545Y137000*
X229182Y137250*
X228455*
X228091Y137000*
X227909Y136750*
X227727Y136250*
Y135750*
X227909Y135250*
X228273Y134500*
X230091Y132000*
X227545*
X224818Y137250D02*
X225364Y137000D01*
X225727Y136250*
X225909Y135000*
Y134250*
X225727Y133000*
X225364Y132250*
X224818Y132000*
X224455*
X223909Y132250*
X223545Y133000*
X223364Y134250*
Y135000*
X223545Y136250*
X223909Y137000*
X224455Y137250*
X224818*
X221727Y136250D02*
X221364Y136500D01*
X220818Y137250*
Y132000*
X218818Y137250D02*
X216818D01*
X217909Y135250*
X217364*
X217000Y135000*
X216818Y134750*
X216636Y134000*
Y133500*
X216818Y132750*
X217182Y132250*
X217727Y132000*
X218273*
X218818Y132250*
X219000Y132500*
X219182Y133000*
X236000Y174000D02*
X238000D01*
Y166000*
X236000*
Y163000D02*
X238000D01*
Y155000*
X236000*
X0Y0D02*
M02*
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/TODO.txt
0,0 → 1,15
KAKLIK:
 
Nektere soucasky maji moc malou mezeru v odmaskovanych ploskach.
Asi bude dochazet k jejich slevani pri letovani.
 
MIHO:
 
Problematické souèatky jsem posunul.
Opravil jsem i CAM výstup (chybìlo odmaskování FIDU znaèek).
 
 
Pro pøíštì
----------
 
Na malé desce staèí po jedné FIDU znaèce.
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/CAM_AMA/T2_AMA.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/CAM_AMA/V1_AMA.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/CAM_AMA/V1_REAL.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X02A/PrjInfo.txt
0,0 → 1,26
//
// Toto je popisný soubor pro popis obsahu adresáře (příklad)
//
 
[InfoShortDescription.en]
Xilinx Virtual (JTAG) Cable with FTDI FT220X chip
[InfoShortDescription.cs]
Xilinx Virtual (JTAG) Cable s obvodem FTDI FT220X
 
[InfoLongDescription.en]
XVC JTAG programming cable for downloading and debug projects
with XILINX FPGA/CPLD device. It is directly supported by ISE
design software (and Chipscope as well). The design software
sends commands across network to the computer with this cable
attached to it and supporting software sends data to JTAG
interface. This XVC cable is based on a cheap FTDI FT220X chip.
 
[InfoLongDescription.cs]
XVC JTAG programovací kabel pro nahrávání konfigurace a ladění
zařízení s obvody FPGA/CPLD firmy XILINX. Návrhový systém ISE
komunikuje po síti s obslužným programem, který přijaté JTAG
příkazy odesílá prostřednictvím obvodu FTDI FT220X do obvodu
XILINX.
 
[End]
/Modules/CPLD_FPGA/XILINX_XVC/SchemaCyklu_Small.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X01A/DOC/HTML/XVC_FT220X01A.cs.html
0,0 → 1,636
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title> XVC_FT220X01A </title>
<meta name="keywords" content="stavebnice MLAB univerzální moduly JTAG XVC Xilinx Virtual Cable XVC_FT220X01A FTDI USB">
<meta name="description" content="Xilinx Virtual Cable založený na obvodu FT220X, JTAG programování FPGA a CPLD přes USB">
<!-- AUTOINCLUDE START "Page/Head.cs.ihtml" DO NOT REMOVE -->
<link rel="StyleSheet" href="../../../../../../Web/CSS/MLAB.css" type="text/css" title="MLAB základní styl">
<link rel="StyleSheet" href="../../../../../../Web/CSS/MLAB_Print.css" type="text/css" media="print">
<link rel="shortcut icon" type="image/x-icon" href="../../../../../../Web/PIC/MLAB.ico">
<script type="text/javascript" src="../../../../../../Web/JS/MLAB_Menu.js"></script>
<!-- AUTOINCLUDE END -->
</head>
 
<body lang="cs">
 
<!-- AUTOINCLUDE START "Page/Header.cs.ihtml" DO NOT REMOVE -->
<!-- ============== HLAVICKA ============== -->
<div class="Header">
<script type="text/javascript">
<!--
SetRelativePath("../../../../../../");
DrawHeader();
// -->
</script>
<noscript>
<p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p>
</noscript>
</div>
<!-- AUTOINCLUDE END -->
 
<!-- AUTOINCLUDE START "Page/Menu.cs.ihtml" DO NOT REMOVE -->
<!-- ============== MENU ============== -->
<div class="Menu">
<script type="text/javascript">
<!--
SetRelativePath("../../../../../../");
DrawMenu();
// -->
</script>
<noscript>
<p><b> Pro zobrazení (vložení) menu je potřeba JavaScript </b></p>
</noscript>
</div>
<!-- AUTOINCLUDE END -->
 
<!-- ============== TEXT ============== -->
<div class="Text">
<p class="Title">
Xilinx Virtual Cable s USB obvodem FTDI FT220X
</p>
<p class=Autor>
Milan Horkel
</p>
<p class="Subtitle">
Vývojové prostředí ISE pro práci s obvody programovatelné logiky
(FPGA/CPLD) firmy XILINX přímo podporuje protokol XVC, kterým se
přenáší JTAG příkazy prostřednictvím sítě TCP/IP. Na vzdáleném konci
musí běžet příslušný obslužný program a k němu musí být připojen
programovací kabel. Toto je modul programovacího kabelu s obvodem FTDI
FT220X s USB rozhraním na jedné straně a JTAG konektorem na straně
druhé.
</p>
<p class="Subtitle">
<img width="302" height="224" src="XVC_FT220X01A.cs_soubory/image001.jpg"
alt="Vzhled modulu XVC_FT220X01A">
</p>
<p>
<a href="../XVC_FT220X01A.cs.pdf"><img class="NoBorder"
src="../../../../../../Web/PIC/FileIco_PDF.ico"
alt="Acrobat">&nbsp;PDF verze</a>
</p>
<h1> Technické parametry </h1>
 
<table>
<tr>
<th> Parametr </th>
<th> Hodnota </th>
<th> Poznámka </th>
</tr>
<tr>
<td> Vstupní rozhraní </td>
<td> USB 2.0 </td>
<td> Standardní velký konektor typu B </td>
</tr>
<tr>
<td> Výstupní rozhraní </td>
<td> JTAG </td>
<td> Obvyklý jednořadý hřebínek </td>
</tr>
<tr>
<td> Napájení </td>
<td> +5V do 100mA </td>
<td> Z rozhraní USB </td>
</tr>
<tr>
<td> Signalizační napětí </td>
<td> +1.8 až +3.3V / +3.3V </td>
<td> Z cílového systému / fixní z FTDI </td>
</tr>
<tr>
<td> Síťový protokol / program </td>
<td> XVC / mlab_xvcd.exe </td>
<td> UDP, port 2542 / Windows aplikace </td>
</tr>
<tr>
<td> Vývojové prostředí </td>
<td> XILINX ISE – IMPACT<br>
XILINX ISE – ChipScope </td>
<td> Včetně volné verze WebPack,<br>
ChipScope vyžaduje licenci </td>
</tr>
<tr>
<td> Rozměry </td>
<td> 40x30x18mm </td>
<td> Výška nad základnou </td>
</tr>
</table>
 
<h1> Popis konstrukce </h1>
<h2> Úvodem </h2>
 
<p>
Pro práci s programovatelnými obvody FPGA a CPLD firmy XILINX je
potřeba příslušné vybavení. Jednou z nezbytností je vhodný programovací
kabel pro nahrávání konfigurace do cílové součástky. Jelikož LPT port
se postupně stěhuje do muzea, jsou programovací kabely vyrobené jako
klony známého Parallel Cable III zastaralé a je nutné nalézt nové
řešení.
</p>
<p>
Vývojové prostředí ISE přímo podporuje připojení programovacího kabelu
prostřednictvím TCP/IP sítě a použitý protokol Xilinx Virtual Cable (ve
zkratce XVC) je dokumentovaný. Díky tomu lze realizovat programovací
kabel za použití některého vhodného standardního obvodu rozhraní a
dopsat jen poměrně jednoduchý obslužný program.
</p>
<p>
<img width="676" height="621" src="XVC_FT220X01A.cs_soubory/image002.png"
alt="Schéma toku dat ve vývojovém cyklu">
</p>
<p>
Volba padla na obvod FTDI FT220X s rozhraním USB. Jedná se o nový (v
roce 2012) obvod, jehož cena je překvapivě nízká (cca 40Kč). Obslužný
program s obvodem FTDI komunikuje v režimu BitBang, tedy nevyužívá
žádné speciální vlastnosti tohoto obvodu a může tak pracovat prakticky
se všemi obvody FTDI (včetně populárního FT232R).
</p>
<p>
Tato konstrukce představuje modul s USB rozhraním na jedné straně a
JTAG konektorem na straně druhé. Konektor je zapojen dle zvyklostí
XILINX programovacích kabelů. Modul podporuje signalizační napětí na
JTAG rozhraní v rozmezí 1.8 až 3.3V a navíc obsahuje indikační diody.
</p>
<p>
Obslužný program běží na počítači, ke kterému je připojen programovací
kabel a návrhový program ISE (přesněji komponenta IMPACT, případně
ChipScope Analyser) se s programem spojí prostřednictvím TCP/IP sítě.
Vývojové prostředí může samozřejmě běžet jak na dálku (přes skutečnou
síť), tak i na stejném počítači (síťuje se jen uvnitř počítače).
Současná verze programu běží pod systémem Windows (WinXP až Win8,
32/64bit), verze pro Linux se připravuje.
</p>
<p>
Obslužný program má samostatnou dokumentaci a stránku, kde lze stáhnout
přeložený binární soubor (ale i zdrojové texty).
</p>
<p>
<a href="http://www.mlab.cz/PermaLink/XVC-SOFTWARE">http://www.mlab.cz/PermaLink/XVC-SOFTWARE</a>
</p>
<h2> Zapojení modulu </h2>
<p>
<img width="720" height="448" src="XVC_FT220X01A.cs_soubory/image003.png"
alt="Elektrické zapojení modulu XVC_FT220X01A">
</p>
<p>
Obvod U1 FT220X je obvod rozhraní USB/SPI, ale ve skutečnosti se
používá v BitBang režimu, kdy se jeho SPI specifické vlastnosti
nepoužijí. V zapojení by mělo jít použít i další obvody řady FT200X,
zapojení vývodů je stejné.
</p>
<p>
Konektor J4 slouží pro napájení cílového zařízení z napětí +5V z USB
rozhraní. Pozor, modul neobsahuje pojistku a některé počítače nemusejí
mít napájení USB portů jištěné i když specifikace jištění vyžaduje.
Nepřetěžujte napájení USB portu!
</p>
<p>
Hřebínek J3 slouží pro přepínání napájecího napětí IO vývodů USB
obvodu. Standardně se používá napětí poskytované cílovou platformou z
JTAG konektoru J2.1. Toto napětí může ležet v rozmezí 1.8 až 3.3V.
Dioda D4 slouží jako ochranná.
</p>
<p>
Pokud cílová platforma neposkytuje napájecí napětí (někdy bývá značené
jako VTG) na JTAG konektoru, lze použít napětí 3.3V z vnitřního
stabilizátoru obvodu FTDI. <i>Pozor na to, že některé
obvody FPGA nemusejí akceptovat 3.3V.</i>
</p>
<p>
Dioda D1 indikuje přítomnost napájecího napětí cílové platformy.
</p>
<p>
Dioda D2 indikuje aktivitu obslužného programu (spuštění programu a
přenos dat).
</p>
<p>
Dioda D3 indikuje zapojení do USB (věci fungují mnohem lépe, když jsou
zapojené).
</p>
<p>
Zbývající součástky jsou blokovací kondenzátory, obvody odrušení a
ochranné odpory R3 až R6.
</p>
<h2> Mechanická konstrukce </h2>
<p>
Jedná se o standardní MLAB modul k přišroubování k základnové desce.
</p>
<h1> Osazení a oživení </h1>
<h2> Osazení </h2>
<p>
Strana spojů obsahuje SMD součástky. Je vhodné připájet nejdříve C5 a
L1 a pak obvod U1. Dioda D4 má anodu připojenou na zemní plochu.
</p>
<p>
<img width="477" height="357" src="XVC_FT220X01A.cs_soubory/image004.png"
alt="Osazení součástkami ze strany spojů">
</p>
<p>
Strana součástí obsahuje jen hřebínky, konektory a 3 diody LED. Anody
LED diod jsou označeny písmenem A. Konektor J2 má 3 vývody odstraněné
jako klíč.
</p>
<p>
<img width="410" height="307" src="XVC_FT220X01A.cs_soubory/image005.png"
alt="Osazení součástkami ze strany součástek">
</p>
<table class="Soupiska">
<tr>
<th> Reference </th>
<th> Hodnota </th>
<th> Pouzdro </th>
<th> &nbsp; </th>
<th> Reference </th>
<th> Hodnota </th>
<th> Pouzdro </th>
</tr>
<tr>
<th colspan="3"> Odpory </th>
<td> &nbsp; </td>
<th colspan="3"> Tranzistory </th>
</tr>
<tr>
<td> R1, R2 </td>
<td> 27 </td>
<td> R0805 </td>
<td> &nbsp; </td>
<td> Q1, Q2 </td>
<td> 2N7000SMD </td>
<td> SOT23 </td>
</tr>
<tr>
<td> R3, R4, R5, R6 </td>
<td> 100 </td>
<td> R0805 </td>
<td> &nbsp; </td>
<th colspan="3"> Integrované obvody </th>
</tr>
<tr>
<td> R7, R8, R9 </td>
<td> 330 </td>
<td> R0805 </td>
<td> &nbsp; </td>
<td> U1 </td>
<td> FT220XS </td>
<td> SSO16_154 </td>
</tr>
<tr>
<td> R10, R11 </td>
<td> 10k </td>
<td> R0805 </td>
<td> &nbsp; </td>
<th colspan="3"> Konektory </th>
</tr>
<tr>
<th colspan="3"> Kondenzátory </th>
<td> &nbsp; </td>
<td> J1 </td>
<td> USB_B_01 </td>
<td> USB_B_01 </td>
</tr>
<tr>
<td> C1, C2 </td>
<td> 47pF </td>
<td> C0805 </td>
<td> &nbsp; </td>
<td> J2 </td>
<td> JUMP9_X3_X5_X8 </td>
<td> JUMP9_X3_X5_X8 </td>
</tr>
<tr>
<td> C3 </td>
<td> 10nF </td>
<td> C0805 </td>
<td> &nbsp; </td>
<td> J3 </td>
<td> JUMP3 </td>
<td> JUMP3 </td>
</tr>
<tr>
<td> C4, C6, C7 </td>
<td> 100nF </td>
<td> C0805 </td>
<td> &nbsp; </td>
<td> J4 </td>
<td> JUMP2X3 </td>
<td> JUMP2X3 </td>
</tr>
<tr>
<td> C5 </td>
<td> 10uF </td>
<td> C0805 </td>
<td> &nbsp; </td>
<th colspan="3"> Mechanické součásti </th>
</tr>
<tr>
<th colspan="3"> Indukčnosti </th>
<td> &nbsp; </td>
<td> 1ks </td>
<td> XVC_FT220X01A </td>
<td> Plošný spoj </td>
</tr>
<tr>
<td> L1 </td>
<td> L-BEAD </td>
<td> R1206 </td>
<td> &nbsp; </td>
<td> 4ks </td>
<td> Screw M3x12 </td>
<td> Šroub pozinkovaný </td>
</tr>
<tr>
<th colspan="3"> Diody </th>
<td> &nbsp; </td>
<td> 4ks </td>
<td> Washer M3 </td>
<td> Podložka </td>
</tr>
<tr>
<td> D1, D3 </td>
<td> LED3mm_RED </td>
<td> LED3 </td>
<td> &nbsp; </td>
<td> 4ks </td>
<td> Standoff M3x5 </td>
<td> Distanční sloupek </td>
</tr>
<tr>
<td> D2 </td>
<td> LED3mm_GREEN </td>
<td> LED3 </td>
<td> &nbsp; </td>
<td> 1ks </td>
<td> JUMPER </td>
<td> Propojka </td>
</tr>
<tr>
<td> D4 </td>
<td> BZV55-B3V6 </td>
<td> MINIMELF </td>
<td> &nbsp; </td>
<td> &nbsp; </td>
<td> &nbsp; </td>
<td> &nbsp; </td>
</tr>
</table>
<h2> Oživení </h2>
<p>
Po umytí desky a optické kontrole (zkraty, otočený U1) přistoupíme k
oživení. Nejprve připojíme +5V na prostřední pin J4 a změříme napětí na
J3.1 (mělo by být +3.3V). Dioda D3 (s nápisem USB) by měla svítit.
</p>
<p>
Odpojíme zdroj a připojíme USB kabelem k počítači. Počítač by měl najít
nový hardware a nainstalovat driver. Ovladač (typu D2XX) se najde na
stránce výrobce čipu
<a href="http://www.ftdichip.com/Drivers/D2XX.htm">http://www.ftdichip.com/Drivers/D2XX.htm</a>.
</p>
<p>
Dále je třeba nastavit správně konfiguraci obvodu FTDI tak, aby vývod
CBUS3 fungoval jako obyčejná IO nožička. Když se to neudělá, nebude
fungovat indikace LED D2 (indikuje aktivitu programu a přenos dat). To
se dělá pomocným programem FT_Prog od FTDI. Program je zašitý na webu
výrobce tak, aby ho laici nenašli <a href=
"http://www.ftdichip.com/Support/Utilities.htm">http://www.ftdichip.com/Support/Utilities.htm</a>.
</p>
<p>
Stažený ZIP archiv rozbalíme a můžeme spustit FT_Prog.exe a provést
změnu nastavení ručně, případně můžeme použít připravenou konfiguraci
ze souboru XVC_FT220X.xml.
</p>
<p>
Na obrázku je zvýrazněné požadované nastavení vývodu CBUS3.
</p>
<p>
<img width="641" height="406" src="XVC_FT220X01A.cs_soubory/image006.png"
alt="Nastavení funkce vývodu C3 u obvodu FTDI">
</p>
<p>
Když už měníme konfiguraci je vhodné zadat smysluplné jméno do položky
Product Description. Toto jméno pak bude vypisovat obslužný program a
usnadní se tím výběr zařízení v případě, že je v systému více FTDI USB
převodníků. Pro operační systém se zařízení bude i nadále tvářit jako
USB Serial Converer (kdybychom změnili identifikaci zařízení, museli
bychom do systému doplnit INF soubor tak, aby systém věděl, že se má
pro zařízení použít FTDI driver).
</p>
<p>
<img width="642" height="448" src="XVC_FT220X01A.cs_soubory/image007.png"
alt="Nastavení USB identifikace obvodu FTDI">
</p>
<p>
Tím by mělo být nastavení dokončené a je možné spustit obslužný program
mlab_xvcd.exe a pokud vše funguje správně, program vypíše spoustu
informací a na konci slovo „Listen“ a je připraven k navázání síťového
spojení ze strany vývojového prostředí. Dále postupujeme podle návodu k
použití (abychom se zde neopakovali).
</p>
<h1> Software a návod k použití </h1>
<h2> Instalace programu a první spuštění </h2>
<p>
Program pro obsluhu XVC_FT220X se jmenuje mlab_xvcd.exe a je k
dispozici na adrese
<a href="http://www.mlab.cz/PermaLink/XVC-SOFTWARE/XVC-1x/BIN">http://www.mlab.cz/PermaLink/XVC-SOFTWARE/XVC-1x/BIN</a>.
Program se neinstaluje (je slinkovaný jako jediný exe soubor), ale
potřebuje aby na počítači byly nainstalované drivery FTDI, které jsou
ke stažení na stránce výrobce
<a href="http://www.ftdichip.com/Drivers/D2XX.htm">http://www.ftdichip.com/Drivers/D2XX.htm</a>.
</p>
<p>
Program při prvním spuštění potřebuje povolit ve firewallu Windows
síťovou komunikaci (ve Win7 si o to systém sám řekne, ve starších
verzích Windows je třeba spustit konfiguraci systému firewall ručně a
povolit programu síťování). Připomínám, že nastavení je třeba
zopakovat, když program přesunete do jiného adresáře, nebo
přejmenujete, protože nastavení platí pro konkrétní program na
konkrétním místě v systému.
</p>
<h2> Spuštění mlab_xvcd.exe </h2>
<p>
Program po spuštění vypíše informace a nalezené obvody FTDI a spojí se
se zadaným zařízením, a když není zadáno tak s prvním nalezeným. Na
příkazové řádce lze zadat spojení podle názvu, sériového čísla,
umístění na USB sběrnici nebo podle pořadí nalezených obvodů FTDI.
</p>
<p>
<samp class="Block">
D:\...\BIN>mlab_xvcd.exe
 
Xilinx Virtual Cable Network Server
===================================
(c) miho 2012 v 1.03
 
FTDI Connect
Library Version 0x30207
Devices Found 1
JTAG Port Pins TCK->DBUS0(TXD)
TDI->DBUS1(RXD)
TDO->DBUS2(RTS)
TMS->DBUS3(CTS)
LED->CBUS3+DBUS7(RI)
 
Device 0
Description "XVC_FT220X"
SerialNumber "DAVY7XCB"
Location 0x111
 
Selected Device
Description "XVC_FT220X"
SerialNumber "DAVY7XCB"
Device Driver Ver 0x20824
Baud Rate 1000000
USB Latency 1
 
Starting Network Server
Host Name mihomsi
Network Name mihomsi
Host Address 192.168.22.14
Bound Socket 2542
Set in IMPACT xilinx_xvc host=mihomsi:2542 disableversioncheck=true
 
Listen
</samp>
</p>
<p>
Je-li na konci výpisu slovo Listen, je program připraven k navázání
spojení ze strany vývojového systému. Současně se rozsvítí LED indikace
aktivity (na plošném spoji označená ACT).
</p>
<h2> Spuštění a nastavení programu IMPACT </h2>
<p>
Nyní je třeba ve vývojovém prostředí spustit program IMPACT a v něm
nastavit plugin pro XVC protokol. Abychom si nemuseli pamatovat jaké
parametry se zadávají, program mlab_xvcd.exe vypisuje přesně to, co je
třeba do programu IMPACT zadat. Lze použít klipboard, ale pozor aby na
začátku nebyla mezera (není vidět, ale plugin se nenajde a nespustí).
Nastavení je v položce Output / Cable Setup.
</p>
<p>
<img width="397" height="440" src="XVC_FT220X01A.cs_soubory/image008.png"
alt="Nastavení XVC kabelu v programu iMPACT">
</p>
<p>
Po odklepnutí dojde k navázání spojení a program mlab_xvcd.exe začne
vypisovat tečky (program IMPACT každou sekundu pošle data po síti i
když nemá co na práci). Současně zhasne indikační LED a jen poblikává
při zpracování dat.
</p>
<p>
<samp class="Block">
Listen
Accepted 192.168.22.14:63280
Handle Data .........................................
.........
</samp>
</p>
<p>
Nyní lze nahrát do obvodu FPGA konfiguraci, což bylo cílem našeho
snažení.
</p>
<p>
<img width="834" height="432" src="XVC_FT220X01A.cs_soubory/image009.png"
alt="Funkční program iMPACT">
</p>
<h2> XVC a ChipScope </h2>
<p>
Použití XVC kabelu není omezeno jen na nahrávání obvodů FPGA, ale lze
jej použít i ve spojení s IP jádrem ChipScope (licencované) a zabudovat
si tak do obvodu FPGA velmi šikovný logický analyzátor. Tomuto tématu
se věnuje samostatný článek na adrese
<a href="http://www.mlab.cz/PermaLink/XVC-ChipScope">http://www.mlab.cz/PermaLink/XVC-ChipScope</a>.
</p>
<h2> Omezení </h2>
<p>
Řešení má i svá omezení. Zatím se mi nepodařilo rozchodit programování
pamětí SPI připojených k obvodu FPGA ani vnitřní SPI paměti obvodů
Spartan3AN. Tato funkce totiž nahrává obsah paměti tak, že nejdříve do
obvodu FPGA nahraje pomocný obsah (což se povede) a pak pomocí tohoto
pomocného zapojení získá přístup k pinům, ke kterým je připojena
(vnější nebo vnitřní) sériová FLASH paměť. To už se bohužel nepovede.
Zatím nevím proč.
</p>
<p>
Pro nahrávání SPI pamětí tedy i nadále používám LPT port s paralelním
kabelem (na některých počítačích to taky občas nefunguje), nebo XILINX
USB kabel (když si ho nezapomenu vypůjčit).
</p>
 
</div>
 
<!-- AUTOINCLUDE START "Page/Footer.cs.ihtml" DO NOT REMOVE -->
<!-- ============== PATIČKA ============== -->
<div class="Footer">
<script type="text/javascript">
<!--
SetRelativePath("../../../../../../");
DrawFooter();
// -->
</script>
<noscript>
<p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p>
</noscript>
</div>
<!-- AUTOINCLUDE END -->
 
</body>
</html>
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X01A/DOC/HTML/XVC_FT220X01A.cs_soubory/image001.jpg
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X01A/DOC/HTML/XVC_FT220X01A.cs_soubory/image002.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X01A/DOC/HTML/XVC_FT220X01A.cs_soubory/image003.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X01A/DOC/HTML/XVC_FT220X01A.cs_soubory/image004.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X01A/DOC/HTML/XVC_FT220X01A.cs_soubory/image005.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X01A/DOC/HTML/XVC_FT220X01A.cs_soubory/image006.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X01A/DOC/HTML/XVC_FT220X01A.cs_soubory/image007.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X01A/DOC/HTML/XVC_FT220X01A.cs_soubory/image008.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X01A/DOC/HTML/XVC_FT220X01A.cs_soubory/image009.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X01A/DOC/SRC/FT_Prog.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X01A/DOC/SRC/FT_Prog_Description.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X01A/DOC/SRC/IMPACT_Plugin.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Modules/CPLD_FPGA/XILINX_XVC/XVC_FT220X01A/DOC/SRC/IMPACT_Prog.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property