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

Serial Transmitter with Output Enable for Bus Sharing

HardLogic CircuitBuild

Multi-master serial buses like SPI share a single data line across multiple devices. To prevent bus contention that corrupts data and damages drivers, inactive transmitters must disconnect their outputs from the shared bus using tristate logic.

Construct a shared serial transmission block containing two 8-bit Parallel-In Serial-Out (PISO) shift registers. The registers share a single 1-bit output Y.

When the 1-bit load signal is 1, PISO 0 loads the 8-bit input D0 and PISO 1 loads the 8-bit input D1. When load is 0, both registers shift their data out internally on every clock cycle, MSB (bit 7) first.

The active-low 1-bit chip select pins CS0_bar and CS1_bar control the output buffers. Only one chip select will be low at a time.

| CS0_bar | CS1_bar | Y | |-----------|-----------|-----| | 0 | 1 | PISO 0 current bit | | 1 | 0 | PISO 1 current bit | | 1 | 1 | Z (High Impedance) |

Constraints

  • Use tristate buffers for the output Y.
  • Shift data out MSB (bit 7) first.
  • Both shift registers must shift continuously when load is 0, regardless of their chip select state.
  • Do not drive Y to 0 or 1 when both chip selects are high.

Topics

Shift RegistersSPITristate LogicBus Architecture

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