Skip to content

drhl/I2S_to_TDA1540

Repository files navigation

I2S to TDA1540's Offset Binary Converter

Welcome to the repository for I2S to Offset Binary Converter.


I am a little audio freak and I like building my own audio devices. Having a lot of fancy and very expensive audio staff one day I have decided to try to do the audio my way, exactly how I like. My adventure with DACs began with the Philips TDA1541 chip. Then I have tried TDA1543, PCM63, PCM56, PCM58, AD1864, AD1865 and a lot more. I have noticed that the older the chip the more it suits my audio taste. So ... I finally bought the TDA1540p and TDA1540D chips. However, due to its vintage specification, hardly any hardware is needed to cope with the TDA1540 input format. And here we are - TDA1540's Offset Binary Converter.


I have been looking for a solution to my problem for some time. The first was a converter I bought on eBay (I2S is TDA1540 PCM56P PCM58P PCM61P AD1856N AD1860N AD1862N AD1865N) from user chiurutu. Thanks to this board, I was able to run the TDA1540 and fell in love with its sound. Unfortunately, I had to find a more flexible solution. So I found the forum thread, which inspired me to delve into FPGAs and had a huge influence on the current codes for this project.


  • Converts I2S format into TDA1540 input format.
  • Supports two I2S inputs selected by a push button.
  • Supports 30s mute after turning on.
  • Supports standard and stopped clock for BCK (TDA's clock pulse input) output.


I am using Intel® Quartus® Prime Lite Edition running on the Linux VM.


I am using those codes running the Intel Altera Max II EMP240 CPLD.

Tested with I2S input:

  • DATA: 16-24 bits
  • LE: 44.1kHZ, 48kHZ, 88.2kHZ, 96kHZ (should also work with 176.4kHZ)