comments on JTAG IO
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Fri, 9 Oct 2020 13:12:02 +0000 (14:12 +0100)
committerStaf Verhaegen <staf@stafverhaegen.be>
Thu, 22 Apr 2021 08:36:03 +0000 (10:36 +0200)
c4m/nmigen/jtag/tap.py

index 6c290ed997ffda7c43b79795830c5fdcaf20f649..473c0677bdff812c535580036c04011c5e5fc540 100755 (executable)
@@ -445,6 +445,7 @@ class TAP(Elaboratable):
         io_sr = Signal(length)
         io_bd = Signal(length)
 
+        # Boundary scan "capture" mode.  makes I/O status available via SR
         with m.If(capture):
             idx = 0
             for conn in self._ios:
@@ -470,11 +471,17 @@ class TAP(Elaboratable):
                 else:
                     raise("Internal error")
             assert idx == length, "Internal error"
+
+        # "Shift" mode (sends out captured data on tdo, sets incoming from tdi)
         with m.Elif(shift):
             m.d.posjtag += io_sr.eq(Cat(self.bus.tdi, io_sr[:-1]))
+
+        # "Update" mode
         with m.Elif(update):
             m.d.negjtag += io_bd.eq(io_sr)
 
+        # sets up IO (pad<->core) or in testing mode depending on requested
+        # mode, via Muxes controlled by bd2core and bd2io
         idx = 0
         for conn in self._ios:
             if conn._iotype == IOType.In: