01:11 | Spirit532 | left the channel | |
01:11 | Spirit532 | joined the channel | |
01:40 | Bertl | off to bed now ... have a good one everyone!
| |
01:40 | Bertl | changed nick to: Bertl_zZ
| |
01:51 | RexOrCine | changed nick to: RexOrCine|away
| |
01:59 | futarisIRCcloud | joined the channel | |
05:43 | BAndiT1983|away | changed nick to: BAndiT1983
| |
08:13 | se6astian|away | changed nick to: se6astian
| |
08:29 | BAndiT1983 | changed nick to: BAndiT1983|away
| |
08:58 | futarisIRCcloud | left the channel | |
10:09 | Bertl_zZ | changed nick to: Bertl
| |
10:09 | Bertl | morning folks!
| |
10:10 | se6astian | good day
| |
12:16 | Bertl | off for now ... bbl
| |
12:16 | Bertl | changed nick to: Bertl_oO
| |
15:43 | BAndiT1983|away | changed nick to: BAndiT1983
| |
16:12 | se6astian | changed nick to: se6astian|away
| |
17:34 | BAndiT1983 | changed nick to: BAndiT1983|away
| |
17:34 | BAndiT1983|away | changed nick to: BAndiT1983
| |
17:40 | Y_G | joined the channel | |
17:59 | Bertl_oO | changed nick to: Bertl
| |
17:59 | Bertl | evening folks!
| |
18:00 | aSobhy | evening Bertl :)
| |
18:01 | Bertl | IIRC, you are going to tell us about JTAG today?
| |
18:02 | aSobhy | yes
| |
18:02 | Bertl | then please go ahead when you're ready
| |
18:03 | aSobhy | ok
| |
18:03 | aSobhy | apurvanandan[m]: are you here ?
| |
18:05 | aSobhy | Hi all, today I'll talk about jtag protocol
| |
18:05 | apurvanandan[m] | Yes, sorry for delay
| |
18:07 | aSobhy | first of all JTAG (Joint Test Action Group) is a serial protocol that is used for verifying designs and testing printed circuit boards after manufacture
| |
18:08 | Bertl | and programming devices in-circuit
| |
18:10 | aSobhy | we can use JTAG for:
| |
18:10 | aSobhy | 1- Debugging
| |
18:10 | aSobhy | 2- programming devices
| |
18:10 | aSobhy | 3- Boundary scan testing
| |
18:10 | aSobhy | first Debugging :
| |
18:14 | aSobhy | we can debug what is the state of our component with a software to get what values for example BTS (Branch Trace Storage), LBR (Last Branch Record)
| |
18:16 | Bertl | okay, but that needs specific support on the device ... please try to keep it more general
| |
18:17 | Bertl | (maybe explain how JTAG communication works first and then let's look at use cases
| |
18:17 | Bertl | )
| |
18:17 | se6astian|away | changed nick to: se6astian
| |
18:23 | aSobhy | 2- programming devices :
| |
18:23 | aSobhy | we can program our device using JTAG to write on the SRAM or Flash
| |
18:23 | aSobhy | do you mean start with the interface and TAP ?
| |
18:23 | Bertl | yes, let's start with that
| |
18:23 | aSobhy | ok
| |
18:25 | aSobhy | the JTAG has 5 pins interface:
| |
18:25 | aSobhy | 1- TDI (Test Data In)
| |
18:25 | aSobhy | 2- TDO (Test Data Out)
| |
18:25 | aSobhy | 3- TCK (Test Clock)
| |
18:25 | aSobhy | 4- TMS (Test Mode Select)
| |
18:25 | aSobhy | 5- TRST (Test Reset) optional.
| |
18:26 | aSobhy | we can not use the TSRT as we will see next
| |
18:32 | aSobhy | first we have a Boundary Scan Register : which is the boundary I/O of the device it has an input of TCK and TDI
| |
18:34 | aSobhy | we can assign the values of the I/O pins in order to test our design or the program on the board
| |
18:34 | Bertl | are you reading the documentation right now or why does it take 5 minutes for each line?
| |
18:37 | aSobhy | no i didn't reharse sorry !
| |
18:37 | Bertl | okay, then try to get to the point: how does it work?
| |
18:38 | aSobhy | here what i'm talking from:
| |
18:38 | aSobhy | https://drive.google.com/open?id=1YQ0LVwgS4l2KPW4uC0lg30JlmxRYJTqm
| |
18:39 | Bertl | okay, so looking at this diagram, what can we do here?
| |
18:39 | aSobhy | we can assign the values of the Data Registers or the instruction register
| |
18:40 | Bertl | good, how do we do that?
| |
18:40 | aSobhy | and all of that can be controlled from the TAP controller
| |
18:41 | Bertl | how?
| |
18:43 | aSobhy | by the TAP controller https://drive.google.com/open?id=1Y6KUE6lEKvvoW-lMaFoxQ5keriEEzD0e
| |
18:43 | Bertl | so the tap controller controls the tap controller?
| |
18:45 | aSobhy | no !
| |
18:46 | aSobhy | its a sequence of states that we can assign from the TMS so we can shift for ex. the data register
| |
18:47 | Bertl | how do we 'assign' this sequence?
| |
18:49 | Bertl | can anybody help aSobhy out with the basics of JTAG?
| |
18:50 | aSobhy | our program we want to shift a new value in the register then we will send 0100(looping till all registers are done )
| |
18:50 | aSobhy | looping=0
| |
18:55 | aSobhy | !
| |
18:56 | Bertl | now everything is clear ...
| |
18:57 | aSobhy | what is missing ?
| |
18:58 | Bertl | I doubt that anybody can understand JTAG from this description
| |
18:58 | Bertl | but let me help you get on track here
| |
18:59 | Bertl | as you mentioned, there are four central signals involved
| |
18:59 | Bertl | TMS, TCK, TDI and TDO
| |
19:00 | Bertl | TCK is the clock for serial data and on every clock cycle, data is shifted in from TMS and TDI and shifted out via TDO
| |
19:00 | Bertl | the data shifted in via TMS controls the TAP (controller)
| |
19:01 | Bertl | i.e. every bit on TMS decides in the JTAG TAP state engine what the next step is going to be
| |
19:01 | Bertl | (see diagram about JTAG TAP state engine :)
| |
19:02 | Bertl | there are several shift registers of certain length in a JTAG device
| |
19:02 | Bertl | the main registers are the command register and the data register
| |
19:03 | Bertl | ly one clock cycle delay
| |
19:03 | Bertl | there is also a short bypass register which allows to pass through any input data to the output with on
| |
19:03 | Bertl | (switch the last two lines :)
| |
19:04 | Bertl | which register is connected between TDI and TDO is controlled by the state of the tap controller and the command in the command register
| |
19:04 | Y_G | left the channel | |
19:05 | Bertl | now let's pick up from here and explain some of the commands please ...
| |
19:06 | Y_G | joined the channel | |
19:09 | aSobhy | what commands ?
| |
19:09 | aSobhy | do you mean the state machine ?
| |
19:10 | Bertl | you can explain the state machine if you like to
| |
19:10 | Bertl | but I was more referring to the commands in the instruction register
| |
19:15 | aSobhy | no I didn't reach the Instruction register illustration but i saw it has it has
| |
19:15 | aSobhy | SAMPLE
| |
19:15 | aSobhy | EXTEST
| |
19:15 | aSobhy | PRELOAD
| |
19:15 | BAndiT1983 | changed nick to: BAndiT1983|away
| |
19:16 | aSobhy | SAMPLE : reading pin values into the boundary scan register
| |
19:17 | aSobhy | EXTEST : for external testing, such as using pins to probe board-level behaviors
| |
19:17 | aSobhy | PRELOAD : loading pin output values before EXTEST (sometimes combined with SAMPLE)
| |
19:18 | Bertl | any other important instructions?
| |
19:19 | aSobhy | BYPASS and IDCODE
| |
19:19 | Bertl | yup, what do they do?
| |
19:23 | aSobhy | BYPASS : an opcode of all ones regardless of the TAP's instruction register size, must be supported by all TAPs. The instruction selects a single bit data register (also called BYPASS). The instruction allows this device to be bypassed (do nothing) while other devices in the scan path are exercised
| |
19:24 | Y_|G | joined the channel | |
19:24 | Bertl | okay, how can this be used for device discovery?
| |
19:24 | Y_G | left the channel | |
19:26 | aSobhy | no I don't know
| |
19:28 | Bertl | so the devices can be put in a so called chain
| |
19:28 | Bertl | where TDO of one device is connected to TDI of the next device
| |
19:28 | Bertl | and so on, till the loop is complete, having only one TDI and TDO on the jtag header
| |
19:29 | Bertl | TCK and TMS is routed to each of the devices in the JTAG chain
| |
19:29 | Kjetil | How would you know the amount of devices in the chain?
| |
19:29 | Bertl | by sending a long sequence of zeros/ones one can calculate the length of the instruction and data registers
| |
19:30 | Kjetil | :)
| |
19:30 | Bertl | and with IDCODE, it is possible to figure out what device is connected
| |
19:32 | Bertl | note that JTAG discovery can be quite complex
| |
19:33 | Bertl | aSobhy: okay, so I'm not really happy with the JTAG presentation, but you probably figured that from my comments ...
| |
19:33 | Bertl | let's move on and discuss the next steps ...
| |
19:34 | Bertl | apurvanandan[m] managed to program the MachXO2 on the plugin module yesterday
| |
19:34 | Bertl | you both managed to work with the MachXO2s on the Main Board last week
| |
19:35 | Bertl | so I expect the coming days to see some test code for the MachXO2s regarding data transfer
| |
19:36 | aSobhy | I feel sorry I can repeat it next week ?
| |
19:36 | Bertl | sure
| |
19:38 | Bertl | so any problems, questions, etc?
| |
19:38 | aSobhy | I want to talk about the protocol ?!
| |
19:38 | Bertl | okay
| |
19:39 | apurvanandan[m] | Bertl you said to do one more session on remote beta ?
| |
19:39 | aSobhy | what are the instruction will be sent and what I remember it will be a fixed length for every packet
| |
19:40 | apurvanandan[m] | When can we arrange that
| |
19:40 | aSobhy | instructions*
| |
19:40 | Bertl | well, we haven't decided that yet, as it depends on the performance we can achieve over the available connections
| |
19:41 | Bertl | apurvanandan[m]: yes, we can do that in the next few days, remind me what the focus is/was?
| |
19:41 | Y_|G | left the channel | |
19:42 | Bertl | aSobhy: ideally we have low latency for GPIO data and high bandwdith for everything else
| |
19:42 | Bertl | we might need to do some scheduling to avoid timeouts etc
| |
19:43 | apurvanandan[m] | Ok
| |
19:43 | Bertl | and in general the packets will probably be of moderate size mainly because there isn't that much data to transfer and we want to keep low latencies for important stuff
| |
19:44 | Bertl | fixed length is fine for me, but if variable length gives us significant advantages, I wouldn't rule it out yet
| |
19:45 | Bertl | as planned, first step should be to evaluate what the communication channel can do in the Beta
| |
19:46 | Bertl | bonus points here for creative ideas to keep the overhead (mainly power consumption and noise) low when the channel is idle
| |
19:50 | aSobhy | I have a problem didn't understand
| |
19:50 | aSobhy | how I'll manage the devices with different clocks ?
| |
19:50 | aSobhy | slow clocks
| |
19:51 | aSobhy | for the protocols (GPIO, I2C,...)
| |
19:53 | Bertl | well, clock need to be generated locally (they can be based on a common high speed clock of course)
| |
19:54 | Bertl | so if there is an I2C master (in the FPGA) it needs to provide a 'configured' clock to access the devices
| |
19:55 | Bertl | and if, on the other hand, the FPGA provides a slave/bridge interface, a clock domain crossing mechanism (e.g. FIFO) is required
| |
19:55 | Bertl | but in the current setup we all assume master functionality on the FPGA side
| |
19:56 | Bertl | so this problem should not be relevant
| |
19:58 | aSobhy | okay
| |
19:59 | aSobhy | thanks Bertl
| |
19:59 | Bertl | you're welcome!
| |
19:59 | aSobhy | and sorry of what happened today :(
| |
20:00 | Bertl | okay
| |
20:13 | BAndiT1983|away | changed nick to: BAndiT1983
| |
20:26 | Bertl | off for now ... bbl
| |
20:26 | Bertl | changed nick to: Bertl_oO
| |
22:08 | BAndiT1983 | changed nick to: BAndiT1983|away
| |
22:21 | se6astian | off to bed
| |
22:21 | se6astian | good night
| |
22:21 | Bertl_oO | nn
| |
22:22 | se6astian | changed nick to: se6astian|away
| |
23:27 | Spirit532 | left the channel | |
23:28 | Spirit532 | joined the channel | |
00:06 | illwieckz | left the channel | |
00:36 | illwieckz | joined the channel | |
00:42 | illwieckz | left the channel |