Correct markdown format errors in my page
[libreriscv.git] / HDL_workflow / ECP5_FPGA.mdwn
index 6e315895ebe373fd3a680a51e766c8db24224884..fad903c149e0ca9025d973b9bb26db518a32bf69 100644 (file)
@@ -1,11 +1,26 @@
 # ULX3S JTAG Connection with ft232r
 
+Note: this page is for connecting a *secondary* JTAG connection to
+the Libre-SOC Core, in order to test the actual HDL implementation
+of JTAG.  "Normal" JTAG documentation instructs you how to connect
+to the **FPGA** hard-macro JTAG port (in some fashion).  Whilst the
+FPGA has a JTAG port as a hard-macro these instructions do **not**
+apply to that: they apply **specifically** to actual implementation
+in HDL of a JTAG TAP interface suitable for deployment on an ASIC,
+and, consequently, in order to test that, four GPIO pads had to be
+picked to bring those signals out.  These instructions describe how
+to correctly wire up an FT232r to connect to those four GPIO pads.
+
 Cross referenced with:
 
 <https://bugs.libre-soc.org/show_bug.cgi?id=517>
 
 <http://lists.libre-soc.org/pipermail/libre-soc-dev/2020-October/000873.html>
 
+<https://www.amazon.co.uk/DSD-TECH-adapter-FT232RL-Compatible/dp/B07BBPX8B8/ref=sr_1_11?dchild=1&keywords=ft232&qid=1632498288&s=amazon-devices&sr=1-11>
+
+<https://www.amazon.co.uk/Elegoo-120pcs-Multicolored-Breadboard-arduino-colorful/dp/B01EV70C78/>
+
 ## Original Instructions
 
 See <https://bugs.libre-soc.org/show_bug.cgi?id=517#c0>
@@ -16,7 +31,7 @@ Checklist based on above
     
 * ***DO*** make sure to ***only*** drive an input as an input, and to ***only*** drive an output as an output.
 
-* ***DO*** make sure to ***only*** wire up GND to GND with the jumper-cables.
+* ***DO*** make sure to ***only*** wire up 3.3V to 3.3V and to ***only*** wire up GND to GND with the jumper-cables.
 
 * ***DO*** make sure that ***before*** even ***thinking*** of uploading to and powering up the FPGA that everything has been ***THOROUGHLY*** triple-checked.
 
@@ -48,16 +63,13 @@ Next we will wire up the ft232r and our FPGA in three separate stages.
 
 This way you do not lose the connections when you want to disconnect and store the two devices. We are using FEMALE-TO-FEMALE jumper cables on the male header pins of the FPGA so that the wires do not randomly damage the bare PCB due to a short.
 
-We will wire each of the pins on the the ft232r according to the diagrams, tables, and images on this page.
-
-According to <https://www.sparkfun.com/datasheets/IC/FT232R_v104.pdf>, page 8 - Table 1: pin 4 - VCCIO - should be supplied *by the FPGA*.
-
-Therefore we will not attach any jumpers to the red VCC wire of the ft232r cable, nor the fpga.
+We will wire each of the pins on the the ft232r according to the diagrams, tables, and images on this page. 
 
 |   Action   | Colour | Pin Name |
 |------------|--------|----------|
 | Attach MTM | Black  |   GND    |
 | Attach MTM | Brown  |   TMS    |
+| Attach MTM | Red    |   VCC    |
 | Attach MTM | Orange |   TCK    |
 | Attach MTM | Yellow |   TDI    |
 | Attach MTM | Green  |   TDO    |
@@ -68,6 +80,7 @@ Follow this section if you have the ULX3S FPGA:
 
 |   Action   | Colour | Pin # | Pin Name |
 |------------|--------|-------|----------|
+| Attach FTF | Red    |   2   |   VREF   |
 | Attach FTF | Black  |   4   |   GND    |
 | Attach FTF | Yellow |   5   |   TDI    |
 | Attach FTF | Brown  |   6   |   TMS    |
@@ -78,6 +91,7 @@ Follow this section if you have the Versa ECP5 FPGA:
 
 |   Action   | Colour | X3 Pin # | Pin Name |
 |------------|--------|----------|----------|
+| Attach FTF | Red    |    39    |   VREF   |
 | Attach FTF | Black  |     1    |   GND    |
 | Attach FTF | Yellow |     4    |   TDI    |
 | Attach FTF | Brown  |     5    |   TMS    |
@@ -89,17 +103,22 @@ Final steps for both FPGA boards:
 | Checklist Step |
 |----------------|
 | Check each jumper wire connection between the corresponding pins on the FPGA and the ft232r **THREE** times |
+| ***lckl*** check for ground loops? |
+
 
 Finally, we will connect the jumper cables of the same colour from ft232r and the FPGA.
 
 | Checklist Step |
 |----------------|
