Download presentation
Presentation is loading. Please wait.
Published byBrook Osborne Modified over 9 years ago
1
Limited wires. We have only one data line. Use for for bi-directional communication. Need to send: requests for data rumble pack on/off Need to receive controller status Some slides from Aaron Ridenour, Ryan Wooster and Alex Jaeckel. See for other details.
2
Bi-directional Open Collector
Pull-up resistor keeps the line high while idle. To send 0, the output line is pulled low and connected to ground. To send 1, nothing should be sent. Never drive the line high. Both sides do this, so bidirectional. If no data to send, wire stays (floats) high.
3
Controller Encoding Each bit is sent in ~4 𝜇𝑠 Logical 0:
Low for 3 𝜇𝑠, followed by high for 1 𝜇𝑠 Logical 1: Low for 1 𝜇𝑠, followed by high for 3 𝜇𝑠
4
Controller Encoding
6
Joystick x-coordinate Joystick y-coordinate
start bit A B Z St reset L R |----Command (console) 0x | |----Data1 (controller) 0x | | Data2 (controller) 0x00----| stop bit Joystick x-coordinate Joystick y-coordinate | Data3 (controller) 0x | | Data4 (controller) 0x | Images taken from:
7
Clock Synchronization
Once a FF goes metastable (due to a setup time violation, say) we can’t say when it will assume a valid logic level or what level it might eventually assume. The only thing we know is that the probability of a FF coming out of a metastable state increases exponentially with time. This and next slide from If you have an interest in this topic, that’s a nice slide set. has yet more details.
8
Traditional synchronizer
SIG is asynchronous, and META might go metastable from time to time However, as long as META resolves before the next clock period SIG1 should have valid logic levels Place FFs close together to allow maximum time for META to resolve. Under reasonable assumptions, MTBF=9x1010 years. More than the age of the Earth. Could add a third.
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.