> ## Documentation Index
> Fetch the complete documentation index at: https://docs.atopile.io/llms.txt
> Use this file to discover all available pages before exploring further.

# I2S

## Parameters

<ParamField path="bit_depth" type="bit" />

<ParamField path="sample_rate" type="hertz" />

## Interfaces

<ParamField path="sck" type="ElectricLogic" />

<ParamField path="sd" type="ElectricLogic" />

<ParamField path="ws" type="ElectricLogic" />

## Global Attributes

These attributes are available to all modules and interfaces in a design.

<ParamField path="lcsc_id" type="str">
  Assign the LCSC ID of the module.

  If set, this will tell the picker to select that part from LCSC for this block.
</ParamField>

<ParamField path="manufacturer" type="str">
  This module's manufacturer name, as a string.

  Only exact matches on the manufacturer's name will be found by the picker.
  It's recommended to fill this information based on what `ato create component`
  provides.
</ParamField>

<ParamField path="mpn" type="str">
  This module's manufacturer part number, as a string.

  For the picker to select the correct part from the manufacturer,
  this must be set.
</ParamField>

<ParamField path="package" type="str">
  The package of the module.

  This drives which components can be selected, and what footprint is used.

  Must exactly match a known package name.
</ParamField>

<ParamField path="exclude_from_bom" type="bool" />

<ParamField path="override_net_name" type="str">
  When set on an interface, this will override the net name of the interface.

  This is useful for renaming nets which are automatically generated.
</ParamField>

<ParamField path="required" type="bool">
  Only for ModuleInterfaces.
  If set to `True`, require that interface is connected to something outside
  of the module it's defined in.
</ParamField>

<RequestExample>
  ```ato Basic Usage theme={null}
  import I2S, ElectricPower

  i2s = new I2S
  i2s.sample_rate = 44100Hz  # Common rates: 8k, 16k, 22k, 44.1k, 48k, 96k Hz
  i2s.bit_depth = 16bit      # Common depths: 16, 24, 32 bit

  # Connect power reference for logic levels
  power_3v3 = new ElectricPower
  assert power_3v3.voltage within 3.3V +/- 5%
  i2s.sd.reference ~ power_3v3   # Serial Data
  i2s.ws.reference ~ power_3v3   # Word Select (Left/Right Clock)
  i2s.sck.reference ~ power_3v3  # Serial Clock (Bit Clock)

  # Connect to microcontroller I2S peripheral
  microcontroller.i2s_sd ~ i2s.sd.line
  microcontroller.i2s_ws ~ i2s.ws.line
  microcontroller.i2s_sck ~ i2s.sck.line

  # Connect to audio codec or DAC/ADC
  audio_codec.i2s ~ i2s

  # I2S timing relationships:
  # - SCK frequency = sample_rate * bit_depth * 2 (stereo)
  # - WS frequency = sample_rate (toggles left/right channel)
  # - SD carries time-multiplexed audio data

  # Common applications: digital audio, microphones, speakers
  ```
</RequestExample>