+| Attach the ends of the **RED** jumper cables    |
 | Attach the ends of the **BLACK** jumper cables  |
 | Attach the ends of the **YELLOW** jumper cables |
 | Attach the ends of the **BROWN** jumper cables  |
 | Attach the ends of the **ORANGE** jumper cables |
 | Attach the ends of the **GREEN** jumper cables  |
 
+***lckl if both the micro-usb cable and the ft232r GND and VCC wires are connected to the fpga will this result in volatage fighting where the fpga will be damaged?***
+
 Finally, plug in the USB end of the USB-to-MicroUSB cable that is plugged into the ft232r into your computer. Begin testing the SOC on the FPGA (instructions to follow).
 
 ## Connecting the dots:
@@ -134,13 +153,13 @@ For MALE VERTICAL header, SWAP EVEN and ODD pin numbers.
 
                     J1
 
- Label     [GP{x}]|PCB pin label|[GN{x}] Label
-             (Pin count +)(Pin count -)
-___________________V__________V________________
-NOT CONNECTED 3V3  2  |3.3V|  1  NOT CONNECTED
-             [GND] 4  | -| |  3  NOT CONNECTED
-PCLKT0_0     [GP0] 6  |  0 |  5  [GN0] PCLKC0_0
-PCLKT0_1     [GP1] 8  |  1 |  7  [GN1] PCLKC0_1 
+ Label  [GP{x}]|PCB pin label|[GN{x}] Label
+           (Pin count +)(Pin count -)
+_________________V__________V________________
+ IO VOLT REF 3V3 2  |3.3V|  1  NOT CONNECTED
+           [GND] 4  | -| |  3  NOT CONNECTED
+PCLKT0_0   [GP0] 6  |  0 |  5  [GN0] PCLKC0_0
+PCLKT0_1   [GP1] 8  |  1 |  7  [GN1] PCLKC0_1 
 
 
 GP,GN 0-7 single-ended connected to Bank0
@@ -159,20 +178,57 @@ Board pin # (count) | Board pin label # | FPGA IO PAD | GPIO # (n/p) |   Label
 
 As noted in the schematic pins GP,GN 0-7 are single ended non-differential pairs, whereas pins GP,GN 8-13 I haven't mapped out here as they are bidirectional differential pairs.
 
-ft232 pin and wire colour table converted to jtag signal names:
+``` from http://openocd.org/doc/html/Debug-Adapter-Configuration.html#index-ftdi
+List of connections (default physical pin numbers for FT232R in 28-pin SSOP package):
 
+    - RXD(5) - TDI
+    - TXD(1) - TCK
+    - RTS(3) - TDO
+    - CTS(11) - TMS
+    - DTR(2) - TRST
+    - DCD(10) - SRST 
 ```
- _________________________
-| Pin # | Name |  Colour  |
-|-------|------|----------|
-|   1   | GND  |  Black   |
-|   2   | TMS  |  Brown   |
-|   4   | TCK  |  Orange  |
-|   5   | TDI  |  Yellow  |
-|   6   | TDO  |  Green   |
-|_______|______|__________|
+
+``` from https://github.com/ntfreak/openocd/blob/master/src/jtag/drivers/ft232r.c#L79-L99
+/**
+ * FT232R GPIO bit number to RS232 name
+ */
+#define FT232R_BIT_COUNT 8
+static char *ft232r_bit_name_array[FT232R_BIT_COUNT] = {
+       "TXD", /* 0: pin 1  TCK output */
+       "RXD", /* 1: pin 5  TDI output */
+       "RTS", /* 2: pin 3  TDO input */
+       "CTS", /* 3: pin 11 TMS output */
+       "DTR", /* 4: pin 2  /TRST output */
+       "DSR", /* 5: pin 9  unused */
+       "DCD", /* 6: pin 10 /SYSRST output */
+       "RI"   /* 7: pin 6  unused */
+};
+
+static int tck_gpio; /* initialized to 0 by default */
+static int tdi_gpio = 1;
+static int tdo_gpio = 2;
+static int tms_gpio = 3;
+static int ntrst_gpio = 4;
+static int nsysrst_gpio = 6;
 ```
 
+```from ft232 usb to 6 pin female header manual
+
+ft232 pin and wire colour table converted to jtag signal names:
+
+```
+|-------|------|--------|----------|
+| Pin # | JTAG |  FT232 | Colour   |
+|-------|------|--------|----------|
+|   1   | VCC  | VCC    |  Red     |
+|   2   | GND  | GND    |  Black   |
+|   3   | TCK  | TXD    |  White   |
+|   4   | TDI  | RXD    |  Green   |
+|   5   | TDO  | RTS    |  Yellow  |
+|   6   | TMS  | CTS    |  Blue    |
+|-------|------|--------|----------|
+```
 Proposed FPGA External Pin to ft232r JTAG pin connections:
 
 ```
@@ -183,13 +239,13 @@ Proposed FPGA External Pin to ft232r JTAG pin connections:
 |    pin #    |   #   | FPGA IO PAD |GPIO # (n/p) | Pin #  (Signal)|Wire Colour|
 |_____________|_______|_____________|_____________|________________|___________|
 |1 (no header)|  3.3v |NOT CONNECTED|NOT CONNECTED| NOT CONNECTED  |    NOT    |
