Back To Basics: HDMI

Today let’s talk about a technology we all interact with almost daily: HDMI. It stands for High-Definition Multimedia Interface and is currently the defacto digital interface for transmitting video and audio signals in a single cable. HDMI was first introduced in 2002 as an alternative to a popular standard at the time called DVI(Digital Visual Interface). It was developed by a group of companies including Sony, Philips, Toshiba, and Hitachi. The HDMI’s first version in 2002 supported 1080p video and 8-channel audio with 4.95Gbps bandwidth. The latest version(v2.1b) supports 8k@60fps and 4k@120fps with a bandwidth of 48Gbps.

Let’s discuss the electrical side.

An HDMI connector consists of 19 pins.
TMDS (Transition Minimized Differential Signaling) Channels (Pins 1-3, 7-9, 13-15): These are the three(D+, D- & Shield) pairs of main channels that carry video and audio data using differential signalling.
Clock(Pins 10-12): TMDS differential clock for synchronization between systems
CEC (Consumer Electronics Control) (Pin 13): This channel allows devices to send control commands to each other, like turning on your TV with your set-top box.
DDC (Display Data Channel) (Pins 15-16): Used for communication between the source and display. It’s I2C based. The display uses it to tell the source what modes/formats it supports.
Hot Plug Detect(Pin 19): Signals the source device when a display is connected/disconnected.

On the physical connector design side, there are 3 main versions. Type A Standard is the most common and biggest one, Type C Mini and Type D Micro are other smaller space-constrained versions. Pin count-wise all are the same except for size reduction. From the PCB routing POV, all the high-speed 4 differential pairs of TMDS signals are to be routed with a single-ended impedance of 50Ω and differential impedance of 100Ω.

HDMI has undoubtedly transformed how we connect our devices over the years. Personally, though I think, its future might be limited, especially with USB Type-C now supporting HDMI signals through Alternate Mode. Probably a decade away from USB Type-C becoming the universal connector for everything.

If you liked the post, Share it with your friends!

Back To Basics: DMA

Direct Memory Access (DMA) is a feature in embedded systems that folks often overlook. In a typical microcontroller, the CPU is responsible for transferring data between peripherals and memory. This means the CPU has to read data from a peripheral, process it, and then write it to memory. This process is not only time-consuming but also keeps the CPU busy, preventing it from performing other tasks.


Enter DMA controller. Think of these as a separate co-processor with limited capabilities in your uC. Technically it’s a state machine that can do at least 3 things, Wait for a control input, read from a place, and write to another place. It acts on its own with involvement from CPU freeing it to do other tasks. This is crucial in real-time systems where the CPU needs to perform critical tasks without interruption. By offloading data transfer tasks, DMA can handle large amounts of data quickly and efficiently. Think, continuous input streams from an external accelerometer or an audio stream. CPU kicks in only when the data transfer is complete to process the data, it doesn’t have to concern itself with the transfer. Another key advantage is since the CPU can remain in a low-power state during DMA operations, overall power consumption is reduced. This is vital in battery-powered devices.

Different manufacturers implement DMA in uCs in various ways. Usually you DMA channels, with each channel assigned for a particular task like one for reading from an ADC, one for writing to a USB bus etc. Each can have its own priority of execution. There can even be multiple DMA reading and writing to separate memory regions. It comes in all flavours. One beautiful implementation of DMA is driving RGB WS28 series LEDs in the Neopixel library. You can read more about them in the Adafruit blogs.

So if you haven’t used DMAs before, do give it a shot next time you need a large data transfer. You can effectively utilize DMA to enhance the performance of your embedded solution.

If you liked the post, Share it with your friends!
1 19 20 21 22 23 66