OpenCores
URL https://opencores.org/ocsvn/w11/w11/trunk

Subversion Repositories w11

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /w11/tags/w11a_V0.61/tools/fx2
    from Rev 25 to Rev 26
    Reverse comparison

Rev 25 → Rev 26

/src/lib/delay.c
0,0 → 1,75
/* -*- c++ -*- */
/* $Id: delay.c 395 2011-07-17 22:02:55Z mueller $ */
/*-----------------------------------------------------------------------------
* Delay routines
*-----------------------------------------------------------------------------
* Code taken from USRP2 firmware (GNU Radio Project), version 3.0.2,
* Copyright 2003 Free Software Foundation, Inc.
*-----------------------------------------------------------------------------
* This code is part of usbjtag. usbjtag is free software; you can redistribute
* it and/or modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the License,
* or (at your option) any later version. usbjtag is distributed in the hope
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. You should have received a
* copy of the GNU General Public License along with this program in the file
* COPYING; if not, write to the Free Software Foundation, Inc., 51 Franklin
* St, Fifth Floor, Boston, MA 02110-1301 USA
*-----------------------------------------------------------------------------
*/
 
/*
* Delay approximately 1 microsecond (including overhead in udelay).
*/
static void
udelay1 (void) _naked
{
_asm ; lcall that got us here took 4 bus cycles
ret ; 4 bus cycles
_endasm;
}
 
/*
* delay for approximately usecs microseconds
*/
void
udelay (unsigned char usecs)
{
do {
udelay1 ();
} while (--usecs != 0);
}
 
 
/*
* Delay approximately 1 millisecond.
* We're running at 48 MHz, so we need 48,000 clock cycles.
*
* Note however, that each bus cycle takes 4 clock cycles (not obvious,
* but explains the factor of 4 problem below).
*/
static void
mdelay1 (void) _naked
{
_asm
mov dptr,#(-1200 & 0xffff)
002$:
inc dptr ; 3 bus cycles
mov a, dpl ; 2 bus cycles
orl a, dph ; 2 bus cycles
jnz 002$ ; 3 bus cycles
 
ret
_endasm;
}
 
void
mdelay (unsigned int msecs)
{
do {
mdelay1 ();
} while (--msecs != 0);
}
 
/src/lib/syncdelay.h
0,0 → 1,65
/* -*- c++ -*- */
/* $Id: syncdelay.h 395 2011-07-17 22:02:55Z mueller $ */
/*-----------------------------------------------------------------------------
* Synchronization delay for FX2 access to specific registers
*-----------------------------------------------------------------------------
* Code taken from USRP2 firmware (GNU Radio Project), version 3.0.2,
* Copyright 2003 Free Software Foundation, Inc.
*-----------------------------------------------------------------------------
* This code is part of usbjtag. usbjtag is free software; you can redistribute
* it and/or modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the License,
* or (at your option) any later version. usbjtag is distributed in the hope
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. You should have received a
* copy of the GNU General Public License along with this program in the file
* COPYING; if not, write to the Free Software Foundation, Inc., 51 Franklin
* St, Fifth Floor, Boston, MA 02110-1301 USA
*-----------------------------------------------------------------------------
*/
 
#ifndef _SYNCDELAY_H_
#define _SYNCDELAY_H_
 
/*
* Magic delay required between access to certain xdata registers (TRM page 15-106).
* For our configuration, 48 MHz FX2 / 48 MHz IFCLK, we need three cycles. Each
* NOP is a single cycle....
*
* From TRM page 15-105:
*
* Under certain conditions, some read and write access to the FX2 registers must
* be separated by a "synchronization delay". The delay is necessary only under the
* following conditions:
*
* - between a write to any register in the 0xE600 - 0xE6FF range and a write to one
* of the registers listed below.
*
* - between a write to one of the registers listed below and a read from any register
* in the 0xE600 - 0xE6FF range.
*
* Registers which require a synchronization delay:
*
* FIFORESET FIFOPINPOLAR
* INPKTEND EPxBCH:L
* EPxFIFOPFH:L EPxAUTOINLENH:L
* EPxFIFOCFG EPxGPIFFLGSEL
* PINFLAGSAB PINFLAGSCD
* EPxFIFOIE EPxFIFOIRQ
* GPIFIE GPIFIRQ
* UDMACRCH:L GPIFADRH:L
* GPIFTRIG EPxGPIFTRIG
* OUTPKTEND REVCTL
* GPIFTCB3 GPIFTCB2
* GPIFTCB1 GPIFTCB0
*/
 
/*
* FIXME ensure that the peep hole optimizer isn't screwing us
*/
#define SYNCDELAY _asm nop; nop; nop; _endasm
#define NOP _asm nop; _endasm
 
 
#endif /* _SYNCDELAY_H_ */
/src/lib/usb_common.c
0,0 → 1,372
/* -*- c++ -*- */
/* $Id: usb_common.c 395 2011-07-17 22:02:55Z mueller $ */
/*-----------------------------------------------------------------------------
* Common USB code for FX2
*-----------------------------------------------------------------------------
* Code taken from USRP2 firmware (GNU Radio Project), version 3.0.2,
* Copyright 2003 Free Software Foundation, Inc.
*-----------------------------------------------------------------------------
* This code is part of usbjtag. usbjtag is free software; you can redistribute
* it and/or modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the License,
* or (at your option) any later version. usbjtag is distributed in the hope
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. You should have received a
* copy of the GNU General Public License along with this program in the file
* COPYING; if not, write to the Free Software Foundation, Inc., 51 Franklin
* St, Fifth Floor, Boston, MA 02110-1301 USA
*-----------------------------------------------------------------------------
*/
 
#include "usb_common.h"
#include "fx2regs.h"
#include "syncdelay.h"
#include "fx2utils.h"
#include "isr.h"
#include "usb_descriptors.h"
#include "usb_requests.h"
 
extern xdata char str0[];
extern xdata char str1[];
extern xdata char str2[];
extern xdata char str3[];
extern xdata char str4[];
extern xdata char str5[];
 
volatile bit _usb_got_SUDAV;
 
unsigned char _usb_config = 0;
unsigned char _usb_alt_setting = 0; // FIXME really 1/interface
 
xdata unsigned char *current_device_descr;
xdata unsigned char *current_devqual_descr;
xdata unsigned char *current_config_descr;
xdata unsigned char *other_config_descr;
 
static void
setup_descriptors (void)
{
if (USBCS & bmHSM){ // high speed mode
current_device_descr = high_speed_device_descr;
current_devqual_descr = high_speed_devqual_descr;
current_config_descr = high_speed_config_descr;
other_config_descr = full_speed_config_descr;
}
else {
current_device_descr = full_speed_device_descr;
current_devqual_descr = full_speed_devqual_descr;
current_config_descr = full_speed_config_descr;
other_config_descr = high_speed_config_descr;
}
 
// whack the type fields
// FIXME, may not be required.
// current_config_descr[1] = DT_CONFIG;
// other_config_descr[1] = DT_OTHER_SPEED;
}
 
static void
isr_SUDAV (void) interrupt
{
clear_usb_irq ();
_usb_got_SUDAV = 1;
}
 
static void
isr_USBRESET (void) interrupt
{
clear_usb_irq ();
setup_descriptors ();
}
 
static void
isr_HIGHSPEED (void) interrupt
{
clear_usb_irq ();
setup_descriptors ();
}
 
void
usb_install_handlers (void)
{
setup_descriptors (); // ensure that they're set before use
 
hook_uv (UV_SUDAV, (unsigned short) isr_SUDAV);
hook_uv (UV_USBRESET, (unsigned short) isr_USBRESET);
hook_uv (UV_HIGHSPEED, (unsigned short) isr_HIGHSPEED);
 
USBIE = bmSUDAV | bmURES | bmHSGRANT;
}
 
// On the FX2 the only plausible endpoints are 0, 1, 2, 4, 6, 8
// This doesn't check to see that they're enabled
 
unsigned char
plausible_endpoint (unsigned char ep)
{
ep &= ~0x80; // ignore direction bit
 
if (ep > 8)
return 0;
 
if (ep == 1)
return 1;
 
return (ep & 0x1) == 0; // must be even
}
 
// return pointer to control and status register for endpoint.
// only called with plausible_endpoints
 
xdata volatile unsigned char *
epcs (unsigned char ep)
{
if (ep == 0x01) // ep1 has different in and out CS regs
return EP1OUTCS;
 
if (ep == 0x81)
return EP1INCS;
 
ep &= ~0x80; // ignore direction bit
 
if (ep == 0x00) // ep0
return EP0CS;
 
return EP2CS + (ep >> 1); // 2, 4, 6, 8 are consecutive
}
 
void
usb_handle_setup_packet (void)
{
_usb_got_SUDAV = 0;
 
// handle the standard requests...
 
switch (bRequestType & bmRT_TYPE_MASK){
 
case bmRT_TYPE_CLASS:
case bmRT_TYPE_RESERVED:
fx2_stall_ep0 (); // we don't handle these. indicate error
break;
case bmRT_TYPE_VENDOR:
// call the application code.
// If it handles the command it returns non-zero
 
if (!app_vendor_cmd ())
fx2_stall_ep0 ();
break;
 
case bmRT_TYPE_STD:
// these are the standard requests...
 
if ((bRequestType & bmRT_DIR_MASK) == bmRT_DIR_IN){
 
////////////////////////////////////
// handle the IN requests
////////////////////////////////////
 
switch (bRequest){
 
case RQ_GET_CONFIG:
EP0BUF[0] = _usb_config; // FIXME app should handle
EP0BCH = 0;
EP0BCL = 1;
break;
// --------------------------------
 
case RQ_GET_INTERFACE:
EP0BUF[0] = _usb_alt_setting; // FIXME app should handle
EP0BCH = 0;
EP0BCL = 1;
break;
 
// --------------------------------
 
case RQ_GET_DESCR:
switch (wValueH){
 
case DT_DEVICE:
SUDPTRH = MSB (current_device_descr);
SUDPTRL = LSB (current_device_descr);
break;
case DT_DEVQUAL:
SUDPTRH = MSB (current_devqual_descr);
SUDPTRL = LSB (current_devqual_descr);
break;
 
case DT_CONFIG:
if (0 && wValueL != 1) // FIXME only a single configuration
fx2_stall_ep0 ();
else {
SUDPTRH = MSB (current_config_descr);
SUDPTRL = LSB (current_config_descr);
}
break;
 
case DT_OTHER_SPEED:
if (0 && wValueL != 1) // FIXME only a single configuration
fx2_stall_ep0 ();
else {
SUDPTRH = MSB (other_config_descr);
SUDPTRL = LSB (other_config_descr);
}
break;
 
case DT_STRING:
if (wValueL >= nstring_descriptors)
fx2_stall_ep0 ();
else {
xdata char *p = string_descriptors[wValueL];
SUDPTRH = MSB (p);
SUDPTRL = LSB (p);
}
break;
 
default:
fx2_stall_ep0 (); // invalid request
break;
}
break;
// --------------------------------
 
case RQ_GET_STATUS:
switch (bRequestType & bmRT_RECIP_MASK){
case bmRT_RECIP_DEVICE:
EP0BUF[0] = 0;
EP0BUF[1] = 0;
EP0BCH = 0;
EP0BCL = 2;
break;
 
case bmRT_RECIP_INTERFACE:
EP0BUF[0] = 0;
EP0BUF[1] = 0;
EP0BCH = 0;
EP0BCL = 2;
break;
 
case bmRT_RECIP_ENDPOINT:
if (plausible_endpoint (wIndexL)){
EP0BUF[0] = *epcs (wIndexL) & bmEPSTALL;
EP0BUF[1] = 0;
EP0BCH = 0;
EP0BCL = 2;
}
else
fx2_stall_ep0 ();
break;
 
default:
fx2_stall_ep0 ();
break;
}
break;
 
// --------------------------------
 
case RQ_SYNCH_FRAME: // not implemented
default:
fx2_stall_ep0 ();
break;
}
}
 
else {
 
////////////////////////////////////
// handle the OUT requests
////////////////////////////////////
 
switch (bRequest){
 
case RQ_SET_CONFIG:
_usb_config = wValueL; // FIXME app should handle
break;
 
case RQ_SET_INTERFACE:
_usb_alt_setting = wValueL; // FIXME app should handle
break;
 
// --------------------------------
 
case RQ_CLEAR_FEATURE:
switch (bRequestType & bmRT_RECIP_MASK){
 
case bmRT_RECIP_DEVICE:
switch (wValueL){
case FS_DEV_REMOTE_WAKEUP:
default:
fx2_stall_ep0 ();
}
break;
 
case bmRT_RECIP_ENDPOINT:
if (wValueL == FS_ENDPOINT_HALT && plausible_endpoint (wIndexL)){
*epcs (wIndexL) &= ~bmEPSTALL;
fx2_reset_data_toggle (wIndexL);
}
else
fx2_stall_ep0 ();
break;
 
default:
fx2_stall_ep0 ();
break;
}
break;
 
// --------------------------------
 
case RQ_SET_FEATURE:
switch (bRequestType & bmRT_RECIP_MASK){
 
case bmRT_RECIP_DEVICE:
switch (wValueL){
case FS_TEST_MODE:
// hardware handles this after we complete SETUP phase handshake
break;
 
case FS_DEV_REMOTE_WAKEUP:
default:
fx2_stall_ep0 ();
break;
}
}
break;
 
case bmRT_RECIP_ENDPOINT:
switch (wValueL){
case FS_ENDPOINT_HALT:
if (plausible_endpoint (wIndexL))
*epcs (wIndexL) |= bmEPSTALL;
else
fx2_stall_ep0 ();
break;
 
default:
fx2_stall_ep0 ();
break;
}
break;
 
// --------------------------------
 
case RQ_SET_ADDRESS: // handled by fx2 hardware
case RQ_SET_DESCR: // not implemented
default:
fx2_stall_ep0 ();
}
 
}
break;
 
} // bmRT_TYPE_MASK
 
// ack handshake phase of device request
EP0CS |= bmHSNAK;
}
/src/lib/isr.h
0,0 → 1,171
/* -*- c++ -*- */
/* $Id: isr.h 395 2011-07-17 22:02:55Z mueller $ */
/*-----------------------------------------------------------------------------
* Interrupt handling for FX2
*-----------------------------------------------------------------------------
* Code taken from USRP2 firmware (GNU Radio Project), version 3.0.2,
* Copyright 2003 Free Software Foundation, Inc.
*-----------------------------------------------------------------------------
* This code is part of usbjtag. usbjtag is free software; you can redistribute
* it and/or modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the License,
* or (at your option) any later version. usbjtag is distributed in the hope
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. You should have received a
* copy of the GNU General Public License along with this program in the file
* COPYING; if not, write to the Free Software Foundation, Inc., 51 Franklin
* St, Fifth Floor, Boston, MA 02110-1301 USA
*-----------------------------------------------------------------------------
*/
 
#ifndef _ISR_H_
#define _ISR_H_
 
/*
* ----------------------------------------------------------------
* routines for managing interrupt services routines
* ----------------------------------------------------------------
*/
 
/*
* The FX2 has three discrete sets of interrupt vectors.
* The first set is the standard 8051 vector (13 8-byte entries).
* The second set is USB interrupt autovector (32 4-byte entries).
* The third set is the FIFO/GPIF autovector (14 4-byte entries).
*
* Since all the code we're running in the FX2 is ram based, we
* forego the typical "initialize the interrupt vectors at link time"
* strategy, in favor of calls at run time that install the correct
* pointers to functions.
*/
 
/*
* Standard Vector numbers
*/
 
#define SV_INT_0 0x03
#define SV_TIMER_0 0x0b
#define SV_INT_1 0x13
#define SV_TIMER_1 0x1b
#define SV_SERIAL_0 0x23
#define SV_TIMER_2 0x2b
#define SV_RESUME 0x33
#define SV_SERIAL_1 0x3b
#define SV_INT_2 0x43 // (INT_2) points at USB autovector
#define SV_I2C 0x4b
#define SV_INT_4 0x53 // (INT_4) points at FIFO/GPIF autovector
#define SV_INT_5 0x5b
#define SV_INT_6 0x63
 
#define SV_MIN SV_INT_0
#define SV_MAX SV_INT_6
 
/*
* USB Auto Vector numbers
*/
 
#define UV_SUDAV 0x00
#define UV_SOF 0x04
#define UV_SUTOK 0x08
#define UV_SUSPEND 0x0c
#define UV_USBRESET 0x10
#define UV_HIGHSPEED 0x14
#define UV_EP0ACK 0x18
#define UV_SPARE_1C 0x1c
#define UV_EP0IN 0x20
#define UV_EP0OUT 0x24
#define UV_EP1IN 0x28
#define UV_EP1OUT 0x2c
#define UV_EP2 0x30
#define UV_EP4 0x34
#define UV_EP6 0x38
#define UV_EP8 0x3c
#define UV_IBN 0x40
#define UV_SPARE_44 0x44
#define UV_EP0PINGNAK 0x48
#define UV_EP1PINGNAK 0x4c
#define UV_EP2PINGNAK 0x50
#define UV_EP4PINGNAK 0x54
#define UV_EP6PINGNAK 0x58
#define UV_EP8PINGNAK 0x5c
#define UV_ERRLIMIT 0x60
#define UV_SPARE_64 0x64
#define UV_SPARE_68 0x68
#define UV_SPARE_6C 0x6c
#define UV_EP2ISOERR 0x70
#define UV_EP4ISOERR 0x74
#define UV_EP6ISOERR 0x78
#define UV_EP8ISOERR 0x7c
 
#define UV_MIN UV_SUDAV
#define UV_MAX UV_EP8ISOERR
 
/*
* FIFO/GPIF Auto Vector numbers
*/
 
#define FGV_EP2PF 0x80
#define FGV_EP4PF 0x84
#define FGV_EP6PF 0x88
#define FGV_EP8PF 0x8c
#define FGV_EP2EF 0x90
#define FGV_EP4EF 0x94
#define FGV_EP6EF 0x98
#define FGV_EP8EF 0x9c
#define FGV_EP2FF 0xa0
#define FGV_EP4FF 0xa4
#define FGV_EP6FF 0xa8
#define FGV_EP8FF 0xac
#define FGV_GPIFDONE 0xb0
#define FGV_GPIFWF 0xb4
 
#define FGV_MIN FGV_EP2PF
#define FGV_MAX FGV_GPIFWF
 
 
/*
* Hook standard interrupt vector.
*
* vector_number is from the SV_<foo> list above.
* addr is the address of the interrupt service routine.
*/
void hook_sv (unsigned char vector_number, unsigned short addr);
 
/*
* Hook usb interrupt vector.
*
* vector_number is from the UV_<foo> list above.
* addr is the address of the interrupt service routine.
*/
void hook_uv (unsigned char vector_number, unsigned short addr);
 
/*
* Hook fifo/gpif interrupt vector.
*
* vector_number is from the FGV_<foo> list above.
* addr is the address of the interrupt service routine.
*/
void hook_fgv (unsigned char vector_number, unsigned short addr);
 
/*
* One time call to enable autovectoring for both USB and FIFO/GPIF
*/
void setup_autovectors (void);
 
 
/*
* Must be called in each usb interrupt handler
*/
#define clear_usb_irq() \
EXIF &= ~bmEXIF_USBINT; \
INT2CLR = 0
 
/*
* Must be calledin each fifo/gpif interrupt handler
*/
#define clear_fifo_gpif_irq() \
EXIF &= ~bmEXIF_IE4; \
INT4CLR = 0
 
#endif /* _ISR_H_ */
/src/lib/delay.h
0,0 → 1,37
/* -*- c++ -*- */
/* $Id: delay.h 395 2011-07-17 22:02:55Z mueller $ */
/*-----------------------------------------------------------------------------
* Delay routines
*-----------------------------------------------------------------------------
* Code taken from USRP2 firmware (GNU Radio Project), version 3.0.2,
* Copyright 2003 Free Software Foundation, Inc.
*-----------------------------------------------------------------------------
* This code is part of usbjtag. usbjtag is free software; you can redistribute
* it and/or modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the License,
* or (at your option) any later version. usbjtag is distributed in the hope
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. You should have received a
* copy of the GNU General Public License along with this program in the file
* COPYING; if not, write to the Free Software Foundation, Inc., 51 Franklin
* St, Fifth Floor, Boston, MA 02110-1301 USA
*-----------------------------------------------------------------------------
*/
 
#ifndef _DELAY_H_
#define _DELAY_H_
 
/*
* delay for approximately usecs microseconds
* Note limit of 255 usecs.
*/
void udelay (unsigned char usecs);
 
/*
* delay for approximately msecs milliseconds
*/
void mdelay (unsigned short msecs);
 
 
#endif /* _DELAY_H_ */
/src/lib/usb_common.h
0,0 → 1,51
/* -*- c++ -*- */
/* $Id: usb_common.h 395 2011-07-17 22:02:55Z mueller $ */
/*-----------------------------------------------------------------------------
* Common USB code for FX2
*-----------------------------------------------------------------------------
* Code taken from USRP2 firmware (GNU Radio Project), version 3.0.2,
* Copyright 2003 Free Software Foundation, Inc.
*-----------------------------------------------------------------------------
* This code is part of usbjtag. usbjtag is free software; you can redistribute
* it and/or modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the License,
* or (at your option) any later version. usbjtag is distributed in the hope
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. You should have received a
* copy of the GNU General Public License along with this program in the file
* COPYING; if not, write to the Free Software Foundation, Inc., 51 Franklin
* St, Fifth Floor, Boston, MA 02110-1301 USA
*-----------------------------------------------------------------------------
*/
 
#ifndef _USB_COMMON_H_
#define _USB_COMMON_H_
 
#define bRequestType SETUPDAT[0]
#define bRequest SETUPDAT[1]
#define wValueL SETUPDAT[2]
#define wValueH SETUPDAT[3]
#define wIndexL SETUPDAT[4]
#define wIndexH SETUPDAT[5]
#define wLengthL SETUPDAT[6]
#define wLengthH SETUPDAT[7]
 
#define MSB(x) (((unsigned short) x) >> 8)
#define LSB(x) (((unsigned short) x) & 0xff)
 
extern volatile bit _usb_got_SUDAV;
 
// Provided by user application to report device status.
// returns non-zero if it handled the command.
unsigned char app_get_status (void);
// Provided by user application to handle VENDOR commands.
// returns non-zero if it handled the command.
unsigned char app_vendor_cmd (void);
 
void usb_install_handlers (void);
void usb_handle_setup_packet (void);
 
#define usb_setup_packet_avail() _usb_got_SUDAV
 
#endif /* _USB_COMMON_H_ */
/src/lib/i2c.c
0,0 → 1,122
/* -*- c++ -*- */
/* $Id: i2c.c 395 2011-07-17 22:02:55Z mueller $ */
/*-----------------------------------------------------------------------------
* I2C read/write functions for FX2
*-----------------------------------------------------------------------------
* Code taken from USRP2 firmware (GNU Radio Project), version 3.0.2,
* Copyright 2003 Free Software Foundation, Inc.
*-----------------------------------------------------------------------------
* This code is part of usbjtag. usbjtag is free software; you can redistribute
* it and/or modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the License,
* or (at your option) any later version. usbjtag is distributed in the hope
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. You should have received a
* copy of the GNU General Public License along with this program in the file
* COPYING; if not, write to the Free Software Foundation, Inc., 51 Franklin
* St, Fifth Floor, Boston, MA 02110-1301 USA
*-----------------------------------------------------------------------------
*/
 
#include "i2c.h"
#include "fx2regs.h"
#include <string.h>
 
 
// issue a stop bus cycle and wait for completion
 
 
// returns non-zero if successful, else 0
unsigned char
i2c_read (unsigned char addr, xdata unsigned char *buf, unsigned char len)
{
volatile unsigned char junk;
if (len == 0) // reading zero bytes always works
return 1;
while (I2CS & bmSTOP) // wait for stop to clear
;
 
I2CS = bmSTART;
I2DAT = (addr << 1) | 1; // write address and direction (1's the read bit)
 
while ((I2CS & bmDONE) == 0)
;
 
if ((I2CS & bmBERR) || (I2CS & bmACK) == 0) // no device answered...
goto fail;
 
if (len == 1)
I2CS |= bmLASTRD;
 
junk = I2DAT; // trigger the first read cycle
 
while (--len != 0){
while ((I2CS & bmDONE) == 0)
;
 
if (I2CS & bmBERR)
goto fail;
 
if (len == 1)
I2CS |= bmLASTRD;
*buf++ = I2DAT; // get data, trigger another read
}
 
// wait for final byte
while ((I2CS & bmDONE) == 0)
;
if (I2CS & bmBERR)
goto fail;
 
I2CS |= bmSTOP;
*buf = I2DAT;
 
return 1;
 
fail:
I2CS |= bmSTOP;
return 0;
}
 
 
 
// returns non-zero if successful, else 0
unsigned char
i2c_write (unsigned char addr, xdata const unsigned char *buf, unsigned char len)
{
while (I2CS & bmSTOP) // wait for stop to clear
;
 
I2CS = bmSTART;
I2DAT = (addr << 1) | 0; // write address and direction (0's the write bit)
 
while ((I2CS & bmDONE) == 0)
;
 
if ((I2CS & bmBERR) || (I2CS & bmACK) == 0) // no device answered...
goto fail;
 
while (len > 0){
I2DAT = *buf++;
len--;
 
while ((I2CS & bmDONE) == 0)
;
 
if ((I2CS & bmBERR) || (I2CS & bmACK) == 0) // no device answered...
goto fail;
}
 
I2CS |= bmSTOP;
return 1;
 
fail:
I2CS |= bmSTOP;
return 0;
}
/src/lib/usb_descriptors.h
0,0 → 1,39
/* -*- c++ -*- */
/* $Id: usb_descriptors.h 395 2011-07-17 22:02:55Z mueller $ */
/*-----------------------------------------------------------------------------
* USB descriptor references
*-----------------------------------------------------------------------------
* Code taken from USRP2 firmware (GNU Radio Project), version 3.0.2,
* Copyright 2003 Free Software Foundation, Inc.
*-----------------------------------------------------------------------------
* This code is part of usbjtag. usbjtag is free software; you can redistribute
* it and/or modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the License,
* or (at your option) any later version. usbjtag is distributed in the hope
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. You should have received a
* copy of the GNU General Public License along with this program in the file
* COPYING; if not, write to the Free Software Foundation, Inc., 51 Franklin
* St, Fifth Floor, Boston, MA 02110-1301 USA
*-----------------------------------------------------------------------------
*/
 
extern xdata const char high_speed_device_descr[];
extern xdata const char high_speed_devqual_descr[];
extern xdata const char high_speed_config_descr[];
 
extern xdata const char full_speed_device_descr[];
extern xdata const char full_speed_devqual_descr[];
extern xdata const char full_speed_config_descr[];
 
extern xdata unsigned char nstring_descriptors;
extern xdata char * xdata string_descriptors[];
 
/*
* We patch these locations with info read from the usrp config eeprom
*/
extern xdata char usb_desc_hw_rev_binary_patch_location_0[];
extern xdata char usb_desc_hw_rev_binary_patch_location_1[];
extern xdata char usb_desc_hw_rev_ascii_patch_location_0[];
extern xdata char usb_desc_serial_number_ascii[];
/src/lib/timer.c
0,0 → 1,48
/* -*- c++ -*- */
/* $Id: timer.c 395 2011-07-17 22:02:55Z mueller $ */
/*-----------------------------------------------------------------------------
* Timer handling for FX2
*-----------------------------------------------------------------------------
* Code taken from USRP2 firmware (GNU Radio Project), version 3.0.2,
* Copyright 2003 Free Software Foundation, Inc.
*-----------------------------------------------------------------------------
* This code is part of usbjtag. usbjtag is free software; you can redistribute
* it and/or modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the License,
* or (at your option) any later version. usbjtag is distributed in the hope
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. You should have received a
* copy of the GNU General Public License along with this program in the file
* COPYING; if not, write to the Free Software Foundation, Inc., 51 Franklin
* St, Fifth Floor, Boston, MA 02110-1301 USA
*-----------------------------------------------------------------------------
*/
 
#include "timer.h"
#include "fx2regs.h"
#include "isr.h"
 
/*
* Arrange to have isr_tick_handler called at 100 Hz.
*
* The cpu clock is running at 48e6. The input to the timer
* is 48e6 / 12 = 4e6.
*
* We arrange to have the timer overflow every 40000 clocks == 100 Hz
*/
 
#define RELOAD_VALUE ((unsigned short) -40000)
 
void
hook_timer_tick (unsigned short isr_tick_handler)
{
ET2 = 0; // disable timer 2 interrupts
hook_sv (SV_TIMER_2, isr_tick_handler);
RCAP2H = RELOAD_VALUE >> 8; // setup the auto reload value
RCAP2L = RELOAD_VALUE & 0xFF;
 
T2CON = 0x04; // interrupt on overflow; reload; run
ET2 = 1; // enable timer 2 interrupts
}
/src/lib/fx2utils.c
0,0 → 1,53
/* -*- c++ -*- */
/* $Id: fx2utils.c 395 2011-07-17 22:02:55Z mueller $ */
/*-----------------------------------------------------------------------------
* FX2 specific subroutines
*-----------------------------------------------------------------------------
* Code taken from USRP2 firmware (GNU Radio Project), version 3.0.2,
* Copyright 2003 Free Software Foundation, Inc.
*-----------------------------------------------------------------------------
* This code is part of usbjtag. usbjtag is free software; you can redistribute
* it and/or modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the License,
* or (at your option) any later version. usbjtag is distributed in the hope
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. You should have received a
* copy of the GNU General Public License along with this program in the file
* COPYING; if not, write to the Free Software Foundation, Inc., 51 Franklin
* St, Fifth Floor, Boston, MA 02110-1301 USA
*-----------------------------------------------------------------------------
*/
 
#include "fx2utils.h"
#include "fx2regs.h"
#include "delay.h"
 
void
fx2_stall_ep0 (void)
{
EP0CS |= bmEPSTALL;
}
 
void
fx2_reset_data_toggle (unsigned char ep)
{
TOGCTL = ((ep & 0x80) >> 3 | (ep & 0x0f));
TOGCTL |= bmRESETTOGGLE;
}
 
void
fx2_renumerate (void)
{
USBCS |= bmDISCON | bmRENUM;
 
// mdelay (1500); // FIXME why 1.5 seconds?
mdelay (250); // FIXME why 1.5 seconds?
USBIRQ = 0xff; // clear any pending USB irqs...
EPIRQ = 0xff; // they're from before the renumeration
 
EXIF &= ~bmEXIF_USBINT;
 
USBCS &= ~bmDISCON; // reconnect USB
}
/src/lib/i2c.h
0,0 → 1,31
/* -*- c++ -*- */
/* $Id: i2c.h 395 2011-07-17 22:02:55Z mueller $ */
/*-----------------------------------------------------------------------------
* I2C read/write functions for FX2
*-----------------------------------------------------------------------------
* Code taken from USRP2 firmware (GNU Radio Project), version 3.0.2,
* Copyright 2003 Free Software Foundation, Inc.
*-----------------------------------------------------------------------------
* This code is part of usbjtag. usbjtag is free software; you can redistribute
* it and/or modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the License,
* or (at your option) any later version. usbjtag is distributed in the hope
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. You should have received a
* copy of the GNU General Public License along with this program in the file
* COPYING; if not, write to the Free Software Foundation, Inc., 51 Franklin
* St, Fifth Floor, Boston, MA 02110-1301 USA
*-----------------------------------------------------------------------------
*/
 
#ifndef _I2C_H_
#define _I2C_H_
 
// returns non-zero if successful, else 0
unsigned char i2c_read (unsigned char addr, xdata unsigned char *buf, unsigned char len);
 
// returns non-zero if successful, else 0
unsigned char i2c_write (unsigned char addr, xdata const unsigned char *buf, unsigned char len);
 
#endif /* _I2C_H_ */
/src/lib/fx2regs.h
0,0 → 1,715
/* -*- c++ -*- */
/* $Id: fx2regs.h 395 2011-07-17 22:02:55Z mueller $ */
/*-----------------------------------------------------------------------------
* FX2 register definitions
*-----------------------------------------------------------------------------
* Code taken from USRP2 firmware (GNU Radio Project), version 3.0.2,
* Copyright 2003 Free Software Foundation, Inc.
*-----------------------------------------------------------------------------
* This code is part of usbjtag. usbjtag is free software; you can redistribute
* it and/or modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the License,
* or (at your option) any later version. usbjtag is distributed in the hope
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. You should have received a
* copy of the GNU General Public License along with this program in the file
* COPYING; if not, write to the Free Software Foundation, Inc., 51 Franklin
* St, Fifth Floor, Boston, MA 02110-1301 USA
*-----------------------------------------------------------------------------
*/
 
/*
//-----------------------------------------------------------------------------
// File: FX2regs.h
// Contents: EZ-USB FX2 register declarations and bit mask definitions.
//
// $Archive: /USB/Target/Inc/fx2regs.h $
// $Date: 2006-09-13 14:30:04 -0700 (Wed, 13 Sep 2006) $
// $Revision: 3534 $
//
//
// Copyright (c) 2000 Cypress Semiconductor, All rights reserved
//-----------------------------------------------------------------------------
*/
 
 
#ifndef FX2REGS_H /* Header Sentry */
#define FX2REGS_H
 
#define ALLOCATE_EXTERN // required for "right thing to happen" with fx2regs.h
 
/*
//-----------------------------------------------------------------------------
// FX2 Related Register Assignments
//-----------------------------------------------------------------------------
 
// The Ez-USB FX2 registers are defined here. We use FX2regs.h for register
// address allocation by using "#define ALLOCATE_EXTERN".
// When using "#define ALLOCATE_EXTERN", you get (for instance):
// xdata volatile BYTE OUT7BUF[64] _at_ 0x7B40;
// Such lines are created from FX2.h by using the preprocessor.
// Incidently, these lines will not generate any space in the resulting hex
// file; they just bind the symbols to the addresses for compilation.
// You just need to put "#define ALLOCATE_EXTERN" in your main program file;
// i.e. fw.c or a stand-alone C source file.
// Without "#define ALLOCATE_EXTERN", you just get the external reference:
// extern xdata volatile BYTE OUT7BUF[64] ;// 0x7B40;
// This uses the concatenation operator "##" to insert a comment "//"
// to cut off the end of the line, "_at_ 0x7B40;", which is not wanted.
*/
 
 
#ifdef ALLOCATE_EXTERN
#define EXTERN
#define _AT_(a) at a
#else
#define EXTERN extern
#define _AT_ ;/ ## /
#endif
 
typedef unsigned char BYTE;
typedef unsigned short WORD;
 
EXTERN xdata _AT_(0xE400) volatile BYTE GPIF_WAVE_DATA[128];
EXTERN xdata _AT_(0xE480) volatile BYTE RES_WAVEDATA_END ;
 
// General Configuration
 
EXTERN xdata _AT_(0xE600) volatile BYTE CPUCS ; // Control & Status
EXTERN xdata _AT_(0xE601) volatile BYTE IFCONFIG ; // Interface Configuration
EXTERN xdata _AT_(0xE602) volatile BYTE PINFLAGSAB ; // FIFO FLAGA and FLAGB Assignments
EXTERN xdata _AT_(0xE603) volatile BYTE PINFLAGSCD ; // FIFO FLAGC and FLAGD Assignments
EXTERN xdata _AT_(0xE604) volatile BYTE FIFORESET ; // Restore FIFOS to default state
EXTERN xdata _AT_(0xE605) volatile BYTE BREAKPT ; // Breakpoint
EXTERN xdata _AT_(0xE606) volatile BYTE BPADDRH ; // Breakpoint Address H
EXTERN xdata _AT_(0xE607) volatile BYTE BPADDRL ; // Breakpoint Address L
EXTERN xdata _AT_(0xE608) volatile BYTE UART230 ; // 230 Kbaud clock for T0,T1,T2
EXTERN xdata _AT_(0xE609) volatile BYTE FIFOPINPOLAR ; // FIFO polarities
EXTERN xdata _AT_(0xE60A) volatile BYTE REVID ; // Chip Revision
EXTERN xdata _AT_(0xE60B) volatile BYTE REVCTL ; // Chip Revision Control
 
// Endpoint Configuration
 
EXTERN xdata _AT_(0xE610) volatile BYTE EP1OUTCFG ; // Endpoint 1-OUT Configuration
EXTERN xdata _AT_(0xE611) volatile BYTE EP1INCFG ; // Endpoint 1-IN Configuration
EXTERN xdata _AT_(0xE612) volatile BYTE EP2CFG ; // Endpoint 2 Configuration
EXTERN xdata _AT_(0xE613) volatile BYTE EP4CFG ; // Endpoint 4 Configuration
EXTERN xdata _AT_(0xE614) volatile BYTE EP6CFG ; // Endpoint 6 Configuration
EXTERN xdata _AT_(0xE615) volatile BYTE EP8CFG ; // Endpoint 8 Configuration
EXTERN xdata _AT_(0xE618) volatile BYTE EP2FIFOCFG ; // Endpoint 2 FIFO configuration
EXTERN xdata _AT_(0xE619) volatile BYTE EP4FIFOCFG ; // Endpoint 4 FIFO configuration
EXTERN xdata _AT_(0xE61A) volatile BYTE EP6FIFOCFG ; // Endpoint 6 FIFO configuration
EXTERN xdata _AT_(0xE61B) volatile BYTE EP8FIFOCFG ; // Endpoint 8 FIFO configuration
EXTERN xdata _AT_(0xE620) volatile BYTE EP2AUTOINLENH ; // Endpoint 2 Packet Length H (IN only)
EXTERN xdata _AT_(0xE621) volatile BYTE EP2AUTOINLENL ; // Endpoint 2 Packet Length L (IN only)
EXTERN xdata _AT_(0xE622) volatile BYTE EP4AUTOINLENH ; // Endpoint 4 Packet Length H (IN only)
EXTERN xdata _AT_(0xE623) volatile BYTE EP4AUTOINLENL ; // Endpoint 4 Packet Length L (IN only)
EXTERN xdata _AT_(0xE624) volatile BYTE EP6AUTOINLENH ; // Endpoint 6 Packet Length H (IN only)
EXTERN xdata _AT_(0xE625) volatile BYTE EP6AUTOINLENL ; // Endpoint 6 Packet Length L (IN only)
EXTERN xdata _AT_(0xE626) volatile BYTE EP8AUTOINLENH ; // Endpoint 8 Packet Length H (IN only)
EXTERN xdata _AT_(0xE627) volatile BYTE EP8AUTOINLENL ; // Endpoint 8 Packet Length L (IN only)
EXTERN xdata _AT_(0xE630) volatile BYTE EP2FIFOPFH ; // EP2 Programmable Flag trigger H
EXTERN xdata _AT_(0xE631) volatile BYTE EP2FIFOPFL ; // EP2 Programmable Flag trigger L
EXTERN xdata _AT_(0xE632) volatile BYTE EP4FIFOPFH ; // EP4 Programmable Flag trigger H
EXTERN xdata _AT_(0xE633) volatile BYTE EP4FIFOPFL ; // EP4 Programmable Flag trigger L
EXTERN xdata _AT_(0xE634) volatile BYTE EP6FIFOPFH ; // EP6 Programmable Flag trigger H
EXTERN xdata _AT_(0xE635) volatile BYTE EP6FIFOPFL ; // EP6 Programmable Flag trigger L
EXTERN xdata _AT_(0xE636) volatile BYTE EP8FIFOPFH ; // EP8 Programmable Flag trigger H
EXTERN xdata _AT_(0xE637) volatile BYTE EP8FIFOPFL ; // EP8 Programmable Flag trigger L
EXTERN xdata _AT_(0xE640) volatile BYTE EP2ISOINPKTS ; // EP2 (if ISO) IN Packets per frame (1-3)
EXTERN xdata _AT_(0xE641) volatile BYTE EP4ISOINPKTS ; // EP4 (if ISO) IN Packets per frame (1-3)
EXTERN xdata _AT_(0xE642) volatile BYTE EP6ISOINPKTS ; // EP6 (if ISO) IN Packets per frame (1-3)
EXTERN xdata _AT_(0xE643) volatile BYTE EP8ISOINPKTS ; // EP8 (if ISO) IN Packets per frame (1-3)
EXTERN xdata _AT_(0xE648) volatile BYTE INPKTEND ; // Force IN Packet End
EXTERN xdata _AT_(0xE649) volatile BYTE OUTPKTEND ; // Force OUT Packet End
 
// Interrupts
 
EXTERN xdata _AT_(0xE650) volatile BYTE EP2FIFOIE ; // Endpoint 2 Flag Interrupt Enable
EXTERN xdata _AT_(0xE651) volatile BYTE EP2FIFOIRQ ; // Endpoint 2 Flag Interrupt Request
EXTERN xdata _AT_(0xE652) volatile BYTE EP4FIFOIE ; // Endpoint 4 Flag Interrupt Enable
EXTERN xdata _AT_(0xE653) volatile BYTE EP4FIFOIRQ ; // Endpoint 4 Flag Interrupt Request
EXTERN xdata _AT_(0xE654) volatile BYTE EP6FIFOIE ; // Endpoint 6 Flag Interrupt Enable
EXTERN xdata _AT_(0xE655) volatile BYTE EP6FIFOIRQ ; // Endpoint 6 Flag Interrupt Request
EXTERN xdata _AT_(0xE656) volatile BYTE EP8FIFOIE ; // Endpoint 8 Flag Interrupt Enable
EXTERN xdata _AT_(0xE657) volatile BYTE EP8FIFOIRQ ; // Endpoint 8 Flag Interrupt Request
EXTERN xdata _AT_(0xE658) volatile BYTE IBNIE ; // IN-BULK-NAK Interrupt Enable
EXTERN xdata _AT_(0xE659) volatile BYTE IBNIRQ ; // IN-BULK-NAK interrupt Request
EXTERN xdata _AT_(0xE65A) volatile BYTE NAKIE ; // Endpoint Ping NAK interrupt Enable
EXTERN xdata _AT_(0xE65B) volatile BYTE NAKIRQ ; // Endpoint Ping NAK interrupt Request
EXTERN xdata _AT_(0xE65C) volatile BYTE USBIE ; // USB Int Enables
EXTERN xdata _AT_(0xE65D) volatile BYTE USBIRQ ; // USB Interrupt Requests
EXTERN xdata _AT_(0xE65E) volatile BYTE EPIE ; // Endpoint Interrupt Enables
EXTERN xdata _AT_(0xE65F) volatile BYTE EPIRQ ; // Endpoint Interrupt Requests
EXTERN xdata _AT_(0xE660) volatile BYTE GPIFIE ; // GPIF Interrupt Enable
EXTERN xdata _AT_(0xE661) volatile BYTE GPIFIRQ ; // GPIF Interrupt Request
EXTERN xdata _AT_(0xE662) volatile BYTE USBERRIE ; // USB Error Interrupt Enables
EXTERN xdata _AT_(0xE663) volatile BYTE USBERRIRQ ; // USB Error Interrupt Requests
EXTERN xdata _AT_(0xE664) volatile BYTE ERRCNTLIM ; // USB Error counter and limit
EXTERN xdata _AT_(0xE665) volatile BYTE CLRERRCNT ; // Clear Error Counter EC[3..0]
EXTERN xdata _AT_(0xE666) volatile BYTE INT2IVEC ; // Interupt 2 (USB) Autovector
EXTERN xdata _AT_(0xE667) volatile BYTE INT4IVEC ; // Interupt 4 (FIFOS & GPIF) Autovector
EXTERN xdata _AT_(0xE668) volatile BYTE INTSETUP ; // Interrupt 2&4 Setup
 
// Input/Output
 
EXTERN xdata _AT_(0xE670) volatile BYTE PORTACFG ; // I/O PORTA Alternate Configuration
EXTERN xdata _AT_(0xE671) volatile BYTE PORTCCFG ; // I/O PORTC Alternate Configuration
EXTERN xdata _AT_(0xE672) volatile BYTE PORTECFG ; // I/O PORTE Alternate Configuration
EXTERN xdata _AT_(0xE678) volatile BYTE I2CS ; // Control & Status
EXTERN xdata _AT_(0xE679) volatile BYTE I2DAT ; // Data
EXTERN xdata _AT_(0xE67A) volatile BYTE I2CTL ; // I2C Control
EXTERN xdata _AT_(0xE67B) volatile BYTE XAUTODAT1 ; // Autoptr1 MOVX access
EXTERN xdata _AT_(0xE67C) volatile BYTE XAUTODAT2 ; // Autoptr2 MOVX access
 
#define EXTAUTODAT1 XAUTODAT1
#define EXTAUTODAT2 XAUTODAT2
 
// USB Control
 
EXTERN xdata _AT_(0xE680) volatile BYTE USBCS ; // USB Control & Status
EXTERN xdata _AT_(0xE681) volatile BYTE SUSPEND ; // Put chip into suspend
EXTERN xdata _AT_(0xE682) volatile BYTE WAKEUPCS ; // Wakeup source and polarity
EXTERN xdata _AT_(0xE683) volatile BYTE TOGCTL ; // Toggle Control
EXTERN xdata _AT_(0xE684) volatile BYTE USBFRAMEH ; // USB Frame count H
EXTERN xdata _AT_(0xE685) volatile BYTE USBFRAMEL ; // USB Frame count L
EXTERN xdata _AT_(0xE686) volatile BYTE MICROFRAME ; // Microframe count, 0-7
EXTERN xdata _AT_(0xE687) volatile BYTE FNADDR ; // USB Function address
 
// Endpoints
 
EXTERN xdata _AT_(0xE68A) volatile BYTE EP0BCH ; // Endpoint 0 Byte Count H
EXTERN xdata _AT_(0xE68B) volatile BYTE EP0BCL ; // Endpoint 0 Byte Count L
EXTERN xdata _AT_(0xE68D) volatile BYTE EP1OUTBC ; // Endpoint 1 OUT Byte Count
EXTERN xdata _AT_(0xE68F) volatile BYTE EP1INBC ; // Endpoint 1 IN Byte Count
EXTERN xdata _AT_(0xE690) volatile BYTE EP2BCH ; // Endpoint 2 Byte Count H
EXTERN xdata _AT_(0xE691) volatile BYTE EP2BCL ; // Endpoint 2 Byte Count L
EXTERN xdata _AT_(0xE694) volatile BYTE EP4BCH ; // Endpoint 4 Byte Count H
EXTERN xdata _AT_(0xE695) volatile BYTE EP4BCL ; // Endpoint 4 Byte Count L
EXTERN xdata _AT_(0xE698) volatile BYTE EP6BCH ; // Endpoint 6 Byte Count H
EXTERN xdata _AT_(0xE699) volatile BYTE EP6BCL ; // Endpoint 6 Byte Count L
EXTERN xdata _AT_(0xE69C) volatile BYTE EP8BCH ; // Endpoint 8 Byte Count H
EXTERN xdata _AT_(0xE69D) volatile BYTE EP8BCL ; // Endpoint 8 Byte Count L
EXTERN xdata _AT_(0xE6A0) volatile BYTE EP0CS ; // Endpoint Control and Status
EXTERN xdata _AT_(0xE6A1) volatile BYTE EP1OUTCS ; // Endpoint 1 OUT Control and Status
EXTERN xdata _AT_(0xE6A2) volatile BYTE EP1INCS ; // Endpoint 1 IN Control and Status
EXTERN xdata _AT_(0xE6A3) volatile BYTE EP2CS ; // Endpoint 2 Control and Status
EXTERN xdata _AT_(0xE6A4) volatile BYTE EP4CS ; // Endpoint 4 Control and Status
EXTERN xdata _AT_(0xE6A5) volatile BYTE EP6CS ; // Endpoint 6 Control and Status
EXTERN xdata _AT_(0xE6A6) volatile BYTE EP8CS ; // Endpoint 8 Control and Status
EXTERN xdata _AT_(0xE6A7) volatile BYTE EP2FIFOFLGS ; // Endpoint 2 Flags
EXTERN xdata _AT_(0xE6A8) volatile BYTE EP4FIFOFLGS ; // Endpoint 4 Flags
EXTERN xdata _AT_(0xE6A9) volatile BYTE EP6FIFOFLGS ; // Endpoint 6 Flags
EXTERN xdata _AT_(0xE6AA) volatile BYTE EP8FIFOFLGS ; // Endpoint 8 Flags
EXTERN xdata _AT_(0xE6AB) volatile BYTE EP2FIFOBCH ; // EP2 FIFO total byte count H
EXTERN xdata _AT_(0xE6AC) volatile BYTE EP2FIFOBCL ; // EP2 FIFO total byte count L
EXTERN xdata _AT_(0xE6AD) volatile BYTE EP4FIFOBCH ; // EP4 FIFO total byte count H
EXTERN xdata _AT_(0xE6AE) volatile BYTE EP4FIFOBCL ; // EP4 FIFO total byte count L
EXTERN xdata _AT_(0xE6AF) volatile BYTE EP6FIFOBCH ; // EP6 FIFO total byte count H
EXTERN xdata _AT_(0xE6B0) volatile BYTE EP6FIFOBCL ; // EP6 FIFO total byte count L
EXTERN xdata _AT_(0xE6B1) volatile BYTE EP8FIFOBCH ; // EP8 FIFO total byte count H
EXTERN xdata _AT_(0xE6B2) volatile BYTE EP8FIFOBCL ; // EP8 FIFO total byte count L
EXTERN xdata _AT_(0xE6B3) volatile BYTE SUDPTRH ; // Setup Data Pointer high address byte
EXTERN xdata _AT_(0xE6B4) volatile BYTE SUDPTRL ; // Setup Data Pointer low address byte
EXTERN xdata _AT_(0xE6B5) volatile BYTE SUDPTRCTL ; // Setup Data Pointer Auto Mode
EXTERN xdata _AT_(0xE6B8) volatile BYTE SETUPDAT[8] ; // 8 bytes of SETUP data
 
// GPIF
 
EXTERN xdata _AT_(0xE6C0) volatile BYTE GPIFWFSELECT ; // Waveform Selector
EXTERN xdata _AT_(0xE6C1) volatile BYTE GPIFIDLECS ; // GPIF Done, GPIF IDLE drive mode
EXTERN xdata _AT_(0xE6C2) volatile BYTE GPIFIDLECTL ; // Inactive Bus, CTL states
EXTERN xdata _AT_(0xE6C3) volatile BYTE GPIFCTLCFG ; // CTL OUT pin drive
EXTERN xdata _AT_(0xE6C4) volatile BYTE GPIFADRH ; // GPIF Address H
EXTERN xdata _AT_(0xE6C5) volatile BYTE GPIFADRL ; // GPIF Address L
 
EXTERN xdata _AT_(0xE6CE) volatile BYTE GPIFTCB3 ; // GPIF Transaction Count Byte 3
EXTERN xdata _AT_(0xE6CF) volatile BYTE GPIFTCB2 ; // GPIF Transaction Count Byte 2
EXTERN xdata _AT_(0xE6D0) volatile BYTE GPIFTCB1 ; // GPIF Transaction Count Byte 1
EXTERN xdata _AT_(0xE6D1) volatile BYTE GPIFTCB0 ; // GPIF Transaction Count Byte 0
 
#define EP2GPIFTCH GPIFTCB1 // these are here for backwards compatibility
#define EP2GPIFTCL GPIFTCB0 // before REVE silicon (ie. REVB and REVD)
#define EP4GPIFTCH GPIFTCB1 // these are here for backwards compatibility
#define EP4GPIFTCL GPIFTCB0 // before REVE silicon (ie. REVB and REVD)
#define EP6GPIFTCH GPIFTCB1 // these are here for backwards compatibility
#define EP6GPIFTCL GPIFTCB0 // before REVE silicon (ie. REVB and REVD)
#define EP8GPIFTCH GPIFTCB1 // these are here for backwards compatibility
#define EP8GPIFTCL GPIFTCB0 // before REVE silicon (ie. REVB and REVD)
 
// EXTERN xdata volatile BYTE EP2GPIFTCH _AT_ 0xE6D0; // EP2 GPIF Transaction Count High
// EXTERN xdata volatile BYTE EP2GPIFTCL _AT_ 0xE6D1; // EP2 GPIF Transaction Count Low
EXTERN xdata _AT_(0xE6D2) volatile BYTE EP2GPIFFLGSEL ; // EP2 GPIF Flag select
EXTERN xdata _AT_(0xE6D3) volatile BYTE EP2GPIFPFSTOP ; // Stop GPIF EP2 transaction on prog. flag
EXTERN xdata _AT_(0xE6D4) volatile BYTE EP2GPIFTRIG ; // EP2 FIFO Trigger
// EXTERN xdata volatile BYTE EP4GPIFTCH _AT_ 0xE6D8; // EP4 GPIF Transaction Count High
// EXTERN xdata volatile BYTE EP4GPIFTCL _AT_ 0xE6D9; // EP4 GPIF Transactionr Count Low
EXTERN xdata _AT_(0xE6DA) volatile BYTE EP4GPIFFLGSEL ; // EP4 GPIF Flag select
EXTERN xdata _AT_(0xE6DB) volatile BYTE EP4GPIFPFSTOP ; // Stop GPIF EP4 transaction on prog. flag
EXTERN xdata _AT_(0xE6DC) volatile BYTE EP4GPIFTRIG ; // EP4 FIFO Trigger
// EXTERN xdata volatile BYTE EP6GPIFTCH _AT_ 0xE6E0; // EP6 GPIF Transaction Count High
// EXTERN xdata volatile BYTE EP6GPIFTCL _AT_ 0xE6E1; // EP6 GPIF Transaction Count Low
EXTERN xdata _AT_(0xE6E2) volatile BYTE EP6GPIFFLGSEL ; // EP6 GPIF Flag select
EXTERN xdata _AT_(0xE6E3) volatile BYTE EP6GPIFPFSTOP ; // Stop GPIF EP6 transaction on prog. flag
EXTERN xdata _AT_(0xE6E4) volatile BYTE EP6GPIFTRIG ; // EP6 FIFO Trigger
// EXTERN xdata volatile BYTE EP8GPIFTCH _AT_ 0xE6E8; // EP8 GPIF Transaction Count High
// EXTERN xdata volatile BYTE EP8GPIFTCL _AT_ 0xE6E9; // EP8GPIF Transaction Count Low
EXTERN xdata _AT_(0xE6EA) volatile BYTE EP8GPIFFLGSEL ; // EP8 GPIF Flag select
EXTERN xdata _AT_(0xE6EB) volatile BYTE EP8GPIFPFSTOP ; // Stop GPIF EP8 transaction on prog. flag
EXTERN xdata _AT_(0xE6EC) volatile BYTE EP8GPIFTRIG ; // EP8 FIFO Trigger
EXTERN xdata _AT_(0xE6F0) volatile BYTE XGPIFSGLDATH ; // GPIF Data H (16-bit mode only)
EXTERN xdata _AT_(0xE6F1) volatile BYTE XGPIFSGLDATLX ; // Read/Write GPIF Data L & trigger transac
EXTERN xdata _AT_(0xE6F2) volatile BYTE XGPIFSGLDATLNOX ; // Read GPIF Data L, no transac trigger
EXTERN xdata _AT_(0xE6F3) volatile BYTE GPIFREADYCFG ; // Internal RDY,Sync/Async, RDY5CFG
EXTERN xdata _AT_(0xE6F4) volatile BYTE GPIFREADYSTAT ; // RDY pin states
EXTERN xdata _AT_(0xE6F5) volatile BYTE GPIFABORT ; // Abort GPIF cycles
 
// UDMA
 
EXTERN xdata _AT_(0xE6C6) volatile BYTE FLOWSTATE ; //Defines GPIF flow state
EXTERN xdata _AT_(0xE6C7) volatile BYTE FLOWLOGIC ; //Defines flow/hold decision criteria
EXTERN xdata _AT_(0xE6C8) volatile BYTE FLOWEQ0CTL ; //CTL states during active flow state
EXTERN xdata _AT_(0xE6C9) volatile BYTE FLOWEQ1CTL ; //CTL states during hold flow state
EXTERN xdata _AT_(0xE6CA) volatile BYTE FLOWHOLDOFF ;
EXTERN xdata _AT_(0xE6CB) volatile BYTE FLOWSTB ; //CTL/RDY Signal to use as master data strobe
EXTERN xdata _AT_(0xE6CC) volatile BYTE FLOWSTBEDGE ; //Defines active master strobe edge
EXTERN xdata _AT_(0xE6CD) volatile BYTE FLOWSTBHPERIOD ; //Half Period of output master strobe
EXTERN xdata _AT_(0xE60C) volatile BYTE GPIFHOLDAMOUNT ; //Data delay shift
EXTERN xdata _AT_(0xE67D) volatile BYTE UDMACRCH ; //CRC Upper byte
EXTERN xdata _AT_(0xE67E) volatile BYTE UDMACRCL ; //CRC Lower byte
EXTERN xdata _AT_(0xE67F) volatile BYTE UDMACRCQUAL ; //UDMA In only, host terminated use only
 
 
// Debug/Test
 
EXTERN xdata _AT_(0xE6F8) volatile BYTE DBUG ; // Debug
EXTERN xdata _AT_(0xE6F9) volatile BYTE TESTCFG ; // Test configuration
EXTERN xdata _AT_(0xE6FA) volatile BYTE USBTEST ; // USB Test Modes
EXTERN xdata _AT_(0xE6FB) volatile BYTE CT1 ; // Chirp Test--Override
EXTERN xdata _AT_(0xE6FC) volatile BYTE CT2 ; // Chirp Test--FSM
EXTERN xdata _AT_(0xE6FD) volatile BYTE CT3 ; // Chirp Test--Control Signals
EXTERN xdata _AT_(0xE6FE) volatile BYTE CT4 ; // Chirp Test--Inputs
 
// Endpoint Buffers
 
EXTERN xdata _AT_(0xE740) volatile BYTE EP0BUF[64] ; // EP0 IN-OUT buffer
EXTERN xdata _AT_(0xE780) volatile BYTE EP1OUTBUF[64] ; // EP1-OUT buffer
EXTERN xdata _AT_(0xE7C0) volatile BYTE EP1INBUF[64] ; // EP1-IN buffer
EXTERN xdata _AT_(0xF000) volatile BYTE EP2FIFOBUF[1024] ; // 512/1024-byte EP2 buffer (IN or OUT)
EXTERN xdata _AT_(0xF400) volatile BYTE EP4FIFOBUF[1024] ; // 512 byte EP4 buffer (IN or OUT)
EXTERN xdata _AT_(0xF800) volatile BYTE EP6FIFOBUF[1024] ; // 512/1024-byte EP6 buffer (IN or OUT)
EXTERN xdata _AT_(0xFC00) volatile BYTE EP8FIFOBUF[1024] ; // 512 byte EP8 buffer (IN or OUT)
 
#undef EXTERN
#undef _AT_
 
/*-----------------------------------------------------------------------------
Special Function Registers (SFRs)
The byte registers and bits defined in the following list are based
on the Synopsis definition of the 8051 Special Function Registers for EZ-USB.
If you modify the register definitions below, please regenerate the file
"ezregs.inc" which includes the same basic information for assembly inclusion.
-----------------------------------------------------------------------------*/
 
sfr at 0x80 IOA;
sfr at 0x81 SP;
sfr at 0x82 DPL;
sfr at 0x83 DPH;
sfr at 0x84 DPL1;
sfr at 0x85 DPH1;
sfr at 0x86 DPS;
/* DPS */
sbit at 0x86+0 SEL;
sfr at 0x87 PCON; /* PCON */
//sbit IDLE = 0x87+0;
//sbit STOP = 0x87+1;
//sbit GF0 = 0x87+2;
//sbit GF1 = 0x87+3;
//sbit SMOD0 = 0x87+7;
sfr at 0x88 TCON;
/* TCON */
sbit at 0x88+0 IT0;
sbit at 0x88+1 IE0;
sbit at 0x88+2 IT1;
sbit at 0x88+3 IE1;
sbit at 0x88+4 TR0;
sbit at 0x88+5 TF0;
sbit at 0x88+6 TR1;
sbit at 0x88+7 TF1;
sfr at 0x89 TMOD;
/* TMOD */
//sbit M00 = 0x89+0;
//sbit M10 = 0x89+1;
//sbit CT0 = 0x89+2;
//sbit GATE0 = 0x89+3;
//sbit M01 = 0x89+4;
//sbit M11 = 0x89+5;
//sbit CT1 = 0x89+6;
//sbit GATE1 = 0x89+7;
sfr at 0x8A TL0;
sfr at 0x8B TL1;
sfr at 0x8C TH0;
sfr at 0x8D TH1;
sfr at 0x8E CKCON;
/* CKCON */
//sbit MD0 = 0x89+0;
//sbit MD1 = 0x89+1;
//sbit MD2 = 0x89+2;
//sbit T0M = 0x89+3;
//sbit T1M = 0x89+4;
//sbit T2M = 0x89+5;
// sfr at 0x8F SPC_FNC; // Was WRS in Reg320
/* CKCON */
//sbit WRS = 0x8F+0;
sfr at 0x90 IOB;
sfr at 0x91 EXIF; // EXIF Bit Values differ from Reg320
/* EXIF */
//sbit USBINT = 0x91+4;
//sbit I2CINT = 0x91+5;
//sbit IE4 = 0x91+6;
//sbit IE5 = 0x91+7;
sfr at 0x92 MPAGE;
sfr at 0x98 SCON0;
/* SCON0 */
sbit at 0x98+0 RI;
sbit at 0x98+1 TI;
sbit at 0x98+2 RB8;
sbit at 0x98+3 TB8;
sbit at 0x98+4 REN;
sbit at 0x98+5 SM2;
sbit at 0x98+6 SM1;
sbit at 0x98+7 SM0;
sfr at 0x99 SBUF0;
 
sfr at 0x9A APTR1H;
sfr at 0x9B APTR1L;
sfr at 0x9C AUTODAT1;
sfr at 0x9D AUTOPTRH2;
sfr at 0x9E AUTOPTRL2;
sfr at 0x9F AUTODAT2;
sfr at 0xA0 IOC;
sfr at 0xA1 INT2CLR;
sfr at 0xA2 INT4CLR;
 
#define AUTOPTRH1 APTR1H
#define AUTOPTRL1 APTR1L
 
sfr at 0xA8 IE;
/* IE */
sbit at 0xA8+0 EX0;
sbit at 0xA8+1 ET0;
sbit at 0xA8+2 EX1;
sbit at 0xA8+3 ET1;
sbit at 0xA8+4 ES0;
sbit at 0xA8+5 ET2;
sbit at 0xA8+6 ES1;
sbit at 0xA8+7 EA;
 
sfr at 0xAA EP2468STAT;
/* EP2468STAT */
//sbit EP2E = 0xAA+0;
//sbit EP2F = 0xAA+1;
//sbit EP4E = 0xAA+2;
//sbit EP4F = 0xAA+3;
//sbit EP6E = 0xAA+4;
//sbit EP6F = 0xAA+5;
//sbit EP8E = 0xAA+6;
//sbit EP8F = 0xAA+7;
 
sfr at 0xAB EP24FIFOFLGS;
sfr at 0xAC EP68FIFOFLGS;
sfr at 0xAF AUTOPTRSETUP;
/* AUTOPTRSETUP */
sbit at 0xAF+0 EXTACC;
sbit at 0xAF+1 APTR1FZ;
sbit at 0xAF+2 APTR2FZ;
 
sfr at 0xB0 IOD;
sfr at 0xB1 IOE;
sfr at 0xB2 OEA;
sfr at 0xB3 OEB;
sfr at 0xB4 OEC;
sfr at 0xB5 OED;
sfr at 0xB6 OEE;
 
sfr at 0xB8 IP;
/* IP */
sbit at 0xB8+0 PX0;
sbit at 0xB8+1 PT0;
sbit at 0xB8+2 PX1;
sbit at 0xB8+3 PT1;
sbit at 0xB8+4 PS0;
sbit at 0xB8+5 PT2;
sbit at 0xB8+6 PS1;
 
sfr at 0xBA EP01STAT;
sfr at 0xBB GPIFTRIG;
sfr at 0xBD GPIFSGLDATH;
sfr at 0xBE GPIFSGLDATLX;
sfr at 0xBF GPIFSGLDATLNOX;
 
sfr at 0xC0 SCON1;
/* SCON1 */
sbit at 0xC0+0 RI1;
sbit at 0xC0+1 TI1;
sbit at 0xC0+2 RB81;
sbit at 0xC0+3 TB81;
sbit at 0xC0+4 REN1;
sbit at 0xC0+5 SM21;
sbit at 0xC0+6 SM11;
sbit at 0xC0+7 SM01;
sfr at 0xC1 SBUF1;
sfr at 0xC8 T2CON;
/* T2CON */
sbit at 0xC8+0 CP_RL2;
sbit at 0xC8+1 C_T2;
sbit at 0xC8+2 TR2;
sbit at 0xC8+3 EXEN2;
sbit at 0xC8+4 TCLK;
sbit at 0xC8+5 RCLK;
sbit at 0xC8+6 EXF2;
sbit at 0xC8+7 TF2;
sfr at 0xCA RCAP2L;
sfr at 0xCB RCAP2H;
sfr at 0xCC TL2;
sfr at 0xCD TH2;
sfr at 0xD0 PSW;
/* PSW */
sbit at 0xD0+0 P;
sbit at 0xD0+1 FL;
sbit at 0xD0+2 OV;
sbit at 0xD0+3 RS0;
sbit at 0xD0+4 RS1;
sbit at 0xD0+5 F0;
sbit at 0xD0+6 AC;
sbit at 0xD0+7 CY;
sfr at 0xD8 EICON; // Was WDCON in DS80C320 EICON; Bit Values differ from Reg320
/* EICON */
sbit at 0xD8+3 INT6;
sbit at 0xD8+4 RESI;
sbit at 0xD8+5 ERESI;
sbit at 0xD8+7 SMOD1;
sfr at 0xE0 ACC;
sfr at 0xE8 EIE; // EIE Bit Values differ from Reg320
/* EIE */
sbit at 0xE8+0 EIUSB;
sbit at 0xE8+1 EI2C;
sbit at 0xE8+2 EIEX4;
sbit at 0xE8+3 EIEX5;
sbit at 0xE8+4 EIEX6;
sfr at 0xF0 B;
sfr at 0xF8 EIP; // EIP Bit Values differ from Reg320
/* EIP */
sbit at 0xF8+0 PUSB;
sbit at 0xF8+1 PI2C;
sbit at 0xF8+2 EIPX4;
sbit at 0xF8+3 EIPX5;
sbit at 0xF8+4 EIPX6;
 
/*-----------------------------------------------------------------------------
Bit Masks
-----------------------------------------------------------------------------*/
 
#define bmBIT0 1
#define bmBIT1 2
#define bmBIT2 4
#define bmBIT3 8
#define bmBIT4 16
#define bmBIT5 32
#define bmBIT6 64
#define bmBIT7 128
 
/* CPU Control & Status Register (CPUCS) */
#define bmPRTCSTB bmBIT5
#define bmCLKSPD (bmBIT4 | bmBIT3)
#define bmCLKSPD1 bmBIT4
#define bmCLKSPD0 bmBIT3
#define bmCLKINV bmBIT2
#define bmCLKOE bmBIT1
#define bm8051RES bmBIT0
/* Port Alternate Configuration Registers */
/* Port A (PORTACFG) */
#define bmFLAGD bmBIT7
#define bmINT1 bmBIT1
#define bmINT0 bmBIT0
/* Port C (PORTCCFG) */
#define bmGPIFA7 bmBIT7
#define bmGPIFA6 bmBIT6
#define bmGPIFA5 bmBIT5
#define bmGPIFA4 bmBIT4
#define bmGPIFA3 bmBIT3
#define bmGPIFA2 bmBIT2
#define bmGPIFA1 bmBIT1
#define bmGPIFA0 bmBIT0
/* Port E (PORTECFG) */
#define bmGPIFA8 bmBIT7
#define bmT2EX bmBIT6
#define bmINT6 bmBIT5
#define bmRXD1OUT bmBIT4
#define bmRXD0OUT bmBIT3
#define bmT2OUT bmBIT2
#define bmT1OUT bmBIT1
#define bmT0OUT bmBIT0
 
/* I2C Control & Status Register (I2CS) */
#define bmSTART bmBIT7
#define bmSTOP bmBIT6
#define bmLASTRD bmBIT5
#define bmID (bmBIT4 | bmBIT3)
#define bmBERR bmBIT2
#define bmACK bmBIT1
#define bmDONE bmBIT0
/* I2C Control Register (I2CTL) */
#define bmSTOPIE bmBIT1
#define bm400KHZ bmBIT0
/* Interrupt 2 (USB) Autovector Register (INT2IVEC) */
#define bmIV4 bmBIT6
#define bmIV3 bmBIT5
#define bmIV2 bmBIT4
#define bmIV1 bmBIT3
#define bmIV0 bmBIT2
/* USB Interrupt Request & Enable Registers (USBIE/USBIRQ) */
#define bmEP0ACK bmBIT6
#define bmHSGRANT bmBIT5
#define bmURES bmBIT4
#define bmSUSP bmBIT3
#define bmSUTOK bmBIT2
#define bmSOF bmBIT1
#define bmSUDAV bmBIT0
/* Breakpoint register (BREAKPT) */
#define bmBREAK bmBIT3
#define bmBPPULSE bmBIT2
#define bmBPEN bmBIT1
/* Interrupt 2 & 4 Setup (INTSETUP) */
#define bmAV2EN bmBIT3
#define bmINT4IN bmBIT1
#define bmAV4EN bmBIT0
/* USB Control & Status Register (USBCS) */
#define bmHSM bmBIT7
#define bmDISCON bmBIT3
#define bmNOSYNSOF bmBIT2
#define bmRENUM bmBIT1
#define bmSIGRESUME bmBIT0
/* Wakeup Control and Status Register (WAKEUPCS) */
#define bmWU2 bmBIT7
#define bmWU bmBIT6
#define bmWU2POL bmBIT5
#define bmWUPOL bmBIT4
#define bmDPEN bmBIT2
#define bmWU2EN bmBIT1
#define bmWUEN bmBIT0
/* End Point 0 Control & Status Register (EP0CS) */
#define bmHSNAK bmBIT7
/* End Point 0-1 Control & Status Registers (EP0CS/EP1OUTCS/EP1INCS) */
#define bmEPBUSY bmBIT1
#define bmEPSTALL bmBIT0
/* End Point 2-8 Control & Status Registers (EP2CS/EP4CS/EP6CS/EP8CS) */
#define bmNPAK (bmBIT6 | bmBIT5 | bmBIT4)
#define bmEPFULL bmBIT3
#define bmEPEMPTY bmBIT2
/* Endpoint Status (EP2468STAT) SFR bits */
#define bmEP8FULL bmBIT7
#define bmEP8EMPTY bmBIT6
#define bmEP6FULL bmBIT5
#define bmEP6EMPTY bmBIT4
#define bmEP4FULL bmBIT3
#define bmEP4EMPTY bmBIT2
#define bmEP2FULL bmBIT1
#define bmEP2EMPTY bmBIT0
/* SETUP Data Pointer Auto Mode (SUDPTRCTL) */
#define bmSDPAUTO bmBIT0
/* Endpoint Data Toggle Control (TOGCTL) */
#define bmQUERYTOGGLE bmBIT7
#define bmSETTOGGLE bmBIT6
#define bmRESETTOGGLE bmBIT5
#define bmTOGCTLEPMASK bmBIT3 | bmBIT2 | bmBIT1 | bmBIT0
/* IBN (In Bulk Nak) enable and request bits (IBNIE/IBNIRQ) */
#define bmEP8IBN bmBIT5
#define bmEP6IBN bmBIT4
#define bmEP4IBN bmBIT3
#define bmEP2IBN bmBIT2
#define bmEP1IBN bmBIT1
#define bmEP0IBN bmBIT0
 
/* PING-NAK enable and request bits (NAKIE/NAKIRQ) */
#define bmEP8PING bmBIT7
#define bmEP6PING bmBIT6
#define bmEP4PING bmBIT5
#define bmEP2PING bmBIT4
#define bmEP1PING bmBIT3
#define bmEP0PING bmBIT2
#define bmIBN bmBIT0
 
/* Interface Configuration bits (IFCONFIG) */
#define bmIFCLKSRC bmBIT7 // set == INTERNAL
#define bm3048MHZ bmBIT6 // set == 48 MHz
#define bmIFCLKOE bmBIT5
#define bmIFCLKPOL bmBIT4
#define bmASYNC bmBIT3
#define bmGSTATE bmBIT2
#define bmIFCFG1 bmBIT1
#define bmIFCFG0 bmBIT0
#define bmIFCFGMASK (bmIFCFG0 | bmIFCFG1)
#define bmIFGPIF bmIFCFG1
 
/* EP 2468 FIFO Configuration bits (EP2FIFOCFG,EP4FIFOCFG,EP6FIFOCFG,EP8FIFOCFG) */
#define bmINFM bmBIT6
#define bmOEP bmBIT5
#define bmAUTOOUT bmBIT4
#define bmAUTOIN bmBIT3
#define bmZEROLENIN bmBIT2
// must be zero bmBIT1
#define bmWORDWIDE bmBIT0
 
/*
* Chip Revision Control Bits (REVCTL) - used to ebable/disable revision specific features
*/
#define bmNOAUTOARM bmBIT1 // these don't match the docs
#define bmSKIPCOMMIT bmBIT0 // these don't match the docs
 
#define bmDYN_OUT bmBIT1 // these do...
#define bmENH_PKT bmBIT0
 
 
/* Fifo Reset bits (FIFORESET) */
#define bmNAKALL bmBIT7
 
/* Endpoint Configuration (EPxCFG) */
#define bmVALID bmBIT7
#define bmIN bmBIT6
#define bmTYPE1 bmBIT5
#define bmTYPE0 bmBIT4
#define bmISOCHRONOUS bmTYPE0
#define bmBULK bmTYPE1
#define bmINTERRUPT (bmTYPE1 | bmTYPE0)
#define bm1KBUF bmBIT3
#define bmBUF1 bmBIT1
#define bmBUF0 bmBIT0
#define bmQUADBUF 0
#define bmINVALIDBUF bmBUF0
#define bmDOUBLEBUF bmBUF1
#define bmTRIPLEBUF (bmBUF1 | bmBUF0)
 
/* OUTPKTEND */
#define bmSKIP bmBIT7 // low 4 bits specify which end point
 
/* GPIFTRIG defs */
#define bmGPIF_IDLE bmBIT7 // status bit
 
#define bmGPIF_EP2_START 0
#define bmGPIF_EP4_START 1
#define bmGPIF_EP6_START 2
#define bmGPIF_EP8_START 3
#define bmGPIF_READ bmBIT2
#define bmGPIF_WRITE 0
 
/* EXIF bits */
#define bmEXIF_USBINT bmBIT4
#define bmEXIF_I2CINT bmBIT5
#define bmEXIF_IE4 bmBIT6
#define bmEXIF_IE5 bmBIT7
 
 
#endif /* FX2REGS_H */
/src/lib/timer.h
0,0 → 1,34
/* -*- c++ -*- */
/* $Id: timer.h 395 2011-07-17 22:02:55Z mueller $ */
/*-----------------------------------------------------------------------------
* Timer handling for FX2
*-----------------------------------------------------------------------------
* Code taken from USRP2 firmware (GNU Radio Project), version 3.0.2,
* Copyright 2003 Free Software Foundation, Inc.
*-----------------------------------------------------------------------------
* This code is part of usbjtag. usbjtag is free software; you can redistribute
* it and/or modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the License,
* or (at your option) any later version. usbjtag is distributed in the hope
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. You should have received a
* copy of the GNU General Public License along with this program in the file
* COPYING; if not, write to the Free Software Foundation, Inc., 51 Franklin
* St, Fifth Floor, Boston, MA 02110-1301 USA
*-----------------------------------------------------------------------------
*/
 
#ifndef _TIMER_H_
#define _TIMER_H_
 
/*
* Arrange to have isr_tick_handler called at 100 Hz
*/
void hook_timer_tick (unsigned short isr_tick_handler);
 
#define clear_timer_irq() \
TF2 = 0 /* clear overflow flag */
 
 
#endif /* _TIMER_H_ */
/src/lib/fx2utils.h
0,0 → 1,31
/* -*- c++ -*- */
/* $Id: fx2utils.h 395 2011-07-17 22:02:55Z mueller $ */
/*-----------------------------------------------------------------------------
* FX2 specific subroutines
*-----------------------------------------------------------------------------
* Code taken from USRP2 firmware (GNU Radio Project), version 3.0.2,
* Copyright 2003 Free Software Foundation, Inc.
*-----------------------------------------------------------------------------
* This code is part of usbjtag. usbjtag is free software; you can redistribute
* it and/or modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the License,
* or (at your option) any later version. usbjtag is distributed in the hope
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. You should have received a
* copy of the GNU General Public License along with this program in the file
* COPYING; if not, write to the Free Software Foundation, Inc., 51 Franklin
* St, Fifth Floor, Boston, MA 02110-1301 USA
*-----------------------------------------------------------------------------
*/
 
#ifndef _FX2UTILS_H_
#define _FX2UTILS_H_
 
void fx2_stall_ep0 (void);
void fx2_reset_data_toggle (unsigned char ep);
void fx2_renumerate (void);
 
 
 
#endif /* _FX2UTILS_H_ */
/src/lib/usb_requests.h
0,0 → 1,87
/* -*- c++ -*- */
/* $Id: usb_requests.h 395 2011-07-17 22:02:55Z mueller $ */
/*-----------------------------------------------------------------------------
* USB request definitions
*-----------------------------------------------------------------------------
* Code taken from USRP2 firmware (GNU Radio Project), version 3.0.2,
* Copyright 2003 Free Software Foundation, Inc.
*-----------------------------------------------------------------------------
* This code is part of usbjtag. usbjtag is free software; you can redistribute
* it and/or modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the License,
* or (at your option) any later version. usbjtag is distributed in the hope
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. You should have received a
* copy of the GNU General Public License along with this program in the file
* COPYING; if not, write to the Free Software Foundation, Inc., 51 Franklin
* St, Fifth Floor, Boston, MA 02110-1301 USA
*-----------------------------------------------------------------------------
*/
 
// Standard USB requests.
// These are contained in end point 0 setup packets
 
 
#ifndef _USB_REQUESTS_H_
#define _USB_REQUESTS_H_
 
// format of bmRequestType byte
 
#define bmRT_DIR_MASK (0x1 << 7)
#define bmRT_DIR_IN (1 << 7)
#define bmRT_DIR_OUT (0 << 7)
 
#define bmRT_TYPE_MASK (0x3 << 5)
#define bmRT_TYPE_STD (0 << 5)
#define bmRT_TYPE_CLASS (1 << 5)
#define bmRT_TYPE_VENDOR (2 << 5)
#define bmRT_TYPE_RESERVED (3 << 5)
 
#define bmRT_RECIP_MASK (0x1f << 0)
#define bmRT_RECIP_DEVICE (0 << 0)
#define bmRT_RECIP_INTERFACE (1 << 0)
#define bmRT_RECIP_ENDPOINT (2 << 0)
#define bmRT_RECIP_OTHER (3 << 0)
 
 
// standard request codes (bRequest)
 
#define RQ_GET_STATUS 0
#define RQ_CLEAR_FEATURE 1
#define RQ_RESERVED_2 2
#define RQ_SET_FEATURE 3
#define RQ_RESERVED_4 4
#define RQ_SET_ADDRESS 5
#define RQ_GET_DESCR 6
#define RQ_SET_DESCR 7
#define RQ_GET_CONFIG 8
#define RQ_SET_CONFIG 9
#define RQ_GET_INTERFACE 10
#define RQ_SET_INTERFACE 11
#define RQ_SYNCH_FRAME 12
 
// standard descriptor types
 
#define DT_DEVICE 1
#define DT_CONFIG 2
#define DT_STRING 3
#define DT_INTERFACE 4
#define DT_ENDPOINT 5
#define DT_DEVQUAL 6
#define DT_OTHER_SPEED 7
#define DT_INTERFACE_POWER 8
 
// standard feature selectors
 
#define FS_ENDPOINT_HALT 0 // recip: endpoint
#define FS_DEV_REMOTE_WAKEUP 1 // recip: device
#define FS_TEST_MODE 2 // recip: device
 
// Get Status device attributes
 
#define bmGSDA_SELF_POWERED 0x01
#define bmGSDA_REM_WAKEUP 0x02
 
 
#endif /* _USB_REQUESTS_H_ */
/src/lib/.cvsignore
0,0 → 1,10
*.asm
*.ihx
*.lnk
*.lst
*.map
*.mem
*.rel
*.rst
*.sym
libfx2.lib
/src/lib/Makefile
0,0 → 1,37
# $Id: Makefile 394 2011-07-17 17:03:19Z mueller $
#-----------------------------------------------------------------------------
# Makefile for FX2 library code
#-----------------------------------------------------------------------------
# Copyright (C) 2007 Kolja Waschk, ixo.de
#-----------------------------------------------------------------------------
# This code is part of usbjtag. usbjtag is free software; you can redistribute
# it and/or modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 of the License,
# or (at your option) any later version. usbjtag is distributed in the hope
# that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. You should have received a
# copy of the GNU General Public License along with this program in the file
# COPYING; if not, write to the Free Software Foundation, Inc., 51 Franklin
# St, Fifth Floor, Boston, MA 02110-1301 USA
#-----------------------------------------------------------------------------
 
CC=sdcc
CFLAGS+=-mmcs51 --no-xinit-opt -I.
CPPFLAGS+=
OBJS=delay.rel fx2utils.rel i2c.rel isr.rel timer.rel usb_common.rel
AR=sdcclib
 
(%.rel) : %.c
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $*.rel
$(AR) -a $@ $*.rel
rm $*.rel
 
libfx2.lib: libfx2.lib($(OBJS))
 
clean:
rm -f *.lst *.asm *.lib *.sym *.rel *.lib
 
 
 
 
/src/lib/isr.c
0,0 → 1,169
/* -*- c++ -*- */
/* $Id: isr.c 395 2011-07-17 22:02:55Z mueller $ */
/*-----------------------------------------------------------------------------
* Interrupt handling for FX2
*-----------------------------------------------------------------------------
* Code taken from USRP2 firmware (GNU Radio Project), version 3.0.2,
* Copyright 2003 Free Software Foundation, Inc.
*-----------------------------------------------------------------------------
* This code is part of usbjtag. usbjtag is free software; you can redistribute
* it and/or modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the License,
* or (at your option) any later version. usbjtag is distributed in the hope
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. You should have received a
* copy of the GNU General Public License along with this program in the file
* COPYING; if not, write to the Free Software Foundation, Inc., 51 Franklin
* St, Fifth Floor, Boston, MA 02110-1301 USA
*-----------------------------------------------------------------------------
*/
 
#include "isr.h"
#include "fx2regs.h"
#include "syncdelay.h"
 
extern xdata unsigned char _standard_interrupt_vector[];
extern xdata unsigned char _usb_autovector[];
extern xdata unsigned char _fifo_gpif_autovector[];
 
#define LJMP_OPCODE 0x02
 
/*
* Hook standard interrupt vector.
*
* vector_number is from the SV_<foo> list.
* addr is the address of the interrupt service routine.
*/
void
hook_sv (unsigned char vector_number, unsigned short addr)
{
bit t;
// sanity checks
 
if (vector_number < SV_MIN || vector_number > SV_MAX)
return;
 
if ((vector_number & 0x0f) != 0x03 && (vector_number & 0x0f) != 0x0b)
return;
 
t = EA;
EA = 0;
_standard_interrupt_vector[vector_number] = LJMP_OPCODE;
_standard_interrupt_vector[vector_number + 1] = addr >> 8;
_standard_interrupt_vector[vector_number + 2] = addr & 0xff;
EA = t;
}
 
/*
* Hook usb interrupt vector.
*
* vector_number is from the UV_<foo> list.
* addr is the address of the interrupt service routine.
*/
void
hook_uv (unsigned char vector_number, unsigned short addr)
{
bit t;
// sanity checks
 
#if UV_MIN>0
if (vector_number < UV_MIN) return;
#endif
if (vector_number > UV_MAX)
return;
 
if ((vector_number & 0x3) != 0)
return;
 
t = EA;
EA = 0;
_usb_autovector[vector_number] = LJMP_OPCODE;
_usb_autovector[vector_number + 1] = addr >> 8;
_usb_autovector[vector_number + 2] = addr & 0xff;
EA = t;
}
 
/*
* Hook fifo/gpif interrupt vector.
*
* vector_number is from the FGV_<foo> list.
* addr is the address of the interrupt service routine.
*/
void
hook_fgv (unsigned char vector_number, unsigned short addr)
{
bit t;
// sanity checks
 
if (vector_number < FGV_MIN || vector_number > FGV_MAX)
return;
 
if ((vector_number & 0x3) != 0)
return;
 
t = EA;
EA = 0;
_fifo_gpif_autovector[vector_number] = LJMP_OPCODE;
_fifo_gpif_autovector[vector_number + 1] = addr >> 8;
_fifo_gpif_autovector[vector_number + 2] = addr & 0xff;
EA = t;
}
 
/*
* One time call to enable autovectoring for both USB and FIFO/GPIF.
*
* This disables all USB and FIFO/GPIF interrupts and clears
* any pending interrupts too. It leaves the master USB and FIFO/GPIF
* interrupts enabled.
*/
void
setup_autovectors (void)
{
// disable master usb and fifo/gpif interrupt enables
EIUSB = 0;
EIEX4 = 0;
 
hook_sv (SV_INT_2, (unsigned short) _usb_autovector);
hook_sv (SV_INT_4, (unsigned short) _fifo_gpif_autovector);
 
// disable all fifo interrupt enables
SYNCDELAY;
EP2FIFOIE = 0; SYNCDELAY;
EP4FIFOIE = 0; SYNCDELAY;
EP6FIFOIE = 0; SYNCDELAY;
EP8FIFOIE = 0; SYNCDELAY;
 
// clear all pending fifo irqs
EP2FIFOIRQ = 0xff; SYNCDELAY;
EP4FIFOIRQ = 0xff; SYNCDELAY;
EP6FIFOIRQ = 0xff; SYNCDELAY;
EP8FIFOIRQ = 0xff; SYNCDELAY;
 
IBNIE = 0;
IBNIRQ = 0xff;
NAKIE = 0;
NAKIRQ = 0xff;
USBIE = 0;
USBIRQ = 0xff;
EPIE = 0;
EPIRQ = 0xff;
SYNCDELAY; GPIFIE = 0;
SYNCDELAY; GPIFIRQ = 0xff;
USBERRIE = 0;
USBERRIRQ = 0xff;
CLRERRCNT = 0;
INTSETUP = bmAV2EN | bmAV4EN | bmINT4IN;
 
// clear master irq's for usb and fifo/gpif
EXIF &= ~bmEXIF_USBINT;
EXIF &= ~bmEXIF_IE4;
// enable master usb and fifo/gpif interrrupts
EIUSB = 1;
EIEX4 = 1;
}
src/lib Property changes : Added: svn:ignore ## -0,0 +1,43 ## +*.dep_ghdl +*.dep_isim +*.dep_xst +work-obj93.cf +*.vcd +*.ghw +*.sav +*.tmp +*.exe +ise +xflow.his +*.ngc +*.ncd +*.pcf +*.bit +*.msk +isim +isim.log +isim.wdb +fuse.log +*_[sft]sim.vhd +*_tsim.sdf +*_xst.log +*_tra.log +*_twr.log +*_map.log +*_par.log +*_tsi.log +*_pad.log +*_bgn.log +*_svn.log +*_sum.log +*_[dsft]sim.log +*.asm +*.ihx +*.lnk +*.lst +*.map +*.mem +*.rel +*.rst +*.sym +libfx2.lib Index: src/README_iso_jtag.txt =================================================================== --- src/README_iso_jtag.txt (nonexistent) +++ src/README_iso_jtag.txt (revision 26) @@ -0,0 +1,123 @@ +$Id: README_iso_jtag.txt 525 2013-07-06 12:19:39Z mueller $ + +usb_jtag using Cypress FX2 chip +=============================== + +== General information == + +The code in this directory is for Cypress FX2 (e.g. CY7C68013A) and can be +compiled with the SDCC compiler (I tried version 2.6 as shipped with Ubuntu +6.10). Once I had a version that could be compiled with Keil tools (until early +2007), but switched to SDCC because I usually develop on a Linux host. + +No logic beside the FX2 itself and only a few external components are required +for a basic JTAG adapter. I don't have detailed schematics available; my test +setup consists of a FX2 on a custom board where it's directly connected to a +Cyclone FPGA. + + ____________ + | | + | Cypress | + USB__| EZ-USB FX2 |__JTAG(TDI,TDO,TCK,TMS) + | CY7C68013A | + |____________| + __|__________ + | | + | 24 MHz XTAL | + |_____________| + + +Similar boards are available from fpga4fun.com - the boards named "Saxo-L" and +"Xylo-EM" are pre-wired for use with an adapted version of my code, while +"Saxo" and "Xylo" can be used after soldering 4 extra wires: + + http://www.fpga4fun.com/board_Xylo.html + +There's a discussion thread in the fpga4fun forum about this firmware: + + http://www.fpga4fun.com/forum/viewtopic.php?t=483 + + +== Use with Nexys 1 / 2 Boards == + +Through a contribution by Sune Mai, this code can be used with the Digilent +Nexys / Nexys2 boards. + + http://www.digilentinc.com/nexys/ + http://www.digilentinc.com/nexys2/ + +The hardware-specific code file is hw_nexys.c, just change the line +"HARDWARE=hw_basic" to "HARDWARE=hw_nexys" in the file "Makefile" to use it. + +Also, you may use the "nexys2prog" script by Andy Ross, available from the +same place this code is available from: + + http://ixo-jtag.sourceforge.net/ + + +== Adapting the code to your hardware == + +As is, the code assumes the following pin assignment: + + Port C.0: TDI + Port C.1: TDO + Port C.2: TCK + Port C.3: TMS + +Other assignments are possible. If you have your signals connected to +bit-addressable I/O pins (port A,B,C or D), I suggest you make a copy of +hw_basic.c and adapt the definitions and ProgIO_Init() in it to your needs. +The file hw_saxo_l is even simpler to adapt if you want only JTAG and no AS/PS +mode. If your signals are not on bit-addressable I/Os (that is, you're using +port E), you could base your adaptation on the slower hw_xpcu_i.c. You may +specify the name of your adapted hardware-specific file when "make"ing, e.g.: + + make HARDWARE=hw_saxo_l + + +The USB identification data (vendor/product ID, strings, ...) can be modified +in dscr.a51. The firmware emulates the 128 byte EEPROM that usually holds +configuration data for the FT245 and which can be read from the host; its +content (including checksum) is computed from the data in dscr.a51 as well. + +The WAKEUP pin should be high for the re-numeration to work reliably (thanks +Jean/fpga4fun!). + + +== Using it with Xilinx JTAG cable == + +There is code to support running in the "Xilinx Platform Cable USB". If you +select HARDWARE=hw_xpcu_i or hw_xpcu_x at the top of the Makefile, a firmware +for the XPCU will be built. I've tested this only with unmodified CPLD version +18 (0x12) on a Spartan-3E starter kit, as it was programmed by my WebPack 8.2i. +The code needs optimization; yet it is merely a proof of concept. +Compile for the XPCU with e.g. "make HARDWARE=hw_xpcu_x". + + hw_xpcu_i: Access "internal" chain (the XPCU CPLD, IC3, itself) + hw_xpcu_x: Access "external" chain (the Spartan 3E, PROM, etc.) + + +== History == + +Changes since previous release 2008-07-05: + - Imported to SourceForge, please see the project page: + http://ixo-jtag.sourceforge.net/ + +Changes since previous release on 2007-02-15: + - Jean Nicolle contributed hw_saxo_l.c for the FX2 boards from fpga4fun.com + - fx2/Makefile fixed to build correct libfx2.lib even under Windows. + +Changes since previous release on 2007-01-28: + - Initial suppport for running on Xilinx XPCU. + - New FX2 code, based on USRP2 from the GNU Radio Project; + - Firmware can now be compiled using SDCC 2.6. No more Keil support. + - EEPROM content is automatically computed from dscr.a51, including checksum. + +Changes since initial release on 2006-04-23: + - added this readme.txt + - reorganized my project folder: diff now created from Subversion repository + - stripped *.dist extension from eeprom.c and dscr.a51 + - added unique proper product and vendor ID (thanks to Antti Lukats!) + - fixed checksum in eeprom.c + - added comments about AS/PS mode pins in usbjtag.c + Index: src/main.c =================================================================== --- src/main.c (nonexistent) +++ src/main.c (revision 26) @@ -0,0 +1,376 @@ +/* $Id: main.c 472 2013-01-06 14:39:10Z mueller $ */ +/* + * Copyright 2011-2013 by Walter F.J. Mueller + * Code was forked from ixo-jtag.svn.sourceforge.net on 2011-07-17 + * + * - original copyright and licence disclaimer -------------------------------- + * - Code that turns a Cypress FX2 USB Controller into an USB JTAG adapter + * - Copyright (C) 2005..2007 Kolja Waschk, ixo.de + * - This code is part of usbjtag. usbjtag is free software; + *----------------------------------------------------------------------------- + * + * This program is free software; you may redistribute and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation, either version 2, or at your option any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for complete details. + * + *----------------------------------------------------------------------------- + * + * EZ-USB FX2 controller main program + * + * Revision History: + * + * Date Rev Version Comment + * 2013-01-05 472 1.1.1 BUGFIX: explicitly set FIFOPINPOLAR=0 + * 2011-07-23 397 1.1 factor out usb_fifo_init() code + * 2011-07-17 394 1.0 Initial version (from ixo-jtag/usb_jtag Rev 204) + * + *----------------------------------------------------------------------------- + */ + +#include "isr.h" +#include "timer.h" +#include "delay.h" +#include "fx2regs.h" +#include "fx2utils.h" +#include "usb_common.h" +#include "usb_descriptors.h" +#include "usb_requests.h" + +#include "syncdelay.h" + +#include "eeprom.h" +#include "hardware.h" + +//----------------------------------------------------------------------------- +// Define USE_MOD256_OUTBUFFER: +// Saves about 256 bytes in code size, improves speed a little. +// A further optimization could be not to use an extra output buffer at +// all, but to write directly into EP1INBUF. Not implemented yet. When +// downloading large amounts of data _to_ the target, there is no output +// and thus the output buffer isn't used at all and doesn't slow down things. + +#define USE_MOD256_OUTBUFFER 1 + +//----------------------------------------------------------------------------- +// Global data + +typedef bit BOOL; +#define FALSE 0 +#define TRUE 1 +static BOOL Running; +static BOOL WriteOnly; + +static BYTE ClockBytes; +static WORD Pending; + +#ifdef USE_MOD256_OUTBUFFER + static BYTE FirstDataInOutBuffer; + static BYTE FirstFreeInOutBuffer; +#else + static WORD FirstDataInOutBuffer; + static WORD FirstFreeInOutBuffer; +#endif + +#ifdef USE_MOD256_OUTBUFFER + /* Size of output buffer must be exactly 256 */ + #define OUTBUFFER_LEN 0x100 + /* Output buffer must begin at some address with lower 8 bits all zero */ + xdata at 0xE000 BYTE OutBuffer[OUTBUFFER_LEN]; +#else + #define OUTBUFFER_LEN 0x200 + static xdata BYTE OutBuffer[OUTBUFFER_LEN]; +#endif + +//----------------------------------------------------------------------------- + +void usb_jtag_init(void) // Called once at startup +{ + WORD tmp; + + Running = FALSE; + ClockBytes = 0; + Pending = 0; + WriteOnly = TRUE; + FirstDataInOutBuffer = 0; + FirstFreeInOutBuffer = 0; + + ProgIO_Init(); + + ProgIO_Enable(); + + // Make Timer2 reload at 100 Hz to trigger Keepalive packets + + tmp = 65536 - ( 48000000 / 12 / 100 ); + RCAP2H = tmp >> 8; + RCAP2L = tmp & 0xFF; + CKCON = 0; // Default Clock + T2CON = 0x04; // Auto-reload mode using internal clock, no baud clock. + + // Enable Autopointer + + EXTACC = 1; // Enable + APTR1FZ = 1; // Don't freeze + APTR2FZ = 1; // Don't freeze +} + +void OutputByte(BYTE d) +{ +#ifdef USE_MOD256_OUTBUFFER + OutBuffer[FirstFreeInOutBuffer] = d; + FirstFreeInOutBuffer = ( FirstFreeInOutBuffer + 1 ) & 0xFF; +#else + OutBuffer[FirstFreeInOutBuffer++] = d; + if(FirstFreeInOutBuffer >= OUTBUFFER_LEN) FirstFreeInOutBuffer = 0; +#endif + Pending++; +} + +//----------------------------------------------------------------------------- +// usb_jtag_activity does most of the work. It now happens to behave just like +// the combination of FT245BM and Altera-programmed EPM7064 CPLD in Altera's +// USB-Blaster. The CPLD knows two major modes: Bit banging mode and Byte +// shift mode. It starts in Bit banging mode. While bytes are received +// from the host on EP2OUT, each byte B of them is processed as follows: +// +// Please note: nCE, nCS, LED pins and DATAOUT actually aren't supported here. +// Support for these would be required for AS/PS mode and isn't too complicated, +// but I haven't had the time yet. +// +// Bit banging mode: +// +// 1. Remember bit 6 (0x40) in B as the "Read bit". +// +// 2. If bit 7 (0x40) is set, switch to Byte shift mode for the coming +// X bytes ( X := B & 0x3F ), and don't do anything else now. +// +// 3. Otherwise, set the JTAG signals as follows: +// TCK/DCLK high if bit 0 was set (0x01), otherwise low +// TMS/nCONFIG high if bit 1 was set (0x02), otherwise low +// nCE high if bit 2 was set (0x04), otherwise low +// nCS high if bit 3 was set (0x08), otherwise low +// TDI/ASDI/DATA0 high if bit 4 was set (0x10), otherwise low +// Output Enable/LED active if bit 5 was set (0x20), otherwise low +// +// 4. If "Read bit" (0x40) was set, record the state of TDO(CONF_DONE) and +// DATAOUT(nSTATUS) pins and put it as a byte ((DATAOUT<<1)|TDO) in the +// output FIFO _to_ the host (the code here reads TDO only and assumes +// DATAOUT=1) +// +// Byte shift mode: +// +// 1. Load shift register with byte from host +// +// 2. Do 8 times (i.e. for each bit of the byte; implemented in shift.a51) +// 2a) if nCS=1, set carry bit from TDO, else set carry bit from DATAOUT +// 2b) Rotate shift register through carry bit +// 2c) TDI := Carry bit +// 2d) Raise TCK, then lower TCK. +// +// 3. If "Read bit" was set when switching into byte shift mode, +// record the shift register content and put it into the FIFO +// _to_ the host. +// +// Some more (minor) things to consider to emulate the FT245BM: +// +// a) The FT245BM seems to transmit just packets of no more than 64 bytes +// (which perfectly matches the USB spec). Each packet starts with +// two non-data bytes (I use 0x31,0x60 here). A USB sniffer on Windows +// might show a number of packets to you as if it was a large transfer +// because of the way that Windows understands it: it _is_ a large +// transfer until terminated with an USB packet smaller than 64 byte. +// +// b) The Windows driver expects to get some data packets (with at least +// the two leading bytes 0x31,0x60) immediately after "resetting" the +// FT chip and then in regular intervals. Otherwise a blue screen may +// appear... In the code below, I make sure that every 10ms there is +// some packet. +// +// c) Vendor specific commands to configure the FT245 are mostly ignored +// in my code. Only those for reading the EEPROM are processed. See +// DR_GetStatus and DR_VendorCmd below for my implementation. +// +// All other TD_ and DR_ functions remain as provided with CY3681. +// +//----------------------------------------------------------------------------- + +void usb_jtag_activity(void) // Called repeatedly while the device is idle +{ + if(!Running) return; + + ProgIO_Poll(); + + if(!(EP1INCS & bmEPBUSY)) { + if(Pending > 0) { + BYTE o, n; + + AUTOPTRH2 = MSB( EP1INBUF ); + AUTOPTRL2 = LSB( EP1INBUF ); + + XAUTODAT2 = 0x31; + XAUTODAT2 = 0x60; + + if(Pending > 0x3E) { n = 0x3E; Pending -= n; } + else { n = Pending; Pending = 0; }; + + o = n; + +#ifdef USE_MOD256_OUTBUFFER + APTR1H = MSB( OutBuffer ); + APTR1L = FirstDataInOutBuffer; + while(n--) { + XAUTODAT2 = XAUTODAT1; + APTR1H = MSB( OutBuffer ); // Stay within 256-Byte-Buffer + } + FirstDataInOutBuffer = APTR1L; +#else + APTR1H = MSB( &(OutBuffer[FirstDataInOutBuffer]) ); + APTR1L = LSB( &(OutBuffer[FirstDataInOutBuffer]) ); + while(n--) { + XAUTODAT2 = XAUTODAT1; + + if(++FirstDataInOutBuffer >= OUTBUFFER_LEN) { + FirstDataInOutBuffer = 0; + APTR1H = MSB( OutBuffer ); + APTR1L = LSB( OutBuffer ); + } + } +#endif + SYNCDELAY; + EP1INBC = 2 + o; + TF2 = 1; // Make sure there will be a short transfer soon + } else if(TF2) { + EP1INBUF[0] = 0x31; + EP1INBUF[1] = 0x60; + SYNCDELAY; + EP1INBC = 2; + TF2 = 0; + } + } + + if(!(EP2468STAT & bmEP2EMPTY) && (Pending < OUTBUFFER_LEN-0x3F)) { + //BYTE i, n = EP2BCL; // bugfix by Sune Mai (Oct 2008, + // https://sourceforge.net/projects/urjtag/forums/forum/682993/topic/2312452) + WORD i, n = EP2BCL|EP2BCH<<8; + + APTR1H = MSB( EP2FIFOBUF ); + APTR1L = LSB( EP2FIFOBUF ); + + for(i=0;i 0) { + //BYTE m; // bugfix by Sune Mai, see above + WORD m; + + m = n-i; + if(ClockBytes < m) m = ClockBytes; + ClockBytes -= m; + i += m; + + /* Shift out 8 bits from d */ + + if(WriteOnly) { /* Shift out 8 bits from d */ + while(m--) ProgIO_ShiftOut(XAUTODAT1); + } else { /* Shift in 8 bits at the other end */ + while(m--) OutputByte(ProgIO_ShiftInOut(XAUTODAT1)); + } + } else { + BYTE d = XAUTODAT1; + WriteOnly = (d & bmBIT6) ? FALSE : TRUE; + + if(d & bmBIT7) { + /* Prepare byte transfer, do nothing else yet */ + + ClockBytes = d & 0x3F; + } else { + if(WriteOnly) + ProgIO_Set_State(d); + else + OutputByte(ProgIO_Set_Get_State(d)); + } + i++; + } + } + + SYNCDELAY; + EP2BCL = 0x80; // Re-arm endpoint 2 + }; +} + +//----------------------------------------------------------------------------- +// Handler for Vendor Requests ( +//----------------------------------------------------------------------------- + +unsigned char app_vendor_cmd(void) +{ + // OUT requests. Pretend we handle them all... + + if ((bRequestType & bmRT_DIR_MASK) == bmRT_DIR_OUT) { + if(bRequest == RQ_GET_STATUS) { + Running = 1; + } + return 1; + } + + // IN requests. + + if(bRequest == 0x90) { + BYTE addr = (wIndexL<<1) & 0x7F; + EP0BUF[0] = eeprom[addr]; + EP0BUF[1] = eeprom[addr+1]; + } else { + // dummy data + EP0BUF[0] = 0x36; + EP0BUF[1] = 0x83; + } + + EP0BCH = 0; + EP0BCL = (wLengthL<2) ? wLengthL : 2; // Arm endpoint with # bytes to transfer + + return 1; +} + +//----------------------------------------------------------------------------- + +static void main_loop(void) +{ + while(1) { + if(usb_setup_packet_avail()) usb_handle_setup_packet(); + usb_jtag_activity(); + } +} + +//----------------------------------------------------------------------------- + +extern void usb_fifo_init(void); + +void main(void) +{ + EA = 0; // disable all interrupts + + // Digilent nexys3 and atlys boards change FIFOPINPOLAR such that + // EE and FF are active high. In nexys2 boards they are active low + // All config regs should be set (even when power on defaults are + // use, but this one especially.... + FIFOPINPOLAR = 0; + + usb_jtag_init(); + usb_fifo_init(); + eeprom_init(); + setup_autovectors (); + usb_install_handlers (); + + + EA = 1; // enable interrupts + + fx2_renumerate(); // simulates disconnect / reconnect + + main_loop(); +} + + + + Index: src/usb_fifo_init.c =================================================================== --- src/usb_fifo_init.c (nonexistent) +++ src/usb_fifo_init.c (revision 26) @@ -0,0 +1,210 @@ +/* $Id: usb_fifo_init.c 450 2012-01-05 23:21:41Z mueller $ */ +/* + * Copyright 2011-2012 by Walter F.J. Mueller + * Code was forked from ixo-jtag.svn.sourceforge.net on 2011-07-17 + * The data fifo treatment is partially inspired by work of Marco Oster + * done at ZITI, Heidelberg in 2010. + * + * - original copyright and licence disclaimer (of usb_jtag_init) ------------- + * - Code that turns a Cypress FX2 USB Controller into an USB JTAG adapter + * - Copyright (C) 2005..2007 Kolja Waschk, ixo.de + * - This code is part of usbjtag. usbjtag is free software; + *----------------------------------------------------------------------------- + * + * This program is free software; you may redistribute and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation, either version 2, or at your option any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for complete details. + * + *----------------------------------------------------------------------------- + * + * USB FIFO setup + * + * Revision History: + * + * Date Rev Version Comment + * 2012-01-04 450 1.5 new FLAGS layout (D=8-FF,C=4-EF,B=6-FF,A=indexed) + * 2012-01-02 448 1.4 add support for sync fifo w/ int. clock (_ic) + * 2011-07-24 398 1.1 support 0,2, or 3 data FIFO's + * 2011-07-23 397 1.0 Initial version, factored out from usb_jtag_init() + * + *----------------------------------------------------------------------------- + */ + +#include "fx2regs.h" +#include "syncdelay.h" + +//----------------------------------------------------------------------------- + +void usb_fifo_init(void) // Called once at startup +{ + // set the CPU clock to 48MHz, enable USB clock output to FPGA + // Note: CLKOUT not connected on nexys2, nexys3 and atlys... + CPUCS = bmCLKOE | bmCLKSPD1; + + // setup FIFO mode + // bmIFCLKSRC clock source: 0 external clock; 1 internal clock + // bm3048MHZ clock frequency: 0 30 MHz; 1 48 MHz + // bmIFCLKOE IFCLK pin output enable: 0 tri-state; 1 drive + // bmIFCLKPOL clock polarity: 0 rising edge active; 1 falling edge active + // bmASYNC fifo mode: 0 synchrounous; 1 asynchronous + // IFCFG interface mode: bmIFCFGMASK=11->slave fifo + +#if defined(USE_IC30) + // Use internal 30 MHz, enable output, slave sync FIFO, slave FIFO mode + IFCONFIG = bmIFCLKSRC | bmIFCLKOE | bmIFCFGMASK; +#else + // Use internal 30 MHz, enable output, slave async FIFO, slave FIFO mode + IFCONFIG = bmIFCLKSRC | bmIFCLKOE | bmASYNC | bmIFCFGMASK; +#endif + + // Setup PA7 as FLAGD + PORTACFG = 0x80; SYNCDELAY; // 1000 0000: FLAGD=1, SLCS=0 + + // setup usage of FLAG pins + // goal is to support EP4(out) and EP6/EP8(in) synchronous slave fifos + // for synchronous operation usage of empty/full and almost empty/full + // flags is needed, the later are realized with the programmable flags. + // the three empty/full flags are setup as fixed flags, while the three + // almost (or programmable) flags are channeled over one indexed flag pin. + // FLAGA = indexed, PF (the default) + // FLAGB = EP6 FF + // FLAGC = EP4 EF + // FLAGD = EP8 FF + + PINFLAGSAB = 0xE0; SYNCDELAY; // 1110 0000: B EP6 FF, A indexed + PINFLAGSCD = 0xF9; SYNCDELAY; // 1111 1001: D EP8 FF, C EP4 EF + + // define endpoint configuration + + FIFORESET = 0x80; SYNCDELAY; // From now on, NAK all + REVCTL = 3; SYNCDELAY; // Allow FW access to FIFO buffer + + // FIFOs used for JTAG emulation + // EP1 IN + // EP2 OUT + + EP1OUTCFG = 0x00; SYNCDELAY; // EP1 OUT: inactive + EP1INCFG = 0xA0; SYNCDELAY; // EP1 IN: active, bulk + + EP2FIFOCFG = 0x00; SYNCDELAY; // EP2 slave: 0, not used as slave + FIFORESET = 0x02; SYNCDELAY; // EP2 reset (0x02! see comment below) + EP2CFG = 0xA2; SYNCDELAY; // EP2: 1010 0010: VAL,OUT,BULK,DOUBLE + + // TMR (Rev *D) page 117: auto in/out initialization sequence + // Auto IN transfers + // 1. setup EPxCFG + // 2. reset the FIFO + // 3. set EPxFIFOCFG.3 = 1 + // 4. set EPxAUTOINLENH:L + // Auto OUT transfers + // 1. setup EPxCFG + // 2. reset the FIFO + // 3. arm OUT buffers by writing OUTPKTEND N times w/ skip=1 (N=buf depth) + // 4. set EPxFIFOCFG.4 = 1 + + // 2 FIFOs used for DATA transfer: + // EP4 OUT DOUBLE + // EP6 IN QUAD + +#if defined(USE_2FIFO) || defined(USE_3FIFO) + EP4CFG = 0xA2; SYNCDELAY; // EP4: 1010 0010: VAL,OUT,BULK,DOUBLE +#if defined(USE_3FIFO) + EP6CFG = 0xE2; SYNCDELAY; // EP6: 1110 0010: VAL,IN,BULK,DOUBLE + EP8CFG = 0xE2; SYNCDELAY; // EP8: 1110 0010: VAL,IN,BULK,DOUBLE +#else + EP6CFG = 0xE0; SYNCDELAY; // EP6: 1110 0000: VAL,IN,BULK,QUAD + EP8CFG = 0x02; SYNCDELAY; // EP8: disabled +#endif + + // Note: the description of the FIFORESET in the TMR, Rev *D (2011) is + // wrong. The TMR asks to write 0x80,0x82,0x84,0x86,0x88,0x00, e.g + // on page 117, also in other contexts. + // This doesn't work, FIFO's are in fact not reset ! + // The proper sequence is 0x80,0x02,0x04,0x06,0x08,0x00, as for + // example stated in http://www.cypress.com/?id=4&rID=32093 + FIFORESET = 0x04; SYNCDELAY; // EP4 reset + FIFORESET = 0x06; SYNCDELAY; // EP6 reset + FIFORESET = 0x08; SYNCDELAY; // EP8 reset + FIFORESET = 0x00; SYNCDELAY; // Restore normal behaviour + + // !! really needed here, before buffers are armed !! + REVCTL = 0; SYNCDELAY; // Reset FW access to FIFO buffer + + // EP4 OUT setup --------------------------------------------------- + OUTPKTEND = 0x84; SYNCDELAY; // arm all EP4 buffers + OUTPKTEND = 0x84; SYNCDELAY; + // !! hardware only arms endpoint when AUTOOUT 0->1 transition seen + // !! --> clean AUTOOUT to handle for example back-to-back firmware loads + EP4FIFOCFG = 0x00; SYNCDELAY; // EP4: force AUTOOUT 0->1 transition + EP4FIFOCFG = 0x10; SYNCDELAY; // EP4: 0001 0000: AUTOOUT, BYTE + // setup programmable fifo threshold as 'almost empty' at 3 bytes to go + // --> keep active low logic for prgrammable flags + // --> set flag 1 when fill >= threshold (DECIS=1) + // --> almost empty thus at fill<4, effective threshold thus 3 !! + EP4FIFOPFH = 0x80; SYNCDELAY; // 0000 0000: DECIS=1, PFC8=0 + EP4FIFOPFL = 0x04; SYNCDELAY; // PFC = 4 = 0 0000 0100 + + // EP6 IN setup --------------------------------------------------- + EP6FIFOCFG = 0x0C; SYNCDELAY; // EP6: 0000 1100: AUTOIN, ZEROLEN, BYTE + EP6AUTOINLENH = 0x02; SYNCDELAY; // 512 byte buffers + EP6AUTOINLENL = 0x00; SYNCDELAY; + + // setup programmable fifo threshold as 'almost full' at 3 bytes to go + // --> keep active low logic for prgrammable flags + // --> set flag 1 when fill <= threshold (DECIS=0) + // --> use full buffer fill + // --> for dual buffered: (PKSTAT=0, PKTS=1) [in case 3 fifo's used] + // --> for quad buffered: (PKSTAT=0, PKTS=3) [in case 2 fifo's used] + // --> effective threshold thus 3 in both bases +#if defined(USE_3FIFO) + EP6FIFOPFH = 0x09; SYNCDELAY; // 0000 1001: DECIS=0, PK=0:1, PFC8=1 +#else + EP6FIFOPFH = 0x19; SYNCDELAY; // 0001 1001: DECIS=0, PK=0:3, PFC8=1 +#endif + EP6FIFOPFL = 0xfc; SYNCDELAY; // PFC = 508 = 1 1111 1100 + +#if defined(USE_3FIFO) + // EP8 IN setup --------------------------------------------------- + EP8FIFOCFG = 0x0C; SYNCDELAY; // EP8: 0000 1100: AUTOIN, ZEROLEN, BYTE + EP8AUTOINLENH = 0x02; SYNCDELAY; // 512 byte buffers + EP8AUTOINLENL = 0x00; SYNCDELAY; + // setup programmable fifo threshold as 'almost full' at 4 bytes to go + // like for EP6 above + EP8FIFOPFH = 0x41; SYNCDELAY; // 0100 0001: DECIS=0, PKSTAT=1, PFC8=1 + EP8FIFOPFL = 0xfc; SYNCDELAY; // PFC = 508 = 1 1111 1100 + +#else + // EP8 setup + EP8FIFOCFG = 0x00; SYNCDELAY; // EP8 slave: 0, not used as slave +#endif + +#else + // no FIFOs used for DATA transfer + // EP4,6,8 inactive + EP4CFG = 0x02; SYNCDELAY; // EP4: disabled + EP6CFG = 0x02; SYNCDELAY; // EP6: disabled + EP8CFG = 0x02; SYNCDELAY; // EP8: disabled + + FIFORESET = 0x04; SYNCDELAY; // EP4 reset + FIFORESET = 0x06; SYNCDELAY; // EP6 reset + FIFORESET = 0x08; SYNCDELAY; // EP8 reset + FIFORESET = 0x00; SYNCDELAY; // Restore normal behaviour + + EP4FIFOCFG = 0x00; SYNCDELAY; // EP4 slave: 0, not used as slave + EP6FIFOCFG = 0x00; SYNCDELAY; // EP6 slave: 0, not used as slave + EP8FIFOCFG = 0x00; SYNCDELAY; // EP8 slave: 0, not used as slave + + REVCTL = 0; SYNCDELAY; // Reset FW access to FIFO buffer +#endif + + // the EP2 endpoint does not come up armed. It is used with double buffering + // so write dummy byte counts twice. + SYNCDELAY; // + EP2BCL = 0x80; SYNCDELAY; // arm EP2OUT + EP2BCL = 0x80; SYNCDELAY; // arm EP2OUT +} Index: src/hardware.h =================================================================== --- src/hardware.h (nonexistent) +++ src/hardware.h (revision 26) @@ -0,0 +1,35 @@ +/* $Id: hardware.h 395 2011-07-17 22:02:55Z mueller $ */ +/*----------------------------------------------------------------------------- + * Hardware-dependent code for usb_jtag + *----------------------------------------------------------------------------- + * Copyright (C) 2007 Kolja Waschk, ixo.de + *----------------------------------------------------------------------------- + * This code is part of usbjtag. usbjtag is free software; you can redistribute + * it and/or modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the License, + * or (at your option) any later version. usbjtag is distributed in the hope + * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. You should have received a + * copy of the GNU General Public License along with this program in the file + * COPYING; if not, write to the Free Software Foundation, Inc., 51 Franklin + * St, Fifth Floor, Boston, MA 02110-1301 USA + *----------------------------------------------------------------------------- + */ + +#ifndef _HARDWARE_H +#define _HARDWARE_H 1 + +extern void ProgIO_Init(void); +extern void ProgIO_Poll(void); +extern void ProgIO_Enable(void); +extern void ProgIO_Disable(void); +extern void ProgIO_Deinit(void); + +extern void ProgIO_Set_State(unsigned char d); +extern unsigned char ProgIO_Set_Get_State(unsigned char d); +extern void ProgIO_ShiftOut(unsigned char x); +extern unsigned char ProgIO_ShiftInOut(unsigned char x); + +#endif /* _HARDWARE_H */ + Index: src/hw_nexys2.c =================================================================== --- src/hw_nexys2.c (nonexistent) +++ src/hw_nexys2.c (revision 26) @@ -0,0 +1,284 @@ +/* $Id: hw_nexys2.c 447 2011-12-31 19:41:32Z mueller $ */ +/* + * Copyright 2011- by Walter F.J. Mueller + * Code was forked from ixo-jtag.svn.sourceforge.net on 2011-07-17 + * + * - original copyright and licence disclaimer -------------------------------- + * - Copyright (C) 2007 Kolja Waschk, ixo.de + * - This code is part of usbjtag. usbjtag is free software; + * - This code was copied from hw_basic.c and adapted for the Digilent Nexys(2) + * - boards by Sune Mai (Oct 2008) with minor cleanups by Hauke Daempfling + * - (May 2010). See http://www.fpga4fun.com/forum/viewtopic.php?t=483&start=50 + * ---------------------------------------------------------------------------- + * + * This program is free software; you may redistribute and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation, either version 2, or at your option any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for complete details. + * + * ---------------------------------------------------------------------------- + * Hardware-dependent code for usb_jtag + * + * Revision History: + * + * Date Rev Version Comment + * 2011-12-30 447 1.2.1 move JTAG pin OE intoProgIO_Set_State() + * 2011-12-29 446 1.2 clean-out all code not relevant for nexys2 + * 2011-07-23 397 1.1 move IFCONFIG and CPUCS init to usb_fifo_init + * 2011-07-17 394 1.0 Initial version (from ixo-jtag/usb_jtag Rev 204) + * + *----------------------------------------------------------------------------- + */ + +#include +#include "hardware.h" +#include "delay.h" + +//----------------------------------------------------------------------------- + +/* JTAG TCK, AS/PS DCLK */ + +sbit at 0xB4 TCK; /* Port D.4 */ +#define bmTCKOE bmBIT4 +#define SetTCK(x) do{TCK=(x);}while(0) + +/* JTAG TDI, AS ASDI, PS DATA0 */ + +sbit at 0xB2 TDI; /* Port D.2 */ +#define bmTDIOE bmBIT2 +#define SetTDI(x) do{TDI=(x);}while(0) + +/* JTAG TMS, AS/PS nCONFIG */ + +sbit at 0xB3 TMS; /* Port D.3 */ +#define bmTMSOE bmBIT3 +#define SetTMS(x) do{TMS=(x);}while(0) + +/* JTAG TDO, AS/PS CONF_DONE */ + +sbit at 0xB0 TDO; /* Port D.0 */ +#define bmTDOOE bmBIT0 +#define GetTDO(x) TDO + +/* USB Power-On (Nexys2 specific !!) */ + +sbit at 0xB7 USBPOW; /* Port D.7 */ +#define bmUSBPOWOE bmBIT7 +#define SetUSBPOW(x) do{USBPOW=(x);}while(0) + +//----------------------------------------------------------------------------- + +#define bmPROGOUTOE (bmTCKOE|bmTDIOE|bmTMSOE) +#define bmPROGINOE (bmTDOOE) + +//----------------------------------------------------------------------------- + +void ProgIO_Poll(void) {} +void ProgIO_Enable(void) {} +// These aren't called anywhere in usbjtag.c so far, might come... +void ProgIO_Disable(void) {} +void ProgIO_Deinit(void) {} + + +void ProgIO_Init(void) +{ + /* The following code depends on your actual circuit design. + Make required changes _before_ you try the code! */ + + // power on the onboard FPGA: + // output enable and set to 1 the Nexys2 USB-Power-enable signal + SetUSBPOW(1); + OED=bmUSBPOWOE; + // Note: JTAG signal output enables are in ProgIO_Set_State() below. + + mdelay(500); // wait for supply to come up +} + +void ProgIO_Set_State(unsigned char d) +{ + /* Set state of output pins: + * + * d.0 => TCK + * d.1 => TMS + * d.4 => TDI + */ + + // JTAG signal output enables done at first request: + // this allows to use the JTAG connector with another JTAG cable + // alternatively. + OED=(OED&~bmPROGINOE) | bmPROGOUTOE; // Output enable + + SetTCK((d & bmBIT0) ? 1 : 0); + SetTMS((d & bmBIT1) ? 1 : 0); + SetTDI((d & bmBIT4) ? 1 : 0); +} + +//----------------------------------------------------------------------------- +// dummied AS/PS code +#define GetASDO(x) 1 + +unsigned char ProgIO_Set_Get_State(unsigned char d) +{ + /* Set state of output pins (s.a.) + * then read state of input pins: + * + * TDO => d.0 + * DATAOUT => d.1 (only #ifdef HAVE_AS_MODE) + */ + + ProgIO_Set_State(d); + return (GetASDO()<<1)|GetTDO(); +} + +//----------------------------------------------------------------------------- + +void ProgIO_ShiftOut(unsigned char c) +{ + /* Shift out byte C: + * + * 8x { + * Output least significant bit on TDI + * Raise TCK + * Shift c right + * Lower TCK + * } + */ + + (void)c; /* argument passed in DPL */ + + _asm + MOV A,DPL + ;; Bit0 + RRC A + MOV _TDI,C + SETB _TCK + ;; Bit1 + RRC A + CLR _TCK + MOV _TDI,C + SETB _TCK + ;; Bit2 + RRC A + CLR _TCK + MOV _TDI,C + SETB _TCK + ;; Bit3 + RRC A + CLR _TCK + MOV _TDI,C + SETB _TCK + ;; Bit4 + RRC A + CLR _TCK + MOV _TDI,C + SETB _TCK + ;; Bit5 + RRC A + CLR _TCK + MOV _TDI,C + SETB _TCK + ;; Bit6 + RRC A + CLR _TCK + MOV _TDI,C + SETB _TCK + ;; Bit7 + RRC A + CLR _TCK + MOV _TDI,C + SETB _TCK + NOP + CLR _TCK + ret + _endasm; +} + +/* +;; For ShiftInOut, the timing is a little more +;; critical because we have to read _TDO/shift/set _TDI +;; when _TCK is low. But 20% duty cycle at 48/4/5 MHz +;; is just like 50% at 6 Mhz, and that's still acceptable +*/ + +unsigned char ProgIO_ShiftInOut(unsigned char c) +{ + /* Shift out byte C, shift in from TDO: + * + * 8x { + * Read carry from TDO + * Output least significant bit on TDI + * Raise TCK + * Shift c right, append carry (TDO) at left + * Lower TCK + * } + * Return c. + */ + + (void)c; /* argument passed in DPL */ + + _asm + MOV A,DPL + + ;; Bit0 + MOV C,_TDO + RRC A + MOV _TDI,C + SETB _TCK + CLR _TCK + ;; Bit1 + MOV C,_TDO + RRC A + MOV _TDI,C + SETB _TCK + CLR _TCK + ;; Bit2 + MOV C,_TDO + RRC A + MOV _TDI,C + SETB _TCK + CLR _TCK + ;; Bit3 + MOV C,_TDO + RRC A + MOV _TDI,C + SETB _TCK + CLR _TCK + ;; Bit4 + MOV C,_TDO + RRC A + MOV _TDI,C + SETB _TCK + CLR _TCK + ;; Bit5 + MOV C,_TDO + RRC A + MOV _TDI,C + SETB _TCK + CLR _TCK + ;; Bit6 + MOV C,_TDO + RRC A + MOV _TDI,C + SETB _TCK + CLR _TCK + ;; Bit7 + MOV C,_TDO + RRC A + MOV _TDI,C + SETB _TCK + NOP + CLR _TCK + + MOV DPL,A + ret + _endasm; + + /* return value in DPL */ + + return c; +} + Index: src/startup.a51 =================================================================== --- src/startup.a51 (nonexistent) +++ src/startup.a51 (revision 26) @@ -0,0 +1,79 @@ +;;; -*- asm -*- +;;; $Id: startup.a51 395 2011-07-17 22:02:55Z mueller $ +;;; +;;;----------------------------------------------------------------------------- +;;; Startup code +;;;----------------------------------------------------------------------------- +;;; Code taken from USRP2 firmware (GNU Radio Project), version 3.0.2, +;;; Copyright 2003 Free Software Foundation, Inc. +;;;----------------------------------------------------------------------------- +;;; This code is part of usbjtag. usbjtag is free software; you can redistribute +;;; it and/or modify it under the terms of the GNU General Public License as +;;; published by the Free Software Foundation; either version 2 of the License, +;;; or (at your option) any later version. usbjtag is distributed in the hope +;;; that it will be useful, but WITHOUT ANY WARRANTY; without even the implied +;;; warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. You should have received a +;;; copy of the GNU General Public License along with this program in the file +;;; COPYING; if not, write to the Free Software Foundation, Inc., 51 Franklin +;;; St, Fifth Floor, Boston, MA 02110-1301 USA +;;;----------------------------------------------------------------------------- + +;;; The default external memory initialization provided by sdcc is not +;;; appropriate to the FX2. This is derived from the sdcc code, but uses +;;; the FX2 specific _MPAGE sfr. + + + ;; .area XISEG (XDATA) ; the initialized external data area + ;; .area XINIT (CODE) ; the code space consts to init XISEG + .area XSEG (XDATA) ; zero initialized xdata + .area USBDESCSEG (XDATA) ; usb descriptors + + + .area CSEG (CODE) + + ;; sfr that sets upper address byte of MOVX using @r0 or @r1 + _MPAGE = 0x0092 + +__sdcc_external_startup:: + ;; This system is now compiled with the --no-xinit-opt + ;; which means that any initialized XDATA is handled + ;; inline by code in the GSINIT segs emitted for each file. + ;; + ;; We zero XSEG and all of the internal ram to ensure + ;; a known good state for uninitialized variables. + +; _mcs51_genRAMCLEAR() start + mov r0,#l_XSEG + mov a,r0 + orl a,#(l_XSEG >> 8) + jz 00002$ + mov r1,#((l_XSEG + 255) >> 8) + mov dptr,#s_XSEG + clr a + +00001$: movx @dptr,a + inc dptr + djnz r0,00001$ + djnz r1,00001$ + + ;; We're about to clear internal memory. This will overwrite + ;; the stack which contains our return address. + ;; Pop our return address into DPH, DPL +00002$: pop dph + pop dpl + + ;; R0 and A contain 0. This loop will execute 256 times. + ;; + ;; FWIW the first iteration writes direct address 0x00, + ;; which is the location of r0. We get lucky, we're + ;; writing the correct value (0) + +00003$: mov @r0,a + djnz r0,00003$ + + push dpl ; restore our return address + push dph + + mov dpl,#0 ; indicate that data init is still required + ret Index: src/eeprom.c =================================================================== --- src/eeprom.c (nonexistent) +++ src/eeprom.c (revision 26) @@ -0,0 +1,78 @@ +/* $Id: eeprom.c 395 2011-07-17 22:02:55Z mueller $ */ +/*----------------------------------------------------------------------------- + * FTDI EEPROM emulation + *----------------------------------------------------------------------------- + * Copyright (C) 2007 Kolja Waschk, ixo.de + *----------------------------------------------------------------------------- + * This code is part of usbjtag. usbjtag is free software; you can redistribute + * it and/or modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the License, + * or (at your option) any later version. usbjtag is distributed in the hope + * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. You should have received a + * copy of the GNU General Public License along with this program in the file + * COPYING; if not, write to the Free Software Foundation, Inc., 51 Franklin + * St, Fifth Floor, Boston, MA 02110-1301 USA + *----------------------------------------------------------------------------- + */ + +#include "eeprom.h" +#include "usb_descriptors.h" + +xdata unsigned char eeprom[128]; + +extern xdata char dscr_vidpidver[6]; +extern xdata char dscr_attrpow[2]; +extern xdata char dscr_usbver[2]; +extern xdata char dscr_strorder[4]; +extern xdata char str1[]; +extern xdata char str2[]; +extern xdata char str3[]; + +static unsigned char ee_ptr; +static unsigned short ee_cksum; + +void eeprom_append(unsigned char nb) +{ + unsigned char pree_ptr = ee_ptr & ~1; + if(pree_ptr != ee_ptr) + { + ee_cksum = ee_cksum ^((unsigned short)nb << 8); + ee_cksum = ee_cksum ^ eeprom[pree_ptr]; + ee_cksum = (ee_cksum << 1) | (ee_cksum >> 15); + }; + eeprom[ee_ptr++] = nb; +} + +void eeprom_init(void) +{ + char j,sofs; + ee_ptr = 0; + ee_cksum = 0xAAAA; + + eeprom_append(0x00); + eeprom_append(0x00); + for(j=0;j<6;j++) eeprom_append(dscr_vidpidver[j]); + for(j=0;j<2;j++) eeprom_append(dscr_attrpow[j]); + eeprom_append(0x1C); + eeprom_append(0x00); + for(j=0;j<2;j++) eeprom_append(dscr_usbver[j]); + sofs = 0x80 + ee_ptr + 6; + eeprom_append(sofs); + eeprom_append(str1[0]); + sofs += str1[0]; + eeprom_append(sofs); + eeprom_append(str2[0]); + sofs += str2[0]; + eeprom_append(sofs); + eeprom_append(str3[0]); + for(j=0;j>8)&0xFF; +} + Index: src/hw_nexys3.c =================================================================== --- src/hw_nexys3.c (nonexistent) +++ src/hw_nexys3.c (revision 26) @@ -0,0 +1,274 @@ +/* $Id: hw_nexys3.c 447 2011-12-31 19:41:32Z mueller $ */ +/* + * Copyright 2011- by Walter F.J. Mueller + * Code was forked from ixo-jtag.svn.sourceforge.net on 2011-07-17 + * + * - original copyright and licence disclaimer -------------------------------- + * - Copyright (C) 2007 Kolja Waschk, ixo.de + * - This code is part of usbjtag. usbjtag is free software; + * - This code was copied from hw_basic.c and adapted for the Digilent Nexys(2) + * - boards by Sune Mai (Oct 2008) with minor cleanups by Hauke Daempfling + * - (May 2010). See http://www.fpga4fun.com/forum/viewtopic.php?t=483&start=50 + * ---------------------------------------------------------------------------- + * + * This program is free software; you may redistribute and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation, either version 2, or at your option any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for complete details. + * + * ---------------------------------------------------------------------------- + * Hardware-dependent code for usb_jtag + * + * Revision History: + * + * Date Rev Version Comment + * 2011-12-30 447 1.0.1 move JTAG pin OE intoProgIO_Set_State() + * 2011-12-29 446 1.0 Initial version (adapt&cleanup from hw_nexys2.c) + * + *----------------------------------------------------------------------------- + */ + +#include +#include "hardware.h" +#include "delay.h" + +//----------------------------------------------------------------------------- + +/* JTAG TCK, AS/PS DCLK */ + +sbit at 0xB4 TCK; /* Port D.4 */ +#define bmTCKOE bmBIT4 +#define SetTCK(x) do{TCK=(x);}while(0) + +/* JTAG TDI, AS ASDI, PS DATA0 */ + +sbit at 0xB2 TDI; /* Port D.2 */ +#define bmTDIOE bmBIT2 +#define SetTDI(x) do{TDI=(x);}while(0) + +/* JTAG TMS, AS/PS nCONFIG */ + +sbit at 0xB3 TMS; /* Port D.3 */ +#define bmTMSOE bmBIT3 +#define SetTMS(x) do{TMS=(x);}while(0) + +/* JTAG TDO, AS/PS CONF_DONE */ + +sbit at 0xB0 TDO; /* Port D.0 */ +#define bmTDOOE bmBIT0 +#define GetTDO(x) TDO + +//----------------------------------------------------------------------------- + +#define bmPROGOUTOE (bmTCKOE|bmTDIOE|bmTMSOE) +#define bmPROGINOE (bmTDOOE) + +//----------------------------------------------------------------------------- + +void ProgIO_Poll(void) {} +void ProgIO_Enable(void) {} +// These aren't called anywhere in usbjtag.c so far, might come... +void ProgIO_Disable(void) {} +void ProgIO_Deinit(void) {} + + +void ProgIO_Init(void) +{ + /* The following code depends on your actual circuit design. + Make required changes _before_ you try the code! */ + + // Note: JTAG signal output enables are in ProgIO_Set_State() below. + + mdelay(500); // wait for supply to come up + +} + +void ProgIO_Set_State(unsigned char d) +{ + /* Set state of output pins: + * + * d.0 => TCK + * d.1 => TMS + * d.4 => TDI + */ + + // JTAG signal output enables done at first request: + // this allows to use the JTAG connector with another JTAG cable + // alternatively. + OED=(OED&~bmPROGINOE) | bmPROGOUTOE; // Output enable + + SetTCK((d & bmBIT0) ? 1 : 0); + SetTMS((d & bmBIT1) ? 1 : 0); + SetTDI((d & bmBIT4) ? 1 : 0); +} + +//----------------------------------------------------------------------------- +// dummied AS/PS code +#define GetASDO(x) 1 + +unsigned char ProgIO_Set_Get_State(unsigned char d) +{ + /* Set state of output pins (s.a.) + * then read state of input pins: + * + * TDO => d.0 + * DATAOUT => d.1 (only #ifdef HAVE_AS_MODE) + */ + + ProgIO_Set_State(d); + return (GetASDO()<<1)|GetTDO(); +} + +//----------------------------------------------------------------------------- + +void ProgIO_ShiftOut(unsigned char c) +{ + /* Shift out byte C: + * + * 8x { + * Output least significant bit on TDI + * Raise TCK + * Shift c right + * Lower TCK + * } + */ + + (void)c; /* argument passed in DPL */ + + _asm + MOV A,DPL + ;; Bit0 + RRC A + MOV _TDI,C + SETB _TCK + ;; Bit1 + RRC A + CLR _TCK + MOV _TDI,C + SETB _TCK + ;; Bit2 + RRC A + CLR _TCK + MOV _TDI,C + SETB _TCK + ;; Bit3 + RRC A + CLR _TCK + MOV _TDI,C + SETB _TCK + ;; Bit4 + RRC A + CLR _TCK + MOV _TDI,C + SETB _TCK + ;; Bit5 + RRC A + CLR _TCK + MOV _TDI,C + SETB _TCK + ;; Bit6 + RRC A + CLR _TCK + MOV _TDI,C + SETB _TCK + ;; Bit7 + RRC A + CLR _TCK + MOV _TDI,C + SETB _TCK + NOP + CLR _TCK + ret + _endasm; +} + +/* +;; For ShiftInOut, the timing is a little more +;; critical because we have to read _TDO/shift/set _TDI +;; when _TCK is low. But 20% duty cycle at 48/4/5 MHz +;; is just like 50% at 6 Mhz, and that's still acceptable +*/ + +unsigned char ProgIO_ShiftInOut(unsigned char c) +{ + /* Shift out byte C, shift in from TDO: + * + * 8x { + * Read carry from TDO + * Output least significant bit on TDI + * Raise TCK + * Shift c right, append carry (TDO) at left + * Lower TCK + * } + * Return c. + */ + + (void)c; /* argument passed in DPL */ + + _asm + MOV A,DPL + + ;; Bit0 + MOV C,_TDO + RRC A + MOV _TDI,C + SETB _TCK + CLR _TCK + ;; Bit1 + MOV C,_TDO + RRC A + MOV _TDI,C + SETB _TCK + CLR _TCK + ;; Bit2 + MOV C,_TDO + RRC A + MOV _TDI,C + SETB _TCK + CLR _TCK + ;; Bit3 + MOV C,_TDO + RRC A + MOV _TDI,C + SETB _TCK + CLR _TCK + ;; Bit4 + MOV C,_TDO + RRC A + MOV _TDI,C + SETB _TCK + CLR _TCK + ;; Bit5 + MOV C,_TDO + RRC A + MOV _TDI,C + SETB _TCK + CLR _TCK + ;; Bit6 + MOV C,_TDO + RRC A + MOV _TDI,C + SETB _TCK + CLR _TCK + ;; Bit7 + MOV C,_TDO + RRC A + MOV _TDI,C + SETB _TCK + NOP + CLR _TCK + + MOV DPL,A + ret + _endasm; + + /* return value in DPL */ + + return c; +} + + Index: src/dscr_gen.A51 =================================================================== --- src/dscr_gen.A51 (nonexistent) +++ src/dscr_gen.A51 (revision 26) @@ -0,0 +1,455 @@ +;;; -*- asm -*- +;;; $Id: dscr_gen.A51 457 2012-02-12 22:34:20Z mueller $ +;;; +;;; Copyright 2011-2012 by Walter F.J. Mueller +;;; Code was forked from ixo-jtag.svn.sourceforge.net on 2011-07-17 +;;; +;;;- original copyright and licence disclaimer --------------------------------- +;;;- Copyright 2005..2007 Kolja Waschk, ixo.de +;;;- Code based on USRP2 firmware (GNU Radio Project), version 3.0.2, +;;;- Copyright 2003 Free Software Foundation, Inc. +;;;- This code is part of usbjtag. usbjtag is free software; +;;;- --------------------------------------------------------------------------- +;;; +;;; This program is free software; you may redistribute and/or modify it under +;;; the terms of the GNU General Public License as published by the Free +;;; Software Foundation, either version 2, or at your option any later version. +;;; +;;; This program is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY +;;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +;;; for complete details. +;;; +;;;----------------------------------------------------------------------------- +;;; USB Descriptor, common source for jtag + 0, 2, or 3 hardware fifo interface +;;; +;;; Use C preprocessor to create an assembler source for the configurations: +;;; +;;; Endpoint Usage Comment +;;; EP1 IN jtag always defined +;;; EP2 OUT jtag always defined +;;; EP4 OUT data defined if USE_2FIFO or USE_3FIFO +;;; EP6 IN data defined if USE_2FIFO or USE_3FIFO +;;; EP8 IN data defined if USE_3FIFO +;;; +;;; Available preprocessor options +;;; +;;; USE_VID USB Vendor ID +;;; USE_PID USB Product ID +;;; +;;; USE_2FIFO if given EP4 OUT and EP6 IN created +;;; USE_3FIFO if given EP4 OUT, EP6 IN and EP8 IN created +;;; USE_DID=0xhhhh for product version (default 0x0004) +;;; USE_MAXPOWER=nnn for USB max current (in units of 2 mA; default 250) +;;; +;;; USE_NEXYS2 prefix 'nexys2_' in iProduct string +;;; USE_NEXYS3 prefix 'nexys3_' in iProduct string +;;; USE_AS suffix '_as' in iProduct string +;;; USE_IC suffix '_ic' in iProduct string +;;; +;;; Usage +;;; cpp -P -x assembler-with-cpp dscr_gen.A51 > ... +;;; cpp -P -x assembler-with-cpp dscr_gen.A51 -DUSE_2FIFO > ... +;;; cpp -P -x assembler-with-cpp dscr_gen.A51 -DUSE_3FIFO > ... +;;; +;;; +;;; Revision History: +;;; +;;; Date Rev Version Comment +;;; 2012-02-11 457 2.1 iVendor string now reflects firmware file name; +;;; iSerial string now 00000000; +;;; VID/PID now via USE_VID/USE_PID defines +;;; 2011-07-24 398 2.0 Convert all *.a51 to one common source +;;; 2011-07-17 395 1.1 Use USB 2.0; New string values; use 512 byte for +;;; all high speed endpoints +;;; 2011-07-17 395 1.0 Initial version (derived from dscr_jtag.a51) +;;;----------------------------------------------------------------------------- + +#ifndef USE_DID +#define USE_DID 0x0004 +#endif + +#ifndef USE_MAXPOWER +#define USE_MAXPOWER 250 +#endif + +#ifdef USE_3FIFO +#define NUM_EPS 5 +#elif USE_2FIFO +#define NUM_EPS 4 +#else +#define NUM_EPS 2 +#endif + + .module usb_descriptors + + VID = USE_VID ; Vendor ID + PID = USE_PID ; Product ID + VERSION = USE_DID ; Version + + USB_VER = 0x0200 ; Support USB version 2.00 + USB_ATTR = 0x80 ; Bus powered, no remote wakeup + FTD_ATTR = 0x001C ; Set USB version, use version string, enable suspend PD + MAX_POWER = USE_MAXPOWER + + DSCR_DEVICE = 1 ; Descriptor type: Device + DSCR_CONFIG = 2 ; Descriptor type: Configuration + DSCR_STRING = 3 ; Descriptor type: String + DSCR_INTRFC = 4 ; Descriptor type: Interface + DSCR_ENDPNT = 5 ; Descriptor type: Endpoint + DSCR_DEVQUAL = 6 ; Descriptor type: Device Qualifier + + DSCR_DEVICE_LEN = 18 + DSCR_CONFIG_LEN = 9 + DSCR_INTRFC_LEN = 9 + DSCR_ENDPNT_LEN = 7 + DSCR_DEVQUAL_LEN = 10 + + ET_CONTROL = 0 ; Endpoint type: Control + ET_ISO = 1 ; Endpoint type: Isochronous + ET_BULK = 2 ; Endpoint type: Bulk + ET_INT = 3 ; Endpoint type: Interrupt + +;;; -------------------------------------------------------- +;;; external ram data +;;;-------------------------------------------------------- + + .area USBDESCSEG (XDATA) + + .even ; descriptors must be 2-byte aligned for SUDPTR{H,L} to work + + ;; The .even directive isn't really honored by the linker. Bummer! + ;; (There's no way to specify an alignment requirement for a given area, + ;; hence when they're concatenated together, even doesn't work.) + ;; + ;; We work around this by telling the linker to put USBDESCSEG + ;; at absolute address 0xE100 (see LDFLAGS in Makefile). + +;;; ---------------------------------------------------------------- +;;; descriptors used when operating at high speed (480Mbps) +;;; ---------------------------------------------------------------- + +_high_speed_device_descr:: + .db DSCR_DEVICE_LEN + .db DSCR_DEVICE +_dscr_usbver:: + .db USB_VER ; Specification version (MSB) + .db 0x00 ; device class (vendor specific) + .db 0x00 ; device subclass (vendor specific) + .db 0x00 ; device protocol (vendor specific) + .db 64 ; bMaxPacketSize0 for endpoint 0 +_dscr_vidpidver:: + .db VID ; idVendor + .db PID ; idProduct + .db VERSION ; bcdDevice +_dscr_strorder:: + .db SI_VENDOR ; iManufacturer (string index) + .db SI_PRODUCT ; iProduct (string index) + .db SI_SERIAL ; iSerial number (string index) + .db 1 ; bNumConfigurations + + .even +_high_speed_devqual_descr:: + .db DSCR_DEVQUAL_LEN + .db DSCR_DEVQUAL + .db USB_VER ; bcdUSB (MSB) + .db 0xFF ; bDeviceClass + .db 0xFF ; bDeviceSubClass + .db 0xFF ; bDeviceProtocol + .db 64 ; bMaxPacketSize0 + .db 1 ; bNumConfigurations (one config at 12Mbps) + .db 0 ; bReserved + + .even +_high_speed_config_descr:: + .db DSCR_CONFIG_LEN + .db DSCR_CONFIG + .db <(_high_speed_config_descr_end - _high_speed_config_descr) + .db >(_high_speed_config_descr_end - _high_speed_config_descr) + .db 1 ; bNumInterfaces + .db 1 ; bConfigurationValue + .db 0 ; iConfiguration +_dscr_attrpow:: + .db USB_ATTR ; bmAttributes + .db MAX_POWER ; bMaxPower [Unit: 2 mA] + + ;; interface descriptor + + .db DSCR_INTRFC_LEN + .db DSCR_INTRFC + .db 0 ; bInterfaceNumber (zero based) + .db 0 ; bAlternateSetting + .db NUM_EPS ; bNumEndpoints + .db 0xFF ; bInterfaceClass (vendor specific) + .db 0xFF ; bInterfaceSubClass (vendor specific) + .db 0xFF ; bInterfaceProtocol (vendor specific) + .db SI_PRODUCT ; iInterface (description) + + ;; endpoint descriptor (jtag response) + + .db DSCR_ENDPNT_LEN + .db DSCR_ENDPNT + .db 0x81 ; bEndpointAddress (EP 1 IN) + .db ET_BULK ; bmAttributes + .db <512 ; wMaxPacketSize (LSB) !! use only 64 byte + .db >512 ; wMaxPacketSize (MSB) !! use only 64 byte + .db 0 ; bInterval (iso only) + + ;; endpoint descriptor (jtag request) + + .db DSCR_ENDPNT_LEN + .db DSCR_ENDPNT + .db 0x02 ; bEndpointAddress (EP 2 OUT) + .db ET_BULK ; bmAttributes + .db <512 ; wMaxPacketSize (LSB) !! use only 64 byte + .db >512 ; wMaxPacketSize (MSB) !! use only 64 byte + .db 0 ; bInterval (iso only) + +#if defined(USE_2FIFO) || defined(USE_3FIFO) + + ;; endpoint descriptor (RXFIFO HOST->FPGA) + + .db DSCR_ENDPNT_LEN + .db DSCR_ENDPNT + .db 0x04 ; bEndpointAddress (EP 4 OUT) + .db ET_BULK ; bmAttributes + .db <512 ; wMaxPacketSize (LSB) + .db >512 ; wMaxPacketSize (MSB) + .db 0 ; bInterval (iso only) + + ;; endpoint descriptor (TXFIFO FPGA->HOST) + + .db DSCR_ENDPNT_LEN + .db DSCR_ENDPNT + .db 0x86 ; bEndpointAddress (EP 6 IN) + .db ET_BULK ; bmAttributes + .db <512 ; wMaxPacketSize (LSB) + .db >512 ; wMaxPacketSize (MSB) + .db 0 ; bInterval (iso only) + +#endif + +#if defined(USE_3FIFO) + + ;; endpoint descriptor (extra FIFO FPGA->HOST) + + .db DSCR_ENDPNT_LEN + .db DSCR_ENDPNT + .db 0x88 ; bEndpointAddress (EP 8 IN) + .db ET_BULK ; bmAttributes + .db <512 ; wMaxPacketSize (LSB) + .db >512 ; wMaxPacketSize (MSB) + .db 0 ; bInterval (iso only) + +#endif + +_high_speed_config_descr_end: + +;;; ---------------------------------------------------------------- +;;; descriptors used when operating at full speed (12Mbps) +;;; no data fifo endpoints defined, if we are in full speed mode this will be no +;;; fun anyway. Shouldn't happen anyway, unless stone age USB hubs interfere... +;;; ---------------------------------------------------------------- + + .even +_full_speed_device_descr:: + .db DSCR_DEVICE_LEN + .db DSCR_DEVICE + .db USB_VER ; Specification version (MSB) + .db 0x00 ; device class (vendor specific) + .db 0x00 ; device subclass (vendor specific) + .db 0x00 ; device protocol (vendor specific) + .db 64 ; bMaxPacketSize0 for endpoint 0 + .db VID ; idVendor + .db PID ; idProduct + .db VERSION ; bcdDevice + .db SI_VENDOR ; iManufacturer (string index) + .db SI_PRODUCT ; iProduct (string index) + .db SI_SERIAL ; iSerial number (string index) + .db 1 ; bNumConfigurations + +;;; describes the other speed (480Mbps) + .even +_full_speed_devqual_descr:: + .db DSCR_DEVQUAL_LEN + .db DSCR_DEVQUAL + .db USB_VER ; bcdUSB + .db 0xFF ; bDeviceClass + .db 0xFF ; bDeviceSubClass + .db 0xFF ; bDeviceProtocol + .db 64 ; bMaxPacketSize0 + .db 1 ; bNumConfigurations (one config at 480Mbps) + .db 0 ; bReserved + + .even +_full_speed_config_descr:: + .db DSCR_CONFIG_LEN + .db DSCR_CONFIG + .db <(_full_speed_config_descr_end - _full_speed_config_descr) + .db >(_full_speed_config_descr_end - _full_speed_config_descr) + .db 1 ; bNumInterfaces + .db 1 ; bConfigurationValue + .db 0 ; iConfiguration + .db USB_ATTR ; bmAttributes + .db MAX_POWER ; bMaxPower [Unit: 2 mA] + + ;; interface descriptor + + .db DSCR_INTRFC_LEN + .db DSCR_INTRFC + .db 0 ; bInterfaceNumber (zero based) + .db 0 ; bAlternateSetting + .db 2 ; bNumEndpoints + .db 0xFF ; bInterfaceClass (vendor specific) + .db 0xFF ; bInterfaceSubClass (vendor specific) + .db 0xFF ; bInterfaceProtocol (vendor specific) + .db SI_PRODUCT ; iInterface (description) + + ;; endpoint descriptor + + .db DSCR_ENDPNT_LEN + .db DSCR_ENDPNT + .db 0x81 ; bEndpointAddress (EP 1 IN) + .db ET_BULK ; bmAttributes + .db <64 ; wMaxPacketSize (LSB) + .db >64 ; wMaxPacketSize (MSB) + .db 0 ; bInterval (iso only) + + ;; endpoint descriptor + + .db DSCR_ENDPNT_LEN + .db DSCR_ENDPNT + .db 0x02 ; bEndpointAddress (EP 2 OUT) + .db ET_BULK ; bmAttributes + .db <64 ; wMaxPacketSize (LSB) + .db >64 ; wMaxPacketSize (MSB) + .db 0 ; bInterval (iso only) + +_full_speed_config_descr_end: + +;;; ---------------------------------------------------------------- +;;; string descriptors +;;; ---------------------------------------------------------------- + +_nstring_descriptors:: + .db (_string_descriptors_end - _string_descriptors) / 2 + +_string_descriptors:: + .db str0 + .db str1 + .db str2 + .db str3 +_string_descriptors_end: + + SI_NONE = 0 + ;; str0 contains the language ID's. + .even +_str0:: +str0: .db str0_end - str0 + .db DSCR_STRING + .db 0 + .db 0 + .db <0x0409 ; magic code for US English (LSB) + .db >0x0409 ; magic code for US English (MSB) +str0_end: + + SI_VENDOR = 1 + .even +_str1:: +str1: .db str1_end - str1 + .db DSCR_STRING + .db 'w, 0 ; 16-bit unicode + .db 'w, 0 + .db 'w, 0 + .db '., 0 + .db 'r, 0 + .db 'e, 0 + .db 't, 0 + .db 'r, 0 + .db 'o, 0 + .db '1, 0 + .db '1, 0 + .db '., 0 + .db 'd, 0 + .db 'e, 0 +str1_end: + + SI_PRODUCT = 2 + .even +_str2:: +str2: .db str2_end - str2 + .db DSCR_STRING +#if defined(USE_NEXYS2) + .db 'n, 0 + .db 'e, 0 + .db 'x, 0 + .db 'y, 0 + .db 's, 0 + .db '2, 0 + .db '_, 0 +#endif +#if defined(USE_NEXYS3) + .db 'n, 0 + .db 'e, 0 + .db 'x, 0 + .db 'y, 0 + .db 's, 0 + .db '3, 0 + .db '_, 0 +#endif + .db 'j, 0 + .db 't, 0 + .db 'a, 0 + .db 'g, 0 +#if defined(USE_2FIFO) + .db '_, 0 + .db '2, 0 + .db 'f, 0 + .db 'i, 0 + .db 'f, 0 + .db 'o, 0 +#endif +#if defined(USE_3FIFO) + .db '_, 0 + .db '3, 0 + .db 'f, 0 + .db 'i, 0 + .db 'f, 0 + .db 'o, 0 +#endif +#if defined(USE_AS) + .db '_, 0 + .db 'a, 0 + .db 's, 0 +#endif +#if defined(USE_IC) + .db '_, 0 + .db 'i, 0 + .db 'c, 0 +#endif +str2_end: + + SI_SERIAL = 3 + .even +_str3:: +str3: .db str3_end - str3 + .db DSCR_STRING + .db '0, 0 + .db '0, 0 + .db '0, 0 + .db '0, 0 + .db '0, 0 + .db '0, 0 + .db '0, 0 + .db '0, 0 +str3_end: Index: src/vectors.a51 =================================================================== --- src/vectors.a51 (nonexistent) +++ src/vectors.a51 (revision 26) @@ -0,0 +1,177 @@ +;;; -*- asm -*- +;;; $Id: vectors.a51 395 2011-07-17 22:02:55Z mueller $ +;;; +;;;----------------------------------------------------------------------------- +;;; Interrupt vectors +;;;----------------------------------------------------------------------------- +;;; Code taken from USRP2 firmware (GNU Radio Project), version 3.0.2, +;;; Copyright 2003 Free Software Foundation, Inc. +;;;----------------------------------------------------------------------------- +;;; This code is part of usbjtag. usbjtag is free software; you can redistribute +;;; it and/or modify it under the terms of the GNU General Public License as +;;; published by the Free Software Foundation; either version 2 of the License, +;;; or (at your option) any later version. usbjtag is distributed in the hope +;;; that it will be useful, but WITHOUT ANY WARRANTY; without even the implied +;;; warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. You should have received a +;;; copy of the GNU General Public License along with this program in the file +;;; COPYING; if not, write to the Free Software Foundation, Inc., 51 Franklin +;;; St, Fifth Floor, Boston, MA 02110-1301 USA +;;;----------------------------------------------------------------------------- + +;;; N.B. This object module must come first in the list of modules + + .module vectors + +;;; ---------------------------------------------------------------- +;;; standard FX2 interrupt vectors +;;; ---------------------------------------------------------------- + + .area CSEG (CODE) + .area GSINIT (CODE) + .area CSEG (CODE) +__standard_interrupt_vector:: +__reset_vector:: + ljmp s_GSINIT + + ;; 13 8-byte entries. We point them all at __isr_nop + ljmp __isr_nop ; 3 bytes + .ds 5 ; + 5 = 8 bytes for vector slot + ljmp __isr_nop + .ds 5 + ljmp __isr_nop + .ds 5 + ljmp __isr_nop + .ds 5 + ljmp __isr_nop + .ds 5 + ljmp __isr_nop + .ds 5 + ljmp __isr_nop + .ds 5 + ljmp __isr_nop + .ds 5 + ljmp __isr_nop + .ds 5 + ljmp __isr_nop + .ds 5 + ljmp __isr_nop + .ds 5 + ljmp __isr_nop + .ds 5 + ljmp __isr_nop + .ds 5 + +__isr_nop:: + reti + +;;; ---------------------------------------------------------------- +;;; the FIFO/GPIF autovector. 14 4-byte entries. +;;; must start on a 128 byte boundary. +;;; ---------------------------------------------------------------- + + . = __reset_vector + 0x0080 + +__fifo_gpif_autovector:: + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + + +;;; ---------------------------------------------------------------- +;;; the USB autovector. 32 4-byte entries. +;;; must start on a 256 byte boundary. +;;; ---------------------------------------------------------------- + + . = __reset_vector + 0x0100 + +__usb_autovector:: + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop + ljmp __isr_nop + nop Index: src/README.txt =================================================================== --- src/README.txt (nonexistent) +++ src/README.txt (revision 26) @@ -0,0 +1,25 @@ +# $Id: README.txt 395 2011-07-17 22:02:55Z mueller $ +# + +The FX2 software is based on the Sourceforge project ixo-jtag + + http://sourceforge.net/projects/ixo-jtag/ + +The usb_jtag sub project was checked out on 2011-07-17 (Rev 204) +from Sourceforge and take as the basis for the further developement. +The original README.txt is preserved under README_iso_jtag.txt. +Only the hw_nexys.c branch is kept on the import. + +Change log: + +2011-07-17 (Rev 395) + - Makefile: reorganized to support multiple target/fifo configs + - renames: + dscr.a51->dscr_jtag.a51 + hw_nexys.c->hw_nexys2.c + usbjtag.c->main.c + - dscr_jtag.a51 + - Use USB 2.0; New string values + - use 512 byte for all high speed endpoints + - dscr_jtag_2fifo.a51 + - dscr with EP4 as HOST->FPGA and EP6 as FPGA->HOST hardware fifo Index: src/Makefile =================================================================== --- src/Makefile (nonexistent) +++ src/Makefile (revision 26) @@ -0,0 +1,219 @@ +# $Id: Makefile 461 2012-04-09 21:17:54Z mueller $ +# +# Copyright 2011-2012 by Walter F.J. Mueller +# Code was forked from ixo-jtag.svn.sourceforge.net on 2011-07-17 +# +# - original copyright and licence disclaimer -------------------------------- +# - Copyright 2007 Kolja Waschk, ixo.de +# - This code is part of usbjtag. usbjtag is free software; +#----------------------------------------------------------------------------- +# +# This program is free software; you may redistribute and/or modify it under +# the terms of the GNU General Public License as published by the Free +# Software Foundation, either version 2, or at your option any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY +# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# for complete details. +#----------------------------------------------------------------------------- +# +# Makefile for FX2 Firmware on Digilent Nexys2, Nexys3, and Atlys boards +# +# Revision History: +# Date Rev Version Comment +# 2012-04-09 461 1.5.1 fixed nexys3_jtag_3fifo_ic.ihx rule,used _2fifo code +# 2012-02-11 457 1.5 re-organize VID/PID and descriptor handling +# 2012-01-02 448 1.4 add support for sync fifo w/ int. clock (_ic) +# 2011-12-29 446 1.3 add nexys3 support +# 2011-07-23 397 1.2 add usb_fifo_init.c +# 2011-07-17 395 1.1 reorganized to support multiple target/fifo configs +# 2011-07-17 394 1.0 Initial version (from ixo-jtag/usb_jtag Rev 204) +#----------------------------------------------------------------------------- +# +# handle USB VID/PID +# - normaly given via the environment variables (as 4 digit hex number) +# RETRO_FX2_VID +# RETRO_FX2_PID +# +# - in the retro11 project the default is: +# VID: 16c0 (VOTI) +# PID: 03ef (VOTI free for internal lab use 1007) +# +# !! Important Note on Usage of this USB VID/PID !! +# This VID/PID is owned by VOTI, a small dutch company. Usage is granted +# for 'internal lab use only' by VOTI under the conditions: +# - the gadgets in which you use those PIDs do not leave your desk +# - you won't complain to VOTI if you get in trouble with duplicate PIDs +# (for instance because someone else did not follow the previous rule). +# See also http://www.voti.nl/pids/pidfaq.html +# +ifndef RETRO_FX2_VID +RETRO_FX2_VID = 16c0 +endif +ifndef RETRO_FX2_PID +RETRO_FX2_PID = 03ef +endif +# +DEFVIDPID=-DUSE_VID=0x${RETRO_FX2_VID} -DUSE_PID=0x${RETRO_FX2_PID} +# +# compiler and assembler flags +# +LIBDIR=lib +LIB=libfx2.lib + +CC=sdcc +CFLAGS+=-mmcs51 --no-xinit-opt -I${LIBDIR} + +AS=asx8051 +ASFLAGS+=-plosgff + +LDFLAGS=--code-loc 0x0000 --code-size 0x1800 +LDFLAGS+=--xram-loc 0x1800 --xram-size 0x0800 +LDFLAGS+=-Wl '-b USBDESCSEG = 0xE100' +LDFLAGS+=-L ${LIBDIR} +# +# compile rules +# +%.rel : %.a51 + $(AS) $(ASFLAGS) $< + +%.rel : %.c + $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@ +# +# link rule +# +%.ihx : + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $+ +# +# primary target rules +# +ALLIHX =nexys2_jtag.ihx +ALLIHX +=nexys2_jtag_2fifo_as.ihx +ALLIHX +=nexys2_jtag_3fifo_as.ihx +ALLIHX +=nexys2_jtag_2fifo_ic.ihx +ALLIHX +=nexys2_jtag_3fifo_ic.ihx +ALLIHX +=nexys3_jtag.ihx +ALLIHX +=nexys3_jtag_2fifo_as.ihx +ALLIHX +=nexys3_jtag_3fifo_as.ihx +ALLIHX +=nexys3_jtag_2fifo_ic.ihx +ALLIHX +=nexys3_jtag_3fifo_ic.ihx + +.PHONY: all install + +all: $(ALLIHX) + +install: $(ALLIHX) + cp -p $(ALLIHX) ../bin +# +# rules to create USB descriptor sources +# +CPPA51=cpp -P -x assembler-with-cpp + +dscr_nexys2_jtag.a51 : dscr_gen.A51 + $(CPPA51) $(DEFVIDPID) -DUSE_NEXYS2 $< > $@ +dscr_nexys2_jtag_2fifo_as.a51 : dscr_gen.A51 + $(CPPA51) $(DEFVIDPID) -DUSE_NEXYS2 -DUSE_2FIFO -DUSE_AS $< > $@ +dscr_nexys2_jtag_3fifo_as.a51 : dscr_gen.A51 + $(CPPA51) $(DEFVIDPID) -DUSE_NEXYS2 -DUSE_3FIFO -DUSE_AS $< > $@ +dscr_nexys2_jtag_2fifo_ic.a51 : dscr_gen.A51 + $(CPPA51) $(DEFVIDPID) -DUSE_NEXYS2 -DUSE_2FIFO -DUSE_IC $< > $@ +dscr_nexys2_jtag_3fifo_ic.a51 : dscr_gen.A51 + $(CPPA51) $(DEFVIDPID) -DUSE_NEXYS2 -DUSE_3FIFO -DUSE_IC $< > $@ + +dscr_nexys3_jtag.a51 : dscr_gen.A51 + $(CPPA51) $(DEFVIDPID) -DUSE_NEXYS3 $< > $@ +dscr_nexys3_jtag_2fifo_as.a51 : dscr_gen.A51 + $(CPPA51) $(DEFVIDPID) -DUSE_NEXYS3 -DUSE_2FIFO -DUSE_AS $< > $@ +dscr_nexys3_jtag_3fifo_as.a51 : dscr_gen.A51 + $(CPPA51) $(DEFVIDPID) -DUSE_NEXYS3 -DUSE_3FIFO -DUSE_AS $< > $@ +dscr_nexys3_jtag_2fifo_ic.a51 : dscr_gen.A51 + $(CPPA51) $(DEFVIDPID) -DUSE_NEXYS3 -DUSE_2FIFO -DUSE_IC $< > $@ +dscr_nexys3_jtag_3fifo_ic.a51 : dscr_gen.A51 + $(CPPA51) $(DEFVIDPID) -DUSE_NEXYS3 -DUSE_3FIFO -DUSE_IC $< > $@ +# +# rules to create usb_fifo_init variants +# +usb_fifo_init_jtag.rel : usb_fifo_init.c + $(CC) -c $(CFLAGS) $< -o $@ +# +usb_fifo_init_jtag_2fifo_as.rel : usb_fifo_init.c + $(CC) -c $(CFLAGS) -DUSE_2FIFO $< -o $@ +usb_fifo_init_jtag_3fifo_as.rel : usb_fifo_init.c + $(CC) -c $(CFLAGS) -DUSE_3FIFO $< -o $@ +# +usb_fifo_init_jtag_2fifo_ic.rel : usb_fifo_init.c + $(CC) -c $(CFLAGS) -DUSE_2FIFO -DUSE_IC30 $< -o $@ +usb_fifo_init_jtag_3fifo_ic.rel : usb_fifo_init.c + $(CC) -c $(CFLAGS) -DUSE_3FIFO -DUSE_IC30 $< -o $@ +# +COM_REL=vectors.rel main.rel eeprom.rel startup.rel +# +I0_REL=usb_fifo_init_jtag.rel +# +IAS2_REL=usb_fifo_init_jtag_2fifo_as.rel +IAS3_REL=usb_fifo_init_jtag_3fifo_as.rel +# +IIC2_REL=usb_fifo_init_jtag_2fifo_ic.rel +IIC3_REL=usb_fifo_init_jtag_3fifo_ic.rel +# +N2_REL=hw_nexys2.rel +N3_REL=hw_nexys3.rel +# +LIB_REL=$(LIBDIR)/$(LIB) +# +# rules to compile all code +# +$(LIBDIR)/$(LIB) : + make -C $(LIBDIR) + +eeprom.rel : eeprom.c eeprom.h +main.rel : main.c hardware.h eeprom.h + +$(N2_REL) : hw_nexys2.c hardware.h +$(N3_REL) : hw_nexys3.c hardware.h + +# +# rules to build Nexys2 firmware images +# +nexys2_jtag.ihx : $(COM_REL) dscr_nexys2_jtag.rel \ + $(N2_REL) $(I0_REL) $(LIB_REL) +# +nexys2_jtag_2fifo_as.ihx : $(COM_REL) dscr_nexys2_jtag_2fifo_as.rel \ + $(N2_REL) $(IAS2_REL) $(LIB_REL) +nexys2_jtag_3fifo_as.ihx : $(COM_REL) dscr_nexys2_jtag_3fifo_as.rel \ + $(N2_REL) $(IAS3_REL) $(LIB_REL) +# +nexys2_jtag_2fifo_ic.ihx : $(COM_REL) dscr_nexys2_jtag_2fifo_ic.rel \ + $(N2_REL) $(IIC2_REL) $(LIB_REL) +nexys2_jtag_3fifo_ic.ihx : $(COM_REL) dscr_nexys2_jtag_3fifo_ic.rel \ + $(N2_REL) $(IIC3_REL) $(LIB_REL) +# +# rules to build Nexys3 firmware images +# +nexys3_jtag.ihx : $(COM_REL) dscr_nexys3_jtag.rel \ + $(N3_REL) $(I0_REL) $(LIB_REL) +# +nexys3_jtag_2fifo_as.ihx : $(COM_REL) dscr_nexys3_jtag_2fifo_as.rel \ + $(N3_REL) $(IAS2_REL) $(LIB_REL) +nexys3_jtag_3fifo_as.ihx : $(COM_REL) dscr_nexys3_jtag_3fifo_as.rel \ + $(N3_REL) $(IAS3_REL) $(LIB_REL) +# +nexys3_jtag_2fifo_ic.ihx : $(COM_REL) dscr_nexys3_jtag_2fifo_ic.rel \ + $(N3_REL) $(IIC2_REL) $(LIB_REL) +nexys3_jtag_3fifo_ic.ihx : $(COM_REL) dscr_nexys3_jtag_3fifo_ic.rel \ + $(N3_REL) $(IIC3_REL) $(LIB_REL) +# +# cleanup phony's +# +.PHONY : clean distclean + +clean : + make -C ${LIBDIR} clean + rm -f *.lst *.asm *.lib *.sym *.rel *.mem *.map *.rst *.lnk + rm -f dscr_*.a51 + +distclean : clean + rm -f *.ihx + + Index: src/eeprom.h =================================================================== --- src/eeprom.h (nonexistent) +++ src/eeprom.h (revision 26) @@ -0,0 +1,27 @@ +/* $Id: eeprom.h 395 2011-07-17 22:02:55Z mueller $ */ +/*----------------------------------------------------------------------------- + * FTDI EEPROM emulation + *----------------------------------------------------------------------------- + * Copyright (C) 2007 Kolja Waschk, ixo.de + *----------------------------------------------------------------------------- + * This code is part of usbjtag. usbjtag is free software; you can redistribute + * it and/or modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the License, + * or (at your option) any later version. usbjtag is distributed in the hope + * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. You should have received a + * copy of the GNU General Public License along with this program in the file + * COPYING; if not, write to the Free Software Foundation, Inc., 51 Franklin + * St, Fifth Floor, Boston, MA 02110-1301 USA + *----------------------------------------------------------------------------- + */ + +#ifndef _EEPROM_H +#define _EEPROM_H 1 + +extern xdata unsigned char eeprom[128]; +extern void eeprom_init(void); + +#endif /* _EEPROM_H */ + Index: src/.cvsignore =================================================================== --- src/.cvsignore (nonexistent) +++ src/.cvsignore (revision 26) @@ -0,0 +1,10 @@ +*.asm +*.ihx +*.lnk +*.lst +*.map +*.mem +*.rel +*.rst +*.sym +dscr_*.a51 Index: src =================================================================== --- src (nonexistent) +++ src (revision 26)
src Property changes : Added: svn:ignore ## -0,0 +1,43 ## +*.dep_ghdl +*.dep_isim +*.dep_xst +work-obj93.cf +*.vcd +*.ghw +*.sav +*.tmp +*.exe +ise +xflow.his +*.ngc +*.ncd +*.pcf +*.bit +*.msk +isim +isim.log +isim.wdb +fuse.log +*_[sft]sim.vhd +*_tsim.sdf +*_xst.log +*_tra.log +*_twr.log +*_map.log +*_par.log +*_tsi.log +*_pad.log +*_bgn.log +*_svn.log +*_sum.log +*_[dsft]sim.log +*.asm +*.ihx +*.lnk +*.lst +*.map +*.mem +*.rel +*.rst +*.sym +dscr_*.a51 Index: bin/nexys2_jtag.ihx =================================================================== --- bin/nexys2_jtag.ihx (nonexistent) +++ bin/nexys2_jtag.ihx (revision 26) @@ -0,0 +1,437 @@ +:06000000020DB102006BCD +:03000B0002006B85 +:0300130002006B7D +:03001B0002006B75 +:0300230002006B6D +:03002B0002006B65 +:0300330002006B5D +:03003B0002006B55 +:0300430002006B4D +:03004B0002006B45 +:0300530002006B3D +:03005B0002006B35 +:0300630002006B2D +:01006B003262 +:0900800002006B0002006B00029B +:08008900006B0002006B000295 +:08009100006B0002006B00028D +:08009900006B0002006B000285 +:0800A100006B0002006B00027D +:0800A900006B0002006B000275 +:0700B100006B0002006B0070 +:0901000002006B0002006B00021A +:08010900006B0002006B000214 +:08011100006B0002006B00020C +:08011900006B0002006B000204 +:08012100006B0002006B0002FC +:08012900006B0002006B0002F4 +:08013100006B0002006B0002EC +:08013900006B0002006B0002E4 +:08014100006B0002006B0002DC +:08014900006B0002006B0002D4 +:08015100006B0002006B0002CC +:08015900006B0002006B0002C4 +:08016100006B0002006B0002BC +:08016900006B0002006B0002B4 +:08017100006B0002006B0002AC +:07017900006B0002006B00A7 +:030DB700020DBF6B +:030DD200020DBA55 +:050DBA001203F180FEB0 +:06018000C200E4F508F5E1 +:0401860009F50AD29B +:05018A0001750B00757A +:06018F000C001206001234 +:0E01950005FD75CB6375CAC0758E0075C80474 +:0701A300D2AFD2B0D2B122AD +:0B01AA00AA82850C827583E0EAF00554 +:0501B5000C0509E4B592 +:0401BA000902050A27 +:0101BE00221E +:0401BF0020000122F9 +:0E01C3001205FC90E6A2E0FA30E103020257BA +:0A01D100E509450A60687AC07BE783 +:0E01DB008B9D7AC07BE77B008A9E90E67C7449 +:0C01E90031F07460F0C3743E9509E49599 +:0A01F5000A50107A3EE50924C2F515 +:0601FF0009E50A34FFF5DA +:030205000A800765 +:06020800AA09E4F509F566 +:01020E000AE5 +:0B020F008A037C007DE08D9A850B9B2C +:0E021A008A041AEC601090E67BE090E67CF01F +:080228007C007DE08D9A80EA64 +:0C023000859B0B0090E68F74022BF0D22F +:03023C00CF801858 +:0E023F0030CF1590E7C07431F090E7C17460C5 +:0A024D00F00090E68F7402F0C2CFBB +:06025700E5AA30E00122DF +:0A025D00C3E50994C1E50A940040CE +:02026700012272 +:0E02690090E690E0FB7A0090E691E0FC7D00CC +:0A027700EA4CF50DEB4DF50E7C008E +:0E0281007DF08D9A7C007DF08C9B7C007D00D2 +:0A028F00C3EC950DED950E4003023F +:02029900036AF6 +:07029B00E5087003020326D1 +:0A02A200E50DC39CFEE50E9DFFA8CC +:0C02AC00087900C3E89EE99F5004880612 +:0202B8008907B4 +:0A02BA008E00E508C398F508EE2C4D +:0B02C400FCEF3DFD30012C8E008F018F +:0902CF008802890318B8FF011927 +:0E02D800EA4B60B390E67BE0F582C004C005FF +:0E02E600C000C001120637D001D000D005D0F4 +:0302F4000480D8AB +:0402F7008E028F03E1 +:0902FB008A068B071ABAFF011BE9 +:0E030400EE4F608790E67BE0F582C002C003FA +:0E031200C004C0051206741201AAD005D00462 +:06032000D003D00280D5DD +:0D03260090E67BE0FA23235401FBB40100B4 +:0A0333009201EA30E707743F5AF523 +:03033D0008802213 +:0C03400030010F8A82C004C00512060BB9 +:06034C00D005D004801072 +:0E0352008A82C004C0051206291201AAD00535 +:02036000D004C7 +:050362000CBC00010DC0 +:0303670002028F00 +:08036A000090E6917480F0227E +:0E03720090E6B8E0FA20E70C90E6B9E07002E1 +:02038000D200A9 +:04038200758201225D +:0E03860090E6B9E0FABA902B90E6BCE025E0D4 +:0A039400547FFA2400F582E43418C7 +:0C039E00F583E0FB90E740F0EA04240047 +:0C03AA00F582E43418F583E0FA90E74196 +:0303B600F0800CC8 +:0C03B90090E7407436F090E7417483F048 +:0D03C50090E68AE4F090E6BEE0FABA02008D +:0903D200500790E6BEE0FA80023B +:0203DB007A02A4 +:0903DD0090E68BEAF07582012222 +:0603E600300203120914AD +:0503EC001201BF80F5C5 +:0E03F100C2AF90E609E4F01201801206C312BA +:0603FF000455120CE4128B +:08040500087ED2AF12078D0240 +:02040D0003E604 +:0A040F00AA82E50F54FEFBB50F02B0 +:02041900802938 +:0A041B008A048C05E46210ED621102 +:0A042500EB2400F582E43418F5839F +:0A042F00E0FB7C006210EC6211E5B6 +:060439001033C51133C5AC +:05043F001192E0F51030 +:06044400AB0F050FEB24D5 +:0A044A0000F582E43418F583EAF0AF +:010454002285 +:07045500750F007510AA7578 +:0C045C0011AA75820012040F75820012B4 +:04046800040F7A0003 +:0C046C00C3EA648094865017EA2408F567 +:0C04780082E434E1F583E0F582C002125A +:07048400040FD0020A80E121 +:02048B007A00F5 +:0C048D00C3EA648094825017EA2423F52F +:0C04990082E434E1F583E0F582C0021239 +:0704A500040FD0020A80E100 +:0E04AC0075821C12040F75820012040F7A0074 +:0C04BA00C3EA648094825017EA2402F523 +:0C04C60082E434E1F583E0F582C002120C +:0704D200040FD0020A80E1D3 +:0C04D9007486250FFAF582C00212040F91 +:0C04E50090E188E0F58212040FD0029034 +:0D04F100E188E02AFAF582C00212040F90A3 +:0B04FE00E1A6E0F58212040FD002908E +:0A050900E1A6E02AF58212040F902B +:0A051300E1BEE0F58212040F7A0049 +:0E051D0090E188E0FBC3EA64808BF063F0801D +:0B052B0095F05017EA2488F582E434B4 +:0C053600E1F583E0F582C00212040FD052 +:04054200020A80D752 +:020546007A0039 +:0E05480090E1A6E0FBC3EA64808BF063F080D4 +:0B05560095F05017EA24A6F582E4346B +:0C056100E1F583E0F582C00212040FD027 +:04056D00020A80D727 +:020571007A000E +:0E05730090E1BEE0FBC3EA64808BF063F08091 +:0B05810095F05017EA24BEF582E43428 +:0C058C00E1F583E0F582C00212040FD0FC +:04059800020A80D7FC +:02059C007A00E3 +:0C059E00C3EA648094845017EA240EF530 +:0C05AA0082E434E1F583E0F582C0021227 +:0705B600040FD0020A80E1EE +:0C05BD007482250F400875820012040FA4 +:0205C90080F2BE +:0805CB00AA1090187EEAF0AAC4 +:0705D3001190187FEAF022ED +:0805DA007880E84400600C7910 +:0C05E20001901800E4F0A3D8FCD9FAD076 +:0E05EE0083D082F6D8FDC082C08375820022C1 +:02E1000012010A +:06E10200000200000040D5 +:06E10800C016EF03040045 +:04E10E000102030106 +:0AE112000A060002FFFFFF400100B3 +:07E11C0009022000010100CF +:0EE1230080FA0904000002FFFFFF02070581D9 +:0BE131000200020007050202000200CD +:0EE13C001201000200000040C016EF030400B4 +:04E14A0001020301CA +:0AE14E000A060002FFFFFF40010077 +:0EE158000902200001010080FA090400000203 +:0EE16600FFFFFF0207058102400000070502CF +:04E174000240000065 +:01E1780004A2 +:02E1790082E141 +:02E17B0088E139 +:02E17D00A6E119 +:02E17F00BEE1FF +:06E1820006030000090481 +:0EE188001E037700770077002E0072006500FE +:0EE19600740072006F00310031002E00640032 +:02E1A400650014 +:0EE1A60018036E0065007800790073003200E7 +:0AE1B4005F006A007400610067005C +:0EE1BE0012033000300030003000300030001E +:04E1CC0030003000EF +:0105FC0022DC +:0105FD0022DB +:0105FE0022DA +:0105FF0022D9 +:0B060000D2B775B5809001F4020DA088 +:0E060B00AA82ABB574FE5BF5F0741C45F0F5E9 +:0E061900B5EA1392B4EAA2E192B3EAA2E49227 +:02062700B222FD +:0E06290012060BA2B0E433FA74024AF58222E4 +:0E063700E5821392B2D2B413C2B492B2D2B41E +:0E06450013C2B492B2D2B413C2B492B2D2B401 +:0E06530013C2B492B2D2B413C2B492B2D2B4F3 +:0E06610013C2B492B2D2B413C2B492B2D2B4E5 +:05066F0000C2B42222CC +:0E067400E582A2B01392B2D2B4C2B4A2B01307 +:0E06820092B2D2B4C2B4A2B01392B2D2B4C239 +:0E069000B4A2B01392B2D2B4C2B4A2B013920C +:0E069E00B2D2B4C2B4A2B01392B2D2B4C2B4FB +:0E06AC00A2B01392B2D2B4C2B4A2B01392B2F2 +:0906BA00D2B400C2B4F582222280 +:0D06C30090E6007412F090E60174ABF09028 +:0E06D000E6707480F00090E60274E0F0009096 +:0E06DE00E60374F9F00090E6047480F00090DA +:0D06EC00E60B7403F00090E610E4F00090BF +:0D06F900E61174A0F00090E618E4F0009007 +:0E070600E6047402F00090E61274A2F0009077 +:0E071400E6137402F00090E6147402F00090F8 +:0E072200E6157402F00090E6047404F00090F6 +:0E073000E6047406F00090E6047408F00090F1 +:0E073E00E604E4F00090E619E4F00090E61AFC +:0E074C00E4F00090E61BE4F00090E60BE4F011 +:0E075A00000090E6917480F00090E6917480AB +:03076800F000227C +:08076B0090E6A0E04401F02239 +:0E077300AA8274805AC423541FFB740F5A903C +:0C078100E6834BF090E683E04420F02279 +:0E078D0090E680E0440AF09000FA120DA09071 +:0E079B00E65D74FFF090E65F74FFF05391EF9F +:0807A90090E680E054F7F02215 +:060DCC00E478FFF6D8FDFB +:060DB1007512007513002D +:0A07B10090E680E0FA30E7197514B5 +:0307BB00007515B1 +:0307BE00E17516CC +:0307C10012751797 +:0307C400E17518C4 +:0307C7001C751985 +:0307CA00E1751ABC +:0307CD0058751B41 +:0207D000E12224 +:0407D20075143C75E9 +:0307D60015E175B5 +:0307D900164E7544 +:0307DC0017E175AD +:0307DF0018587532 +:0307E20019E175A5 +:0307E5001A1C7566 +:0307E8001BE122F0 +:0907EB005391EF75A100D2023216 +:0C07F400C021C0E0C0F0C082C083C00281 +:0E080000C003C004C005C006C007C000C00190 +:0E080E00C0D075D0005391EF75A1001207B154 +:0E081C00D0D0D001D000D007D006D005D00437 +:0D082A00D003D002D083D082D0F0D0E0D037 +:0208370021326C +:0C083900C021C0E0C0F0C082C083C0023B +:0E084500C003C004C005C006C007C000C0014B +:0E085300C0D075D0005391EF75A1001207B10F +:0E086100D0D0D001D000D007D006D005D004F2 +:0D086F00D003D002D083D082D0F0D0E0D0F2 +:02087C00213227 +:05087E001207B1751C1A +:03088300EB751DF5 +:0808860007758200120C3D759C +:03088E001CF475E2 +:060891001D077582101224 +:040897000C3D751C83 +:03089B0039751D8F +:0C089E0008758214120C3D90E65C743169 +:0208AA00F0223A +:0D08AC00E582547FFA24F750047582002283 +:0708B900BA0104758201225F +:0808C000530201E4BA00010437 +:0308C800F5822294 +:0E08CB00AA82BA010C90E6A1E0FB7C008B82B1 +:0308D9008C8322EB +:0E08DC00BA810C90E6A2E0FB7C008B828C833C +:0108EA0022EB +:0E08EB0053027FEA700C90E6A0E0FB7C008BCD +:0408F900828C832248 +:0E08FD0090E6A3E0FB7C00EAC313FA7D00EA5C +:09090B002BFBED3C8B82F58322ED +:0C091400C20290E6B8E0FA530260BA009C +:030920000280282A +:05092300BA2002800D66 +:05092800BA4002800E40 +:05092D00BA6002800326 +:03093200020BD2E3 +:0609350012076B020BD259 +:0A093B00120372E5826003020BD282 +:0609450012076B020BD249 +:0D094B0090E6B8E0FA530280BA8002800303 +:03095800020AD3BD +:0B095B0090E6B9E0FABA0003020A4C73 +:05096600BA0602803515 +:05096B00BA080280083B +:05097000BA0A02801725 +:03097500020ACDA6 +:0C09780090E740E512F090E68AE4F09071 +:08098400E68B7401F0020BD2B6 +:0C098C0090E740E513F090E68AE4F0905C +:08099800E68B7401F0020BD2A2 +:0A09A00090E6BBE0FABA01028017EE +:0509AA00BA02028038D2 +:0509AF00BA03028059AB +:0509B400BA0602801BE1 +:0509B900BA0702803CBA +:0309BE00020A46E4 +:0A09C100AA14AB1590E6B3EBF07B2F +:0909CB000090E6B4EAF0020BD240 +:0A09D400AA16AB1790E6B3EBF07B18 +:0909DE000090E6B4EAF0020BD22D +:0A09E700AA18AB1990E6B3EBF07B01 +:0909F1000090E6B4EAF0020BD21A +:0A09FA00AA1AAB1B90E6B3EBF07BEA +:090A04000090E6B4EAF0020BD206 +:0E0A0D0090E6BAE0FA90E178E0FBC3EA9B4085 +:070A1B000612076B020BD26B +:0C0A220090E6BAE075F002A42479F58299 +:0B0A2E0074E135F0F583E0FAA3E090DE +:0D0A3900E6B3F07B0090E6B4EAF0020BD2C9 +:060A460012076B020BD247 +:0D0A4C0090E6B8E0FA53021FBA0002800ADB +:050A5900BA0102801B40 +:050A5E00BA0266802CC5 +:0E0A630090E740E4F090E741F090E68AF090D2 +:080A7100E68B7402F0020BD2C7 +:0E0A790090E740E4F090E741F090E68AF090BC +:080A8700E68B7402F0020BD2B1 +:0E0A8F0090E6BCE0F5821208ACE5826025908E +:0E0A9D00E6BCE0F5821208CBE0FA53020190AD +:0E0AAB00E740EAF090E741E4F090E68AF09030 +:080AB900E68B7402F0020BD27F +:060AC10012076B020BD2CC +:060AC70012076B020BD2C6 +:060ACD0012076B020BD2C0 +:0C0AD30090E6B9E0FA24F45003020BCFC7 +:070ADF00EA2A2A900AE673DF +:070AE600020BCF020B1C0202 +:060AED000B97020B7802DA +:060AF3000BCF020BCF0245 +:060AF9000BCF020BCF023F +:060AFF000BCF020B0A02FE +:050B05000BCF020B13F1 +:090B0A0090E6BAE0F512020BD2EC +:090B130090E6BAE0F513020BD2E2 +:0D0B1C0090E6B8E0FA53021FBA000280050F +:050B2900BA0247800A3A +:0A0B2E0090E6BAE012076B020BD24A +:0D0B380090E6BAE0703090E6BCE0F5821265 +:0D0B450008ACE582602390E6BCE0F582126A +:0E0B520008CBAA82AB83E0FC5304FE8A828BA0 +:0E0B600083ECF090E6BCE0F58212077380642F +:050B6E0012076B805F1F +:050B730012076B805A1F +:0E0B780090E6B8E0FA53021FBA004F90E6BABA +:070B8600E0FABA010280054C +:050B8D00BA02028040E5 +:050B920012076B803B1F +:0E0B970090E6BAE0FA702C90E6BCE0F582120F +:0D0BA50008ACE582601A90E6BCE0F5821213 +:0E0BB20008CBAA82AB83E0FC4304018A828B4D +:050BC00083ECF0800D44 +:050BC50012076B80081F +:050BCA0012076B80031F +:030BCF0012076B9F +:080BD20090E6A0E04480F0224F +:050BDA00AA82BA03002D +:070BDF004005EA249C5001CF +:010BE60022EC +:090BE700740F5AFBBB03028007E6 +:070BF000740F5AFBBB0B451B +:0A0BF700A2AF9203C2AFEA2400F59A +:0C0C010082E43400F5837402F07B007480 +:0C0C0D00012AFCE43BFDEC2400F582ED24 +:0A0C19003400F583E51DFCF07402C1 +:0C0C23002AFAE43BFBEA2400F582EB34E3 +:0A0C2F0000F583AA1C7B00EAF0A286 +:030C39000392AF74 +:010C3C002295 +:080C3D00E582FA248350012234 +:060C4500EA5403600122E5 +:0A0C4B00A2AF9204C2AFEA2400F544 +:0C0C550082E43401F5837402F07B00742B +:0C0C6100012AFCE43BFDEC2400F582EDD0 +:0A0C6D003401F583E51DF074022A3E +:0B0C7700FAE43BFBEA2400F582EB34BA +:080C820001F583AA1CEAF0A2AF +:040C8A000492AF22FF +:050C8E00AA82BA8000FB +:070C93004005EA244B50016B +:010C9A002237 +:060C9B00EA54036001228F +:0A0CA100A2AF9205C2AFEA2480F56D +:0C0CAB0082E43400F5837402F07B0074D6 +:0C0CB700012AFCE43BFDEC2480F582EDFA +:0A0CC3003400F583E51DF074022AE9 +:0B0CCD00FAE43BFBEA2480F582EB34E4 +:080CD80000F583AA1CEAF0A25A +:040CE0000592AF22A8 +:080CE400C2E8C2EA751C0075AC +:060CEC001D017582431298 +:040CF2000BDA751C88 +:030CF60080751DE9 +:0C0CF90000758253120BDA0090E650E404 +:0E0D0500F00090E652E4F00090E654E4F000B6 +:0E0D130090E656E4F00090E65174FFF0009078 +:0E0D2100E65374FFF00090E65574FFF000906A +:0E0D2F00E65774FFF00090E658E4F090E659A5 +:0E0D3D0074FFF090E65AE4F090E65B74FFF06D +:0E0D4B0090E65CE4F090E65D74FFF090E65EEA +:0E0D5900E4F090E65F74FFF00090E660E4F0D6 +:0D0D67000090E66174FFF090E662E4F09009 +:0E0D7400E66374FFF090E665E4F090E66874C4 +:0A0D82000BF05391AFD2E8D2EA2241 +:010D8C002244 +:020D8D00AA8238 +:060D8F00120D8CDAFB22BC +:030D950090FB5080 +:080D9800A3E582458370F922F6 +:040DA000AA82AB83F5 +:080DA400120D951ABAFF011BA4 +:050DAC00EA4B70F42287 +:030DBF007581211A +:0A0DC2001205DAE5826003020DBAA3 +:00000001FF Index: bin/nexys2_jtag_2fifo_ic.ihx =================================================================== --- bin/nexys2_jtag_2fifo_ic.ihx (nonexistent) +++ bin/nexys2_jtag_2fifo_ic.ihx (revision 26) @@ -0,0 +1,443 @@ +:06000000020DF002006B8E +:03000B0002006B85 +:0300130002006B7D +:03001B0002006B75 +:0300230002006B6D +:03002B0002006B65 +:0300330002006B5D +:03003B0002006B55 +:0300430002006B4D +:03004B0002006B45 +:0300530002006B3D +:03005B0002006B35 +:0300630002006B2D +:01006B003262 +:0900800002006B0002006B00029B +:08008900006B0002006B000295 +:08009100006B0002006B00028D +:08009900006B0002006B000285 +:0800A100006B0002006B00027D +:0800A900006B0002006B000275 +:0700B100006B0002006B0070 +:0901000002006B0002006B00021A +:08010900006B0002006B000214 +:08011100006B0002006B00020C +:08011900006B0002006B000204 +:08012100006B0002006B0002FC +:08012900006B0002006B0002F4 +:08013100006B0002006B0002EC +:08013900006B0002006B0002E4 +:08014100006B0002006B0002DC +:08014900006B0002006B0002D4 +:08015100006B0002006B0002CC +:08015900006B0002006B0002C4 +:08016100006B0002006B0002BC +:08016900006B0002006B0002B4 +:08017100006B0002006B0002AC +:07017900006B0002006B00A7 +:030DF600020DFEED +:030E1100020DF9D6 +:050DF9001203F180FE71 +:06018000C200E4F508F5E1 +:0401860009F50AD29B +:05018A0001750B00757A +:06018F000C001206001234 +:0E01950005FD75CB6375CAC0758E0075C80474 +:0701A300D2AFD2B0D2B122AD +:0B01AA00AA82850C827583E0EAF00554 +:0501B5000C0509E4B592 +:0401BA000902050A27 +:0101BE00221E +:0401BF0020000122F9 +:0E01C3001205FC90E6A2E0FA30E103020257BA +:0A01D100E509450A60687AC07BE783 +:0E01DB008B9D7AC07BE77B008A9E90E67C7449 +:0C01E90031F07460F0C3743E9509E49599 +:0A01F5000A50107A3EE50924C2F515 +:0601FF0009E50A34FFF5DA +:030205000A800765 +:06020800AA09E4F509F566 +:01020E000AE5 +:0B020F008A037C007DE08D9A850B9B2C +:0E021A008A041AEC601090E67BE090E67CF01F +:080228007C007DE08D9A80EA64 +:0C023000859B0B0090E68F74022BF0D22F +:03023C00CF801858 +:0E023F0030CF1590E7C07431F090E7C17460C5 +:0A024D00F00090E68F7402F0C2CFBB +:06025700E5AA30E00122DF +:0A025D00C3E50994C1E50A940040CE +:02026700012272 +:0E02690090E690E0FB7A0090E691E0FC7D00CC +:0A027700EA4CF50DEB4DF50E7C008E +:0E0281007DF08D9A7C007DF08C9B7C007D00D2 +:0A028F00C3EC950DED950E4003023F +:02029900036AF6 +:07029B00E5087003020326D1 +:0A02A200E50DC39CFEE50E9DFFA8CC +:0C02AC00087900C3E89EE99F5004880612 +:0202B8008907B4 +:0A02BA008E00E508C398F508EE2C4D +:0B02C400FCEF3DFD30012C8E008F018F +:0902CF008802890318B8FF011927 +:0E02D800EA4B60B390E67BE0F582C004C005FF +:0E02E600C000C001120637D001D000D005D0F4 +:0302F4000480D8AB +:0402F7008E028F03E1 +:0902FB008A068B071ABAFF011BE9 +:0E030400EE4F608790E67BE0F582C002C003FA +:0E031200C004C0051206741201AAD005D00462 +:06032000D003D00280D5DD +:0D03260090E67BE0FA23235401FBB40100B4 +:0A0333009201EA30E707743F5AF523 +:03033D0008802213 +:0C03400030010F8A82C004C00512060BB9 +:06034C00D005D004801072 +:0E0352008A82C004C0051206291201AAD00535 +:02036000D004C7 +:050362000CBC00010DC0 +:0303670002028F00 +:08036A000090E6917480F0227E +:0E03720090E6B8E0FA20E70C90E6B9E07002E1 +:02038000D200A9 +:04038200758201225D +:0E03860090E6B9E0FABA902B90E6BCE025E0D4 +:0A039400547FFA2400F582E43418C7 +:0C039E00F583E0FB90E740F0EA04240047 +:0C03AA00F582E43418F583E0FA90E74196 +:0303B600F0800CC8 +:0C03B90090E7407436F090E7417483F048 +:0D03C50090E68AE4F090E6BEE0FABA02008D +:0903D200500790E6BEE0FA80023B +:0203DB007A02A4 +:0903DD0090E68BEAF07582012222 +:0603E6003002031209536E +:0503EC001201BF80F5C5 +:0E03F100C2AF90E609E4F01201801206C312BA +:0603FF000455120D23124B +:0804050008BDD2AF1207CC02C2 +:02040D0003E604 +:0A040F00AA82E50F54FEFBB50F02B0 +:02041900802938 +:0A041B008A048C05E46210ED621102 +:0A042500EB2400F582E43418F5839F +:0A042F00E0FB7C006210EC6211E5B6 +:060439001033C51133C5AC +:05043F001192E0F51030 +:06044400AB0F050FEB24D5 +:0A044A0000F582E43418F583EAF0AF +:010454002285 +:07045500750F007510AA7578 +:0C045C0011AA75820012040F75820012B4 +:04046800040F7A0003 +:0C046C00C3EA648094865017EA2408F567 +:0C04780082E434E1F583E0F582C002125A +:07048400040FD0020A80E121 +:02048B007A00F5 +:0C048D00C3EA648094825017EA2423F52F +:0C04990082E434E1F583E0F582C0021239 +:0704A500040FD0020A80E100 +:0E04AC0075821C12040F75820012040F7A0074 +:0C04BA00C3EA648094825017EA2402F523 +:0C04C60082E434E1F583E0F582C002120C +:0704D200040FD0020A80E1D3 +:0C04D9007486250FFAF582C00212040F91 +:0C04E50090E196E0F58212040FD0029026 +:0D04F100E196E02AFAF582C00212040F9095 +:0B04FE00E1B4E0F58212040FD0029080 +:0A050900E1B4E02AF58212040F901D +:0A051300E1DEE0F58212040F7A0029 +:0E051D0090E196E0FBC3EA64808BF063F0800F +:0B052B0095F05017EA2496F582E434A6 +:0C053600E1F583E0F582C00212040FD052 +:04054200020A80D752 +:020546007A0039 +:0E05480090E1B4E0FBC3EA64808BF063F080C6 +:0B05560095F05017EA24B4F582E4345D +:0C056100E1F583E0F582C00212040FD027 +:04056D00020A80D727 +:020571007A000E +:0E05730090E1DEE0FBC3EA64808BF063F08071 +:0B05810095F05017EA24DEF582E43408 +:0C058C00E1F583E0F582C00212040FD0FC +:04059800020A80D7FC +:02059C007A00E3 +:0C059E00C3EA648094845017EA240EF530 +:0C05AA0082E434E1F583E0F582C0021227 +:0705B600040FD0020A80E1EE +:0C05BD007482250F400875820012040FA4 +:0205C90080F2BE +:0805CB00AA1090187EEAF0AAC4 +:0705D3001190187FEAF022ED +:0805DA007880E84400600C7910 +:0C05E20001901800E4F0A3D8FCD9FAD076 +:0E05EE0083D082F6D8FDC082C08375820022C1 +:02E1000012010A +:06E10200000200000040D5 +:06E10800C016EF03040045 +:04E10E000102030106 +:0AE112000A060002FFFFFF400100B3 +:07E11C0009022E00010100C1 +:0EE1230080FA0904000004FFFFFF02070581D7 +:0EE131000200020007050202000200070504BA +:0BE13F0002000200070586020002003B +:0EE14A001201000200000040C016EF030400A6 +:04E1580001020301BC +:0AE15C000A060002FFFFFF40010069 +:0EE166000902200001010080FA0904000002F5 +:0EE17400FFFFFF0207058102400000070502C1 +:04E182000240000057 +:01E186000494 +:02E1870090E125 +:02E1890096E11D +:02E18B00B4E1FD +:02E18D00DEE1D1 +:06E1900006030000090473 +:0EE196001E037700770077002E0072006500F0 +:0EE1A400740072006F00310031002E00640024 +:02E1B200650006 +:0EE1B4002A036E0065007800790073003200C7 +:0EE1C2005F006A007400610067005F003200B9 +:0EE1D0006600690066006F005F006900630072 +:0EE1DE001203300030003000300030003000FE +:04E1EC0030003000CF +:0105FC0022DC +:0105FD0022DB +:0105FE0022DA +:0105FF0022D9 +:0B060000D2B775B5809001F4020DDF49 +:0E060B00AA82ABB574FE5BF5F0741C45F0F5E9 +:0E061900B5EA1392B4EAA2E192B3EAA2E49227 +:02062700B222FD +:0E06290012060BA2B0E433FA74024AF58222E4 +:0E063700E5821392B2D2B413C2B492B2D2B41E +:0E06450013C2B492B2D2B413C2B492B2D2B401 +:0E06530013C2B492B2D2B413C2B492B2D2B4F3 +:0E06610013C2B492B2D2B413C2B492B2D2B4E5 +:05066F0000C2B42222CC +:0E067400E582A2B01392B2D2B4C2B4A2B01307 +:0E06820092B2D2B4C2B4A2B01392B2D2B4C239 +:0E069000B4A2B01392B2D2B4C2B4A2B013920C +:0E069E00B2D2B4C2B4A2B01392B2D2B4C2B4FB +:0E06AC00A2B01392B2D2B4C2B4A2B01392B2F2 +:0906BA00D2B400C2B4F582222280 +:0D06C30090E6007412F090E60174A3F09030 +:0E06D000E6707480F00090E60274E0F0009096 +:0E06DE00E60374F9F00090E6047480F00090DA +:0D06EC00E60B7403F00090E610E4F00090BF +:0D06F900E61174A0F00090E618E4F0009007 +:0E070600E6047402F00090E61274A2F0009077 +:0E071400E61374A2F00090E61474E0F000907A +:0E072200E6157402F00090E6047404F00090F6 +:0E073000E6047406F00090E6047408F00090F1 +:0E073E00E604E4F00090E60BE4F00090E649DB +:0E074C007484F00090E6497484F00090E61981 +:0E075A00E4F00090E6197410F00090E632749E +:0E07680080F00090E6337404F00090E61A74FE +:0E0776000CF00090E6247402F00090E625E4FA +:0E078400F00090E6347419F00090E63574FC35 +:0E079200F00090E61BE4F0000090E691748009 +:0A07A000F00090E6917480F0002252 +:0807AA0090E6A0E04401F022FA +:0E07B200AA8274805AC423541FFB740F5A90FD +:0C07C000E6834BF090E683E04420F0223A +:0E07CC0090E680E0440AF09000FA120DDF90F3 +:0E07DA00E65D74FFF090E65F74FFF05391EF60 +:0807E80090E680E054F7F022D6 +:060E0B00E478FFF6D8FDBB +:060DF000751200751300EE +:0A07F00090E680E0FA30E719751476 +:0307FA0000751572 +:0307FD00E175168D +:0308000012751757 +:03080300E1751884 +:030806001C751945 +:03080900E1751A7C +:03080C0066751BF3 +:02080F00E122E4 +:0408110075144A759B +:0308150015E17575 +:03081800165C75F6 +:03081B0017E1756D +:03081E00186675E4 +:0308210019E17565 +:030824001A1C7526 +:030827001BE122B0 +:09082A005391EF75A100D20232D6 +:0C083300C021C0E0C0F0C082C083C00241 +:0E083F00C003C004C005C006C007C000C00151 +:0E084D00C0D075D0005391EF75A1001207F0D6 +:0E085B00D0D0D001D000D007D006D005D004F8 +:0D086900D003D002D083D082D0F0D0E0D0F8 +:0208760021322D +:0C087800C021C0E0C0F0C082C083C002FC +:0E088400C003C004C005C006C007C000C0010C +:0E089200C0D075D0005391EF75A1001207F091 +:0E08A000D0D0D001D000D007D006D005D004B3 +:0D08AE00D003D002D083D082D0F0D0E0D0B3 +:0208BB002132E8 +:0508BD001207F0751C9C +:0308C2002A751D77 +:0808C50008758200120C7C751D +:0308CD001C337564 +:0608D0001D0875821012E4 +:0408D6000C7C751C05 +:0308DA0078751D11 +:0C08DD0008758214120C7C90E65C7431EB +:0208E900F022FB +:0D08EB00E582547FFA24F750047582002244 +:0708F800BA01047582012220 +:0808FF00530201E4BA000104F8 +:03090700F5822254 +:0E090A00AA82BA010C90E6A1E0FB7C008B8271 +:030918008C8322AB +:0E091B00BA810C90E6A2E0FB7C008B828C83FC +:0109290022AB +:0E092A0053027FEA700C90E6A0E0FB7C008B8D +:04093800828C832208 +:0E093C0090E6A3E0FB7C00EAC313FA7D00EA1C +:09094A002BFBED3C8B82F58322AE +:0C095300C20290E6B8E0FA530260BA005D +:03095F00028028EB +:05096200BA2002800D27 +:05096700BA4002800E01 +:05096C00BA60028003E7 +:03097100020C1164 +:060974001207AA020C119B +:0A097A00120372E5826003020C1103 +:060984001207AA020C118B +:0D098A0090E6B8E0FA530280BA80028003C4 +:03099700020B123E +:0B099A0090E6B9E0FABA0003020A8BF5 +:0509A500BA06028035D6 +:0509AA00BA08028008FC +:0509AF00BA0A028017E6 +:0309B400020B0C27 +:0C09B70090E740E512F090E68AE4F09032 +:0809C300E68B7401F0020C1137 +:0C09CB0090E740E513F090E68AE4F0901D +:0809D700E68B7401F0020C1123 +:0A09DF0090E6BBE0FABA01028017AF +:0509E900BA0202803893 +:0509EE00BA030280596C +:0509F300BA0602801BA2 +:0509F800BA0702803C7B +:0309FD00020A8566 +:0A0A0000AA14AB1590E6B3EBF07BEF +:090A0A000090E6B4EAF0020C11C0 +:0A0A1300AA16AB1790E6B3EBF07BD8 +:090A1D000090E6B4EAF0020C11AD +:0A0A2600AA18AB1990E6B3EBF07BC1 +:090A30000090E6B4EAF0020C119A +:0A0A3900AA1AAB1B90E6B3EBF07BAA +:090A43000090E6B4EAF0020C1187 +:0E0A4C0090E6BAE0FA90E186E0FBC3EA9B4038 +:070A5A00061207AA020C11AD +:0C0A610090E6BAE075F002A42487F5824C +:0B0A6D0074E135F0F583E0FAA3E0909F +:0D0A7800E6B3F07B0090E6B4EAF0020C114A +:060A85001207AA020C1189 +:0D0A8B0090E6B8E0FA53021FBA0002800A9C +:050A9800BA0102801B01 +:050A9D00BA0266802C86 +:0E0AA20090E740E4F090E741F090E68AF09093 +:080AB000E68B7402F0020C1148 +:0E0AB80090E740E4F090E741F090E68AF0907D +:080AC600E68B7402F0020C1132 +:0E0ACE0090E6BCE0F5821208EBE58260259010 +:0E0ADC00E6BCE0F58212090AE0FA530201902E +:0E0AEA00E740EAF090E741E4F090E68AF090F1 +:080AF800E68B7402F0020C1100 +:060B00001207AA020C110D +:060B06001207AA020C1107 +:060B0C001207AA020C1101 +:0C0B120090E6B9E0FA24F45003020C0E47 +:070B1E00EA2A2A900B25735F +:070B2500020C0E020B5B0243 +:060B2C000BD6020BB7021C +:060B32000C0E020C0E0285 +:060B38000C0E020C0E027F +:060B3E000C0E020B49023F +:050B44000C0E020B5233 +:090B490090E6BAE0F512020C116D +:090B520090E6BAE0F513020C1163 +:0D0B5B0090E6B8E0FA53021FBA00028005D0 +:050B6800BA0247800AFB +:0A0B6D0090E6BAE01207AA020C118C +:0D0B770090E6BAE0703090E6BCE0F5821226 +:0D0B840008EBE582602390E6BCE0F58212EC +:0E0B9100090AAA82AB83E0FC5304FE8A828B21 +:0E0B9F0083ECF090E6BCE0F5821207B28064B1 +:050BAD001207AA805FA1 +:050BB2001207AA805AA1 +:0E0BB70090E6B8E0FA53021FBA004F90E6BA7B +:070BC500E0FABA010280050D +:050BCC00BA02028040A6 +:050BD1001207AA803BA1 +:0E0BD60090E6BAE0FA702C90E6BCE0F58212D0 +:0D0BE40008EBE582601A90E6BCE0F5821295 +:0E0BF100090AAA82AB83E0FC4304018A828BCE +:050BFF0083ECF0800D05 +:050C04001207AA8008A0 +:050C09001207AA8003A0 +:030C0E001207AA20 +:080C110090E6A0E04480F0220F +:050C1900AA82BA0300ED +:070C1E004005EA249C50018F +:010C250022AC +:090C2600740F5AFBBB03028007A6 +:070C2F00740F5AFBBB0B45DB +:0A0C3600A2AF9203C2AFEA2400F55A +:0C0C400082E43400F5837402F07B007441 +:0C0C4C00012AFCE43BFDEC2400F582EDE5 +:0A0C58003400F583E51DFCF0740282 +:0C0C62002AFAE43BFBEA2400F582EB34A4 +:0A0C6E0000F583AA1C7B00EAF0A247 +:030C78000392AF35 +:010C7B002256 +:080C7C00E582FA2483500122F5 +:060C8400EA5403600122A6 +:0A0C8A00A2AF9204C2AFEA2400F505 +:0C0C940082E43401F5837402F07B0074EC +:0C0CA000012AFCE43BFDEC2400F582ED91 +:0A0CAC003401F583E51DF074022AFF +:0B0CB600FAE43BFBEA2400F582EB347B +:080CC10001F583AA1CEAF0A270 +:040CC9000492AF22C0 +:050CCD00AA82BA8000BC +:070CD2004005EA244B50012C +:010CD90022F8 +:060CDA00EA540360012250 +:0A0CE000A2AF9205C2AFEA2480F52E +:0C0CEA0082E43400F5837402F07B007497 +:0C0CF600012AFCE43BFDEC2480F582EDBB +:0A0D02003400F583E51DF074022AA9 +:0B0D0C00FAE43BFBEA2480F582EB34A4 +:080D170000F583AA1CEAF0A21A +:040D1F000592AF2268 +:080D2300C2E8C2EA751C00756C +:060D2B001D017582431258 +:040D31000C19751C08 +:030D350080751DA9 +:0C0D380000758253120C190090E650E484 +:0E0D4400F00090E652E4F00090E654E4F00077 +:0E0D520090E656E4F00090E65174FFF0009039 +:0E0D6000E65374FFF00090E65574FFF000902B +:0E0D6E00E65774FFF00090E658E4F090E65966 +:0E0D7C0074FFF090E65AE4F090E65B74FFF02E +:0E0D8A0090E65CE4F090E65D74FFF090E65EAB +:0E0D9800E4F090E65F74FFF00090E660E4F097 +:0D0DA6000090E66174FFF090E662E4F090CA +:0E0DB300E66374FFF090E665E4F090E6687485 +:0A0DC1000BF05391AFD2E8D2EA2202 +:010DCB002205 +:020DCC00AA82F9 +:060DCE00120DCBDAFB223E +:030DD40090FB5041 +:080DD700A3E582458370F922B7 +:040DDF00AA82AB83B6 +:080DE300120DD41ABAFF011B26 +:050DEB00EA4B70F42248 +:030DFE00758121DB +:0A0E01001205DAE5826003020DF924 +:00000001FF Index: bin/nexys2_jtag_3fifo_ic.ihx =================================================================== --- bin/nexys2_jtag_3fifo_ic.ihx (nonexistent) +++ bin/nexys2_jtag_3fifo_ic.ihx (revision 26) @@ -0,0 +1,446 @@ +:06000000020E0C02006B71 +:03000B0002006B85 +:0300130002006B7D +:03001B0002006B75 +:0300230002006B6D +:03002B0002006B65 +:0300330002006B5D +:03003B0002006B55 +:0300430002006B4D +:03004B0002006B45 +:0300530002006B3D +:03005B0002006B35 +:0300630002006B2D +:01006B003262 +:0900800002006B0002006B00029B +:08008900006B0002006B000295 +:08009100006B0002006B00028D +:08009900006B0002006B000285 +:0800A100006B0002006B00027D +:0800A900006B0002006B000275 +:0700B100006B0002006B0070 +:0901000002006B0002006B00021A +:08010900006B0002006B000214 +:08011100006B0002006B00020C +:08011900006B0002006B000204 +:08012100006B0002006B0002FC +:08012900006B0002006B0002F4 +:08013100006B0002006B0002EC +:08013900006B0002006B0002E4 +:08014100006B0002006B0002DC +:08014900006B0002006B0002D4 +:08015100006B0002006B0002CC +:08015900006B0002006B0002C4 +:08016100006B0002006B0002BC +:08016900006B0002006B0002B4 +:08017100006B0002006B0002AC +:07017900006B0002006B00A7 +:030E1200020E1AB3 +:030E2D00020E159D +:050E15001203F180FE54 +:06018000C200E4F508F5E1 +:0401860009F50AD29B +:05018A0001750B00757A +:06018F000C001206001234 +:0E01950005FD75CB6375CAC0758E0075C80474 +:0701A300D2AFD2B0D2B122AD +:0B01AA00AA82850C827583E0EAF00554 +:0501B5000C0509E4B592 +:0401BA000902050A27 +:0101BE00221E +:0401BF0020000122F9 +:0E01C3001205FC90E6A2E0FA30E103020257BA +:0A01D100E509450A60687AC07BE783 +:0E01DB008B9D7AC07BE77B008A9E90E67C7449 +:0C01E90031F07460F0C3743E9509E49599 +:0A01F5000A50107A3EE50924C2F515 +:0601FF0009E50A34FFF5DA +:030205000A800765 +:06020800AA09E4F509F566 +:01020E000AE5 +:0B020F008A037C007DE08D9A850B9B2C +:0E021A008A041AEC601090E67BE090E67CF01F +:080228007C007DE08D9A80EA64 +:0C023000859B0B0090E68F74022BF0D22F +:03023C00CF801858 +:0E023F0030CF1590E7C07431F090E7C17460C5 +:0A024D00F00090E68F7402F0C2CFBB +:06025700E5AA30E00122DF +:0A025D00C3E50994C1E50A940040CE +:02026700012272 +:0E02690090E690E0FB7A0090E691E0FC7D00CC +:0A027700EA4CF50DEB4DF50E7C008E +:0E0281007DF08D9A7C007DF08C9B7C007D00D2 +:0A028F00C3EC950DED950E4003023F +:02029900036AF6 +:07029B00E5087003020326D1 +:0A02A200E50DC39CFEE50E9DFFA8CC +:0C02AC00087900C3E89EE99F5004880612 +:0202B8008907B4 +:0A02BA008E00E508C398F508EE2C4D +:0B02C400FCEF3DFD30012C8E008F018F +:0902CF008802890318B8FF011927 +:0E02D800EA4B60B390E67BE0F582C004C005FF +:0E02E600C000C001120637D001D000D005D0F4 +:0302F4000480D8AB +:0402F7008E028F03E1 +:0902FB008A068B071ABAFF011BE9 +:0E030400EE4F608790E67BE0F582C002C003FA +:0E031200C004C0051206741201AAD005D00462 +:06032000D003D00280D5DD +:0D03260090E67BE0FA23235401FBB40100B4 +:0A0333009201EA30E707743F5AF523 +:03033D0008802213 +:0C03400030010F8A82C004C00512060BB9 +:06034C00D005D004801072 +:0E0352008A82C004C0051206291201AAD00535 +:02036000D004C7 +:050362000CBC00010DC0 +:0303670002028F00 +:08036A000090E6917480F0227E +:0E03720090E6B8E0FA20E70C90E6B9E07002E1 +:02038000D200A9 +:04038200758201225D +:0E03860090E6B9E0FABA902B90E6BCE025E0D4 +:0A039400547FFA2400F582E43418C7 +:0C039E00F583E0FB90E740F0EA04240047 +:0C03AA00F582E43418F583E0FA90E74196 +:0303B600F0800CC8 +:0C03B90090E7407436F090E7417483F048 +:0D03C50090E68AE4F090E6BEE0FABA02008D +:0903D200500790E6BEE0FA80023B +:0203DB007A02A4 +:0903DD0090E68BEAF07582012222 +:0603E60030020312096F52 +:0503EC001201BF80F5C5 +:0E03F100C2AF90E609E4F01201801206C312BA +:0603FF000455120D3F122F +:0804050008D9D2AF1207E8028A +:02040D0003E604 +:0A040F00AA82E50F54FEFBB50F02B0 +:02041900802938 +:0A041B008A048C05E46210ED621102 +:0A042500EB2400F582E43418F5839F +:0A042F00E0FB7C006210EC6211E5B6 +:060439001033C51133C5AC +:05043F001192E0F51030 +:06044400AB0F050FEB24D5 +:0A044A0000F582E43418F583EAF0AF +:010454002285 +:07045500750F007510AA7578 +:0C045C0011AA75820012040F75820012B4 +:04046800040F7A0003 +:0C046C00C3EA648094865017EA2408F567 +:0C04780082E434E1F583E0F582C002125A +:07048400040FD0020A80E121 +:02048B007A00F5 +:0C048D00C3EA648094825017EA2423F52F +:0C04990082E434E1F583E0F582C0021239 +:0704A500040FD0020A80E100 +:0E04AC0075821C12040F75820012040F7A0074 +:0C04BA00C3EA648094825017EA2402F523 +:0C04C60082E434E1F583E0F582C002120C +:0704D200040FD0020A80E1D3 +:0C04D9007486250FFAF582C00212040F91 +:0C04E50090E19EE0F58212040FD002901E +:0D04F100E19EE02AFAF582C00212040F908D +:0B04FE00E1BCE0F58212040FD0029078 +:0A050900E1BCE02AF58212040F9015 +:0A051300E1E6E0F58212040F7A0021 +:0E051D0090E19EE0FBC3EA64808BF063F08007 +:0B052B0095F05017EA249EF582E4349E +:0C053600E1F583E0F582C00212040FD052 +:04054200020A80D752 +:020546007A0039 +:0E05480090E1BCE0FBC3EA64808BF063F080BE +:0B05560095F05017EA24BCF582E43455 +:0C056100E1F583E0F582C00212040FD027 +:04056D00020A80D727 +:020571007A000E +:0E05730090E1E6E0FBC3EA64808BF063F08069 +:0B05810095F05017EA24E6F582E43400 +:0C058C00E1F583E0F582C00212040FD0FC +:04059800020A80D7FC +:02059C007A00E3 +:0C059E00C3EA648094845017EA240EF530 +:0C05AA0082E434E1F583E0F582C0021227 +:0705B600040FD0020A80E1EE +:0C05BD007482250F400875820012040FA4 +:0205C90080F2BE +:0805CB00AA1090187EEAF0AAC4 +:0705D3001190187FEAF022ED +:0805DA007880E84400600C7910 +:0C05E20001901800E4F0A3D8FCD9FAD076 +:0E05EE0083D082F6D8FDC082C08375820022C1 +:02E1000012010A +:06E10200000200000040D5 +:06E10800C016EF03040045 +:04E10E000102030106 +:0AE112000A060002FFFFFF400100B3 +:07E11C0009023500010100BA +:0EE1230080FA0904000005FFFFFF02070581D6 +:0EE131000200020007050202000200070504BA +:0EE13F000200020007058602000200070588A4 +:04E14D0002000200CA +:0EE152001201000200000040C016EF0304009E +:04E1600001020301B4 +:0AE164000A060002FFFFFF40010061 +:0EE16E000902200001010080FA0904000002ED +:0EE17C00FFFFFF0207058102400000070502B9 +:04E18A00024000004F +:01E18E00048C +:02E18F0098E115 +:02E191009EE10D +:02E19300BCE1ED +:02E19500E6E1C1 +:06E198000603000009046B +:0EE19E001E037700770077002E0072006500E8 +:0EE1AC00740072006F00310031002E0064001C +:02E1BA006500FE +:0EE1BC002A036E0065007800790073003200BF +:0EE1CA005F006A007400610067005F003300B0 +:0EE1D8006600690066006F005F00690063006A +:0EE1E6001203300030003000300030003000F6 +:04E1F40030003000C7 +:0105FC0022DC +:0105FD0022DB +:0105FE0022DA +:0105FF0022D9 +:0B060000D2B775B5809001F4020DFB2D +:0E060B00AA82ABB574FE5BF5F0741C45F0F5E9 +:0E061900B5EA1392B4EAA2E192B3EAA2E49227 +:02062700B222FD +:0E06290012060BA2B0E433FA74024AF58222E4 +:0E063700E5821392B2D2B413C2B492B2D2B41E +:0E06450013C2B492B2D2B413C2B492B2D2B401 +:0E06530013C2B492B2D2B413C2B492B2D2B4F3 +:0E06610013C2B492B2D2B413C2B492B2D2B4E5 +:05066F0000C2B42222CC +:0E067400E582A2B01392B2D2B4C2B4A2B01307 +:0E06820092B2D2B4C2B4A2B01392B2D2B4C239 +:0E069000B4A2B01392B2D2B4C2B4A2B013920C +:0E069E00B2D2B4C2B4A2B01392B2D2B4C2B4FB +:0E06AC00A2B01392B2D2B4C2B4A2B01392B2F2 +:0906BA00D2B400C2B4F582222280 +:0D06C30090E6007412F090E60174A3F09030 +:0E06D000E6707480F00090E60274E0F0009096 +:0E06DE00E60374F9F00090E6047480F00090DA +:0D06EC00E60B7403F00090E610E4F00090BF +:0D06F900E61174A0F00090E618E4F0009007 +:0E070600E6047402F00090E61274A2F0009077 +:0E071400E61374A2F00090E61474E2F0009078 +:0E072200E61574E2F00090E6047404F0009016 +:0E073000E6047406F00090E6047408F00090F1 +:0E073E00E604E4F00090E60BE4F00090E649DB +:0E074C007484F00090E6497484F00090E61981 +:0E075A00E4F00090E6197410F00090E632749E +:0E07680080F00090E6337404F00090E61A74FE +:0E0776000CF00090E6247402F00090E625E4FA +:0E078400F00090E6347409F00090E63574FC45 +:0E079200F00090E61B740CF00090E626740256 +:0E07A000F00090E627E4F00090E6367441F099 +:0E07AE000090E63774FCF0000090E691748035 +:0A07BC00F00090E6917480F0002236 +:0807C60090E6A0E04401F022DE +:0E07CE00AA8274805AC423541FFB740F5A90E1 +:0C07DC00E6834BF090E683E04420F0221E +:0E07E80090E680E0440AF09000FA120DFB90BB +:0E07F600E65D74FFF090E65F74FFF05391EF44 +:0808040090E680E054F7F022B9 +:060E2700E478FFF6D8FD9F +:060E0C00751200751300D1 +:0A080C0090E680E0FA30E719751459 +:0308160000751555 +:03081900E1751670 +:03081C001275173B +:03081F00E1751868 +:030822001C751929 +:03082500E1751A60 +:030828006E751BCF +:02082B00E122C8 +:04082D007514527577 +:0308310015E17559 +:03083400166475D2 +:0308370017E17551 +:03083A00186E75C0 +:03083D0019E17549 +:030840001A1C750A +:030843001BE12294 +:090846005391EF75A100D20232BA +:0C084F00C021C0E0C0F0C082C083C00225 +:0E085B00C003C004C005C006C007C000C00135 +:0E086900C0D075D0005391EF75A10012080C9D +:0E087700D0D0D001D000D007D006D005D004DC +:0D088500D003D002D083D082D0F0D0E0D0DC +:02089200213211 +:0C089400C021C0E0C0F0C082C083C002E0 +:0E08A000C003C004C005C006C007C000C001F0 +:0E08AE00C0D075D0005391EF75A10012080C58 +:0E08BC00D0D0D001D000D007D006D005D00497 +:0D08CA00D003D002D083D082D0F0D0E0D097 +:0208D7002132CC +:0508D90012080C751C63 +:0308DE0046751D3F +:0808E10008758200120C9875E5 +:0308E9001C4F752C +:0608EC001D0875821012C8 +:0408F2000C98751CCD +:0308F60094751DD9 +:0C08F90008758214120C9890E65C7431B3 +:02090500F022DE +:0D090700E582547FFA24F750047582002227 +:07091400BA01047582012203 +:08091B00530201E4BA000104DB +:03092300F5822238 +:0E092600AA82BA010C90E6A1E0FB7C008B8255 +:030934008C83228F +:0E093700BA810C90E6A2E0FB7C008B828C83E0 +:01094500228F +:0E09460053027FEA700C90E6A0E0FB7C008B71 +:04095400828C8322EC +:0E09580090E6A3E0FB7C00EAC313FA7D00EA00 +:090966002BFBED3C8B82F5832292 +:0C096F00C20290E6B8E0FA530260BA0041 +:03097B00028028CF +:05097E00BA2002800D0B +:05098300BA4002800EE5 +:05098800BA60028003CB +:03098D00020C2D2C +:060990001207C6020C2D47 +:0A099600120372E5826003020C2DCB +:0609A0001207C6020C2D37 +:0D09A60090E6B8E0FA530280BA80028003A8 +:0309B300020B2E06 +:0B09B60090E6B9E0FABA0003020AA7BD +:0509C100BA06028035BA +:0509C600BA08028008E0 +:0509CB00BA0A028017CA +:0309D000020B28EF +:0C09D30090E740E512F090E68AE4F09016 +:0809DF00E68B7401F0020C2DFF +:0C09E70090E740E513F090E68AE4F09001 +:0809F300E68B7401F0020C2DEB +:0A09FB0090E6BBE0FABA0102801793 +:050A0500BA0202803876 +:050A0A00BA030280594F +:050A0F00BA0602801B85 +:050A1400BA0702803C5E +:030A1900020AA12D +:0A0A1C00AA14AB1590E6B3EBF07BD3 +:090A26000090E6B4EAF0020C2D88 +:0A0A2F00AA16AB1790E6B3EBF07BBC +:090A39000090E6B4EAF0020C2D75 +:0A0A4200AA18AB1990E6B3EBF07BA5 +:090A4C000090E6B4EAF0020C2D62 +:0A0A5500AA1AAB1B90E6B3EBF07B8E +:090A5F000090E6B4EAF0020C2D4F +:0E0A680090E6BAE0FA90E18EE0FBC3EA9B4014 +:070A7600061207C6020C2D59 +:0C0A7D0090E6BAE075F002A4248FF58228 +:0B0A890074E135F0F583E0FAA3E09083 +:0D0A9400E6B3F07B0090E6B4EAF0020C2D12 +:060AA1001207C6020C2D35 +:0D0AA70090E6B8E0FA53021FBA0002800A80 +:050AB400BA0102801BE5 +:050AB900BA0266802C6A +:0E0ABE0090E740E4F090E741F090E68AF09077 +:080ACC00E68B7402F0020C2D10 +:0E0AD40090E740E4F090E741F090E68AF09061 +:080AE200E68B7402F0020C2DFA +:0E0AEA0090E6BCE0F582120907E582602590D7 +:0E0AF800E6BCE0F582120926E0FA53020190F6 +:0E0B0600E740EAF090E741E4F090E68AF090D4 +:080B1400E68B7402F0020C2DC7 +:060B1C001207C6020C2DB9 +:060B22001207C6020C2DB3 +:060B28001207C6020C2DAD +:0C0B2E0090E6B9E0FA24F45003020C2A0F +:070B3A00EA2A2A900B417327 +:070B4100020C2A020B7702EF +:060B48000BF2020BD302C8 +:060B4E000C2A020C2A0231 +:060B54000C2A020C2A022B +:060B5A000C2A020B6502EB +:050B60000C2A020B6EDF +:090B650090E6BAE0F512020C2D35 +:090B6E0090E6BAE0F513020C2D2B +:0D0B770090E6B8E0FA53021FBA00028005B4 +:050B8400BA0247800ADF +:0A0B890090E6BAE01207C6020C2D38 +:0D0B930090E6BAE0703090E6BCE0F582120A +:0D0BA0000907E582602390E6BCE0F58212B3 +:0E0BAD000926AA82AB83E0FC5304FE8A828BE9 +:0E0BBB0083ECF090E6BCE0F5821207CE806479 +:050BC9001207C6805F69 +:050BCE001207C6805A69 +:0E0BD30090E6B8E0FA53021FBA004F90E6BA5F +:070BE100E0FABA01028005F1 +:050BE800BA020280408A +:050BED001207C6803B69 +:0E0BF20090E6BAE0FA702C90E6BCE0F58212B4 +:0D0C00000907E582601A90E6BCE0F582125B +:0E0C0D000926AA82AB83E0FC4304018A828B95 +:050C1B0083ECF0800DE8 +:050C20001207C6800868 +:050C25001207C6800368 +:030C2A001207C6E8 +:080C2D0090E6A0E04480F022F3 +:050C3500AA82BA0300D1 +:070C3A004005EA249C500173 +:010C41002290 +:090C4200740F5AFBBB030280078A +:070C4B00740F5AFBBB0B45BF +:0A0C5200A2AF9203C2AFEA2400F53E +:0C0C5C0082E43400F5837402F07B007425 +:0C0C6800012AFCE43BFDEC2400F582EDC9 +:0A0C74003400F583E51DFCF0740266 +:0C0C7E002AFAE43BFBEA2400F582EB3488 +:0A0C8A0000F583AA1C7B00EAF0A22B +:030C94000392AF19 +:010C9700223A +:080C9800E582FA2483500122D9 +:060CA000EA54036001228A +:0A0CA600A2AF9204C2AFEA2400F5E9 +:0C0CB00082E43401F5837402F07B0074D0 +:0C0CBC00012AFCE43BFDEC2400F582ED75 +:0A0CC8003401F583E51DF074022AE3 +:0B0CD200FAE43BFBEA2400F582EB345F +:080CDD0001F583AA1CEAF0A254 +:040CE5000492AF22A4 +:050CE900AA82BA8000A0 +:070CEE004005EA244B500110 +:010CF50022DC +:060CF600EA540360012234 +:0A0CFC00A2AF9205C2AFEA2480F512 +:0C0D060082E43400F5837402F07B00747A +:0C0D1200012AFCE43BFDEC2480F582ED9E +:0A0D1E003400F583E51DF074022A8D +:0B0D2800FAE43BFBEA2480F582EB3488 +:080D330000F583AA1CEAF0A2FE +:040D3B000592AF224C +:080D3F00C2E8C2EA751C007550 +:060D47001D01758243123C +:040D4D000C35751CD0 +:030D510080751D8D +:0C0D540000758253120C350090E650E44C +:0E0D6000F00090E652E4F00090E654E4F0005B +:0E0D6E0090E656E4F00090E65174FFF000901D +:0E0D7C00E65374FFF00090E65574FFF000900F +:0E0D8A00E65774FFF00090E658E4F090E6594A +:0E0D980074FFF090E65AE4F090E65B74FFF012 +:0E0DA60090E65CE4F090E65D74FFF090E65E8F +:0E0DB400E4F090E65F74FFF00090E660E4F07B +:0D0DC2000090E66174FFF090E662E4F090AE +:0E0DCF00E66374FFF090E665E4F090E6687469 +:0A0DDD000BF05391AFD2E8D2EA22E6 +:010DE70022E9 +:020DE800AA82DD +:060DEA00120DE7DAFB2206 +:030DF00090FB5025 +:080DF300A3E582458370F9229B +:040DFB00AA82AB839A +:080DFF00120DF01ABAFF011BEE +:050E0700EA4B70F4222B +:030E1A00758121BE +:0A0E1D001205DAE5826003020E15EB +:00000001FF Index: bin/nexys3_jtag.ihx =================================================================== --- bin/nexys3_jtag.ihx (nonexistent) +++ bin/nexys3_jtag.ihx (revision 26) @@ -0,0 +1,437 @@ +:06000000020DAC02006BD2 +:03000B0002006B85 +:0300130002006B7D +:03001B0002006B75 +:0300230002006B6D +:03002B0002006B65 +:0300330002006B5D +:03003B0002006B55 +:0300430002006B4D +:03004B0002006B45 +:0300530002006B3D +:03005B0002006B35 +:0300630002006B2D +:01006B003262 +:0900800002006B0002006B00029B +:08008900006B0002006B000295 +:08009100006B0002006B00028D +:08009900006B0002006B000285 +:0800A100006B0002006B00027D +:0800A900006B0002006B000275 +:0700B100006B0002006B0070 +:0901000002006B0002006B00021A +:08010900006B0002006B000214 +:08011100006B0002006B00020C +:08011900006B0002006B000204 +:08012100006B0002006B0002FC +:08012900006B0002006B0002F4 +:08013100006B0002006B0002EC +:08013900006B0002006B0002E4 +:08014100006B0002006B0002DC +:08014900006B0002006B0002D4 +:08015100006B0002006B0002CC +:08015900006B0002006B0002C4 +:08016100006B0002006B0002BC +:08016900006B0002006B0002B4 +:08017100006B0002006B0002AC +:07017900006B0002006B00A7 +:030DB200020DBA75 +:030DCD00020DB55F +:050DB5001203F180FEB5 +:06018000C200E4F508F5E1 +:0401860009F50AD29B +:05018A0001750B00757A +:06018F000C001206001234 +:0E01950005FD75CB6375CAC0758E0075C80474 +:0701A300D2AFD2B0D2B122AD +:0B01AA00AA82850C827583E0EAF00554 +:0501B5000C0509E4B592 +:0401BA000902050A27 +:0101BE00221E +:0401BF0020000122F9 +:0E01C3001205FC90E6A2E0FA30E103020257BA +:0A01D100E509450A60687AC07BE783 +:0E01DB008B9D7AC07BE77B008A9E90E67C7449 +:0C01E90031F07460F0C3743E9509E49599 +:0A01F5000A50107A3EE50924C2F515 +:0601FF0009E50A34FFF5DA +:030205000A800765 +:06020800AA09E4F509F566 +:01020E000AE5 +:0B020F008A037C007DE08D9A850B9B2C +:0E021A008A041AEC601090E67BE090E67CF01F +:080228007C007DE08D9A80EA64 +:0C023000859B0B0090E68F74022BF0D22F +:03023C00CF801858 +:0E023F0030CF1590E7C07431F090E7C17460C5 +:0A024D00F00090E68F7402F0C2CFBB +:06025700E5AA30E00122DF +:0A025D00C3E50994C1E50A940040CE +:02026700012272 +:0E02690090E690E0FB7A0090E691E0FC7D00CC +:0A027700EA4CF50DEB4DF50E7C008E +:0E0281007DF08D9A7C007DF08C9B7C007D00D2 +:0A028F00C3EC950DED950E4003023F +:02029900036AF6 +:07029B00E5087003020326D1 +:0A02A200E50DC39CFEE50E9DFFA8CC +:0C02AC00087900C3E89EE99F5004880612 +:0202B8008907B4 +:0A02BA008E00E508C398F508EE2C4D +:0B02C400FCEF3DFD30012C8E008F018F +:0902CF008802890318B8FF011927 +:0E02D800EA4B60B390E67BE0F582C004C005FF +:0E02E600C000C001120632D001D000D005D0F9 +:0302F4000480D8AB +:0402F7008E028F03E1 +:0902FB008A068B071ABAFF011BE9 +:0E030400EE4F608790E67BE0F582C002C003FA +:0E031200C004C00512066F1201AAD005D00467 +:06032000D003D00280D5DD +:0D03260090E67BE0FA23235401FBB40100B4 +:0A0333009201EA30E707743F5AF523 +:03033D0008802213 +:0C03400030010F8A82C004C005120606BE +:06034C00D005D004801072 +:0E0352008A82C004C0051206241201AAD0053A +:02036000D004C7 +:050362000CBC00010DC0 +:0303670002028F00 +:08036A000090E6917480F0227E +:0E03720090E6B8E0FA20E70C90E6B9E07002E1 +:02038000D200A9 +:04038200758201225D +:0E03860090E6B9E0FABA902B90E6BCE025E0D4 +:0A039400547FFA2400F582E43418C7 +:0C039E00F583E0FB90E740F0EA04240047 +:0C03AA00F582E43418F583E0FA90E74196 +:0303B600F0800CC8 +:0C03B90090E7407436F090E7417483F048 +:0D03C50090E68AE4F090E6BEE0FABA02008D +:0903D200500790E6BEE0FA80023B +:0203DB007A02A4 +:0903DD0090E68BEAF07582012222 +:0603E60030020312090FB2 +:0503EC001201BF80F5C5 +:0E03F100C2AF90E609E4F01201801206BE12BF +:0603FF000455120CDF1290 +:080405000879D2AF120788024A +:02040D0003E604 +:0A040F00AA82E50F54FEFBB50F02B0 +:02041900802938 +:0A041B008A048C05E46210ED621102 +:0A042500EB2400F582E43418F5839F +:0A042F00E0FB7C006210EC6211E5B6 +:060439001033C51133C5AC +:05043F001192E0F51030 +:06044400AB0F050FEB24D5 +:0A044A0000F582E43418F583EAF0AF +:010454002285 +:07045500750F007510AA7578 +:0C045C0011AA75820012040F75820012B4 +:04046800040F7A0003 +:0C046C00C3EA648094865017EA2408F567 +:0C04780082E434E1F583E0F582C002125A +:07048400040FD0020A80E121 +:02048B007A00F5 +:0C048D00C3EA648094825017EA2423F52F +:0C04990082E434E1F583E0F582C0021239 +:0704A500040FD0020A80E100 +:0E04AC0075821C12040F75820012040F7A0074 +:0C04BA00C3EA648094825017EA2402F523 +:0C04C60082E434E1F583E0F582C002120C +:0704D200040FD0020A80E1D3 +:0C04D9007486250FFAF582C00212040F91 +:0C04E50090E188E0F58212040FD0029034 +:0D04F100E188E02AFAF582C00212040F90A3 +:0B04FE00E1A6E0F58212040FD002908E +:0A050900E1A6E02AF58212040F902B +:0A051300E1BEE0F58212040F7A0049 +:0E051D0090E188E0FBC3EA64808BF063F0801D +:0B052B0095F05017EA2488F582E434B4 +:0C053600E1F583E0F582C00212040FD052 +:04054200020A80D752 +:020546007A0039 +:0E05480090E1A6E0FBC3EA64808BF063F080D4 +:0B05560095F05017EA24A6F582E4346B +:0C056100E1F583E0F582C00212040FD027 +:04056D00020A80D727 +:020571007A000E +:0E05730090E1BEE0FBC3EA64808BF063F08091 +:0B05810095F05017EA24BEF582E43428 +:0C058C00E1F583E0F582C00212040FD0FC +:04059800020A80D7FC +:02059C007A00E3 +:0C059E00C3EA648094845017EA240EF530 +:0C05AA0082E434E1F583E0F582C0021227 +:0705B600040FD0020A80E1EE +:0C05BD007482250F400875820012040FA4 +:0205C90080F2BE +:0805CB00AA1090187EEAF0AAC4 +:0705D3001190187FEAF022ED +:0805DA007880E84400600C7910 +:0C05E20001901800E4F0A3D8FCD9FAD076 +:0E05EE0083D082F6D8FDC082C08375820022C1 +:02E1000012010A +:06E10200000200000040D5 +:06E10800C016EF03040045 +:04E10E000102030106 +:0AE112000A060002FFFFFF400100B3 +:07E11C0009022000010100CF +:0EE1230080FA0904000002FFFFFF02070581D9 +:0BE131000200020007050202000200CD +:0EE13C001201000200000040C016EF030400B4 +:04E14A0001020301CA +:0AE14E000A060002FFFFFF40010077 +:0EE158000902200001010080FA090400000203 +:0EE16600FFFFFF0207058102400000070502CF +:04E174000240000065 +:01E1780004A2 +:02E1790082E141 +:02E17B0088E139 +:02E17D00A6E119 +:02E17F00BEE1FF +:06E1820006030000090481 +:0EE188001E037700770077002E0072006500FE +:0EE19600740072006F00310031002E00640032 +:02E1A400650014 +:0EE1A60018036E0065007800790073003300E6 +:0AE1B4005F006A007400610067005C +:0EE1BE0012033000300030003000300030001E +:04E1CC0030003000EF +:0105FC0022DC +:0105FD0022DB +:0105FE0022DA +:0105FF0022D9 +:060600009001F4020D9BC5 +:0E060600AA82ABB574FE5BF5F0741C45F0F5EE +:0E061400B5EA1392B4EAA2E192B3EAA2E4922C +:02062200B22202 +:0E062400120606A2B0E433FA74024AF58222EE +:0E063200E5821392B2D2B413C2B492B2D2B423 +:0E06400013C2B492B2D2B413C2B492B2D2B406 +:0E064E0013C2B492B2D2B413C2B492B2D2B4F8 +:0E065C0013C2B492B2D2B413C2B492B2D2B4EA +:05066A0000C2B42222D1 +:0E066F00E582A2B01392B2D2B4C2B4A2B0130C +:0E067D0092B2D2B4C2B4A2B01392B2D2B4C23E +:0E068B00B4A2B01392B2D2B4C2B4A2B0139211 +:0E069900B2D2B4C2B4A2B01392B2D2B4C2B400 +:0E06A700A2B01392B2D2B4C2B4A2B01392B2F7 +:0906B500D2B400C2B4F582222285 +:0D06BE0090E6007412F090E60174ABF0902D +:0E06CB00E6707480F00090E60274E0F000909B +:0E06D900E60374F9F00090E6047480F00090DF +:0D06E700E60B7403F00090E610E4F00090C4 +:0D06F400E61174A0F00090E618E4F000900C +:0E070100E6047402F00090E61274A2F000907C +:0E070F00E6137402F00090E6147402F00090FD +:0E071D00E6157402F00090E6047404F00090FB +:0E072B00E6047406F00090E6047408F00090F6 +:0E073900E604E4F00090E619E4F00090E61A01 +:0E074700E4F00090E61BE4F00090E60BE4F016 +:0E075500000090E6917480F00090E6917480B0 +:03076300F0002281 +:0807660090E6A0E04401F0223E +:0E076E00AA8274805AC423541FFB740F5A9041 +:0C077C00E6834BF090E683E04420F0227E +:0E07880090E680E0440AF09000FA120D9B907B +:0E079600E65D74FFF090E65F74FFF05391EFA4 +:0807A40090E680E054F7F0221A +:060DC700E478FFF6D8FD00 +:060DAC0075120075130032 +:0A07AC0090E680E0FA30E7197514BA +:0307B600007515B6 +:0307B900E17516D1 +:0307BC001275179C +:0307BF00E17518C9 +:0307C2001C75198A +:0307C500E1751AC1 +:0307C80058751B46 +:0207CB00E12229 +:0407CD0075143C75EE +:0307D10015E175BA +:0307D400164E7549 +:0307D70017E175B2 +:0307DA0018587537 +:0307DD0019E175AA +:0307E0001A1C756B +:0307E3001BE122F5 +:0907E6005391EF75A100D202321B +:0C07EF00C021C0E0C0F0C082C083C00286 +:0E07FB00C003C004C005C006C007C000C00196 +:0E080900C0D075D0005391EF75A1001207AC5E +:0E081700D0D0D001D000D007D006D005D0043C +:0D082500D003D002D083D082D0F0D0E0D03C +:02083200213271 +:0C083400C021C0E0C0F0C082C083C00240 +:0E084000C003C004C005C006C007C000C00150 +:0E084E00C0D075D0005391EF75A1001207AC19 +:0E085C00D0D0D001D000D007D006D005D004F7 +:0D086A00D003D002D083D082D0F0D0E0D0F7 +:0208770021322C +:050879001207AC751C24 +:03087E00E6751DFF +:0808810007758200120C3875A6 +:030889001CEF75EC +:06088C001D077582101229 +:040892000C38751C8D +:0308960034751D99 +:0C08990008758214120C3890E65C743173 +:0208A500F0223F +:0D08A700E582547FFA24F750047582002288 +:0708B400BA01047582012264 +:0808BB00530201E4BA0001043C +:0308C300F5822299 +:0E08C600AA82BA010C90E6A1E0FB7C008B82B6 +:0308D4008C8322F0 +:0E08D700BA810C90E6A2E0FB7C008B828C8341 +:0108E50022F0 +:0E08E60053027FEA700C90E6A0E0FB7C008BD2 +:0408F400828C83224D +:0E08F80090E6A3E0FB7C00EAC313FA7D00EA61 +:090906002BFBED3C8B82F58322F2 +:0C090F00C20290E6B8E0FA530260BA00A1 +:03091B000280282F +:05091E00BA2002800D6B +:05092300BA4002800E45 +:05092800BA600280032B +:03092D00020BCDED +:06093000120766020BCD68 +:0A093600120372E5826003020BCD8C +:06094000120766020BCD58 +:0D09460090E6B8E0FA530280BA8002800308 +:03095300020ACEC7 +:0B09560090E6B9E0FABA0003020A477D +:05096100BA060280351A +:05096600BA0802800840 +:05096B00BA0A0280172A +:03097000020AC8B0 +:0C09730090E740E512F090E68AE4F09076 +:08097F00E68B7401F0020BCDC0 +:0C09870090E740E513F090E68AE4F09061 +:08099300E68B7401F0020BCDAC +:0A099B0090E6BBE0FABA01028017F3 +:0509A500BA02028038D7 +:0509AA00BA03028059B0 +:0509AF00BA0602801BE6 +:0509B400BA0702803CBF +:0309B900020A41EE +:0A09BC00AA14AB1590E6B3EBF07B34 +:0909C6000090E6B4EAF0020BCD4A +:0A09CF00AA16AB1790E6B3EBF07B1D +:0909D9000090E6B4EAF0020BCD37 +:0A09E200AA18AB1990E6B3EBF07B06 +:0909EC000090E6B4EAF0020BCD24 +:0A09F500AA1AAB1B90E6B3EBF07BEF +:0909FF000090E6B4EAF0020BCD11 +:0E0A080090E6BAE0FA90E178E0FBC3EA9B408A +:070A160006120766020BCD7A +:0C0A1D0090E6BAE075F002A42479F5829E +:0B0A290074E135F0F583E0FAA3E090E3 +:0D0A3400E6B3F07B0090E6B4EAF0020BCDD3 +:060A4100120766020BCD56 +:0D0A470090E6B8E0FA53021FBA0002800AE0 +:050A5400BA0102801B45 +:050A5900BA0266802CCA +:0E0A5E0090E740E4F090E741F090E68AF090D7 +:080A6C00E68B7402F0020BCDD1 +:0E0A740090E740E4F090E741F090E68AF090C1 +:080A8200E68B7402F0020BCDBB +:0E0A8A0090E6BCE0F5821208A7E58260259098 +:0E0A9800E6BCE0F5821208C6E0FA53020190B7 +:0E0AA600E740EAF090E741E4F090E68AF09035 +:080AB400E68B7402F0020BCD89 +:060ABC00120766020BCDDB +:060AC200120766020BCDD5 +:060AC800120766020BCDCF +:0C0ACE0090E6B9E0FA24F45003020BCAD1 +:070ADA00EA2A2A900AE173E9 +:070AE100020BCA020B170211 +:060AE8000B92020B7302E9 +:060AEE000BCA020BCA0254 +:060AF4000BCA020BCA024E +:060AFA000BCA020B05020D +:050B00000BCA020B0E00 +:090B050090E6BAE0F512020BCDF6 +:090B0E0090E6BAE0F513020BCDEC +:0D0B170090E6B8E0FA53021FBA0002800514 +:050B2400BA0247800A3F +:0A0B290090E6BAE0120766020BCD59 +:0D0B330090E6BAE0703090E6BCE0F582126A +:0D0B400008A7E582602390E6BCE0F5821274 +:0E0B4D0008C6AA82AB83E0FC5304FE8A828BAA +:0E0B5B0083ECF090E6BCE0F58212076E806439 +:050B6900120766805F29 +:050B6E00120766805A29 +:0E0B730090E6B8E0FA53021FBA004F90E6BABF +:070B8100E0FABA0102800551 +:050B8800BA02028040EA +:050B8D00120766803B29 +:0E0B920090E6BAE0FA702C90E6BCE0F5821214 +:0D0BA00008A7E582601A90E6BCE0F582121D +:0E0BAD0008C6AA82AB83E0FC4304018A828B57 +:050BBB0083ECF0800D49 +:050BC000120766800829 +:050BC500120766800329 +:030BCA00120766A9 +:080BCD0090E6A0E04480F02254 +:050BD500AA82BA030032 +:070BDA004005EA249C5001D4 +:010BE10022F1 +:090BE200740F5AFBBB03028007EB +:070BEB00740F5AFBBB0B4520 +:0A0BF200A2AF9203C2AFEA2400F59F +:0C0BFC0082E43400F5837402F07B007486 +:0C0C0800012AFCE43BFDEC2400F582ED29 +:0A0C14003400F583E51DFCF07402C6 +:0C0C1E002AFAE43BFBEA2400F582EB34E8 +:0A0C2A0000F583AA1C7B00EAF0A28B +:030C34000392AF79 +:010C3700229A +:080C3800E582FA248350012239 +:060C4000EA5403600122EA +:0A0C4600A2AF9204C2AFEA2400F549 +:0C0C500082E43401F5837402F07B007430 +:0C0C5C00012AFCE43BFDEC2400F582EDD5 +:0A0C68003401F583E51DF074022A43 +:0B0C7200FAE43BFBEA2400F582EB34BF +:080C7D0001F583AA1CEAF0A2B4 +:040C85000492AF2204 +:050C8900AA82BA800000 +:070C8E004005EA244B500170 +:010C9500223C +:060C9600EA540360012294 +:0A0C9C00A2AF9205C2AFEA2480F572 +:0C0CA60082E43400F5837402F07B0074DB +:0C0CB200012AFCE43BFDEC2480F582EDFF +:0A0CBE003400F583E51DF074022AEE +:0B0CC800FAE43BFBEA2480F582EB34E9 +:080CD30000F583AA1CEAF0A25F +:040CDB000592AF22AD +:080CDF00C2E8C2EA751C0075B1 +:060CE7001D01758243129D +:040CED000BD5751C92 +:030CF10080751DEE +:0C0CF40000758253120BD50090E650E40E +:0E0D0000F00090E652E4F00090E654E4F000BB +:0E0D0E0090E656E4F00090E65174FFF000907D +:0E0D1C00E65374FFF00090E65574FFF000906F +:0E0D2A00E65774FFF00090E658E4F090E659AA +:0E0D380074FFF090E65AE4F090E65B74FFF072 +:0E0D460090E65CE4F090E65D74FFF090E65EEF +:0E0D5400E4F090E65F74FFF00090E660E4F0DB +:0D0D62000090E66174FFF090E662E4F0900E +:0E0D6F00E66374FFF090E665E4F090E66874C9 +:0A0D7D000BF05391AFD2E8D2EA2246 +:010D87002249 +:020D8800AA823D +:060D8A00120D87DAFB22C6 +:030D900090FB5085 +:080D9300A3E582458370F922FB +:040D9B00AA82AB83FA +:080D9F00120D901ABAFF011BAE +:050DA700EA4B70F4228C +:030DBA007581211F +:0A0DBD001205DAE5826003020DB5AD +:00000001FF Index: bin/nexys3_jtag_2fifo_ic.ihx =================================================================== --- bin/nexys3_jtag_2fifo_ic.ihx (nonexistent) +++ bin/nexys3_jtag_2fifo_ic.ihx (revision 26) @@ -0,0 +1,443 @@ +:06000000020DEB02006B93 +:03000B0002006B85 +:0300130002006B7D +:03001B0002006B75 +:0300230002006B6D +:03002B0002006B65 +:0300330002006B5D +:03003B0002006B55 +:0300430002006B4D +:03004B0002006B45 +:0300530002006B3D +:03005B0002006B35 +:0300630002006B2D +:01006B003262 +:0900800002006B0002006B00029B +:08008900006B0002006B000295 +:08009100006B0002006B00028D +:08009900006B0002006B000285 +:0800A100006B0002006B00027D +:0800A900006B0002006B000275 +:0700B100006B0002006B0070 +:0901000002006B0002006B00021A +:08010900006B0002006B000214 +:08011100006B0002006B00020C +:08011900006B0002006B000204 +:08012100006B0002006B0002FC +:08012900006B0002006B0002F4 +:08013100006B0002006B0002EC +:08013900006B0002006B0002E4 +:08014100006B0002006B0002DC +:08014900006B0002006B0002D4 +:08015100006B0002006B0002CC +:08015900006B0002006B0002C4 +:08016100006B0002006B0002BC +:08016900006B0002006B0002B4 +:08017100006B0002006B0002AC +:07017900006B0002006B00A7 +:030DF100020DF9F7 +:030E0C00020DF4E0 +:050DF4001203F180FE76 +:06018000C200E4F508F5E1 +:0401860009F50AD29B +:05018A0001750B00757A +:06018F000C001206001234 +:0E01950005FD75CB6375CAC0758E0075C80474 +:0701A300D2AFD2B0D2B122AD +:0B01AA00AA82850C827583E0EAF00554 +:0501B5000C0509E4B592 +:0401BA000902050A27 +:0101BE00221E +:0401BF0020000122F9 +:0E01C3001205FC90E6A2E0FA30E103020257BA +:0A01D100E509450A60687AC07BE783 +:0E01DB008B9D7AC07BE77B008A9E90E67C7449 +:0C01E90031F07460F0C3743E9509E49599 +:0A01F5000A50107A3EE50924C2F515 +:0601FF0009E50A34FFF5DA +:030205000A800765 +:06020800AA09E4F509F566 +:01020E000AE5 +:0B020F008A037C007DE08D9A850B9B2C +:0E021A008A041AEC601090E67BE090E67CF01F +:080228007C007DE08D9A80EA64 +:0C023000859B0B0090E68F74022BF0D22F +:03023C00CF801858 +:0E023F0030CF1590E7C07431F090E7C17460C5 +:0A024D00F00090E68F7402F0C2CFBB +:06025700E5AA30E00122DF +:0A025D00C3E50994C1E50A940040CE +:02026700012272 +:0E02690090E690E0FB7A0090E691E0FC7D00CC +:0A027700EA4CF50DEB4DF50E7C008E +:0E0281007DF08D9A7C007DF08C9B7C007D00D2 +:0A028F00C3EC950DED950E4003023F +:02029900036AF6 +:07029B00E5087003020326D1 +:0A02A200E50DC39CFEE50E9DFFA8CC +:0C02AC00087900C3E89EE99F5004880612 +:0202B8008907B4 +:0A02BA008E00E508C398F508EE2C4D +:0B02C400FCEF3DFD30012C8E008F018F +:0902CF008802890318B8FF011927 +:0E02D800EA4B60B390E67BE0F582C004C005FF +:0E02E600C000C001120632D001D000D005D0F9 +:0302F4000480D8AB +:0402F7008E028F03E1 +:0902FB008A068B071ABAFF011BE9 +:0E030400EE4F608790E67BE0F582C002C003FA +:0E031200C004C00512066F1201AAD005D00467 +:06032000D003D00280D5DD +:0D03260090E67BE0FA23235401FBB40100B4 +:0A0333009201EA30E707743F5AF523 +:03033D0008802213 +:0C03400030010F8A82C004C005120606BE +:06034C00D005D004801072 +:0E0352008A82C004C0051206241201AAD0053A +:02036000D004C7 +:050362000CBC00010DC0 +:0303670002028F00 +:08036A000090E6917480F0227E +:0E03720090E6B8E0FA20E70C90E6B9E07002E1 +:02038000D200A9 +:04038200758201225D +:0E03860090E6B9E0FABA902B90E6BCE025E0D4 +:0A039400547FFA2400F582E43418C7 +:0C039E00F583E0FB90E740F0EA04240047 +:0C03AA00F582E43418F583E0FA90E74196 +:0303B600F0800CC8 +:0C03B90090E7407436F090E7417483F048 +:0D03C50090E68AE4F090E6BEE0FABA02008D +:0903D200500790E6BEE0FA80023B +:0203DB007A02A4 +:0903DD0090E68BEAF07582012222 +:0603E60030020312094E73 +:0503EC001201BF80F5C5 +:0E03F100C2AF90E609E4F01201801206BE12BF +:0603FF000455120D1E1250 +:0804050008B8D2AF1207C702CC +:02040D0003E604 +:0A040F00AA82E50F54FEFBB50F02B0 +:02041900802938 +:0A041B008A048C05E46210ED621102 +:0A042500EB2400F582E43418F5839F +:0A042F00E0FB7C006210EC6211E5B6 +:060439001033C51133C5AC +:05043F001192E0F51030 +:06044400AB0F050FEB24D5 +:0A044A0000F582E43418F583EAF0AF +:010454002285 +:07045500750F007510AA7578 +:0C045C0011AA75820012040F75820012B4 +:04046800040F7A0003 +:0C046C00C3EA648094865017EA2408F567 +:0C04780082E434E1F583E0F582C002125A +:07048400040FD0020A80E121 +:02048B007A00F5 +:0C048D00C3EA648094825017EA2423F52F +:0C04990082E434E1F583E0F582C0021239 +:0704A500040FD0020A80E100 +:0E04AC0075821C12040F75820012040F7A0074 +:0C04BA00C3EA648094825017EA2402F523 +:0C04C60082E434E1F583E0F582C002120C +:0704D200040FD0020A80E1D3 +:0C04D9007486250FFAF582C00212040F91 +:0C04E50090E196E0F58212040FD0029026 +:0D04F100E196E02AFAF582C00212040F9095 +:0B04FE00E1B4E0F58212040FD0029080 +:0A050900E1B4E02AF58212040F901D +:0A051300E1DEE0F58212040F7A0029 +:0E051D0090E196E0FBC3EA64808BF063F0800F +:0B052B0095F05017EA2496F582E434A6 +:0C053600E1F583E0F582C00212040FD052 +:04054200020A80D752 +:020546007A0039 +:0E05480090E1B4E0FBC3EA64808BF063F080C6 +:0B05560095F05017EA24B4F582E4345D +:0C056100E1F583E0F582C00212040FD027 +:04056D00020A80D727 +:020571007A000E +:0E05730090E1DEE0FBC3EA64808BF063F08071 +:0B05810095F05017EA24DEF582E43408 +:0C058C00E1F583E0F582C00212040FD0FC +:04059800020A80D7FC +:02059C007A00E3 +:0C059E00C3EA648094845017EA240EF530 +:0C05AA0082E434E1F583E0F582C0021227 +:0705B600040FD0020A80E1EE +:0C05BD007482250F400875820012040FA4 +:0205C90080F2BE +:0805CB00AA1090187EEAF0AAC4 +:0705D3001190187FEAF022ED +:0805DA007880E84400600C7910 +:0C05E20001901800E4F0A3D8FCD9FAD076 +:0E05EE0083D082F6D8FDC082C08375820022C1 +:02E1000012010A +:06E10200000200000040D5 +:06E10800C016EF03040045 +:04E10E000102030106 +:0AE112000A060002FFFFFF400100B3 +:07E11C0009022E00010100C1 +:0EE1230080FA0904000004FFFFFF02070581D7 +:0EE131000200020007050202000200070504BA +:0BE13F0002000200070586020002003B +:0EE14A001201000200000040C016EF030400A6 +:04E1580001020301BC +:0AE15C000A060002FFFFFF40010069 +:0EE166000902200001010080FA0904000002F5 +:0EE17400FFFFFF0207058102400000070502C1 +:04E182000240000057 +:01E186000494 +:02E1870090E125 +:02E1890096E11D +:02E18B00B4E1FD +:02E18D00DEE1D1 +:06E1900006030000090473 +:0EE196001E037700770077002E0072006500F0 +:0EE1A400740072006F00310031002E00640024 +:02E1B200650006 +:0EE1B4002A036E0065007800790073003300C6 +:0EE1C2005F006A007400610067005F003200B9 +:0EE1D0006600690066006F005F006900630072 +:0EE1DE001203300030003000300030003000FE +:04E1EC0030003000CF +:0105FC0022DC +:0105FD0022DB +:0105FE0022DA +:0105FF0022D9 +:060600009001F4020DDA86 +:0E060600AA82ABB574FE5BF5F0741C45F0F5EE +:0E061400B5EA1392B4EAA2E192B3EAA2E4922C +:02062200B22202 +:0E062400120606A2B0E433FA74024AF58222EE +:0E063200E5821392B2D2B413C2B492B2D2B423 +:0E06400013C2B492B2D2B413C2B492B2D2B406 +:0E064E0013C2B492B2D2B413C2B492B2D2B4F8 +:0E065C0013C2B492B2D2B413C2B492B2D2B4EA +:05066A0000C2B42222D1 +:0E066F00E582A2B01392B2D2B4C2B4A2B0130C +:0E067D0092B2D2B4C2B4A2B01392B2D2B4C23E +:0E068B00B4A2B01392B2D2B4C2B4A2B0139211 +:0E069900B2D2B4C2B4A2B01392B2D2B4C2B400 +:0E06A700A2B01392B2D2B4C2B4A2B01392B2F7 +:0906B500D2B400C2B4F582222285 +:0D06BE0090E6007412F090E60174A3F09035 +:0E06CB00E6707480F00090E60274E0F000909B +:0E06D900E60374F9F00090E6047480F00090DF +:0D06E700E60B7403F00090E610E4F00090C4 +:0D06F400E61174A0F00090E618E4F000900C +:0E070100E6047402F00090E61274A2F000907C +:0E070F00E61374A2F00090E61474E0F000907F +:0E071D00E6157402F00090E6047404F00090FB +:0E072B00E6047406F00090E6047408F00090F6 +:0E073900E604E4F00090E60BE4F00090E649E0 +:0E0747007484F00090E6497484F00090E61986 +:0E075500E4F00090E6197410F00090E63274A3 +:0E07630080F00090E6337404F00090E61A7403 +:0E0771000CF00090E6247402F00090E625E4FF +:0E077F00F00090E6347419F00090E63574FC3A +:0E078D00F00090E61BE4F0000090E69174800E +:0A079B00F00090E6917480F0002257 +:0807A50090E6A0E04401F022FF +:0E07AD00AA8274805AC423541FFB740F5A9002 +:0C07BB00E6834BF090E683E04420F0223F +:0E07C70090E680E0440AF09000FA120DDA90FD +:0E07D500E65D74FFF090E65F74FFF05391EF65 +:0807E30090E680E054F7F022DB +:060E0600E478FFF6D8FDC0 +:060DEB00751200751300F3 +:0A07EB0090E680E0FA30E71975147B +:0307F50000751577 +:0307F800E1751692 +:0307FB001275175D +:0307FE00E175188A +:030801001C75194A +:03080400E1751A81 +:0308070066751BF8 +:02080A00E122E9 +:04080C0075144A75A0 +:0308100015E1757A +:03081300165C75FB +:0308160017E17572 +:03081900186675E9 +:03081C0019E1756A +:03081F001A1C752B +:030822001BE122B5 +:090825005391EF75A100D20232DB +:0C082E00C021C0E0C0F0C082C083C00246 +:0E083A00C003C004C005C006C007C000C00156 +:0E084800C0D075D0005391EF75A1001207EBE0 +:0E085600D0D0D001D000D007D006D005D004FD +:0D086400D003D002D083D082D0F0D0E0D0FD +:02087100213232 +:0C087300C021C0E0C0F0C082C083C00201 +:0E087F00C003C004C005C006C007C000C00111 +:0E088D00C0D075D0005391EF75A1001207EB9B +:0E089B00D0D0D001D000D007D006D005D004B8 +:0D08A900D003D002D083D082D0F0D0E0D0B8 +:0208B6002132ED +:0508B8001207EB751CA6 +:0308BD0025751D81 +:0808C00008758200120C777527 +:0308C8001C2E756E +:0608CB001D0875821012E9 +:0408D1000C77751C0F +:0308D50073751D1B +:0C08D80008758214120C7790E65C7431F5 +:0208E400F02200 +:0D08E600E582547FFA24F750047582002249 +:0708F300BA01047582012225 +:0808FA00530201E4BA000104FD +:03090200F5822259 +:0E090500AA82BA010C90E6A1E0FB7C008B8276 +:030913008C8322B0 +:0E091600BA810C90E6A2E0FB7C008B828C8301 +:0109240022B0 +:0E09250053027FEA700C90E6A0E0FB7C008B92 +:04093300828C83220D +:0E09370090E6A3E0FB7C00EAC313FA7D00EA21 +:090945002BFBED3C8B82F58322B3 +:0C094E00C20290E6B8E0FA530260BA0062 +:03095A00028028F0 +:05095D00BA2002800D2C +:05096200BA4002800E06 +:05096700BA60028003EC +:03096C00020C0C6E +:06096F001207A5020C0CAA +:0A097500120372E5826003020C0C0D +:06097F001207A5020C0C9A +:0D09850090E6B8E0FA530280BA80028003C9 +:03099200020B0D48 +:0B09950090E6B9E0FABA0003020A86FF +:0509A000BA06028035DB +:0509A500BA0802800801 +:0509AA00BA0A028017EB +:0309AF00020B0731 +:0C09B20090E740E512F090E68AE4F09037 +:0809BE00E68B7401F0020C0C41 +:0C09C60090E740E513F090E68AE4F09022 +:0809D200E68B7401F0020C0C2D +:0A09DA0090E6BBE0FABA01028017B4 +:0509E400BA0202803898 +:0509E900BA0302805971 +:0509EE00BA0602801BA7 +:0509F300BA0702803C80 +:0309F800020A8070 +:0A09FB00AA14AB1590E6B3EBF07BF5 +:090A05000090E6B4EAF0020C0CCA +:0A0A0E00AA16AB1790E6B3EBF07BDD +:090A18000090E6B4EAF0020C0CB7 +:0A0A2100AA18AB1990E6B3EBF07BC6 +:090A2B000090E6B4EAF0020C0CA4 +:0A0A3400AA1AAB1B90E6B3EBF07BAF +:090A3E000090E6B4EAF0020C0C91 +:0E0A470090E6BAE0FA90E186E0FBC3EA9B403D +:070A5500061207A5020C0CBC +:0C0A5C0090E6BAE075F002A42487F58251 +:0B0A680074E135F0F583E0FAA3E090A4 +:0D0A7300E6B3F07B0090E6B4EAF0020C0C54 +:060A80001207A5020C0C98 +:0D0A860090E6B8E0FA53021FBA0002800AA1 +:050A9300BA0102801B06 +:050A9800BA0266802C8B +:0E0A9D0090E740E4F090E741F090E68AF09098 +:080AAB00E68B7402F0020C0C52 +:0E0AB30090E740E4F090E741F090E68AF09082 +:080AC100E68B7402F0020C0C3C +:0E0AC90090E6BCE0F5821208E6E5826025901A +:0E0AD700E6BCE0F582120905E0FA5302019038 +:0E0AE500E740EAF090E741E4F090E68AF090F6 +:080AF300E68B7402F0020C0C0A +:060AFB001207A5020C0C1D +:060B01001207A5020C0C16 +:060B07001207A5020C0C10 +:0C0B0D0090E6B9E0FA24F45003020C0951 +:070B1900EA2A2A900B207369 +:070B2000020C09020B560252 +:060B27000BD1020BB2022B +:060B2D000C09020C090294 +:060B33000C09020C09028E +:060B39000C09020B44024E +:050B3F000C09020B4D42 +:090B440090E6BAE0F512020C0C77 +:090B4D0090E6BAE0F513020C0C6D +:0D0B560090E6B8E0FA53021FBA00028005D5 +:050B6300BA0247800A00 +:0A0B680090E6BAE01207A5020C0C9B +:0D0B720090E6BAE0703090E6BCE0F582122B +:0D0B7F0008E6E582602390E6BCE0F58212F6 +:0E0B8C000905AA82AB83E0FC5304FE8A828B2B +:0E0B9A0083ECF090E6BCE0F5821207AD8064BB +:050BA8001207A5805FAB +:050BAD001207A5805AAB +:0E0BB20090E6B8E0FA53021FBA004F90E6BA80 +:070BC000E0FABA0102800512 +:050BC700BA02028040AB +:050BCC001207A5803BAB +:0E0BD10090E6BAE0FA702C90E6BCE0F58212D5 +:0D0BDF0008E6E582601A90E6BCE0F582129F +:0E0BEC000905AA82AB83E0FC4304018A828BD8 +:050BFA0083ECF0800D0A +:050BFF001207A58008AB +:050C04001207A58003AA +:030C09001207A52A +:080C0C0090E6A0E04480F02214 +:050C1400AA82BA0300F2 +:070C19004005EA249C500194 +:010C200022B1 +:090C2100740F5AFBBB03028007AB +:070C2A00740F5AFBBB0B45E0 +:0A0C3100A2AF9203C2AFEA2400F55F +:0C0C3B0082E43400F5837402F07B007446 +:0C0C4700012AFCE43BFDEC2400F582EDEA +:0A0C53003400F583E51DFCF0740287 +:0C0C5D002AFAE43BFBEA2400F582EB34A9 +:0A0C690000F583AA1C7B00EAF0A24C +:030C73000392AF3A +:010C7600225B +:080C7700E582FA2483500122FA +:060C7F00EA5403600122AB +:0A0C8500A2AF9204C2AFEA2400F50A +:0C0C8F0082E43401F5837402F07B0074F1 +:0C0C9B00012AFCE43BFDEC2400F582ED96 +:0A0CA7003401F583E51DF074022A04 +:0B0CB100FAE43BFBEA2400F582EB3480 +:080CBC0001F583AA1CEAF0A275 +:040CC4000492AF22C5 +:050CC800AA82BA8000C1 +:070CCD004005EA244B500131 +:010CD40022FD +:060CD500EA540360012255 +:0A0CDB00A2AF9205C2AFEA2480F533 +:0C0CE50082E43400F5837402F07B00749C +:0C0CF100012AFCE43BFDEC2480F582EDC0 +:0A0CFD003400F583E51DF074022AAF +:0B0D0700FAE43BFBEA2480F582EB34A9 +:080D120000F583AA1CEAF0A21F +:040D1A000592AF226D +:080D1E00C2E8C2EA751C007571 +:060D26001D01758243125D +:040D2C000C14751C12 +:030D300080751DAE +:0C0D330000758253120C140090E650E48E +:0E0D3F00F00090E652E4F00090E654E4F0007C +:0E0D4D0090E656E4F00090E65174FFF000903E +:0E0D5B00E65374FFF00090E65574FFF0009030 +:0E0D6900E65774FFF00090E658E4F090E6596B +:0E0D770074FFF090E65AE4F090E65B74FFF033 +:0E0D850090E65CE4F090E65D74FFF090E65EB0 +:0E0D9300E4F090E65F74FFF00090E660E4F09C +:0D0DA1000090E66174FFF090E662E4F090CF +:0E0DAE00E66374FFF090E665E4F090E668748A +:0A0DBC000BF05391AFD2E8D2EA2207 +:010DC600220A +:020DC700AA82FE +:060DC900120DC6DAFB2248 +:030DCF0090FB5046 +:080DD200A3E582458370F922BC +:040DDA00AA82AB83BB +:080DDE00120DCF1ABAFF011B30 +:050DE600EA4B70F4224D +:030DF900758121E0 +:0A0DFC001205DAE5826003020DF42F +:00000001FF Index: bin/nexys3_jtag_3fifo_ic.ihx =================================================================== --- bin/nexys3_jtag_3fifo_ic.ihx (nonexistent) +++ bin/nexys3_jtag_3fifo_ic.ihx (revision 26) @@ -0,0 +1,446 @@ +:06000000020E0702006B76 +:03000B0002006B85 +:0300130002006B7D +:03001B0002006B75 +:0300230002006B6D +:03002B0002006B65 +:0300330002006B5D +:03003B0002006B55 +:0300430002006B4D +:03004B0002006B45 +:0300530002006B3D +:03005B0002006B35 +:0300630002006B2D +:01006B003262 +:0900800002006B0002006B00029B +:08008900006B0002006B000295 +:08009100006B0002006B00028D +:08009900006B0002006B000285 +:0800A100006B0002006B00027D +:0800A900006B0002006B000275 +:0700B100006B0002006B0070 +:0901000002006B0002006B00021A +:08010900006B0002006B000214 +:08011100006B0002006B00020C +:08011900006B0002006B000204 +:08012100006B0002006B0002FC +:08012900006B0002006B0002F4 +:08013100006B0002006B0002EC +:08013900006B0002006B0002E4 +:08014100006B0002006B0002DC +:08014900006B0002006B0002D4 +:08015100006B0002006B0002CC +:08015900006B0002006B0002C4 +:08016100006B0002006B0002BC +:08016900006B0002006B0002B4 +:08017100006B0002006B0002AC +:07017900006B0002006B00A7 +:030E0D00020E15BD +:030E2800020E10A7 +:050E10001203F180FE59 +:06018000C200E4F508F5E1 +:0401860009F50AD29B +:05018A0001750B00757A +:06018F000C001206001234 +:0E01950005FD75CB6375CAC0758E0075C80474 +:0701A300D2AFD2B0D2B122AD +:0B01AA00AA82850C827583E0EAF00554 +:0501B5000C0509E4B592 +:0401BA000902050A27 +:0101BE00221E +:0401BF0020000122F9 +:0E01C3001205FC90E6A2E0FA30E103020257BA +:0A01D100E509450A60687AC07BE783 +:0E01DB008B9D7AC07BE77B008A9E90E67C7449 +:0C01E90031F07460F0C3743E9509E49599 +:0A01F5000A50107A3EE50924C2F515 +:0601FF0009E50A34FFF5DA +:030205000A800765 +:06020800AA09E4F509F566 +:01020E000AE5 +:0B020F008A037C007DE08D9A850B9B2C +:0E021A008A041AEC601090E67BE090E67CF01F +:080228007C007DE08D9A80EA64 +:0C023000859B0B0090E68F74022BF0D22F +:03023C00CF801858 +:0E023F0030CF1590E7C07431F090E7C17460C5 +:0A024D00F00090E68F7402F0C2CFBB +:06025700E5AA30E00122DF +:0A025D00C3E50994C1E50A940040CE +:02026700012272 +:0E02690090E690E0FB7A0090E691E0FC7D00CC +:0A027700EA4CF50DEB4DF50E7C008E +:0E0281007DF08D9A7C007DF08C9B7C007D00D2 +:0A028F00C3EC950DED950E4003023F +:02029900036AF6 +:07029B00E5087003020326D1 +:0A02A200E50DC39CFEE50E9DFFA8CC +:0C02AC00087900C3E89EE99F5004880612 +:0202B8008907B4 +:0A02BA008E00E508C398F508EE2C4D +:0B02C400FCEF3DFD30012C8E008F018F +:0902CF008802890318B8FF011927 +:0E02D800EA4B60B390E67BE0F582C004C005FF +:0E02E600C000C001120632D001D000D005D0F9 +:0302F4000480D8AB +:0402F7008E028F03E1 +:0902FB008A068B071ABAFF011BE9 +:0E030400EE4F608790E67BE0F582C002C003FA +:0E031200C004C00512066F1201AAD005D00467 +:06032000D003D00280D5DD +:0D03260090E67BE0FA23235401FBB40100B4 +:0A0333009201EA30E707743F5AF523 +:03033D0008802213 +:0C03400030010F8A82C004C005120606BE +:06034C00D005D004801072 +:0E0352008A82C004C0051206241201AAD0053A +:02036000D004C7 +:050362000CBC00010DC0 +:0303670002028F00 +:08036A000090E6917480F0227E +:0E03720090E6B8E0FA20E70C90E6B9E07002E1 +:02038000D200A9 +:04038200758201225D +:0E03860090E6B9E0FABA902B90E6BCE025E0D4 +:0A039400547FFA2400F582E43418C7 +:0C039E00F583E0FB90E740F0EA04240047 +:0C03AA00F582E43418F583E0FA90E74196 +:0303B600F0800CC8 +:0C03B90090E7407436F090E7417483F048 +:0D03C50090E68AE4F090E6BEE0FABA02008D +:0903D200500790E6BEE0FA80023B +:0203DB007A02A4 +:0903DD0090E68BEAF07582012222 +:0603E60030020312096A57 +:0503EC001201BF80F5C5 +:0E03F100C2AF90E609E4F01201801206BE12BF +:0603FF000455120D3A1234 +:0804050008D4D2AF1207E30294 +:02040D0003E604 +:0A040F00AA82E50F54FEFBB50F02B0 +:02041900802938 +:0A041B008A048C05E46210ED621102 +:0A042500EB2400F582E43418F5839F +:0A042F00E0FB7C006210EC6211E5B6 +:060439001033C51133C5AC +:05043F001192E0F51030 +:06044400AB0F050FEB24D5 +:0A044A0000F582E43418F583EAF0AF +:010454002285 +:07045500750F007510AA7578 +:0C045C0011AA75820012040F75820012B4 +:04046800040F7A0003 +:0C046C00C3EA648094865017EA2408F567 +:0C04780082E434E1F583E0F582C002125A +:07048400040FD0020A80E121 +:02048B007A00F5 +:0C048D00C3EA648094825017EA2423F52F +:0C04990082E434E1F583E0F582C0021239 +:0704A500040FD0020A80E100 +:0E04AC0075821C12040F75820012040F7A0074 +:0C04BA00C3EA648094825017EA2402F523 +:0C04C60082E434E1F583E0F582C002120C +:0704D200040FD0020A80E1D3 +:0C04D9007486250FFAF582C00212040F91 +:0C04E50090E19EE0F58212040FD002901E +:0D04F100E19EE02AFAF582C00212040F908D +:0B04FE00E1BCE0F58212040FD0029078 +:0A050900E1BCE02AF58212040F9015 +:0A051300E1E6E0F58212040F7A0021 +:0E051D0090E19EE0FBC3EA64808BF063F08007 +:0B052B0095F05017EA249EF582E4349E +:0C053600E1F583E0F582C00212040FD052 +:04054200020A80D752 +:020546007A0039 +:0E05480090E1BCE0FBC3EA64808BF063F080BE +:0B05560095F05017EA24BCF582E43455 +:0C056100E1F583E0F582C00212040FD027 +:04056D00020A80D727 +:020571007A000E +:0E05730090E1E6E0FBC3EA64808BF063F08069 +:0B05810095F05017EA24E6F582E43400 +:0C058C00E1F583E0F582C00212040FD0FC +:04059800020A80D7FC +:02059C007A00E3 +:0C059E00C3EA648094845017EA240EF530 +:0C05AA0082E434E1F583E0F582C0021227 +:0705B600040FD0020A80E1EE +:0C05BD007482250F400875820012040FA4 +:0205C90080F2BE +:0805CB00AA1090187EEAF0AAC4 +:0705D3001190187FEAF022ED +:0805DA007880E84400600C7910 +:0C05E20001901800E4F0A3D8FCD9FAD076 +:0E05EE0083D082F6D8FDC082C08375820022C1 +:02E1000012010A +:06E10200000200000040D5 +:06E10800C016EF03040045 +:04E10E000102030106 +:0AE112000A060002FFFFFF400100B3 +:07E11C0009023500010100BA +:0EE1230080FA0904000005FFFFFF02070581D6 +:0EE131000200020007050202000200070504BA +:0EE13F000200020007058602000200070588A4 +:04E14D0002000200CA +:0EE152001201000200000040C016EF0304009E +:04E1600001020301B4 +:0AE164000A060002FFFFFF40010061 +:0EE16E000902200001010080FA0904000002ED +:0EE17C00FFFFFF0207058102400000070502B9 +:04E18A00024000004F +:01E18E00048C +:02E18F0098E115 +:02E191009EE10D +:02E19300BCE1ED +:02E19500E6E1C1 +:06E198000603000009046B +:0EE19E001E037700770077002E0072006500E8 +:0EE1AC00740072006F00310031002E0064001C +:02E1BA006500FE +:0EE1BC002A036E0065007800790073003300BE +:0EE1CA005F006A007400610067005F003300B0 +:0EE1D8006600690066006F005F00690063006A +:0EE1E6001203300030003000300030003000F6 +:04E1F40030003000C7 +:0105FC0022DC +:0105FD0022DB +:0105FE0022DA +:0105FF0022D9 +:060600009001F4020DF66A +:0E060600AA82ABB574FE5BF5F0741C45F0F5EE +:0E061400B5EA1392B4EAA2E192B3EAA2E4922C +:02062200B22202 +:0E062400120606A2B0E433FA74024AF58222EE +:0E063200E5821392B2D2B413C2B492B2D2B423 +:0E06400013C2B492B2D2B413C2B492B2D2B406 +:0E064E0013C2B492B2D2B413C2B492B2D2B4F8 +:0E065C0013C2B492B2D2B413C2B492B2D2B4EA +:05066A0000C2B42222D1 +:0E066F00E582A2B01392B2D2B4C2B4A2B0130C +:0E067D0092B2D2B4C2B4A2B01392B2D2B4C23E +:0E068B00B4A2B01392B2D2B4C2B4A2B0139211 +:0E069900B2D2B4C2B4A2B01392B2D2B4C2B400 +:0E06A700A2B01392B2D2B4C2B4A2B01392B2F7 +:0906B500D2B400C2B4F582222285 +:0D06BE0090E6007412F090E60174A3F09035 +:0E06CB00E6707480F00090E60274E0F000909B +:0E06D900E60374F9F00090E6047480F00090DF +:0D06E700E60B7403F00090E610E4F00090C4 +:0D06F400E61174A0F00090E618E4F000900C +:0E070100E6047402F00090E61274A2F000907C +:0E070F00E61374A2F00090E61474E2F000907D +:0E071D00E61574E2F00090E6047404F000901B +:0E072B00E6047406F00090E6047408F00090F6 +:0E073900E604E4F00090E60BE4F00090E649E0 +:0E0747007484F00090E6497484F00090E61986 +:0E075500E4F00090E6197410F00090E63274A3 +:0E07630080F00090E6337404F00090E61A7403 +:0E0771000CF00090E6247402F00090E625E4FF +:0E077F00F00090E6347409F00090E63574FC4A +:0E078D00F00090E61B740CF00090E62674025B +:0E079B00F00090E627E4F00090E6367441F09E +:0E07A9000090E63774FCF0000090E69174803A +:0A07B700F00090E6917480F000223B +:0807C10090E6A0E04401F022E3 +:0E07C900AA8274805AC423541FFB740F5A90E6 +:0C07D700E6834BF090E683E04420F02223 +:0E07E30090E680E0440AF09000FA120DF690C5 +:0E07F100E65D74FFF090E65F74FFF05391EF49 +:0807FF0090E680E054F7F022BF +:060E2200E478FFF6D8FDA4 +:060E0700751200751300D6 +:0A08070090E680E0FA30E71975145E +:030811000075155A +:03081400E1751675 +:0308170012751740 +:03081A00E175186D +:03081D001C75192E +:03082000E1751A65 +:030823006E751BD4 +:02082600E122CD +:04082800751452757C +:03082C0015E1755E +:03082F00166475D7 +:0308320017E17556 +:03083500186E75C5 +:0308380019E1754E +:03083B001A1C750F +:03083E001BE12299 +:090841005391EF75A100D20232BF +:0C084A00C021C0E0C0F0C082C083C0022A +:0E085600C003C004C005C006C007C000C0013A +:0E086400C0D075D0005391EF75A100120807A7 +:0E087200D0D0D001D000D007D006D005D004E1 +:0D088000D003D002D083D082D0F0D0E0D0E1 +:02088D00213216 +:0C088F00C021C0E0C0F0C082C083C002E5 +:0E089B00C003C004C005C006C007C000C001F5 +:0E08A900C0D075D0005391EF75A10012080762 +:0E08B700D0D0D001D000D007D006D005D0049C +:0D08C500D003D002D083D082D0F0D0E0D09C +:0208D2002132D1 +:0508D400120807751C6D +:0308D90041751D49 +:0808DC0008758200120C9375EF +:0308E4001C4A7536 +:0608E7001D0875821012CD +:0408ED000C93751CD7 +:0308F1008F751DE3 +:0C08F40008758214120C9390E65C7431BD +:02090000F022E3 +:0D090200E582547FFA24F75004758200222C +:07090F00BA01047582012208 +:08091600530201E4BA000104E0 +:03091E00F582223D +:0E092100AA82BA010C90E6A1E0FB7C008B825A +:03092F008C832294 +:0E093200BA810C90E6A2E0FB7C008B828C83E5 +:010940002294 +:0E09410053027FEA700C90E6A0E0FB7C008B76 +:04094F00828C8322F1 +:0E09530090E6A3E0FB7C00EAC313FA7D00EA05 +:090961002BFBED3C8B82F5832297 +:0C096A00C20290E6B8E0FA530260BA0046 +:03097600028028D4 +:05097900BA2002800D10 +:05097E00BA4002800EEA +:05098300BA60028003D0 +:03098800020C2836 +:06098B001207C1020C2856 +:0A099100120372E5826003020C28D5 +:06099B001207C1020C2846 +:0D09A10090E6B8E0FA530280BA80028003AD +:0309AE00020B2910 +:0B09B10090E6B9E0FABA0003020AA2C7 +:0509BC00BA06028035BF +:0509C100BA08028008E5 +:0509C600BA0A028017CF +:0309CB00020B23F9 +:0C09CE0090E740E512F090E68AE4F0901B +:0809DA00E68B7401F0020C2809 +:0C09E20090E740E513F090E68AE4F09006 +:0809EE00E68B7401F0020C28F5 +:0A09F60090E6BBE0FABA0102801798 +:050A0000BA020280387B +:050A0500BA0302805954 +:050A0A00BA0602801B8A +:050A0F00BA0702803C63 +:030A1400020A9C37 +:0A0A1700AA14AB1590E6B3EBF07BD8 +:090A21000090E6B4EAF0020C2892 +:0A0A2A00AA16AB1790E6B3EBF07BC1 +:090A34000090E6B4EAF0020C287F +:0A0A3D00AA18AB1990E6B3EBF07BAA +:090A47000090E6B4EAF0020C286C +:0A0A5000AA1AAB1B90E6B3EBF07B93 +:090A5A000090E6B4EAF0020C2859 +:0E0A630090E6BAE0FA90E18EE0FBC3EA9B4019 +:070A7100061207C1020C2868 +:0C0A780090E6BAE075F002A4248FF5822D +:0B0A840074E135F0F583E0FAA3E09088 +:0D0A8F00E6B3F07B0090E6B4EAF0020C281C +:060A9C001207C1020C2844 +:0D0AA20090E6B8E0FA53021FBA0002800A85 +:050AAF00BA0102801BEA +:050AB400BA0266802C6F +:0E0AB90090E740E4F090E741F090E68AF0907C +:080AC700E68B7402F0020C281A +:0E0ACF0090E740E4F090E741F090E68AF09066 +:080ADD00E68B7402F0020C2804 +:0E0AE50090E6BCE0F582120902E582602590E1 +:0E0AF300E6BCE0F582120921E0FA5302019000 +:0E0B0100E740EAF090E741E4F090E68AF090D9 +:080B0F00E68B7402F0020C28D1 +:060B17001207C1020C28C8 +:060B1D001207C1020C28C2 +:060B23001207C1020C28BC +:0C0B290090E6B9E0FA24F45003020C2519 +:070B3500EA2A2A900B3C7331 +:070B3C00020C25020B7202FE +:060B43000BED020BCE02D7 +:060B49000C25020C250240 +:060B4F000C25020C25023A +:060B55000C25020B6002FA +:050B5B000C25020B69EE +:090B600090E6BAE0F512020C283F +:090B690090E6BAE0F513020C2835 +:0D0B720090E6B8E0FA53021FBA00028005B9 +:050B7F00BA0247800AE4 +:0A0B840090E6BAE01207C1020C2847 +:0D0B8E0090E6BAE0703090E6BCE0F582120F +:0D0B9B000902E582602390E6BCE0F58212BD +:0E0BA8000921AA82AB83E0FC5304FE8A828BF3 +:0E0BB60083ECF090E6BCE0F5821207C9806483 +:050BC4001207C1805F73 +:050BC9001207C1805A73 +:0E0BCE0090E6B8E0FA53021FBA004F90E6BA64 +:070BDC00E0FABA01028005F6 +:050BE300BA020280408F +:050BE8001207C1803B73 +:0E0BED0090E6BAE0FA702C90E6BCE0F58212B9 +:0D0BFB000902E582601A90E6BCE0F5821266 +:0E0C08000921AA82AB83E0FC4304018A828B9F +:050C160083ECF0800DED +:050C1B001207C1800872 +:050C20001207C1800372 +:030C25001207C1F2 +:080C280090E6A0E04480F022F8 +:050C3000AA82BA0300D6 +:070C35004005EA249C500178 +:010C3C002295 +:090C3D00740F5AFBBB030280078F +:070C4600740F5AFBBB0B45C4 +:0A0C4D00A2AF9203C2AFEA2400F543 +:0C0C570082E43400F5837402F07B00742A +:0C0C6300012AFCE43BFDEC2400F582EDCE +:0A0C6F003400F583E51DFCF074026B +:0C0C79002AFAE43BFBEA2400F582EB348D +:0A0C850000F583AA1C7B00EAF0A230 +:030C8F000392AF1E +:010C9200223F +:080C9300E582FA2483500122DE +:060C9B00EA54036001228F +:0A0CA100A2AF9204C2AFEA2400F5EE +:0C0CAB0082E43401F5837402F07B0074D5 +:0C0CB700012AFCE43BFDEC2400F582ED7A +:0A0CC3003401F583E51DF074022AE8 +:0B0CCD00FAE43BFBEA2400F582EB3464 +:080CD80001F583AA1CEAF0A259 +:040CE0000492AF22A9 +:050CE400AA82BA8000A5 +:070CE9004005EA244B500115 +:010CF00022E1 +:060CF100EA540360012239 +:0A0CF700A2AF9205C2AFEA2480F517 +:0C0D010082E43400F5837402F07B00747F +:0C0D0D00012AFCE43BFDEC2480F582EDA3 +:0A0D19003400F583E51DF074022A92 +:0B0D2300FAE43BFBEA2480F582EB348D +:080D2E0000F583AA1CEAF0A203 +:040D36000592AF2251 +:080D3A00C2E8C2EA751C007555 +:060D42001D017582431241 +:040D48000C30751CDA +:030D4C0080751D92 +:0C0D4F0000758253120C300090E650E456 +:0E0D5B00F00090E652E4F00090E654E4F00060 +:0E0D690090E656E4F00090E65174FFF0009022 +:0E0D7700E65374FFF00090E65574FFF0009014 +:0E0D8500E65774FFF00090E658E4F090E6594F +:0E0D930074FFF090E65AE4F090E65B74FFF017 +:0E0DA10090E65CE4F090E65D74FFF090E65E94 +:0E0DAF00E4F090E65F74FFF00090E660E4F080 +:0D0DBD000090E66174FFF090E662E4F090B3 +:0E0DCA00E66374FFF090E665E4F090E668746E +:0A0DD8000BF05391AFD2E8D2EA22EB +:010DE20022EE +:020DE300AA82E2 +:060DE500120DE2DAFB2210 +:030DEB0090FB502A +:080DEE00A3E582458370F922A0 +:040DF600AA82AB839F +:080DFA00120DEB1ABAFF011BF8 +:050E0200EA4B70F42230 +:030E1500758121C3 +:0A0E18001205DAE5826003020E10F5 +:00000001FF Index: bin/nexys2_jtag_2fifo_as.ihx =================================================================== --- bin/nexys2_jtag_2fifo_as.ihx (nonexistent) +++ bin/nexys2_jtag_2fifo_as.ihx (revision 26) @@ -0,0 +1,443 @@ +:06000000020DF002006B8E +:03000B0002006B85 +:0300130002006B7D +:03001B0002006B75 +:0300230002006B6D +:03002B0002006B65 +:0300330002006B5D +:03003B0002006B55 +:0300430002006B4D +:03004B0002006B45 +:0300530002006B3D +:03005B0002006B35 +:0300630002006B2D +:01006B003262 +:0900800002006B0002006B00029B +:08008900006B0002006B000295 +:08009100006B0002006B00028D +:08009900006B0002006B000285 +:0800A100006B0002006B00027D +:0800A900006B0002006B000275 +:0700B100006B0002006B0070 +:0901000002006B0002006B00021A +:08010900006B0002006B000214 +:08011100006B0002006B00020C +:08011900006B0002006B000204 +:08012100006B0002006B0002FC +:08012900006B0002006B0002F4 +:08013100006B0002006B0002EC +:08013900006B0002006B0002E4 +:08014100006B0002006B0002DC +:08014900006B0002006B0002D4 +:08015100006B0002006B0002CC +:08015900006B0002006B0002C4 +:08016100006B0002006B0002BC +:08016900006B0002006B0002B4 +:08017100006B0002006B0002AC +:07017900006B0002006B00A7 +:030DF600020DFEED +:030E1100020DF9D6 +:050DF9001203F180FE71 +:06018000C200E4F508F5E1 +:0401860009F50AD29B +:05018A0001750B00757A +:06018F000C001206001234 +:0E01950005FD75CB6375CAC0758E0075C80474 +:0701A300D2AFD2B0D2B122AD +:0B01AA00AA82850C827583E0EAF00554 +:0501B5000C0509E4B592 +:0401BA000902050A27 +:0101BE00221E +:0401BF0020000122F9 +:0E01C3001205FC90E6A2E0FA30E103020257BA +:0A01D100E509450A60687AC07BE783 +:0E01DB008B9D7AC07BE77B008A9E90E67C7449 +:0C01E90031F07460F0C3743E9509E49599 +:0A01F5000A50107A3EE50924C2F515 +:0601FF0009E50A34FFF5DA +:030205000A800765 +:06020800AA09E4F509F566 +:01020E000AE5 +:0B020F008A037C007DE08D9A850B9B2C +:0E021A008A041AEC601090E67BE090E67CF01F +:080228007C007DE08D9A80EA64 +:0C023000859B0B0090E68F74022BF0D22F +:03023C00CF801858 +:0E023F0030CF1590E7C07431F090E7C17460C5 +:0A024D00F00090E68F7402F0C2CFBB +:06025700E5AA30E00122DF +:0A025D00C3E50994C1E50A940040CE +:02026700012272 +:0E02690090E690E0FB7A0090E691E0FC7D00CC +:0A027700EA4CF50DEB4DF50E7C008E +:0E0281007DF08D9A7C007DF08C9B7C007D00D2 +:0A028F00C3EC950DED950E4003023F +:02029900036AF6 +:07029B00E5087003020326D1 +:0A02A200E50DC39CFEE50E9DFFA8CC +:0C02AC00087900C3E89EE99F5004880612 +:0202B8008907B4 +:0A02BA008E00E508C398F508EE2C4D +:0B02C400FCEF3DFD30012C8E008F018F +:0902CF008802890318B8FF011927 +:0E02D800EA4B60B390E67BE0F582C004C005FF +:0E02E600C000C001120637D001D000D005D0F4 +:0302F4000480D8AB +:0402F7008E028F03E1 +:0902FB008A068B071ABAFF011BE9 +:0E030400EE4F608790E67BE0F582C002C003FA +:0E031200C004C0051206741201AAD005D00462 +:06032000D003D00280D5DD +:0D03260090E67BE0FA23235401FBB40100B4 +:0A0333009201EA30E707743F5AF523 +:03033D0008802213 +:0C03400030010F8A82C004C00512060BB9 +:06034C00D005D004801072 +:0E0352008A82C004C0051206291201AAD00535 +:02036000D004C7 +:050362000CBC00010DC0 +:0303670002028F00 +:08036A000090E6917480F0227E +:0E03720090E6B8E0FA20E70C90E6B9E07002E1 +:02038000D200A9 +:04038200758201225D +:0E03860090E6B9E0FABA902B90E6BCE025E0D4 +:0A039400547FFA2400F582E43418C7 +:0C039E00F583E0FB90E740F0EA04240047 +:0C03AA00F582E43418F583E0FA90E74196 +:0303B600F0800CC8 +:0C03B90090E7407436F090E7417483F048 +:0D03C50090E68AE4F090E6BEE0FABA02008D +:0903D200500790E6BEE0FA80023B +:0203DB007A02A4 +:0903DD0090E68BEAF07582012222 +:0603E6003002031209536E +:0503EC001201BF80F5C5 +:0E03F100C2AF90E609E4F01201801206C312BA +:0603FF000455120D23124B +:0804050008BDD2AF1207CC02C2 +:02040D0003E604 +:0A040F00AA82E50F54FEFBB50F02B0 +:02041900802938 +:0A041B008A048C05E46210ED621102 +:0A042500EB2400F582E43418F5839F +:0A042F00E0FB7C006210EC6211E5B6 +:060439001033C51133C5AC +:05043F001192E0F51030 +:06044400AB0F050FEB24D5 +:0A044A0000F582E43418F583EAF0AF +:010454002285 +:07045500750F007510AA7578 +:0C045C0011AA75820012040F75820012B4 +:04046800040F7A0003 +:0C046C00C3EA648094865017EA2408F567 +:0C04780082E434E1F583E0F582C002125A +:07048400040FD0020A80E121 +:02048B007A00F5 +:0C048D00C3EA648094825017EA2423F52F +:0C04990082E434E1F583E0F582C0021239 +:0704A500040FD0020A80E100 +:0E04AC0075821C12040F75820012040F7A0074 +:0C04BA00C3EA648094825017EA2402F523 +:0C04C60082E434E1F583E0F582C002120C +:0704D200040FD0020A80E1D3 +:0C04D9007486250FFAF582C00212040F91 +:0C04E50090E196E0F58212040FD0029026 +:0D04F100E196E02AFAF582C00212040F9095 +:0B04FE00E1B4E0F58212040FD0029080 +:0A050900E1B4E02AF58212040F901D +:0A051300E1DEE0F58212040F7A0029 +:0E051D0090E196E0FBC3EA64808BF063F0800F +:0B052B0095F05017EA2496F582E434A6 +:0C053600E1F583E0F582C00212040FD052 +:04054200020A80D752 +:020546007A0039 +:0E05480090E1B4E0FBC3EA64808BF063F080C6 +:0B05560095F05017EA24B4F582E4345D +:0C056100E1F583E0F582C00212040FD027 +:04056D00020A80D727 +:020571007A000E +:0E05730090E1DEE0FBC3EA64808BF063F08071 +:0B05810095F05017EA24DEF582E43408 +:0C058C00E1F583E0F582C00212040FD0FC +:04059800020A80D7FC +:02059C007A00E3 +:0C059E00C3EA648094845017EA240EF530 +:0C05AA0082E434E1F583E0F582C0021227 +:0705B600040FD0020A80E1EE +:0C05BD007482250F400875820012040FA4 +:0205C90080F2BE +:0805CB00AA1090187EEAF0AAC4 +:0705D3001190187FEAF022ED +:0805DA007880E84400600C7910 +:0C05E20001901800E4F0A3D8FCD9FAD076 +:0E05EE0083D082F6D8FDC082C08375820022C1 +:02E1000012010A +:06E10200000200000040D5 +:06E10800C016EF03040045 +:04E10E000102030106 +:0AE112000A060002FFFFFF400100B3 +:07E11C0009022E00010100C1 +:0EE1230080FA0904000004FFFFFF02070581D7 +:0EE131000200020007050202000200070504BA +:0BE13F0002000200070586020002003B +:0EE14A001201000200000040C016EF030400A6 +:04E1580001020301BC +:0AE15C000A060002FFFFFF40010069 +:0EE166000902200001010080FA0904000002F5 +:0EE17400FFFFFF0207058102400000070502C1 +:04E182000240000057 +:01E186000494 +:02E1870090E125 +:02E1890096E11D +:02E18B00B4E1FD +:02E18D00DEE1D1 +:06E1900006030000090473 +:0EE196001E037700770077002E0072006500F0 +:0EE1A400740072006F00310031002E00640024 +:02E1B200650006 +:0EE1B4002A036E0065007800790073003200C7 +:0EE1C2005F006A007400610067005F003200B9 +:0EE1D0006600690066006F005F00610073006A +:0EE1DE001203300030003000300030003000FE +:04E1EC0030003000CF +:0105FC0022DC +:0105FD0022DB +:0105FE0022DA +:0105FF0022D9 +:0B060000D2B775B5809001F4020DDF49 +:0E060B00AA82ABB574FE5BF5F0741C45F0F5E9 +:0E061900B5EA1392B4EAA2E192B3EAA2E49227 +:02062700B222FD +:0E06290012060BA2B0E433FA74024AF58222E4 +:0E063700E5821392B2D2B413C2B492B2D2B41E +:0E06450013C2B492B2D2B413C2B492B2D2B401 +:0E06530013C2B492B2D2B413C2B492B2D2B4F3 +:0E06610013C2B492B2D2B413C2B492B2D2B4E5 +:05066F0000C2B42222CC +:0E067400E582A2B01392B2D2B4C2B4A2B01307 +:0E06820092B2D2B4C2B4A2B01392B2D2B4C239 +:0E069000B4A2B01392B2D2B4C2B4A2B013920C +:0E069E00B2D2B4C2B4A2B01392B2D2B4C2B4FB +:0E06AC00A2B01392B2D2B4C2B4A2B01392B2F2 +:0906BA00D2B400C2B4F582222280 +:0D06C30090E6007412F090E60174ABF09028 +:0E06D000E6707480F00090E60274E0F0009096 +:0E06DE00E60374F9F00090E6047480F00090DA +:0D06EC00E60B7403F00090E610E4F00090BF +:0D06F900E61174A0F00090E618E4F0009007 +:0E070600E6047402F00090E61274A2F0009077 +:0E071400E61374A2F00090E61474E0F000907A +:0E072200E6157402F00090E6047404F00090F6 +:0E073000E6047406F00090E6047408F00090F1 +:0E073E00E604E4F00090E60BE4F00090E649DB +:0E074C007484F00090E6497484F00090E61981 +:0E075A00E4F00090E6197410F00090E632749E +:0E07680080F00090E6337404F00090E61A74FE +:0E0776000CF00090E6247402F00090E625E4FA +:0E078400F00090E6347419F00090E63574FC35 +:0E079200F00090E61BE4F0000090E691748009 +:0A07A000F00090E6917480F0002252 +:0807AA0090E6A0E04401F022FA +:0E07B200AA8274805AC423541FFB740F5A90FD +:0C07C000E6834BF090E683E04420F0223A +:0E07CC0090E680E0440AF09000FA120DDF90F3 +:0E07DA00E65D74FFF090E65F74FFF05391EF60 +:0807E80090E680E054F7F022D6 +:060E0B00E478FFF6D8FDBB +:060DF000751200751300EE +:0A07F00090E680E0FA30E719751476 +:0307FA0000751572 +:0307FD00E175168D +:0308000012751757 +:03080300E1751884 +:030806001C751945 +:03080900E1751A7C +:03080C0066751BF3 +:02080F00E122E4 +:0408110075144A759B +:0308150015E17575 +:03081800165C75F6 +:03081B0017E1756D +:03081E00186675E4 +:0308210019E17565 +:030824001A1C7526 +:030827001BE122B0 +:09082A005391EF75A100D20232D6 +:0C083300C021C0E0C0F0C082C083C00241 +:0E083F00C003C004C005C006C007C000C00151 +:0E084D00C0D075D0005391EF75A1001207F0D6 +:0E085B00D0D0D001D000D007D006D005D004F8 +:0D086900D003D002D083D082D0F0D0E0D0F8 +:0208760021322D +:0C087800C021C0E0C0F0C082C083C002FC +:0E088400C003C004C005C006C007C000C0010C +:0E089200C0D075D0005391EF75A1001207F091 +:0E08A000D0D0D001D000D007D006D005D004B3 +:0D08AE00D003D002D083D082D0F0D0E0D0B3 +:0208BB002132E8 +:0508BD001207F0751C9C +:0308C2002A751D77 +:0808C50008758200120C7C751D +:0308CD001C337564 +:0608D0001D0875821012E4 +:0408D6000C7C751C05 +:0308DA0078751D11 +:0C08DD0008758214120C7C90E65C7431EB +:0208E900F022FB +:0D08EB00E582547FFA24F750047582002244 +:0708F800BA01047582012220 +:0808FF00530201E4BA000104F8 +:03090700F5822254 +:0E090A00AA82BA010C90E6A1E0FB7C008B8271 +:030918008C8322AB +:0E091B00BA810C90E6A2E0FB7C008B828C83FC +:0109290022AB +:0E092A0053027FEA700C90E6A0E0FB7C008B8D +:04093800828C832208 +:0E093C0090E6A3E0FB7C00EAC313FA7D00EA1C +:09094A002BFBED3C8B82F58322AE +:0C095300C20290E6B8E0FA530260BA005D +:03095F00028028EB +:05096200BA2002800D27 +:05096700BA4002800E01 +:05096C00BA60028003E7 +:03097100020C1164 +:060974001207AA020C119B +:0A097A00120372E5826003020C1103 +:060984001207AA020C118B +:0D098A0090E6B8E0FA530280BA80028003C4 +:03099700020B123E +:0B099A0090E6B9E0FABA0003020A8BF5 +:0509A500BA06028035D6 +:0509AA00BA08028008FC +:0509AF00BA0A028017E6 +:0309B400020B0C27 +:0C09B70090E740E512F090E68AE4F09032 +:0809C300E68B7401F0020C1137 +:0C09CB0090E740E513F090E68AE4F0901D +:0809D700E68B7401F0020C1123 +:0A09DF0090E6BBE0FABA01028017AF +:0509E900BA0202803893 +:0509EE00BA030280596C +:0509F300BA0602801BA2 +:0509F800BA0702803C7B +:0309FD00020A8566 +:0A0A0000AA14AB1590E6B3EBF07BEF +:090A0A000090E6B4EAF0020C11C0 +:0A0A1300AA16AB1790E6B3EBF07BD8 +:090A1D000090E6B4EAF0020C11AD +:0A0A2600AA18AB1990E6B3EBF07BC1 +:090A30000090E6B4EAF0020C119A +:0A0A3900AA1AAB1B90E6B3EBF07BAA +:090A43000090E6B4EAF0020C1187 +:0E0A4C0090E6BAE0FA90E186E0FBC3EA9B4038 +:070A5A00061207AA020C11AD +:0C0A610090E6BAE075F002A42487F5824C +:0B0A6D0074E135F0F583E0FAA3E0909F +:0D0A7800E6B3F07B0090E6B4EAF0020C114A +:060A85001207AA020C1189 +:0D0A8B0090E6B8E0FA53021FBA0002800A9C +:050A9800BA0102801B01 +:050A9D00BA0266802C86 +:0E0AA20090E740E4F090E741F090E68AF09093 +:080AB000E68B7402F0020C1148 +:0E0AB80090E740E4F090E741F090E68AF0907D +:080AC600E68B7402F0020C1132 +:0E0ACE0090E6BCE0F5821208EBE58260259010 +:0E0ADC00E6BCE0F58212090AE0FA530201902E +:0E0AEA00E740EAF090E741E4F090E68AF090F1 +:080AF800E68B7402F0020C1100 +:060B00001207AA020C110D +:060B06001207AA020C1107 +:060B0C001207AA020C1101 +:0C0B120090E6B9E0FA24F45003020C0E47 +:070B1E00EA2A2A900B25735F +:070B2500020C0E020B5B0243 +:060B2C000BD6020BB7021C +:060B32000C0E020C0E0285 +:060B38000C0E020C0E027F +:060B3E000C0E020B49023F +:050B44000C0E020B5233 +:090B490090E6BAE0F512020C116D +:090B520090E6BAE0F513020C1163 +:0D0B5B0090E6B8E0FA53021FBA00028005D0 +:050B6800BA0247800AFB +:0A0B6D0090E6BAE01207AA020C118C +:0D0B770090E6BAE0703090E6BCE0F5821226 +:0D0B840008EBE582602390E6BCE0F58212EC +:0E0B9100090AAA82AB83E0FC5304FE8A828B21 +:0E0B9F0083ECF090E6BCE0F5821207B28064B1 +:050BAD001207AA805FA1 +:050BB2001207AA805AA1 +:0E0BB70090E6B8E0FA53021FBA004F90E6BA7B +:070BC500E0FABA010280050D +:050BCC00BA02028040A6 +:050BD1001207AA803BA1 +:0E0BD60090E6BAE0FA702C90E6BCE0F58212D0 +:0D0BE40008EBE582601A90E6BCE0F5821295 +:0E0BF100090AAA82AB83E0FC4304018A828BCE +:050BFF0083ECF0800D05 +:050C04001207AA8008A0 +:050C09001207AA8003A0 +:030C0E001207AA20 +:080C110090E6A0E04480F0220F +:050C1900AA82BA0300ED +:070C1E004005EA249C50018F +:010C250022AC +:090C2600740F5AFBBB03028007A6 +:070C2F00740F5AFBBB0B45DB +:0A0C3600A2AF9203C2AFEA2400F55A +:0C0C400082E43400F5837402F07B007441 +:0C0C4C00012AFCE43BFDEC2400F582EDE5 +:0A0C58003400F583E51DFCF0740282 +:0C0C62002AFAE43BFBEA2400F582EB34A4 +:0A0C6E0000F583AA1C7B00EAF0A247 +:030C78000392AF35 +:010C7B002256 +:080C7C00E582FA2483500122F5 +:060C8400EA5403600122A6 +:0A0C8A00A2AF9204C2AFEA2400F505 +:0C0C940082E43401F5837402F07B0074EC +:0C0CA000012AFCE43BFDEC2400F582ED91 +:0A0CAC003401F583E51DF074022AFF +:0B0CB600FAE43BFBEA2400F582EB347B +:080CC10001F583AA1CEAF0A270 +:040CC9000492AF22C0 +:050CCD00AA82BA8000BC +:070CD2004005EA244B50012C +:010CD90022F8 +:060CDA00EA540360012250 +:0A0CE000A2AF9205C2AFEA2480F52E +:0C0CEA0082E43400F5837402F07B007497 +:0C0CF600012AFCE43BFDEC2480F582EDBB +:0A0D02003400F583E51DF074022AA9 +:0B0D0C00FAE43BFBEA2480F582EB34A4 +:080D170000F583AA1CEAF0A21A +:040D1F000592AF2268 +:080D2300C2E8C2EA751C00756C +:060D2B001D017582431258 +:040D31000C19751C08 +:030D350080751DA9 +:0C0D380000758253120C190090E650E484 +:0E0D4400F00090E652E4F00090E654E4F00077 +:0E0D520090E656E4F00090E65174FFF0009039 +:0E0D6000E65374FFF00090E65574FFF000902B +:0E0D6E00E65774FFF00090E658E4F090E65966 +:0E0D7C0074FFF090E65AE4F090E65B74FFF02E +:0E0D8A0090E65CE4F090E65D74FFF090E65EAB +:0E0D9800E4F090E65F74FFF00090E660E4F097 +:0D0DA6000090E66174FFF090E662E4F090CA +:0E0DB300E66374FFF090E665E4F090E6687485 +:0A0DC1000BF05391AFD2E8D2EA2202 +:010DCB002205 +:020DCC00AA82F9 +:060DCE00120DCBDAFB223E +:030DD40090FB5041 +:080DD700A3E582458370F922B7 +:040DDF00AA82AB83B6 +:080DE300120DD41ABAFF011B26 +:050DEB00EA4B70F42248 +:030DFE00758121DB +:0A0E01001205DAE5826003020DF924 +:00000001FF Index: bin/nexys2_jtag_3fifo_as.ihx =================================================================== --- bin/nexys2_jtag_3fifo_as.ihx (nonexistent) +++ bin/nexys2_jtag_3fifo_as.ihx (revision 26) @@ -0,0 +1,446 @@ +:06000000020E0C02006B71 +:03000B0002006B85 +:0300130002006B7D +:03001B0002006B75 +:0300230002006B6D +:03002B0002006B65 +:0300330002006B5D +:03003B0002006B55 +:0300430002006B4D +:03004B0002006B45 +:0300530002006B3D +:03005B0002006B35 +:0300630002006B2D +:01006B003262 +:0900800002006B0002006B00029B +:08008900006B0002006B000295 +:08009100006B0002006B00028D +:08009900006B0002006B000285 +:0800A100006B0002006B00027D +:0800A900006B0002006B000275 +:0700B100006B0002006B0070 +:0901000002006B0002006B00021A +:08010900006B0002006B000214 +:08011100006B0002006B00020C +:08011900006B0002006B000204 +:08012100006B0002006B0002FC +:08012900006B0002006B0002F4 +:08013100006B0002006B0002EC +:08013900006B0002006B0002E4 +:08014100006B0002006B0002DC +:08014900006B0002006B0002D4 +:08015100006B0002006B0002CC +:08015900006B0002006B0002C4 +:08016100006B0002006B0002BC +:08016900006B0002006B0002B4 +:08017100006B0002006B0002AC +:07017900006B0002006B00A7 +:030E1200020E1AB3 +:030E2D00020E159D +:050E15001203F180FE54 +:06018000C200E4F508F5E1 +:0401860009F50AD29B +:05018A0001750B00757A +:06018F000C001206001234 +:0E01950005FD75CB6375CAC0758E0075C80474 +:0701A300D2AFD2B0D2B122AD +:0B01AA00AA82850C827583E0EAF00554 +:0501B5000C0509E4B592 +:0401BA000902050A27 +:0101BE00221E +:0401BF0020000122F9 +:0E01C3001205FC90E6A2E0FA30E103020257BA +:0A01D100E509450A60687AC07BE783 +:0E01DB008B9D7AC07BE77B008A9E90E67C7449 +:0C01E90031F07460F0C3743E9509E49599 +:0A01F5000A50107A3EE50924C2F515 +:0601FF0009E50A34FFF5DA +:030205000A800765 +:06020800AA09E4F509F566 +:01020E000AE5 +:0B020F008A037C007DE08D9A850B9B2C +:0E021A008A041AEC601090E67BE090E67CF01F +:080228007C007DE08D9A80EA64 +:0C023000859B0B0090E68F74022BF0D22F +:03023C00CF801858 +:0E023F0030CF1590E7C07431F090E7C17460C5 +:0A024D00F00090E68F7402F0C2CFBB +:06025700E5AA30E00122DF +:0A025D00C3E50994C1E50A940040CE +:02026700012272 +:0E02690090E690E0FB7A0090E691E0FC7D00CC +:0A027700EA4CF50DEB4DF50E7C008E +:0E0281007DF08D9A7C007DF08C9B7C007D00D2 +:0A028F00C3EC950DED950E4003023F +:02029900036AF6 +:07029B00E5087003020326D1 +:0A02A200E50DC39CFEE50E9DFFA8CC +:0C02AC00087900C3E89EE99F5004880612 +:0202B8008907B4 +:0A02BA008E00E508C398F508EE2C4D +:0B02C400FCEF3DFD30012C8E008F018F +:0902CF008802890318B8FF011927 +:0E02D800EA4B60B390E67BE0F582C004C005FF +:0E02E600C000C001120637D001D000D005D0F4 +:0302F4000480D8AB +:0402F7008E028F03E1 +:0902FB008A068B071ABAFF011BE9 +:0E030400EE4F608790E67BE0F582C002C003FA +:0E031200C004C0051206741201AAD005D00462 +:06032000D003D00280D5DD +:0D03260090E67BE0FA23235401FBB40100B4 +:0A0333009201EA30E707743F5AF523 +:03033D0008802213 +:0C03400030010F8A82C004C00512060BB9 +:06034C00D005D004801072 +:0E0352008A82C004C0051206291201AAD00535 +:02036000D004C7 +:050362000CBC00010DC0 +:0303670002028F00 +:08036A000090E6917480F0227E +:0E03720090E6B8E0FA20E70C90E6B9E07002E1 +:02038000D200A9 +:04038200758201225D +:0E03860090E6B9E0FABA902B90E6BCE025E0D4 +:0A039400547FFA2400F582E43418C7 +:0C039E00F583E0FB90E740F0EA04240047 +:0C03AA00F582E43418F583E0FA90E74196 +:0303B600F0800CC8 +:0C03B90090E7407436F090E7417483F048 +:0D03C50090E68AE4F090E6BEE0FABA02008D +:0903D200500790E6BEE0FA80023B +:0203DB007A02A4 +:0903DD0090E68BEAF07582012222 +:0603E60030020312096F52 +:0503EC001201BF80F5C5 +:0E03F100C2AF90E609E4F01201801206C312BA +:0603FF000455120D3F122F +:0804050008D9D2AF1207E8028A +:02040D0003E604 +:0A040F00AA82E50F54FEFBB50F02B0 +:02041900802938 +:0A041B008A048C05E46210ED621102 +:0A042500EB2400F582E43418F5839F +:0A042F00E0FB7C006210EC6211E5B6 +:060439001033C51133C5AC +:05043F001192E0F51030 +:06044400AB0F050FEB24D5 +:0A044A0000F582E43418F583EAF0AF +:010454002285 +:07045500750F007510AA7578 +:0C045C0011AA75820012040F75820012B4 +:04046800040F7A0003 +:0C046C00C3EA648094865017EA2408F567 +:0C04780082E434E1F583E0F582C002125A +:07048400040FD0020A80E121 +:02048B007A00F5 +:0C048D00C3EA648094825017EA2423F52F +:0C04990082E434E1F583E0F582C0021239 +:0704A500040FD0020A80E100 +:0E04AC0075821C12040F75820012040F7A0074 +:0C04BA00C3EA648094825017EA2402F523 +:0C04C60082E434E1F583E0F582C002120C +:0704D200040FD0020A80E1D3 +:0C04D9007486250FFAF582C00212040F91 +:0C04E50090E19EE0F58212040FD002901E +:0D04F100E19EE02AFAF582C00212040F908D +:0B04FE00E1BCE0F58212040FD0029078 +:0A050900E1BCE02AF58212040F9015 +:0A051300E1E6E0F58212040F7A0021 +:0E051D0090E19EE0FBC3EA64808BF063F08007 +:0B052B0095F05017EA249EF582E4349E +:0C053600E1F583E0F582C00212040FD052 +:04054200020A80D752 +:020546007A0039 +:0E05480090E1BCE0FBC3EA64808BF063F080BE +:0B05560095F05017EA24BCF582E43455 +:0C056100E1F583E0F582C00212040FD027 +:04056D00020A80D727 +:020571007A000E +:0E05730090E1E6E0FBC3EA64808BF063F08069 +:0B05810095F05017EA24E6F582E43400 +:0C058C00E1F583E0F582C00212040FD0FC +:04059800020A80D7FC +:02059C007A00E3 +:0C059E00C3EA648094845017EA240EF530 +:0C05AA0082E434E1F583E0F582C0021227 +:0705B600040FD0020A80E1EE +:0C05BD007482250F400875820012040FA4 +:0205C90080F2BE +:0805CB00AA1090187EEAF0AAC4 +:0705D3001190187FEAF022ED +:0805DA007880E84400600C7910 +:0C05E20001901800E4F0A3D8FCD9FAD076 +:0E05EE0083D082F6D8FDC082C08375820022C1 +:02E1000012010A +:06E10200000200000040D5 +:06E10800C016EF03040045 +:04E10E000102030106 +:0AE112000A060002FFFFFF400100B3 +:07E11C0009023500010100BA +:0EE1230080FA0904000005FFFFFF02070581D6 +:0EE131000200020007050202000200070504BA +:0EE13F000200020007058602000200070588A4 +:04E14D0002000200CA +:0EE152001201000200000040C016EF0304009E +:04E1600001020301B4 +:0AE164000A060002FFFFFF40010061 +:0EE16E000902200001010080FA0904000002ED +:0EE17C00FFFFFF0207058102400000070502B9 +:04E18A00024000004F +:01E18E00048C +:02E18F0098E115 +:02E191009EE10D +:02E19300BCE1ED +:02E19500E6E1C1 +:06E198000603000009046B +:0EE19E001E037700770077002E0072006500E8 +:0EE1AC00740072006F00310031002E0064001C +:02E1BA006500FE +:0EE1BC002A036E0065007800790073003200BF +:0EE1CA005F006A007400610067005F003300B0 +:0EE1D8006600690066006F005F006100730062 +:0EE1E6001203300030003000300030003000F6 +:04E1F40030003000C7 +:0105FC0022DC +:0105FD0022DB +:0105FE0022DA +:0105FF0022D9 +:0B060000D2B775B5809001F4020DFB2D +:0E060B00AA82ABB574FE5BF5F0741C45F0F5E9 +:0E061900B5EA1392B4EAA2E192B3EAA2E49227 +:02062700B222FD +:0E06290012060BA2B0E433FA74024AF58222E4 +:0E063700E5821392B2D2B413C2B492B2D2B41E +:0E06450013C2B492B2D2B413C2B492B2D2B401 +:0E06530013C2B492B2D2B413C2B492B2D2B4F3 +:0E06610013C2B492B2D2B413C2B492B2D2B4E5 +:05066F0000C2B42222CC +:0E067400E582A2B01392B2D2B4C2B4A2B01307 +:0E06820092B2D2B4C2B4A2B01392B2D2B4C239 +:0E069000B4A2B01392B2D2B4C2B4A2B013920C +:0E069E00B2D2B4C2B4A2B01392B2D2B4C2B4FB +:0E06AC00A2B01392B2D2B4C2B4A2B01392B2F2 +:0906BA00D2B400C2B4F582222280 +:0D06C30090E6007412F090E60174ABF09028 +:0E06D000E6707480F00090E60274E0F0009096 +:0E06DE00E60374F9F00090E6047480F00090DA +:0D06EC00E60B7403F00090E610E4F00090BF +:0D06F900E61174A0F00090E618E4F0009007 +:0E070600E6047402F00090E61274A2F0009077 +:0E071400E61374A2F00090E61474E2F0009078 +:0E072200E61574E2F00090E6047404F0009016 +:0E073000E6047406F00090E6047408F00090F1 +:0E073E00E604E4F00090E60BE4F00090E649DB +:0E074C007484F00090E6497484F00090E61981 +:0E075A00E4F00090E6197410F00090E632749E +:0E07680080F00090E6337404F00090E61A74FE +:0E0776000CF00090E6247402F00090E625E4FA +:0E078400F00090E6347409F00090E63574FC45 +:0E079200F00090E61B740CF00090E626740256 +:0E07A000F00090E627E4F00090E6367441F099 +:0E07AE000090E63774FCF0000090E691748035 +:0A07BC00F00090E6917480F0002236 +:0807C60090E6A0E04401F022DE +:0E07CE00AA8274805AC423541FFB740F5A90E1 +:0C07DC00E6834BF090E683E04420F0221E +:0E07E80090E680E0440AF09000FA120DFB90BB +:0E07F600E65D74FFF090E65F74FFF05391EF44 +:0808040090E680E054F7F022B9 +:060E2700E478FFF6D8FD9F +:060E0C00751200751300D1 +:0A080C0090E680E0FA30E719751459 +:0308160000751555 +:03081900E1751670 +:03081C001275173B +:03081F00E1751868 +:030822001C751929 +:03082500E1751A60 +:030828006E751BCF +:02082B00E122C8 +:04082D007514527577 +:0308310015E17559 +:03083400166475D2 +:0308370017E17551 +:03083A00186E75C0 +:03083D0019E17549 +:030840001A1C750A +:030843001BE12294 +:090846005391EF75A100D20232BA +:0C084F00C021C0E0C0F0C082C083C00225 +:0E085B00C003C004C005C006C007C000C00135 +:0E086900C0D075D0005391EF75A10012080C9D +:0E087700D0D0D001D000D007D006D005D004DC +:0D088500D003D002D083D082D0F0D0E0D0DC +:02089200213211 +:0C089400C021C0E0C0F0C082C083C002E0 +:0E08A000C003C004C005C006C007C000C001F0 +:0E08AE00C0D075D0005391EF75A10012080C58 +:0E08BC00D0D0D001D000D007D006D005D00497 +:0D08CA00D003D002D083D082D0F0D0E0D097 +:0208D7002132CC +:0508D90012080C751C63 +:0308DE0046751D3F +:0808E10008758200120C9875E5 +:0308E9001C4F752C +:0608EC001D0875821012C8 +:0408F2000C98751CCD +:0308F60094751DD9 +:0C08F90008758214120C9890E65C7431B3 +:02090500F022DE +:0D090700E582547FFA24F750047582002227 +:07091400BA01047582012203 +:08091B00530201E4BA000104DB +:03092300F5822238 +:0E092600AA82BA010C90E6A1E0FB7C008B8255 +:030934008C83228F +:0E093700BA810C90E6A2E0FB7C008B828C83E0 +:01094500228F +:0E09460053027FEA700C90E6A0E0FB7C008B71 +:04095400828C8322EC +:0E09580090E6A3E0FB7C00EAC313FA7D00EA00 +:090966002BFBED3C8B82F5832292 +:0C096F00C20290E6B8E0FA530260BA0041 +:03097B00028028CF +:05097E00BA2002800D0B +:05098300BA4002800EE5 +:05098800BA60028003CB +:03098D00020C2D2C +:060990001207C6020C2D47 +:0A099600120372E5826003020C2DCB +:0609A0001207C6020C2D37 +:0D09A60090E6B8E0FA530280BA80028003A8 +:0309B300020B2E06 +:0B09B60090E6B9E0FABA0003020AA7BD +:0509C100BA06028035BA +:0509C600BA08028008E0 +:0509CB00BA0A028017CA +:0309D000020B28EF +:0C09D30090E740E512F090E68AE4F09016 +:0809DF00E68B7401F0020C2DFF +:0C09E70090E740E513F090E68AE4F09001 +:0809F300E68B7401F0020C2DEB +:0A09FB0090E6BBE0FABA0102801793 +:050A0500BA0202803876 +:050A0A00BA030280594F +:050A0F00BA0602801B85 +:050A1400BA0702803C5E +:030A1900020AA12D +:0A0A1C00AA14AB1590E6B3EBF07BD3 +:090A26000090E6B4EAF0020C2D88 +:0A0A2F00AA16AB1790E6B3EBF07BBC +:090A39000090E6B4EAF0020C2D75 +:0A0A4200AA18AB1990E6B3EBF07BA5 +:090A4C000090E6B4EAF0020C2D62 +:0A0A5500AA1AAB1B90E6B3EBF07B8E +:090A5F000090E6B4EAF0020C2D4F +:0E0A680090E6BAE0FA90E18EE0FBC3EA9B4014 +:070A7600061207C6020C2D59 +:0C0A7D0090E6BAE075F002A4248FF58228 +:0B0A890074E135F0F583E0FAA3E09083 +:0D0A9400E6B3F07B0090E6B4EAF0020C2D12 +:060AA1001207C6020C2D35 +:0D0AA70090E6B8E0FA53021FBA0002800A80 +:050AB400BA0102801BE5 +:050AB900BA0266802C6A +:0E0ABE0090E740E4F090E741F090E68AF09077 +:080ACC00E68B7402F0020C2D10 +:0E0AD40090E740E4F090E741F090E68AF09061 +:080AE200E68B7402F0020C2DFA +:0E0AEA0090E6BCE0F582120907E582602590D7 +:0E0AF800E6BCE0F582120926E0FA53020190F6 +:0E0B0600E740EAF090E741E4F090E68AF090D4 +:080B1400E68B7402F0020C2DC7 +:060B1C001207C6020C2DB9 +:060B22001207C6020C2DB3 +:060B28001207C6020C2DAD +:0C0B2E0090E6B9E0FA24F45003020C2A0F +:070B3A00EA2A2A900B417327 +:070B4100020C2A020B7702EF +:060B48000BF2020BD302C8 +:060B4E000C2A020C2A0231 +:060B54000C2A020C2A022B +:060B5A000C2A020B6502EB +:050B60000C2A020B6EDF +:090B650090E6BAE0F512020C2D35 +:090B6E0090E6BAE0F513020C2D2B +:0D0B770090E6B8E0FA53021FBA00028005B4 +:050B8400BA0247800ADF +:0A0B890090E6BAE01207C6020C2D38 +:0D0B930090E6BAE0703090E6BCE0F582120A +:0D0BA0000907E582602390E6BCE0F58212B3 +:0E0BAD000926AA82AB83E0FC5304FE8A828BE9 +:0E0BBB0083ECF090E6BCE0F5821207CE806479 +:050BC9001207C6805F69 +:050BCE001207C6805A69 +:0E0BD30090E6B8E0FA53021FBA004F90E6BA5F +:070BE100E0FABA01028005F1 +:050BE800BA020280408A +:050BED001207C6803B69 +:0E0BF20090E6BAE0FA702C90E6BCE0F58212B4 +:0D0C00000907E582601A90E6BCE0F582125B +:0E0C0D000926AA82AB83E0FC4304018A828B95 +:050C1B0083ECF0800DE8 +:050C20001207C6800868 +:050C25001207C6800368 +:030C2A001207C6E8 +:080C2D0090E6A0E04480F022F3 +:050C3500AA82BA0300D1 +:070C3A004005EA249C500173 +:010C41002290 +:090C4200740F5AFBBB030280078A +:070C4B00740F5AFBBB0B45BF +:0A0C5200A2AF9203C2AFEA2400F53E +:0C0C5C0082E43400F5837402F07B007425 +:0C0C6800012AFCE43BFDEC2400F582EDC9 +:0A0C74003400F583E51DFCF0740266 +:0C0C7E002AFAE43BFBEA2400F582EB3488 +:0A0C8A0000F583AA1C7B00EAF0A22B +:030C94000392AF19 +:010C9700223A +:080C9800E582FA2483500122D9 +:060CA000EA54036001228A +:0A0CA600A2AF9204C2AFEA2400F5E9 +:0C0CB00082E43401F5837402F07B0074D0 +:0C0CBC00012AFCE43BFDEC2400F582ED75 +:0A0CC8003401F583E51DF074022AE3 +:0B0CD200FAE43BFBEA2400F582EB345F +:080CDD0001F583AA1CEAF0A254 +:040CE5000492AF22A4 +:050CE900AA82BA8000A0 +:070CEE004005EA244B500110 +:010CF50022DC +:060CF600EA540360012234 +:0A0CFC00A2AF9205C2AFEA2480F512 +:0C0D060082E43400F5837402F07B00747A +:0C0D1200012AFCE43BFDEC2480F582ED9E +:0A0D1E003400F583E51DF074022A8D +:0B0D2800FAE43BFBEA2480F582EB3488 +:080D330000F583AA1CEAF0A2FE +:040D3B000592AF224C +:080D3F00C2E8C2EA751C007550 +:060D47001D01758243123C +:040D4D000C35751CD0 +:030D510080751D8D +:0C0D540000758253120C350090E650E44C +:0E0D6000F00090E652E4F00090E654E4F0005B +:0E0D6E0090E656E4F00090E65174FFF000901D +:0E0D7C00E65374FFF00090E65574FFF000900F +:0E0D8A00E65774FFF00090E658E4F090E6594A +:0E0D980074FFF090E65AE4F090E65B74FFF012 +:0E0DA60090E65CE4F090E65D74FFF090E65E8F +:0E0DB400E4F090E65F74FFF00090E660E4F07B +:0D0DC2000090E66174FFF090E662E4F090AE +:0E0DCF00E66374FFF090E665E4F090E6687469 +:0A0DDD000BF05391AFD2E8D2EA22E6 +:010DE70022E9 +:020DE800AA82DD +:060DEA00120DE7DAFB2206 +:030DF00090FB5025 +:080DF300A3E582458370F9229B +:040DFB00AA82AB839A +:080DFF00120DF01ABAFF011BEE +:050E0700EA4B70F4222B +:030E1A00758121BE +:0A0E1D001205DAE5826003020E15EB +:00000001FF Index: bin/nexys3_jtag_2fifo_as.ihx =================================================================== --- bin/nexys3_jtag_2fifo_as.ihx (nonexistent) +++ bin/nexys3_jtag_2fifo_as.ihx (revision 26) @@ -0,0 +1,443 @@ +:06000000020DEB02006B93 +:03000B0002006B85 +:0300130002006B7D +:03001B0002006B75 +:0300230002006B6D +:03002B0002006B65 +:0300330002006B5D +:03003B0002006B55 +:0300430002006B4D +:03004B0002006B45 +:0300530002006B3D +:03005B0002006B35 +:0300630002006B2D +:01006B003262 +:0900800002006B0002006B00029B +:08008900006B0002006B000295 +:08009100006B0002006B00028D +:08009900006B0002006B000285 +:0800A100006B0002006B00027D +:0800A900006B0002006B000275 +:0700B100006B0002006B0070 +:0901000002006B0002006B00021A +:08010900006B0002006B000214 +:08011100006B0002006B00020C +:08011900006B0002006B000204 +:08012100006B0002006B0002FC +:08012900006B0002006B0002F4 +:08013100006B0002006B0002EC +:08013900006B0002006B0002E4 +:08014100006B0002006B0002DC +:08014900006B0002006B0002D4 +:08015100006B0002006B0002CC +:08015900006B0002006B0002C4 +:08016100006B0002006B0002BC +:08016900006B0002006B0002B4 +:08017100006B0002006B0002AC +:07017900006B0002006B00A7 +:030DF100020DF9F7 +:030E0C00020DF4E0 +:050DF4001203F180FE76 +:06018000C200E4F508F5E1 +:0401860009F50AD29B +:05018A0001750B00757A +:06018F000C001206001234 +:0E01950005FD75CB6375CAC0758E0075C80474 +:0701A300D2AFD2B0D2B122AD +:0B01AA00AA82850C827583E0EAF00554 +:0501B5000C0509E4B592 +:0401BA000902050A27 +:0101BE00221E +:0401BF0020000122F9 +:0E01C3001205FC90E6A2E0FA30E103020257BA +:0A01D100E509450A60687AC07BE783 +:0E01DB008B9D7AC07BE77B008A9E90E67C7449 +:0C01E90031F07460F0C3743E9509E49599 +:0A01F5000A50107A3EE50924C2F515 +:0601FF0009E50A34FFF5DA +:030205000A800765 +:06020800AA09E4F509F566 +:01020E000AE5 +:0B020F008A037C007DE08D9A850B9B2C +:0E021A008A041AEC601090E67BE090E67CF01F +:080228007C007DE08D9A80EA64 +:0C023000859B0B0090E68F74022BF0D22F +:03023C00CF801858 +:0E023F0030CF1590E7C07431F090E7C17460C5 +:0A024D00F00090E68F7402F0C2CFBB +:06025700E5AA30E00122DF +:0A025D00C3E50994C1E50A940040CE +:02026700012272 +:0E02690090E690E0FB7A0090E691E0FC7D00CC +:0A027700EA4CF50DEB4DF50E7C008E +:0E0281007DF08D9A7C007DF08C9B7C007D00D2 +:0A028F00C3EC950DED950E4003023F +:02029900036AF6 +:07029B00E5087003020326D1 +:0A02A200E50DC39CFEE50E9DFFA8CC +:0C02AC00087900C3E89EE99F5004880612 +:0202B8008907B4 +:0A02BA008E00E508C398F508EE2C4D +:0B02C400FCEF3DFD30012C8E008F018F +:0902CF008802890318B8FF011927 +:0E02D800EA4B60B390E67BE0F582C004C005FF +:0E02E600C000C001120632D001D000D005D0F9 +:0302F4000480D8AB +:0402F7008E028F03E1 +:0902FB008A068B071ABAFF011BE9 +:0E030400EE4F608790E67BE0F582C002C003FA +:0E031200C004C00512066F1201AAD005D00467 +:06032000D003D00280D5DD +:0D03260090E67BE0FA23235401FBB40100B4 +:0A0333009201EA30E707743F5AF523 +:03033D0008802213 +:0C03400030010F8A82C004C005120606BE +:06034C00D005D004801072 +:0E0352008A82C004C0051206241201AAD0053A +:02036000D004C7 +:050362000CBC00010DC0 +:0303670002028F00 +:08036A000090E6917480F0227E +:0E03720090E6B8E0FA20E70C90E6B9E07002E1 +:02038000D200A9 +:04038200758201225D +:0E03860090E6B9E0FABA902B90E6BCE025E0D4 +:0A039400547FFA2400F582E43418C7 +:0C039E00F583E0FB90E740F0EA04240047 +:0C03AA00F582E43418F583E0FA90E74196 +:0303B600F0800CC8 +:0C03B90090E7407436F090E7417483F048 +:0D03C50090E68AE4F090E6BEE0FABA02008D +:0903D200500790E6BEE0FA80023B +:0203DB007A02A4 +:0903DD0090E68BEAF07582012222 +:0603E60030020312094E73 +:0503EC001201BF80F5C5 +:0E03F100C2AF90E609E4F01201801206BE12BF +:0603FF000455120D1E1250 +:0804050008B8D2AF1207C702CC +:02040D0003E604 +:0A040F00AA82E50F54FEFBB50F02B0 +:02041900802938 +:0A041B008A048C05E46210ED621102 +:0A042500EB2400F582E43418F5839F +:0A042F00E0FB7C006210EC6211E5B6 +:060439001033C51133C5AC +:05043F001192E0F51030 +:06044400AB0F050FEB24D5 +:0A044A0000F582E43418F583EAF0AF +:010454002285 +:07045500750F007510AA7578 +:0C045C0011AA75820012040F75820012B4 +:04046800040F7A0003 +:0C046C00C3EA648094865017EA2408F567 +:0C04780082E434E1F583E0F582C002125A +:07048400040FD0020A80E121 +:02048B007A00F5 +:0C048D00C3EA648094825017EA2423F52F +:0C04990082E434E1F583E0F582C0021239 +:0704A500040FD0020A80E100 +:0E04AC0075821C12040F75820012040F7A0074 +:0C04BA00C3EA648094825017EA2402F523 +:0C04C60082E434E1F583E0F582C002120C +:0704D200040FD0020A80E1D3 +:0C04D9007486250FFAF582C00212040F91 +:0C04E50090E196E0F58212040FD0029026 +:0D04F100E196E02AFAF582C00212040F9095 +:0B04FE00E1B4E0F58212040FD0029080 +:0A050900E1B4E02AF58212040F901D +:0A051300E1DEE0F58212040F7A0029 +:0E051D0090E196E0FBC3EA64808BF063F0800F +:0B052B0095F05017EA2496F582E434A6 +:0C053600E1F583E0F582C00212040FD052 +:04054200020A80D752 +:020546007A0039 +:0E05480090E1B4E0FBC3EA64808BF063F080C6 +:0B05560095F05017EA24B4F582E4345D +:0C056100E1F583E0F582C00212040FD027 +:04056D00020A80D727 +:020571007A000E +:0E05730090E1DEE0FBC3EA64808BF063F08071 +:0B05810095F05017EA24DEF582E43408 +:0C058C00E1F583E0F582C00212040FD0FC +:04059800020A80D7FC +:02059C007A00E3 +:0C059E00C3EA648094845017EA240EF530 +:0C05AA0082E434E1F583E0F582C0021227 +:0705B600040FD0020A80E1EE +:0C05BD007482250F400875820012040FA4 +:0205C90080F2BE +:0805CB00AA1090187EEAF0AAC4 +:0705D3001190187FEAF022ED +:0805DA007880E84400600C7910 +:0C05E20001901800E4F0A3D8FCD9FAD076 +:0E05EE0083D082F6D8FDC082C08375820022C1 +:02E1000012010A +:06E10200000200000040D5 +:06E10800C016EF03040045 +:04E10E000102030106 +:0AE112000A060002FFFFFF400100B3 +:07E11C0009022E00010100C1 +:0EE1230080FA0904000004FFFFFF02070581D7 +:0EE131000200020007050202000200070504BA +:0BE13F0002000200070586020002003B +:0EE14A001201000200000040C016EF030400A6 +:04E1580001020301BC +:0AE15C000A060002FFFFFF40010069 +:0EE166000902200001010080FA0904000002F5 +:0EE17400FFFFFF0207058102400000070502C1 +:04E182000240000057 +:01E186000494 +:02E1870090E125 +:02E1890096E11D +:02E18B00B4E1FD +:02E18D00DEE1D1 +:06E1900006030000090473 +:0EE196001E037700770077002E0072006500F0 +:0EE1A400740072006F00310031002E00640024 +:02E1B200650006 +:0EE1B4002A036E0065007800790073003300C6 +:0EE1C2005F006A007400610067005F003200B9 +:0EE1D0006600690066006F005F00610073006A +:0EE1DE001203300030003000300030003000FE +:04E1EC0030003000CF +:0105FC0022DC +:0105FD0022DB +:0105FE0022DA +:0105FF0022D9 +:060600009001F4020DDA86 +:0E060600AA82ABB574FE5BF5F0741C45F0F5EE +:0E061400B5EA1392B4EAA2E192B3EAA2E4922C +:02062200B22202 +:0E062400120606A2B0E433FA74024AF58222EE +:0E063200E5821392B2D2B413C2B492B2D2B423 +:0E06400013C2B492B2D2B413C2B492B2D2B406 +:0E064E0013C2B492B2D2B413C2B492B2D2B4F8 +:0E065C0013C2B492B2D2B413C2B492B2D2B4EA +:05066A0000C2B42222D1 +:0E066F00E582A2B01392B2D2B4C2B4A2B0130C +:0E067D0092B2D2B4C2B4A2B01392B2D2B4C23E +:0E068B00B4A2B01392B2D2B4C2B4A2B0139211 +:0E069900B2D2B4C2B4A2B01392B2D2B4C2B400 +:0E06A700A2B01392B2D2B4C2B4A2B01392B2F7 +:0906B500D2B400C2B4F582222285 +:0D06BE0090E6007412F090E60174ABF0902D +:0E06CB00E6707480F00090E60274E0F000909B +:0E06D900E60374F9F00090E6047480F00090DF +:0D06E700E60B7403F00090E610E4F00090C4 +:0D06F400E61174A0F00090E618E4F000900C +:0E070100E6047402F00090E61274A2F000907C +:0E070F00E61374A2F00090E61474E0F000907F +:0E071D00E6157402F00090E6047404F00090FB +:0E072B00E6047406F00090E6047408F00090F6 +:0E073900E604E4F00090E60BE4F00090E649E0 +:0E0747007484F00090E6497484F00090E61986 +:0E075500E4F00090E6197410F00090E63274A3 +:0E07630080F00090E6337404F00090E61A7403 +:0E0771000CF00090E6247402F00090E625E4FF +:0E077F00F00090E6347419F00090E63574FC3A +:0E078D00F00090E61BE4F0000090E69174800E +:0A079B00F00090E6917480F0002257 +:0807A50090E6A0E04401F022FF +:0E07AD00AA8274805AC423541FFB740F5A9002 +:0C07BB00E6834BF090E683E04420F0223F +:0E07C70090E680E0440AF09000FA120DDA90FD +:0E07D500E65D74FFF090E65F74FFF05391EF65 +:0807E30090E680E054F7F022DB +:060E0600E478FFF6D8FDC0 +:060DEB00751200751300F3 +:0A07EB0090E680E0FA30E71975147B +:0307F50000751577 +:0307F800E1751692 +:0307FB001275175D +:0307FE00E175188A +:030801001C75194A +:03080400E1751A81 +:0308070066751BF8 +:02080A00E122E9 +:04080C0075144A75A0 +:0308100015E1757A +:03081300165C75FB +:0308160017E17572 +:03081900186675E9 +:03081C0019E1756A +:03081F001A1C752B +:030822001BE122B5 +:090825005391EF75A100D20232DB +:0C082E00C021C0E0C0F0C082C083C00246 +:0E083A00C003C004C005C006C007C000C00156 +:0E084800C0D075D0005391EF75A1001207EBE0 +:0E085600D0D0D001D000D007D006D005D004FD +:0D086400D003D002D083D082D0F0D0E0D0FD +:02087100213232 +:0C087300C021C0E0C0F0C082C083C00201 +:0E087F00C003C004C005C006C007C000C00111 +:0E088D00C0D075D0005391EF75A1001207EB9B +:0E089B00D0D0D001D000D007D006D005D004B8 +:0D08A900D003D002D083D082D0F0D0E0D0B8 +:0208B6002132ED +:0508B8001207EB751CA6 +:0308BD0025751D81 +:0808C00008758200120C777527 +:0308C8001C2E756E +:0608CB001D0875821012E9 +:0408D1000C77751C0F +:0308D50073751D1B +:0C08D80008758214120C7790E65C7431F5 +:0208E400F02200 +:0D08E600E582547FFA24F750047582002249 +:0708F300BA01047582012225 +:0808FA00530201E4BA000104FD +:03090200F5822259 +:0E090500AA82BA010C90E6A1E0FB7C008B8276 +:030913008C8322B0 +:0E091600BA810C90E6A2E0FB7C008B828C8301 +:0109240022B0 +:0E09250053027FEA700C90E6A0E0FB7C008B92 +:04093300828C83220D +:0E09370090E6A3E0FB7C00EAC313FA7D00EA21 +:090945002BFBED3C8B82F58322B3 +:0C094E00C20290E6B8E0FA530260BA0062 +:03095A00028028F0 +:05095D00BA2002800D2C +:05096200BA4002800E06 +:05096700BA60028003EC +:03096C00020C0C6E +:06096F001207A5020C0CAA +:0A097500120372E5826003020C0C0D +:06097F001207A5020C0C9A +:0D09850090E6B8E0FA530280BA80028003C9 +:03099200020B0D48 +:0B09950090E6B9E0FABA0003020A86FF +:0509A000BA06028035DB +:0509A500BA0802800801 +:0509AA00BA0A028017EB +:0309AF00020B0731 +:0C09B20090E740E512F090E68AE4F09037 +:0809BE00E68B7401F0020C0C41 +:0C09C60090E740E513F090E68AE4F09022 +:0809D200E68B7401F0020C0C2D +:0A09DA0090E6BBE0FABA01028017B4 +:0509E400BA0202803898 +:0509E900BA0302805971 +:0509EE00BA0602801BA7 +:0509F300BA0702803C80 +:0309F800020A8070 +:0A09FB00AA14AB1590E6B3EBF07BF5 +:090A05000090E6B4EAF0020C0CCA +:0A0A0E00AA16AB1790E6B3EBF07BDD +:090A18000090E6B4EAF0020C0CB7 +:0A0A2100AA18AB1990E6B3EBF07BC6 +:090A2B000090E6B4EAF0020C0CA4 +:0A0A3400AA1AAB1B90E6B3EBF07BAF +:090A3E000090E6B4EAF0020C0C91 +:0E0A470090E6BAE0FA90E186E0FBC3EA9B403D +:070A5500061207A5020C0CBC +:0C0A5C0090E6BAE075F002A42487F58251 +:0B0A680074E135F0F583E0FAA3E090A4 +:0D0A7300E6B3F07B0090E6B4EAF0020C0C54 +:060A80001207A5020C0C98 +:0D0A860090E6B8E0FA53021FBA0002800AA1 +:050A9300BA0102801B06 +:050A9800BA0266802C8B +:0E0A9D0090E740E4F090E741F090E68AF09098 +:080AAB00E68B7402F0020C0C52 +:0E0AB30090E740E4F090E741F090E68AF09082 +:080AC100E68B7402F0020C0C3C +:0E0AC90090E6BCE0F5821208E6E5826025901A +:0E0AD700E6BCE0F582120905E0FA5302019038 +:0E0AE500E740EAF090E741E4F090E68AF090F6 +:080AF300E68B7402F0020C0C0A +:060AFB001207A5020C0C1D +:060B01001207A5020C0C16 +:060B07001207A5020C0C10 +:0C0B0D0090E6B9E0FA24F45003020C0951 +:070B1900EA2A2A900B207369 +:070B2000020C09020B560252 +:060B27000BD1020BB2022B +:060B2D000C09020C090294 +:060B33000C09020C09028E +:060B39000C09020B44024E +:050B3F000C09020B4D42 +:090B440090E6BAE0F512020C0C77 +:090B4D0090E6BAE0F513020C0C6D +:0D0B560090E6B8E0FA53021FBA00028005D5 +:050B6300BA0247800A00 +:0A0B680090E6BAE01207A5020C0C9B +:0D0B720090E6BAE0703090E6BCE0F582122B +:0D0B7F0008E6E582602390E6BCE0F58212F6 +:0E0B8C000905AA82AB83E0FC5304FE8A828B2B +:0E0B9A0083ECF090E6BCE0F5821207AD8064BB +:050BA8001207A5805FAB +:050BAD001207A5805AAB +:0E0BB20090E6B8E0FA53021FBA004F90E6BA80 +:070BC000E0FABA0102800512 +:050BC700BA02028040AB +:050BCC001207A5803BAB +:0E0BD10090E6BAE0FA702C90E6BCE0F58212D5 +:0D0BDF0008E6E582601A90E6BCE0F582129F +:0E0BEC000905AA82AB83E0FC4304018A828BD8 +:050BFA0083ECF0800D0A +:050BFF001207A58008AB +:050C04001207A58003AA +:030C09001207A52A +:080C0C0090E6A0E04480F02214 +:050C1400AA82BA0300F2 +:070C19004005EA249C500194 +:010C200022B1 +:090C2100740F5AFBBB03028007AB +:070C2A00740F5AFBBB0B45E0 +:0A0C3100A2AF9203C2AFEA2400F55F +:0C0C3B0082E43400F5837402F07B007446 +:0C0C4700012AFCE43BFDEC2400F582EDEA +:0A0C53003400F583E51DFCF0740287 +:0C0C5D002AFAE43BFBEA2400F582EB34A9 +:0A0C690000F583AA1C7B00EAF0A24C +:030C73000392AF3A +:010C7600225B +:080C7700E582FA2483500122FA +:060C7F00EA5403600122AB +:0A0C8500A2AF9204C2AFEA2400F50A +:0C0C8F0082E43401F5837402F07B0074F1 +:0C0C9B00012AFCE43BFDEC2400F582ED96 +:0A0CA7003401F583E51DF074022A04 +:0B0CB100FAE43BFBEA2400F582EB3480 +:080CBC0001F583AA1CEAF0A275 +:040CC4000492AF22C5 +:050CC800AA82BA8000C1 +:070CCD004005EA244B500131 +:010CD40022FD +:060CD500EA540360012255 +:0A0CDB00A2AF9205C2AFEA2480F533 +:0C0CE50082E43400F5837402F07B00749C +:0C0CF100012AFCE43BFDEC2480F582EDC0 +:0A0CFD003400F583E51DF074022AAF +:0B0D0700FAE43BFBEA2480F582EB34A9 +:080D120000F583AA1CEAF0A21F +:040D1A000592AF226D +:080D1E00C2E8C2EA751C007571 +:060D26001D01758243125D +:040D2C000C14751C12 +:030D300080751DAE +:0C0D330000758253120C140090E650E48E +:0E0D3F00F00090E652E4F00090E654E4F0007C +:0E0D4D0090E656E4F00090E65174FFF000903E +:0E0D5B00E65374FFF00090E65574FFF0009030 +:0E0D6900E65774FFF00090E658E4F090E6596B +:0E0D770074FFF090E65AE4F090E65B74FFF033 +:0E0D850090E65CE4F090E65D74FFF090E65EB0 +:0E0D9300E4F090E65F74FFF00090E660E4F09C +:0D0DA1000090E66174FFF090E662E4F090CF +:0E0DAE00E66374FFF090E665E4F090E668748A +:0A0DBC000BF05391AFD2E8D2EA2207 +:010DC600220A +:020DC700AA82FE +:060DC900120DC6DAFB2248 +:030DCF0090FB5046 +:080DD200A3E582458370F922BC +:040DDA00AA82AB83BB +:080DDE00120DCF1ABAFF011B30 +:050DE600EA4B70F4224D +:030DF900758121E0 +:0A0DFC001205DAE5826003020DF42F +:00000001FF Index: bin/nexys3_jtag_3fifo_as.ihx =================================================================== --- bin/nexys3_jtag_3fifo_as.ihx (nonexistent) +++ bin/nexys3_jtag_3fifo_as.ihx (revision 26) @@ -0,0 +1,446 @@ +:06000000020E0702006B76 +:03000B0002006B85 +:0300130002006B7D +:03001B0002006B75 +:0300230002006B6D +:03002B0002006B65 +:0300330002006B5D +:03003B0002006B55 +:0300430002006B4D +:03004B0002006B45 +:0300530002006B3D +:03005B0002006B35 +:0300630002006B2D +:01006B003262 +:0900800002006B0002006B00029B +:08008900006B0002006B000295 +:08009100006B0002006B00028D +:08009900006B0002006B000285 +:0800A100006B0002006B00027D +:0800A900006B0002006B000275 +:0700B100006B0002006B0070 +:0901000002006B0002006B00021A +:08010900006B0002006B000214 +:08011100006B0002006B00020C +:08011900006B0002006B000204 +:08012100006B0002006B0002FC +:08012900006B0002006B0002F4 +:08013100006B0002006B0002EC +:08013900006B0002006B0002E4 +:08014100006B0002006B0002DC +:08014900006B0002006B0002D4 +:08015100006B0002006B0002CC +:08015900006B0002006B0002C4 +:08016100006B0002006B0002BC +:08016900006B0002006B0002B4 +:08017100006B0002006B0002AC +:07017900006B0002006B00A7 +:030E0D00020E15BD +:030E2800020E10A7 +:050E10001203F180FE59 +:06018000C200E4F508F5E1 +:0401860009F50AD29B +:05018A0001750B00757A +:06018F000C001206001234 +:0E01950005FD75CB6375CAC0758E0075C80474 +:0701A300D2AFD2B0D2B122AD +:0B01AA00AA82850C827583E0EAF00554 +:0501B5000C0509E4B592 +:0401BA000902050A27 +:0101BE00221E +:0401BF0020000122F9 +:0E01C3001205FC90E6A2E0FA30E103020257BA +:0A01D100E509450A60687AC07BE783 +:0E01DB008B9D7AC07BE77B008A9E90E67C7449 +:0C01E90031F07460F0C3743E9509E49599 +:0A01F5000A50107A3EE50924C2F515 +:0601FF0009E50A34FFF5DA +:030205000A800765 +:06020800AA09E4F509F566 +:01020E000AE5 +:0B020F008A037C007DE08D9A850B9B2C +:0E021A008A041AEC601090E67BE090E67CF01F +:080228007C007DE08D9A80EA64 +:0C023000859B0B0090E68F74022BF0D22F +:03023C00CF801858 +:0E023F0030CF1590E7C07431F090E7C17460C5 +:0A024D00F00090E68F7402F0C2CFBB +:06025700E5AA30E00122DF +:0A025D00C3E50994C1E50A940040CE +:02026700012272 +:0E02690090E690E0FB7A0090E691E0FC7D00CC +:0A027700EA4CF50DEB4DF50E7C008E +:0E0281007DF08D9A7C007DF08C9B7C007D00D2 +:0A028F00C3EC950DED950E4003023F +:02029900036AF6 +:07029B00E5087003020326D1 +:0A02A200E50DC39CFEE50E9DFFA8CC +:0C02AC00087900C3E89EE99F5004880612 +:0202B8008907B4 +:0A02BA008E00E508C398F508EE2C4D +:0B02C400FCEF3DFD30012C8E008F018F +:0902CF008802890318B8FF011927 +:0E02D800EA4B60B390E67BE0F582C004C005FF +:0E02E600C000C001120632D001D000D005D0F9 +:0302F4000480D8AB +:0402F7008E028F03E1 +:0902FB008A068B071ABAFF011BE9 +:0E030400EE4F608790E67BE0F582C002C003FA +:0E031200C004C00512066F1201AAD005D00467 +:06032000D003D00280D5DD +:0D03260090E67BE0FA23235401FBB40100B4 +:0A0333009201EA30E707743F5AF523 +:03033D0008802213 +:0C03400030010F8A82C004C005120606BE +:06034C00D005D004801072 +:0E0352008A82C004C0051206241201AAD0053A +:02036000D004C7 +:050362000CBC00010DC0 +:0303670002028F00 +:08036A000090E6917480F0227E +:0E03720090E6B8E0FA20E70C90E6B9E07002E1 +:02038000D200A9 +:04038200758201225D +:0E03860090E6B9E0FABA902B90E6BCE025E0D4 +:0A039400547FFA2400F582E43418C7 +:0C039E00F583E0FB90E740F0EA04240047 +:0C03AA00F582E43418F583E0FA90E74196 +:0303B600F0800CC8 +:0C03B90090E7407436F090E7417483F048 +:0D03C50090E68AE4F090E6BEE0FABA02008D +:0903D200500790E6BEE0FA80023B +:0203DB007A02A4 +:0903DD0090E68BEAF07582012222 +:0603E60030020312096A57 +:0503EC001201BF80F5C5 +:0E03F100C2AF90E609E4F01201801206BE12BF +:0603FF000455120D3A1234 +:0804050008D4D2AF1207E30294 +:02040D0003E604 +:0A040F00AA82E50F54FEFBB50F02B0 +:02041900802938 +:0A041B008A048C05E46210ED621102 +:0A042500EB2400F582E43418F5839F +:0A042F00E0FB7C006210EC6211E5B6 +:060439001033C51133C5AC +:05043F001192E0F51030 +:06044400AB0F050FEB24D5 +:0A044A0000F582E43418F583EAF0AF +:010454002285 +:07045500750F007510AA7578 +:0C045C0011AA75820012040F75820012B4 +:04046800040F7A0003 +:0C046C00C3EA648094865017EA2408F567 +:0C04780082E434E1F583E0F582C002125A +:07048400040FD0020A80E121 +:02048B007A00F5 +:0C048D00C3EA648094825017EA2423F52F +:0C04990082E434E1F583E0F582C0021239 +:0704A500040FD0020A80E100 +:0E04AC0075821C12040F75820012040F7A0074 +:0C04BA00C3EA648094825017EA2402F523 +:0C04C60082E434E1F583E0F582C002120C +:0704D200040FD0020A80E1D3 +:0C04D9007486250FFAF582C00212040F91 +:0C04E50090E19EE0F58212040FD002901E +:0D04F100E19EE02AFAF582C00212040F908D +:0B04FE00E1BCE0F58212040FD0029078 +:0A050900E1BCE02AF58212040F9015 +:0A051300E1E6E0F58212040F7A0021 +:0E051D0090E19EE0FBC3EA64808BF063F08007 +:0B052B0095F05017EA249EF582E4349E +:0C053600E1F583E0F582C00212040FD052 +:04054200020A80D752 +:020546007A0039 +:0E05480090E1BCE0FBC3EA64808BF063F080BE +:0B05560095F05017EA24BCF582E43455 +:0C056100E1F583E0F582C00212040FD027 +:04056D00020A80D727 +:020571007A000E +:0E05730090E1E6E0FBC3EA64808BF063F08069 +:0B05810095F05017EA24E6F582E43400 +:0C058C00E1F583E0F582C00212040FD0FC +:04059800020A80D7FC +:02059C007A00E3 +:0C059E00C3EA648094845017EA240EF530 +:0C05AA0082E434E1F583E0F582C0021227 +:0705B600040FD0020A80E1EE +:0C05BD007482250F400875820012040FA4 +:0205C90080F2BE +:0805CB00AA1090187EEAF0AAC4 +:0705D3001190187FEAF022ED +:0805DA007880E84400600C7910 +:0C05E20001901800E4F0A3D8FCD9FAD076 +:0E05EE0083D082F6D8FDC082C08375820022C1 +:02E1000012010A +:06E10200000200000040D5 +:06E10800C016EF03040045 +:04E10E000102030106 +:0AE112000A060002FFFFFF400100B3 +:07E11C0009023500010100BA +:0EE1230080FA0904000005FFFFFF02070581D6 +:0EE131000200020007050202000200070504BA +:0EE13F000200020007058602000200070588A4 +:04E14D0002000200CA +:0EE152001201000200000040C016EF0304009E +:04E1600001020301B4 +:0AE164000A060002FFFFFF40010061 +:0EE16E000902200001010080FA0904000002ED +:0EE17C00FFFFFF0207058102400000070502B9 +:04E18A00024000004F +:01E18E00048C +:02E18F0098E115 +:02E191009EE10D +:02E19300BCE1ED +:02E19500E6E1C1 +:06E198000603000009046B +:0EE19E001E037700770077002E0072006500E8 +:0EE1AC00740072006F00310031002E0064001C +:02E1BA006500FE +:0EE1BC002A036E0065007800790073003300BE +:0EE1CA005F006A007400610067005F003300B0 +:0EE1D8006600690066006F005F006100730062 +:0EE1E6001203300030003000300030003000F6 +:04E1F40030003000C7 +:0105FC0022DC +:0105FD0022DB +:0105FE0022DA +:0105FF0022D9 +:060600009001F4020DF66A +:0E060600AA82ABB574FE5BF5F0741C45F0F5EE +:0E061400B5EA1392B4EAA2E192B3EAA2E4922C +:02062200B22202 +:0E062400120606A2B0E433FA74024AF58222EE +:0E063200E5821392B2D2B413C2B492B2D2B423 +:0E06400013C2B492B2D2B413C2B492B2D2B406 +:0E064E0013C2B492B2D2B413C2B492B2D2B4F8 +:0E065C0013C2B492B2D2B413C2B492B2D2B4EA +:05066A0000C2B42222D1 +:0E066F00E582A2B01392B2D2B4C2B4A2B0130C +:0E067D0092B2D2B4C2B4A2B01392B2D2B4C23E +:0E068B00B4A2B01392B2D2B4C2B4A2B0139211 +:0E069900B2D2B4C2B4A2B01392B2D2B4C2B400 +:0E06A700A2B01392B2D2B4C2B4A2B01392B2F7 +:0906B500D2B400C2B4F582222285 +:0D06BE0090E6007412F090E60174ABF0902D +:0E06CB00E6707480F00090E60274E0F000909B +:0E06D900E60374F9F00090E6047480F00090DF +:0D06E700E60B7403F00090E610E4F00090C4 +:0D06F400E61174A0F00090E618E4F000900C +:0E070100E6047402F00090E61274A2F000907C +:0E070F00E61374A2F00090E61474E2F000907D +:0E071D00E61574E2F00090E6047404F000901B +:0E072B00E6047406F00090E6047408F00090F6 +:0E073900E604E4F00090E60BE4F00090E649E0 +:0E0747007484F00090E6497484F00090E61986 +:0E075500E4F00090E6197410F00090E63274A3 +:0E07630080F00090E6337404F00090E61A7403 +:0E0771000CF00090E6247402F00090E625E4FF +:0E077F00F00090E6347409F00090E63574FC4A +:0E078D00F00090E61B740CF00090E62674025B +:0E079B00F00090E627E4F00090E6367441F09E +:0E07A9000090E63774FCF0000090E69174803A +:0A07B700F00090E6917480F000223B +:0807C10090E6A0E04401F022E3 +:0E07C900AA8274805AC423541FFB740F5A90E6 +:0C07D700E6834BF090E683E04420F02223 +:0E07E30090E680E0440AF09000FA120DF690C5 +:0E07F100E65D74FFF090E65F74FFF05391EF49 +:0807FF0090E680E054F7F022BF +:060E2200E478FFF6D8FDA4 +:060E0700751200751300D6 +:0A08070090E680E0FA30E71975145E +:030811000075155A +:03081400E1751675 +:0308170012751740 +:03081A00E175186D +:03081D001C75192E +:03082000E1751A65 +:030823006E751BD4 +:02082600E122CD +:04082800751452757C +:03082C0015E1755E +:03082F00166475D7 +:0308320017E17556 +:03083500186E75C5 +:0308380019E1754E +:03083B001A1C750F +:03083E001BE12299 +:090841005391EF75A100D20232BF +:0C084A00C021C0E0C0F0C082C083C0022A +:0E085600C003C004C005C006C007C000C0013A +:0E086400C0D075D0005391EF75A100120807A7 +:0E087200D0D0D001D000D007D006D005D004E1 +:0D088000D003D002D083D082D0F0D0E0D0E1 +:02088D00213216 +:0C088F00C021C0E0C0F0C082C083C002E5 +:0E089B00C003C004C005C006C007C000C001F5 +:0E08A900C0D075D0005391EF75A10012080762 +:0E08B700D0D0D001D000D007D006D005D0049C +:0D08C500D003D002D083D082D0F0D0E0D09C +:0208D2002132D1 +:0508D400120807751C6D +:0308D90041751D49 +:0808DC0008758200120C9375EF +:0308E4001C4A7536 +:0608E7001D0875821012CD +:0408ED000C93751CD7 +:0308F1008F751DE3 +:0C08F40008758214120C9390E65C7431BD +:02090000F022E3 +:0D090200E582547FFA24F75004758200222C +:07090F00BA01047582012208 +:08091600530201E4BA000104E0 +:03091E00F582223D +:0E092100AA82BA010C90E6A1E0FB7C008B825A +:03092F008C832294 +:0E093200BA810C90E6A2E0FB7C008B828C83E5 +:010940002294 +:0E09410053027FEA700C90E6A0E0FB7C008B76 +:04094F00828C8322F1 +:0E09530090E6A3E0FB7C00EAC313FA7D00EA05 +:090961002BFBED3C8B82F5832297 +:0C096A00C20290E6B8E0FA530260BA0046 +:03097600028028D4 +:05097900BA2002800D10 +:05097E00BA4002800EEA +:05098300BA60028003D0 +:03098800020C2836 +:06098B001207C1020C2856 +:0A099100120372E5826003020C28D5 +:06099B001207C1020C2846 +:0D09A10090E6B8E0FA530280BA80028003AD +:0309AE00020B2910 +:0B09B10090E6B9E0FABA0003020AA2C7 +:0509BC00BA06028035BF +:0509C100BA08028008E5 +:0509C600BA0A028017CF +:0309CB00020B23F9 +:0C09CE0090E740E512F090E68AE4F0901B +:0809DA00E68B7401F0020C2809 +:0C09E20090E740E513F090E68AE4F09006 +:0809EE00E68B7401F0020C28F5 +:0A09F60090E6BBE0FABA0102801798 +:050A0000BA020280387B +:050A0500BA0302805954 +:050A0A00BA0602801B8A +:050A0F00BA0702803C63 +:030A1400020A9C37 +:0A0A1700AA14AB1590E6B3EBF07BD8 +:090A21000090E6B4EAF0020C2892 +:0A0A2A00AA16AB1790E6B3EBF07BC1 +:090A34000090E6B4EAF0020C287F +:0A0A3D00AA18AB1990E6B3EBF07BAA +:090A47000090E6B4EAF0020C286C +:0A0A5000AA1AAB1B90E6B3EBF07B93 +:090A5A000090E6B4EAF0020C2859 +:0E0A630090E6BAE0FA90E18EE0FBC3EA9B4019 +:070A7100061207C1020C2868 +:0C0A780090E6BAE075F002A4248FF5822D +:0B0A840074E135F0F583E0FAA3E09088 +:0D0A8F00E6B3F07B0090E6B4EAF0020C281C +:060A9C001207C1020C2844 +:0D0AA20090E6B8E0FA53021FBA0002800A85 +:050AAF00BA0102801BEA +:050AB400BA0266802C6F +:0E0AB90090E740E4F090E741F090E68AF0907C +:080AC700E68B7402F0020C281A +:0E0ACF0090E740E4F090E741F090E68AF09066 +:080ADD00E68B7402F0020C2804 +:0E0AE50090E6BCE0F582120902E582602590E1 +:0E0AF300E6BCE0F582120921E0FA5302019000 +:0E0B0100E740EAF090E741E4F090E68AF090D9 +:080B0F00E68B7402F0020C28D1 +:060B17001207C1020C28C8 +:060B1D001207C1020C28C2 +:060B23001207C1020C28BC +:0C0B290090E6B9E0FA24F45003020C2519 +:070B3500EA2A2A900B3C7331 +:070B3C00020C25020B7202FE +:060B43000BED020BCE02D7 +:060B49000C25020C250240 +:060B4F000C25020C25023A +:060B55000C25020B6002FA +:050B5B000C25020B69EE +:090B600090E6BAE0F512020C283F +:090B690090E6BAE0F513020C2835 +:0D0B720090E6B8E0FA53021FBA00028005B9 +:050B7F00BA0247800AE4 +:0A0B840090E6BAE01207C1020C2847 +:0D0B8E0090E6BAE0703090E6BCE0F582120F +:0D0B9B000902E582602390E6BCE0F58212BD +:0E0BA8000921AA82AB83E0FC5304FE8A828BF3 +:0E0BB60083ECF090E6BCE0F5821207C9806483 +:050BC4001207C1805F73 +:050BC9001207C1805A73 +:0E0BCE0090E6B8E0FA53021FBA004F90E6BA64 +:070BDC00E0FABA01028005F6 +:050BE300BA020280408F +:050BE8001207C1803B73 +:0E0BED0090E6BAE0FA702C90E6BCE0F58212B9 +:0D0BFB000902E582601A90E6BCE0F5821266 +:0E0C08000921AA82AB83E0FC4304018A828B9F +:050C160083ECF0800DED +:050C1B001207C1800872 +:050C20001207C1800372 +:030C25001207C1F2 +:080C280090E6A0E04480F022F8 +:050C3000AA82BA0300D6 +:070C35004005EA249C500178 +:010C3C002295 +:090C3D00740F5AFBBB030280078F +:070C4600740F5AFBBB0B45C4 +:0A0C4D00A2AF9203C2AFEA2400F543 +:0C0C570082E43400F5837402F07B00742A +:0C0C6300012AFCE43BFDEC2400F582EDCE +:0A0C6F003400F583E51DFCF074026B +:0C0C79002AFAE43BFBEA2400F582EB348D +:0A0C850000F583AA1C7B00EAF0A230 +:030C8F000392AF1E +:010C9200223F +:080C9300E582FA2483500122DE +:060C9B00EA54036001228F +:0A0CA100A2AF9204C2AFEA2400F5EE +:0C0CAB0082E43401F5837402F07B0074D5 +:0C0CB700012AFCE43BFDEC2400F582ED7A +:0A0CC3003401F583E51DF074022AE8 +:0B0CCD00FAE43BFBEA2400F582EB3464 +:080CD80001F583AA1CEAF0A259 +:040CE0000492AF22A9 +:050CE400AA82BA8000A5 +:070CE9004005EA244B500115 +:010CF00022E1 +:060CF100EA540360012239 +:0A0CF700A2AF9205C2AFEA2480F517 +:0C0D010082E43400F5837402F07B00747F +:0C0D0D00012AFCE43BFDEC2480F582EDA3 +:0A0D19003400F583E51DF074022A92 +:0B0D2300FAE43BFBEA2480F582EB348D +:080D2E0000F583AA1CEAF0A203 +:040D36000592AF2251 +:080D3A00C2E8C2EA751C007555 +:060D42001D017582431241 +:040D48000C30751CDA +:030D4C0080751D92 +:0C0D4F0000758253120C300090E650E456 +:0E0D5B00F00090E652E4F00090E654E4F00060 +:0E0D690090E656E4F00090E65174FFF0009022 +:0E0D7700E65374FFF00090E65574FFF0009014 +:0E0D8500E65774FFF00090E658E4F090E6594F +:0E0D930074FFF090E65AE4F090E65B74FFF017 +:0E0DA10090E65CE4F090E65D74FFF090E65E94 +:0E0DAF00E4F090E65F74FFF00090E660E4F080 +:0D0DBD000090E66174FFF090E662E4F090B3 +:0E0DCA00E66374FFF090E665E4F090E668746E +:0A0DD8000BF05391AFD2E8D2EA22EB +:010DE20022EE +:020DE300AA82E2 +:060DE500120DE2DAFB2210 +:030DEB0090FB502A +:080DEE00A3E582458370F922A0 +:040DF600AA82AB839F +:080DFA00120DEB1ABAFF011BF8 +:050E0200EA4B70F42230 +:030E1500758121C3 +:0A0E18001205DAE5826003020E10F5 +:00000001FF Index: bin =================================================================== --- bin (nonexistent) +++ bin (revision 26)
bin Property changes : Added: svn:ignore ## -0,0 +1,33 ## +*.dep_ghdl +*.dep_isim +*.dep_xst +work-obj93.cf +*.vcd +*.ghw +*.sav +*.tmp +*.exe +ise +xflow.his +*.ngc +*.ncd +*.pcf +*.bit +*.msk +isim +isim.log +isim.wdb +fuse.log +*_[sft]sim.vhd +*_tsim.sdf +*_xst.log +*_tra.log +*_twr.log +*_map.log +*_par.log +*_tsi.log +*_pad.log +*_bgn.log +*_svn.log +*_sum.log +*_[dsft]sim.log Index: sys/99-retro-usb-permissions.rules =================================================================== --- sys/99-retro-usb-permissions.rules (nonexistent) +++ sys/99-retro-usb-permissions.rules (revision 26) @@ -0,0 +1,26 @@ +# $Id: 99-retro-usb-permissions.rules 467 2013-01-02 19:49:05Z mueller $ +# +# udev rules to make some USB adaptors writable to group plugdev +# +# copy into /etc/udev/rules.d +# +ACTION!="add", GOTO="special_usb_rules_end" +SUBSYSTEM!="usb", GOTO="special_usb_rules_end" +# +# Cypress FX2 based systems ------------------------------------------ +# - Digilent Nexys2 +ATTR{idVendor}=="1443", ATTR{idProduct}=="0005", MODE="660", GROUP="plugdev" +# - Digilent Nexys3 and Atlys +ATTR{idVendor}=="1443", ATTR{idProduct}=="0007", MODE="660", GROUP="plugdev" +# +# - Cypress - EZ-USB FX2 USB 2.0 default +ATTR{idVendor}=="04b4", ATTR{idProduct}=="8613", MODE="660", GROUP="plugdev" +# +# - ixo.de - USB-JTAG-IF (used by ixo_jtag firmware) +ATTR{idVendor}=="16c0", ATTR{idProduct}=="06ad", MODE="660", GROUP="plugdev" +# - VOTI - free for internal lab use 1007 (used by retro11 firmware; primary) +ATTR{idVendor}=="16c0", ATTR{idProduct}=="03ef", MODE="660", GROUP="plugdev" +# - VOTI - free for internal lab use 1008 (used by retro11 firmware; alternate) +ATTR{idVendor}=="16c0", ATTR{idProduct}=="03f0", MODE="660", GROUP="plugdev" +# +LABEL="special_usb_rules_end" Index: sys/README.txt =================================================================== --- sys/README.txt (nonexistent) +++ sys/README.txt (revision 26) @@ -0,0 +1,17 @@ +# $Id: README.txt 446 2011-12-29 23:27:48Z mueller $ + +to setup udev rules do + + sudo cp -a 99-retro-usb-permissions.rules /etc/udev/rules.d/ + sudo chown root:root /etc/udev/rules.d/99-retro-usb-permissions.rules + dir /etc/udev/rules.d/ + + sudo udevadm control --reload-rules + +to verify whether usb device was really put into group 'plugdev' + + lsusb + --> look for bus/dev of interest + + find /dev/bus/usb -type c | sort| xargs ls -l + --> check whether bus/dev of interest is in group plugdev Index: sys =================================================================== --- sys (nonexistent) +++ sys (revision 26)
sys Property changes : Added: svn:ignore ## -0,0 +1,33 ## +*.dep_ghdl +*.dep_isim +*.dep_xst +work-obj93.cf +*.vcd +*.ghw +*.sav +*.tmp +*.exe +ise +xflow.his +*.ngc +*.ncd +*.pcf +*.bit +*.msk +isim +isim.log +isim.wdb +fuse.log +*_[sft]sim.vhd +*_tsim.sdf +*_xst.log +*_tra.log +*_twr.log +*_map.log +*_par.log +*_tsi.log +*_pad.log +*_bgn.log +*_svn.log +*_sum.log +*_[dsft]sim.log Index: . =================================================================== --- . (nonexistent) +++ . (revision 26)
. Property changes : Added: svn:ignore ## -0,0 +1,33 ## +*.dep_ghdl +*.dep_isim +*.dep_xst +work-obj93.cf +*.vcd +*.ghw +*.sav +*.tmp +*.exe +ise +xflow.his +*.ngc +*.ncd +*.pcf +*.bit +*.msk +isim +isim.log +isim.wdb +fuse.log +*_[sft]sim.vhd +*_tsim.sdf +*_xst.log +*_tra.log +*_twr.log +*_map.log +*_par.log +*_tsi.log +*_pad.log +*_bgn.log +*_svn.log +*_sum.log +*_[dsft]sim.log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.