-|2            |  3.3v | IO VOLT REF | IO VOLT REF | NOT CONNECTED  |    NOT    |
+|2            |  3.3v | IO VOLT REF | IO VOLT REF |    3 (VCC)     |    Red    |
 |3 (no header)|-|(GND)|NOT CONNECTED|NOT CONNECTED| NOT CONNECTED  |    NOT    |
 |4            |-|(GND)|    NONE     |     GND     |    1 (GND)     |   Black   |
-|5 (J1_5-)    |   0   |     C11     |    gn[0]    |    5 (TDI)     |   Yellow  |
-|6 (J1_5+)    |   0   |     B11     |    gp[0]    |    2 (TMS)     |   Brown   |
-|7 (J1_7-)    |   1   |     A11     |    gn[1]    |    4 (TCK)     |   Orange  |
-|8 (J1_7+)    |   1   |     A10     |    gp[1]    |    6 (TDO)     |   Green   |
+|5 (J1_5-)    |   0   |     C11     |    gn[0]    |    5 (TDI)     |   Green   |
+|6 (J1_5+)    |   0   |     B11     |    gp[0]    |    2 (TMS)     |   Blue    |
+|7 (J1_7-)    |   1   |     A11     |    gn[1]    |    4 (TCK)     |   White   |
+|8 (J1_7+)    |   1   |     A10     |    gp[1]    |    6 (TDO)     |   Yellow  |
 |_____________|_______|_____________|_____________|________________|___________|
 ```
 
@@ -207,37 +263,43 @@ and therefore have no value are marked with 'NOT'
 (ft232r# JTAG)   (Pin count +)(Pin count -)   (ft232r# JTAG)
  ______________________V__________V_______________________
 |                                                         |
-|NOT      NOT   [VREF] 2  |3.3V|  1   NOT   NOT     NOT   |
-|(1 GND) black   [GND] 4  | -| |  3   NOT   NOT     NOT   |
-|(2 TMS) brown   [GP0] 6  |  0 |  5  [GN0] yellow (5 TDI) |
-|(6 TDO) green   [GP1] 8  |  1 |  7  [GN1] orange (4 TCK) |
+|(3 VCC) red    [VREF] 2  |3.3V|  1   NOT   NOT    NOT    |
+|(1 GND) black   [GND] 4  | -| |  3   NOT   NOT    NOT    |
+|(2 TMS) Blue    [GP0] 6  |  0 |  5  [GN0] Green  (5 TDI) |
+|(6 TDO) Yellow  [GP1] 8  |  1 |  7  [GN1] White  (4 TCK) |
 |_________________________________________________________|
 ```
 
-## Images of wires on FPGA and on ft232r
+## Images of wires on ulx3s FPGA and on ft232r (lkcl to update images for Versa ECP5)
 
-Image of JTAG jumper wire connections on ULX3S FPGA side
+Image of JTAG jumper wire connections on ULX3S FPGA side:
 
 [[!img HDL_workflow/ulx3s_fpga_jtag_wires.jpg size="500x" ]] 
 
-Image of JTAG jumper wire connections on ft232r side
+Image of JTAG jumper wire connections on ft232r side:
 
 [[!img HDL_workflow/ft232r_jtag_wires.jpg size="500x" ]] 
 
+Colour markings on ft232r side:
+
+[[!img HDL_workflow/ft232.png size="500x" ]] 
+
 # VERSA ECP5 Connections
 
 Table of connections:
 
-| X3  pin #   | FPGA IO PAD |  ft232r   |Wire Colour|
-|-------------|-------------|-----------|-----------|
-|    1 GND    |     GND     |  1 (GND)  |   Black   |
-|    4 IO29   |     B19     |  5 (TDI)  |   Yellow  |
-|    5 IO30   |     B12     |  2 (TMS)  |   Brown   |
-|    6 IO31   |     B9      |  4 (TCK)  |   Orange  |
-|    7 IO32   |     E6      |  6 (TDO)  |   Green   |
+| X3  pin #   | FPGA IO PAD |  Function | FT232  | Wire Colour|
+|-------------|-------------|-----------|--------|------------|
+|   39 +3.3V  | 3.3V supply |    (VCC)  | VREF   |   Red      |
+|    1 GND    |     GND     |    (GND)  | GND    |   Black    |
+|    4 IO29   |     B19     |    (TDI)  | RXD    |   Green    |
+|    5 IO30   |     B12     |    (TMS)  | CTS    |   Blue     |
+|    6 IO31   |     B9      |    (TCK)  | TXD    |   White    |
+|    7 IO32   |     E6      |    (TDO)  | RTS    |   Yellow   |
 
 [[!img 2020-11-03_13-22.png size="900x" ]] 
 
 [[!img 2020-11-03_13-25.png size="900x" ]] 
 
 [[!img versa_ecp5_x3_connector.jpg size="900x" ]] 
+