﻿WEBVTT

NOTE This file was exported by MacCaption version 7.0.13 to comply with the WebVTT specification dated March 27, 2017.

00:00:00.367 --> 00:00:03.437 align:center line:-1 position:50% size:41%
Let's take a look at CAN timing,

00:00:03.437 --> 00:00:12.312 align:center line:-1 position:50% size:63%
and why did we see those bits at the beginning
of the frame jumping up and down

00:00:12.312 --> 00:00:17.251 align:center line:-1 position:50% size:37%
and that one bit at the end
had a lower dominant level?

00:00:17.251 --> 00:00:21.822 align:center line:-1 position:50% size:63%
What those are, the ones that were intermittent
at the beginning of the frame,

00:00:21.822 --> 00:00:25.592 align:center line:-1 position:50% size:43%
that was evidence of arbitration.

00:00:25.592 --> 00:00:29.663 align:center line:-1 position:50% size:69%
What happens when the arbitration is happening is,

00:00:29.663 --> 00:00:31.632 align:center line:-1 position:50% size:50%
there are multiple nodes in a system,

00:00:31.632 --> 00:00:38.772 align:center line:-1 position:50% size:57%
as you see in this physical timing diagram.

00:00:38.772 --> 00:00:43.210 align:center line:-1 position:50% size:46%
You have node A, node B, node C,
all the way up to node N.

00:00:43.210 --> 00:00:45.078 align:center line:-1 position:50% size:36%
They are individual nodes.

00:00:45.078 --> 00:00:48.882 align:center line:-1 position:50% size:40%
They have their own clocking.

00:00:48.882 --> 00:00:53.787 align:center line:-1 position:50% size:42%
They each look out on the bus,
see if the bus is idle.

00:00:53.787 --> 00:00:56.690 align:center line:-1 position:50% size:38%
If they all see the bus is idle,

00:00:56.690 --> 00:01:04.331 align:center line:-1 position:50% size:49%
any of them can start generating bits
almost at the same time.

00:01:04.331 --> 00:01:06.199 align:center line:-1 position:50% size:26%
Follow that red dot.

00:01:06.199 --> 00:01:10.437 align:center line:-1 position:50% size:49%
Node A generated a bit onto the bus.

00:01:10.437 --> 00:01:13.407 align:center line:-1 position:50% size:48%
It has to travel the length of the bus.

00:01:13.407 --> 00:01:17.477 align:center line:-1 position:50% size:52%
Node N looks out on the bus and says,
"Looks idle to me."

00:01:17.477 --> 00:01:23.750 align:center line:-1 position:50% size:62%
It hadn't received the bit from node A yet,
and that bit travels all the way back to node A.

00:01:23.750 --> 00:01:28.588 align:center line:-1 position:50% size:49%
Then, after it arrives back at node A,

00:01:28.588 --> 00:01:35.395 align:center line:-1 position:50% size:40%
node A that generated a bit
at approximately 75% to 80%,

00:01:35.395 --> 00:01:38.365 align:center line:-1 position:50% size:63%
this is the sample point we talked about earlier,

00:01:38.365 --> 00:01:44.304 align:center line:-1 position:50% size:39%
it delays looking at its own bit
that it thinks it put on the bus

00:01:44.304 --> 00:01:49.509 align:center line:-1 position:50% size:43%
to see if it has the same polarity.

00:01:49.509 --> 00:01:53.613 align:center line:-1 position:50% size:45%
This is an illustration of two buses
talking at the same time.

00:01:53.613 --> 00:01:59.586 align:center line:-1 position:50% size:44%
There's a budget for this timing,
and it's determined by, first of all,

00:01:59.586 --> 00:02:01.788 align:center line:-1 position:50% size:33%
just a propagation delay.

00:02:01.788 --> 00:02:07.961 align:center line:-1 position:50% size:24%
Typical for copper
is about 5 ns/m.

00:02:07.961 --> 00:02:11.832 align:center line:-1 position:50% size:52%
Then, in addition,
there's a delay of the transceiver itself.

00:02:11.832 --> 00:02:16.570 align:center line:-1 position:50% size:53%
That's the small white box
that's drawn above each of those nodes

00:02:16.570 --> 00:02:21.108 align:center line:-1 position:50% size:47%
as well as processing time
of the controller itself of each node.

00:02:21.108 --> 00:02:23.810 align:center line:-1 position:50% size:32%
That's called loop delay.

00:02:23.810 --> 00:02:25.445 align:center line:-1 position:50% size:38%
It's two times the loop delay,

00:02:25.445 --> 00:02:34.988 align:center line:-1 position:50% size:58%
which, typical is about 250 ns
for a typical CAN transceiver and controller.

00:02:34.988 --> 00:02:38.358 align:center line:-1 position:50% size:34%
You've got two times that
plus two times the length.

00:02:38.358 --> 00:02:44.431 align:center line:-1 position:50% size:47%
If you assume a length in a vehicle
could be up to 10 m,

00:02:44.431 --> 00:02:53.507 align:center line:-1 position:50% size:57%
there's 100 ns, so 5 ns/m times 10 m,
double it because it travels back and forth,

00:02:53.507 --> 00:03:00.380 align:center line:-1 position:50% size:41%
then 2 times the loop delay,
and you're up to about 600 ns.

00:03:00.380 --> 00:03:07.187 align:center line:-1 position:50% size:66%
You can see there's a long delay that can happen
where multiple nodes can talk at the same time.

00:03:07.187 --> 00:03:14.027 align:center line:-1 position:50% size:48%
Let's take a look at this next graphic
and see how arbitration works.

00:03:14.027 --> 00:03:17.297 align:center line:-1 position:50% size:53%
This is why they call it dominant-bit low.

