Current Server Time: 23:19 (Central Europe)

#apertus IRC Channel Logs

2019/06/11

Timezone: UTC


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