CodiodeCodiode
Home
Problem Solving
Skill Tracks
My Assignments
Contests
Leaderboard
Community
Settings
Codiode/Problems/Sequential Logic

I2C Read Write Bit Extractor

MediumLogic CircuitBuild

Every I2C device must determine if the master intends to read or write data. The 8th bit of the initial address frame dictates bus ownership for the remainder of the transaction.

This circuit monitors the bus to extract the Read/Write direction bit. The global clock represents the SCL line. The start and stop signals are synchronous single-cycle pulses. The circuit maintains an internal 4-bit register count to track the clock pulses.

| start | stop | count | dir (next) | count (next) | |---------|--------|---------|--------------|----------------| | 1 | X | X | 0 | 0 | | 0 | 1 | X | 0 | 0 | | 0 | 0 | < 7 | dir | count + 1 | | 0 | 0 | 7 | sda | 8 | | 0 | 0 | 8 | dir | 8 |

Constraints

  • Implement using sequential logic components.
  • Prevent the internal counter from wrapping around to 0 after reaching 8.
  • Use only synchronous resets.

Topics

Sequential LogicState MachineInterfaceI2C

Solve this problem

Place the gates, wire them up and watch the signals settle. Every submission runs on the same simulation engine that grades it.

This problem is part of Codiode Pro. The statement above is free to read.

Sign in to solveSee what Pro unlocks

The circuit builder and code editor need a desktop screen. On a phone, read the problem here and open it on a laptop to solve.

Related problems

  • 3-bit Ripple Counter from Toggle Flip-FlopsEasy
  • D Latch from a 2:1 MUXEasy
  • 2-bit Ring CounterEasy
  • T Flip-Flop from a D Flip-FlopEasy
  • Handshake Deadlock Due to Early ResetHard
  • Reconvergence of Individually Synchronized BitsHard
  • Debug: Asynchronous Clear GlitchHard
  • Clock Gate Enable Crossing DomainsHard

Browse all problems · Learning tracks