00:03:17.297 --> 00:03:25.238 align:center line:-1 position:50% size:56%
Any node that pulls the bus to a low level,
the differential bus is low.

00:03:25.238 --> 00:03:28.708 align:center line:-1 position:50% size:60%
Here, I show an example of node 1, 2, and 3.

00:03:28.708 --> 00:03:32.412 align:center line:-1 position:50% size:51%
By the way, it operates as a wired AN.

00:03:32.412 --> 00:03:37.284 align:center line:-1 position:50% size:50%
The start of it, they all started talking,
they generated the same level,

00:03:37.284 --> 00:03:42.022 align:center line:-1 position:50% size:52%
they all looked out on the bus
about 75% into a bit time and they say,

00:03:42.022 --> 00:03:44.958 align:center line:-1 position:50% size:32%
"Well, that's the polarity
of the bit I put out there.

00:03:44.958 --> 00:03:46.960 align:center line:-1 position:50% size:32%
I'm going to keep talking."

00:03:50.263 --> 00:03:53.366 align:center line:-1 position:50% size:51%
Here, I show two bits at the same time.

00:03:53.366 --> 00:03:58.138 align:center line:-1 position:50% size:61%
The next two bits, they all put recessive levels
out there or 1s.

00:03:58.138 --> 00:04:02.109 align:center line:-1 position:50% size:46%
Again, they looked out there,
"That's the polarity I put out there."

00:04:04.111 --> 00:04:05.979 align:center line:-1 position:50% size:48%
I keep clicking on the wrong button.

00:04:05.979 --> 00:04:09.116 align:center line:-1 position:50% size:32%
Next 2 bits, same thing.

00:04:09.116 --> 00:04:13.954 align:center line:-1 position:50% size:43%
During bit field number 6,
node 1 put a recessive bit there,

00:04:13.954 --> 00:04:17.924 align:center line:-1 position:50% size:58%
node 2 and 3 put 2 dominant bits out there.

00:04:17.924 --> 00:04:22.596 align:center line:-1 position:50% size:52%
Node 6 looks out there, and if you look
at the red trace down at the bottom,

00:04:22.596 --> 00:04:25.999 align:center line:-1 position:50% size:58%
it follows what node 2 and 3 put on the bus.

00:04:25.999 --> 00:04:31.972 align:center line:-1 position:50% size:48%
Node 1 says, "I didn't put a low level
or a dominant level on the bus."

00:04:31.972 --> 00:04:37.878 align:center line:-1 position:50% size:52%
That node turns into a listen-only mode
at that point.

00:04:37.878 --> 00:04:43.950 align:center line:-1 position:50% size:60%
The next bit, node 2 an 3 are still contending
for dominance on the bus.

00:04:43.950 --> 00:04:46.286 align:center line:-1 position:50% size:34%
In this case, node 2 wins.

00:04:46.286 --> 00:04:49.256 align:center line:-1 position:50% size:47%
Node 3 goes to a listen-only mode.

00:04:49.256 --> 00:04:57.097 align:center line:-1 position:50% size:58%
Now, node 2 has full capability
to transmit throughout the rest of the frame.

00:04:57.097 --> 00:05:01.001 align:center line:-1 position:50% size:40%
Back to the waveform we saw
just a few minutes ago.

00:05:01.001 --> 00:05:08.208 align:center line:-1 position:50% size:50%
Why did, during that arbitration time,
did those bits go to a lower low level?

00:05:08.208 --> 00:05:11.912 align:center line:-1 position:50% size:37%
It's because multiple nodes
were pulling more current,

00:05:11.912 --> 00:05:15.482 align:center line:-1 position:50% size:62%
simultaneously pulling the bus to a lower level.

00:05:15.482 --> 00:05:17.984 align:center line:-1 position:50% size:49%
It's still sampled as a dominant level.

00:05:17.984 --> 00:05:19.486 align:center line:-1 position:50% size:30%
It crosses a threshold.

00:05:19.486 --> 00:05:25.959 align:center line:-1 position:50% size:62%
It really doesn't matter that
it's a lower low level or a more dominant level.

00:05:25.959 --> 00:05:28.562 align:center line:-1 position:50% size:44%
It's still seen as a dominant level.

00:05:28.562 --> 00:05:35.268 align:center line:-1 position:50% size:51%
At the end of the frame,
that bit was the acknowledgement bit.

00:05:35.268 --> 00:05:40.140 align:center line:-1 position:50% size:38%
Once a frame is transmitted,
all nodes are monitoring it.

00:05:40.140 --> 00:05:45.579 align:center line:-1 position:50% size:54%
If they see it as a valid frame,
they all pull on the bus at the same time,

00:05:45.579 --> 00:05:49.149 align:center line:-1 position:50% size:38%
pull more current out,
drives it to a lower low level.

00:05:49.149 --> 00:05:53.286 align:center line:-1 position:50% size:52%
This just makes it convenient
when you're monitoring it with a scope.

00:05:53.286 --> 00:05:55.822 align:center line:-1 position:50% size:34%
To see this activity,
you can immediately see

00:05:55.822 --> 00:06:01.728 align:center line:-1 position:50% size:51%
is there arbitration happening
and is the frame being acknowledged.

00:06:01.728 --> 00:06:06.700 align:center line:-1 position:50% size:65%
Back to what we talked about very, very early on,
waveform update rate.

00:06:06.700 --> 00:06:09.569 align:center line:-1 position:50% size:55%
Sometimes arbitration can be infrequent,

00:06:09.569 --> 00:06:15.575 align:center line:-1 position:50% size:57%
in which case a fast waveform update rate
reveals that to you very, very quickly.

