Dobrica Pavlinušić's random unstructured stuff
X300 dongle: Revision 7
{image: Pro050-rj45.png}
{toc: } ^ X300 dongle * [Altera] EPM3064A TC44-10N ftp://ftp.altera.com/outgoing/download/bsdl/3064at44.bsd * LD1117A L33AUD ^^ JTAG I took picture of both sides of board, corrected it using perspective tool in gimp and added layers with VCC (5V and 3.3V) and GND (checked with unimer continuity test). {image: x300_dongle-jtag.jpg} JTAG pinout doesn't match silkscreen designation of pin 1 (it's rotated). It also doesn't have VCC pin connected, so you need to supply 5V power via other means (I used PS/2 connector). [Bus Blaster] jtag try: .pre jtag> cable jtagkey vid=0x0403 pid=0x6010 interface=0 Connected to libftd2xx driver. jtag> detect IR length: 10 Chain length: 1 Device Id: 00010111000001100100000011011101 (0x170640DD) Manufacturer: Altera (0x0DD) Part(0): EPM3064A (0x7064) Stepping: 1 Filename: /usr/local/share/urjtag/altera/epm3064a/epm3064a jtag> print chain No. Manufacturer Part Stepping Instruction Register ------------------------------------------------------------------------------------------------------------------- * 0 Altera EPM3064A 1 BYPASS BYPASS # IMPORTANT: load signal aliases for this package jtag> include /usr/local/share/urjtag/altera/epm3064a/t44 # get values of all pins jtag> instruction SAMPLE/PRELOAD jtag> shift ir jtag> shift dr jtag> dr 010010111010111010010111010010010010111111111010111010 111010010010010111010010010010010010010010010010010010 010010010010010010010010010010010010010010010010010010 010010010010010111010111010010 (0x0000000000000000000000000000000024924924924975D2) jtag> print chain No. Manufacturer Part Stepping Instruction Register ------------------------------------------------------------------------------------------------------------------- * 0 Altera EPM3064A 1 SAMPLE/PRELOAD BSR jtag> get signal IO2 IO2 = 1 jtag> get signal IO3 IO3 = 1 jtag> get signal IO43 IO43 = 1 jtag> get signal IO44 IO44 = 1 # toggle single pin jtag> instruction EXTEST jtag> shift ir jtag> print chain No. Manufacturer Part Stepping Instruction Register ------------------------------------------------------------------------------------------------------------------- * 0 Altera EPM3064A 1 EXTEST BSR jtag> set signal IO10 out 0 jtag> shift dr # re-read values of all pins jtag> instruction SAMPLE/PRELOAD jtag> shift ir jtag> shift dr jtag> get signal IO10 IO10 = 0 .pre ^^ SVF programming .pre jtag> svf /blue-zfs/FPGA/Altera-x300/x300_dongle/output_files/dongle1.svf stop progress detail: Parsing 20/520 ( 3%)warning: unimplemented mode 'ABSENT' for TRST detail: Parsing 520/520 (100%)detail: detail: Scanned device output matched expected TDO values. .pre ^^ VHDL to toggle pins Toggle pins on all four sides of CPLD and create additional two images with all one and all zero for easy test where pin is {file: dongle1.vhd} Then I connected logic analyzer on pins and tried different svf files (all-0, all-1, left, bottom, right, top) to locate which pin change depending on image loaded. To isolate pins I used EXTEST and toggled pins. ^^ RJ45 {image: rj45-pins.jpg} | pin | pull | desc | | 1 | | GND | | 2 | 1 | VGA? | | 3 | 0 | IO? | | 4 | 1 | VGA? | | 5 | 0 | IO? | | 6 | 1 | VGA? | | 7 | | IO10 | | 8 | | 5V | ^^ PS2 {include: [PS2]} Keyboard (left, purple) | pin | IO | | 1 (data) | IO43 | | 5 (clock) | IO44 | Mouse (right, green) | pin | IO | | 1 (data) | IO34 | | 5 (clock) | IO35 | ^ Audio jack R2R D2A all measurements are done on Hantek 2090 with 500mV/div setting which may account for some accuracy errors ^^ channel 1 | state | min | max | | off | 64.17 mV | 95.54 mV | | IO23 | 1.664 V | 1.696 V | | IO22 | 864 mv | 895 mV | | IO21 | 472 mV | 503 mV | | IO20 | 283 mV | 299 mV | | IO19 | 189 mv | 221 mV | ^^ channel 2 | state | min | max | | off | 3.3 | 50 mV | | IO33 | 113 mV | 144 mV | | IO31 | 207 mV | 254 mV | | IO28 | 395 mV | 442 mV | | IO27 | 803 mV | 850 mV | | IO25 | 1.603 V | 1.635 V | |