summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjaseg <git@jaseg.de>2023-12-26 15:30:15 +0100
committerjaseg <git@jaseg.de>2023-12-26 15:30:15 +0100
commit2bb3b936b405f4f089d77655aed62903b6ae0a7f (patch)
treec40962b6af14f657d5e268e6cb1f08af9dd01e9c
parent77fffce8a2deac43ef4306301e6dbe204798939e (diff)
downloadblog-2bb3b936b405f4f089d77655aed62903b6ae0a7f.tar.gz
blog-2bb3b936b405f4f089d77655aed62903b6ae0a7f.tar.bz2
blog-2bb3b936b405f4f089d77655aed62903b6ae0a7f.zip
Add 8seg project page and blog post
-rw-r--r--content/blog/8seg/8seg-digit-circuit.pngbin0 -> 94441 bytes
-rw-r--r--content/blog/8seg/index.rst203
-rw-r--r--content/projects/8seg/index.rst215
3 files changed, 232 insertions, 186 deletions
diff --git a/content/blog/8seg/8seg-digit-circuit.png b/content/blog/8seg/8seg-digit-circuit.png
new file mode 100644
index 0000000..001c896
--- /dev/null
+++ b/content/blog/8seg/8seg-digit-circuit.png
Binary files differ
diff --git a/content/blog/8seg/index.rst b/content/blog/8seg/index.rst
new file mode 100644
index 0000000..c34a959
--- /dev/null
+++ b/content/blog/8seg/index.rst
@@ -0,0 +1,203 @@
+---
+title: "8seg"
+date: 2023-12-26T15:26:00+01:00
+---
+
+8seg Technical Overview
+=======================
+
+Prologue
+--------
+
+German hacker culture has this intense love for things that light up in colorful ways. Like for many others in this
+community, I have always been fascinated by LEDs. One of the first things on my pile of unfinished projects was to build
+my own LED matrix and use it to display text. When I started that project, I was still new to electronics. Back then,
+commercial LED matrices were limited to red or green color only, and were very expensive, so there was an incentive to
+build your own. At the same time, while individual LEDs were'nt expensive anymore, they hadn't started to be cheap yet,
+either. On top of the material cost, back then there were no PCB fabs, and especially no PCB assembly houses that a
+hobbyist could afford. Ultimately, I ended up never finishing this project because I felt it was more of a feat of
+material wealth than of technical prowess.
+
+Over time, LEDs came down in price, and peoople started using them in all sorts of fun things. Around the mid-2010s,
+cheap-ish, ready-made tapes and chains of RGB LEDs that included WS2811 or similar digitally controllable driver chips
+led to a cambrian explosion in projects involving large amounds of colorful LEDs since suddenly, all you needed was an
+arduino and a beefy power supply to individually control an almost unlimited number of these LEDs.
+
+Today, LED technology has advanced even furhter, to a point where now you can buy staggering quantities of the second
+generation of these controllable LEDs that provides better color rendering embedded in all sorts of shapes, from tapes
+through rings to grids. When I built the first matelight_ in 2013, the matelight's 640 individually-controllable LEDs
+were *a lot*. Today, you can buy a roll with several thousand channels for about the price of a nice pizza.
+
+The idea behind 8seg
+--------------------
+
+Living through this amazing escalation of LED technology, in 2018, I looked at a then-obsolete piece of single-color,
+dumb, non-controllable LED tape with a simple question in mind: Taking this unsophisticated artifact of yesterday's
+technology, what would be the coolest thing I could build from it? Can I buld something that not only rivals, but
+outmatches the modern controllable LED stuff? From that question, I set myself two goals. First, I wanted to keep the
+project's use of financial and labor resources reasonable. A lot of art consists of taking a simple idea, and simply
+extrapolating its implementation to a ridiculous scale at the expense of the artist's time and wallet. That wasn't the
+point I wanted to make. I wanted to make something cool from an obsolete technology, not prove how much patience I had
+soldering. My second goal was to create something that is meaningfully controllable. Controllability is much harder with
+these dumb LED tapes, but it is possible nontheless, and I wanted to test out how far you could go with it.
+
+After thinking through a number of possibilities, I settled on the basics of the 8seg design I ended up realizing. The
+installation would be a banner-style display consisting of a series of characters made from non-controllable LED tape.
+The banner can be rigged up in any convenient air space, bending and folding to conform to the space's shape and size.
+The key idea behind 8seg is that it makes up for it's lack of control fidelity with sheer size. If nothing else, this
+non-controllable LED tape is *cheap*.
+
+The design of a single 8seg character
+-------------------------------------
+
+Each 8seg character consists of 8 *segments* of LED tape that are inter-connected through small circuit boards, four in
+the corners, and one in the center. As it turns out, 8 segments arranged in this shape are enough to display all of the
+English language's alphabet as well as numbers in a weird, but readable form.
+
+The electrical design of an 8seg character has one weird trick at its core. To avoid having to run a bunch of wires from
+some kind of driver circuit board to each of the eight segments, I thought, why not use the LED tape itself instead for
+power and data transmission? Wires are heavy, expensive, and annoying to solder, so if I could find a way to
+interconnect the LED tape so that it can all be driven from a driver circuit located at one of the character's
+junctions while simultaneously powering that driver circuit, an 8seg character wouldn't need any wires at all anymore.
+
+8seg achieves this feat using a circuit as shown in the diagram below. Interconnections between the LED tape segments
+are done with a small circuit board in each of the four corners. The design is rotationally symmetric, and all four of
+these boards are identicaly. The top right and bottom left corners simply use the back side of the same circuit board
+used in the top left and bottom right corners.
+
+.. image:: 8seg-digit-circuit.png
+
+The driver circuit sits at the center of the character and directly connects to the four diagonal segments. The key
+thought behind 8seg's driving scheme is that there are two common phases wound through the display in a zig-zag pattern
+as shown in red and blue in the schema below. These phases alternate their polarity at a high frequency. Each segment
+has its negative pole connected to one of these two phases, and can be turned on by the driver while that phase is low
+and the other phase is high. While a phase is high, the LEDs on all segments connected to that phase are reverse-biased,
+and thus these segments remain dark.
+
+The positive poles of all segments are connected to the driver circuit in the center through a spiral pattern. Each arm
+of the spiral is made up of two segments, one diagonal on the inside, and one horizontal or vertical on the outside.
+The two segments on each spiral arm are on different phases, one on each of the two phases. Thus, during a single cycle
+of the two phases alternating polarity, first one of the two segments has its polarity the right way around, then the
+other. The driver can turn on the active segment by connecting the spiral control line to the positive LED supply
+voltage.
+
+Both phases cross at the center where the driver circuit is located, so the driver can power itself from the two phases
+using a simple full bridge rectifier.
+
+Saving copper with point of load regulation
+-------------------------------------------
+
+In the beginning, I experimented with the design above, putting 12V AC on the two phases, and letting the driver switch
+its derived LED supply using some cheap MOSFETs. This simple design totally works, but it has an important shortcoming.
+
+8seg is designed to be physically *very* large. This means that not only does it have a large number of LEDs that
+together need a lot of current, it also has to transmit all of that current across significant physical distances. The
+consequence of this was that in the initial design, I was looking at either needing hundreds of Euros worth of copper
+cables, or burning hundreds of Watts of electricity into heat if I were to use thinner cables. In this case, cables act
+like resistors. In a resistor, power dissipation rises with the square of the current inside the cable. This is bad for
+8seg since it means halving the amount of copper in those wires increases power dissipation in these wires fourfold.
+
+Despite that downside, this square law does come with an upside, too. If we assume we have wires of a particular fixed
+diameter, if we can halve the current through those wires, we can quarter the wires' power dissipation. If we want to
+deliver the same amount of power to the LEDs as before, to halve wire current, we have to double the voltage, and add
+some circuitry on the drivers to convert that increased voltage back down to close to our LED tape's nominal 12V.
+
+Alas, simply doubling the voltage leads to one question: How is it that we can pass double the voltage through our LED
+tape to the center control circuit? Isn't the LED tape made for 12V operation only, not 24V? The answer to this
+apparent problem is that the center is connected to the AC bus voltage only through the negative side of the LED tapes,
+and controls their positive sides to turn them on or off. The AC bus voltage never appears directly across any single of
+the eight segments. At the same time, a simple buck converter stepping down our new 24V bus voltage to 12V, and feeding
+the segment control transistors with that instead of feeding them straight from the rectified AC bus allows us to feed
+the segments with 12V. The only difference between this circuit and the straight 12V variant is that now, during OFF
+times, the LED tapes see a negative 24 v across them. To make sure that's not a problem, I tested a number of them with
+different LED colors and from different manufacturers, and all of them held up past the 50 V I could easily generate
+with my lab power supply.
+
+Synchronous rectification
+-------------------------
+
+I implemented the point-of-load regulation in a new revision of the center circuit, and built a prototype digit. When I
+tested this prototype, to my dismay, I noticed some really strange behavior. In my tests, the LED tape did not properly
+light up, and when I checked the voltages with my oscilloscope, I noticed that the center circuit's ground was floating
+several volts *below* the AC bus voltage's negative phase. How come?
+
+After some head-scratching, I found that this problem was due to a simple instance of Kirchhoff's current law. Consider
+the point where the AC bus voltage's currently negative phase enters the center circuit board. Let's say that we
+dissipate 24 Watts in the segments' LEDs. In this case, at 24 Volts, 1 Ampère will flow into the center circuit's
+terminal connected to the currently positive phase, and out from the center circuit's terminal connected to the
+currently negative phase.
+
+Now consider the current through the LED tape. During one half-cycle of the AC bus, the center circuit can only address
+the four segments that have their negative rail connected to the currently negative phase of the AC bus. If one of these
+four segments is currently on and dissipating our 24 Watts, that segment will be fed 2 Ampère of current from the center
+circuit through its positive rail. My mistake was that I did not consider what happened to the return current here.
+The corresponding 2 Ampère return current of course flows back through the segment's negative rail into the center
+circuit, and herein lies the issue: That negative rail is where our center circuit's supply current comes from! This
+means that according to Kirchhoff's current law, the 1 A flowing out from the center circuit at its input are adding up
+with the 2 A flowing into it. The result of this is that in the currently positive phase's connection, we get 1 A
+flowing into the center circuit, while in the negative phase connection, we get (-1) + (+2) resulting in another 1 A
+flowing into it! The only terminal where current flows *out* of the center circuit is the positive terminal connected to
+the active segment, out of which 2 A of current are flowing.
+
+The big problem with this confusing scenario is that this means the bridge recitifier in our center circuit cannot work,
+since its negative-side diodes are reverse biased while any of the segments are on. We can't just add more diodes here,
+since that would just short both AC bus rails together. Instead, the solution is to add one rather chonky MOSFET in
+parallel with each of the two negative-side diodes of the bridge rectifier that are controlled by the center circuit to
+act as a sort of synchronous rectifier. When we turn on one of the segments, we have to turn on the MOSFET on the
+currently negative rail to allow the segment's return current to bypass the bridge rectifier's negative-side diode. Fun
+fact: If we turn on the wrong MOSFET out of the pair, we short the AC bus, resulting in a very quick end of life for that
+poor MOSFET.
+
+Power line data communication
+-----------------------------
+
+As we saw above, the driver providing power to a string of digits has to continuously alternate the polarity of its
+output voltage to provide one part of the digit circuits' multiplexing. Since we want to provide the control information
+to the center circuits through those same two wires, we can choose between a number of viable power line communication
+schemes. These schemes usually require a beefy transmitter adding a modulation at a frequency much larger than the
+underlying bus frequency, and a filter circuit at each receiver to filter that signal from the much stronger fundamental
+AC waveform. In our application, I saw two issues with these classical approaches. First, they require fairly complex
+circuitry, especially the beefy transmitter at the driver. Second, they are susceptible to attenuation with either
+changing load or over long distances, which could potentially be a problem with the high currents and long(ish) wiring
+runs 8seg needs.
+
+Because of these disadvantages, I decided on another approach entirely. Instead of modulating our control signal on top
+of the AC power waveform, we modulate our control data *into* the AC power waveform. To not interfere with the display
+and cause outages or flicker, and to avoid having to blank the display during transmissions, we choose a modulating
+technique that leaves the proportions of negative and positive half-waves undisturbed. The practical realization of this
+is that instead of alternating positive and negative half-waves, we send a positive half wave for each "one" bit, and a
+negative half wave for each "zero" bit, effectively creating a phase shift keyed signal with two states with an
+180-degree phase shift, with the transmitted bit rate synchronized to twice the underlying carrier frequency.
+
+The remaining question is how one can encode arbitrary binary data into a continuous stream of ones and zeros that is
+precisely 50 % ones and 50 % zeros across any time span longer than a few dozen bits. There exists a near-optimal
+solution to this question from ethernet over copper twisted pairs. In ethernet, the encoded and modulated signal passes
+through an isolation transformer to protect the ethernet transceiver from interference or dangerous voltages coming in
+through the ethernet port. For this isolation transformer to work, the modulated ethernet signal must be exactly
+balanced to avoid saturating the transformer's core with a DC offset. Ethernet solves this issue by using an encoding
+known as `8b/10b encoding`_. 8b/10b encoding is named like that because it specifies a way to produce a 10 bit codeword
+from any 8 bit input data word while guaranteeing that the resulting codewords are always precisely balanced when
+looking at two or more consecutively.
+
+Framing
+-------
+
+Since 8b/10b encoding maps a space of 256 data words to 1024 code words, there necessarily are a number of unused code
+words. While for some of them, leaving them unallocated is beneficial because it improves error tolerance by decreasing
+the probability of one code word turning into another undetectably when a single one of its bits is flipped, even
+accounting for that it leaves some room for other uses. In 8b/10b, these leftover code words are used for synchronizing
+the receiver to the transmitter, and for framing transmissions. Synchronization is necessary for the receiver to know
+where a code word stards, and 8b/10b has a handful of special "comma" code words that can be uniquely identified in a
+continuous stream of received ones and zeros, because no other combination of 8b/10b code words could produce the same
+sequence of ones and zeros of the comma code word anywhere.
+
+The leftover code words that are not commas are useful, too. They can be used, for instance, as filler code words
+betwene actual data transmissions, or to act as framing markers denoting things like the end of a protocol message.
+
+The 8seg driver produces its modulation waveform by translating all data to be transmitted into 8b/10b codes, padding
+the result with framing markers and filler codes, and copy-pasting together the corresponding AC waveform from a small
+set of pre-programmed waveform transitions.
+
+.. _matelight: https://github.com/jaseg/matelight
+.. _`8b/10b encoding`: https://en.wikipedia.org/wiki/8b/10b_encoding
+
diff --git a/content/projects/8seg/index.rst b/content/projects/8seg/index.rst
index ebf9070..38a00bc 100644
--- a/content/projects/8seg/index.rst
+++ b/content/projects/8seg/index.rst
@@ -4,207 +4,50 @@ external_links:
- name: Sources and hardware design files
url: "https://git.jaseg.de/8seg.git"
- name: Web interface at 37C3 (congress network only!)
- url: "https://8seg.jaseg.de/
+ url: "https://8seg.jaseg.de/"
+ - name: Technical overview blog post
+ url: "/blog/8seg"
+ - name: Contact email
+ url: "mailto:8seg.m@jaseg.de"
summary: >
8seg is an experimental textual display. It is made from a 45m by 1.5m large lacework banner that can be put up in a
variety of spaces, conforming to the space's size and shape through bending and folding.
---
-8seg Technical Overview
-=======================
+8seg
+====
-Prologue
---------
+8seg is an experimental textual display. It is made from a 45m by 1.5m large lacework banner that can be put up in a
+variety of spaces, conforming to the space's size and shape through bending and folding.
-German hacker culture has this intense love for things that light up in colorful ways. Like for many others in this
-community, I have always been fascinated by LEDs. One of the first things on my pile of unfinished projects was to build
-my own LED matrix and use it to display text. When I started that project, I was still new to electronics. Back then,
-commercial LED matrices were limited to red or green color only, and were very expensive, so there was an incentive to
-build your own. At the same time, while individual LEDs were'nt expensive anymore, they hadn't started to be cheap yet,
-either. On top of the material cost, back then there were no PCB fabs, and especially no PCB assembly houses that a
-hobbyist could afford. Ultimately, I ended up never finishing this project because I felt it was more of a feat of
-material wealth than of technical prowess.
+8seg is currently being set up at 37C3 in the entrance hall, on the second-floor railing in front of Hall X.
-Over time, LEDs came down in price, and peoople started using them in all sorts of fun things. Around the mid-2010s,
-cheap-ish, ready-made tapes and chains of RGB LEDs that included WS2811 or similar digitally controllable driver chips
-led to a cambrian explosion in projects involving large amounds of colorful LEDs since suddenly, all you needed was an
-arduino and a beefy power supply to individually control an almost unlimited number of these LEDs.
+Posting messages
+----------------
-Today, LED technology has advanced even furhter, to a point where now you can buy staggering quantities of the second
-generation of these controllable LEDs that provides better color rendering embedded in all sorts of shapes, from tapes
-through rings to grids. When I built the first matelight_ in 2013, the matelight's 640 individually-controllable LEDs
-were *a lot*. Today, you can buy a roll with several thousand channels for about the price of a nice pizza.
+To send messages to the display, please use the web interface linked above.
-The idea behind 8seg
---------------------
+8seg is a community service run by a sole volunteer. Please respect my work, and please do not post offensive messages,
+spam or similar. 8seg is currently open to the congress network on the hope that y'all will behave civilly. Please don't
+make me put a login wall in front of this thing, alright? ;)
-Living through this amazing escalation of LED technology, in 2018, I looked at a then-obsolete piece of single-color,
-dumb, non-controllable LED tape with a simple question in mind: Taking this unsophisticated artifact of yesterday's
-technology, what would be the coolest thing I could build from it? Can I buld something that not only rivals, but
-outmatches the modern controllable LED stuff? From that question, I set myself two goals. First, I wanted to keep the
-project's use of financial and labor resources reasonable. A lot of art consists of taking a simple idea, and simply
-extrapolating its implementation to a ridiculous scale at the expense of the artist's time and wallet. That wasn't the
-point I wanted to make. I wanted to make something cool from an obsolete technology, not prove how much patience I had
-soldering. My second goal was to create something that is meaningfully controllable. Controllability is much harder with
-these dumb LED tapes, but it is possible nontheless, and I wanted to test out how far you could go with it.
+You may write code to talk to the web interface, but please do not post automated messages at a frequency higher than
+one per 20 minutes. No spam, no commercial advertising and absolutely nothing cryptocurrency-related.
-After thinking through a number of possibilities, I settled on the basics of the 8seg design I ended up realizing. The
-installation would be a banner-style display consisting of a series of characters made from non-controllable LED tape.
-The banner can be rigged up in any convenient air space, bending and folding to conform to the space's shape and size.
-The key idea behind 8seg is that it makes up for it's lack of control fidelity with sheer size. If nothing else, this
-non-controllable LED tape is *cheap*.
+Scheduling regular messages
+---------------------------
-The design of a single 8seg character
--------------------------------------
+If you want your message to be added to the regular "idle rotation" of 8seg, which the display cycles through when no
+other messages are queued, please email me at the contact email above.
-Each 8seg character consists of 8 *segments* of LED tape that are inter-connected through small circuit boards, four in
-the corners, and one in the center. As it turns out, 8 segments arranged in this shape are enough to display all of the
-English language's alphabet as well as numbers in a weird, but readable form.
+Reporting abuse
+---------------
-The electrical design of an 8seg character has one weird trick at its core. To avoid having to run a bunch of wires from
-some kind of driver circuit board to each of the eight segments, I thought, why not use the LED tape itself instead for
-power and data transmission? Wires are heavy, expensive, and annoying to solder, so if I could find a way to
-interconnect the LED tape so that it can all be driven from a driver circuit located at one of the character's
-junctions while simultaneously powering that driver circuit, an 8seg character wouldn't need any wires at all anymore.
+If you see 8seg being used for something stupid or bad, please email me at the contact email above.
-8seg achieves this feat using a circuit as shown in the diagram below. Interconnections between the LED tape segments
-are done with a small circuit board in each of the four corners. The design is rotationally symmetric, and all four of
-these boards are identicaly. The top right and bottom left corners simply use the back side of the same circuit board
-used in the top left and bottom right corners.
+Further questions
+-----------------
-.. image:: 8seg-circuit.svg
-
-The driver circuit sits at the center of the character and directly connects to the four diagonal segments. The key
-thought behind 8seg's driving scheme is that there are two common phases wound through the display in a zig-zag pattern
-as shown in red and blue in the schema below. These phases alternate their polarity at a high frequency. Each segment
-has its negative pole connected to one of these two phases, and can be turned on by the driver while that phase is low
-and the other phase is high. While a phase is high, the LEDs on all segments connected to that phase are reverse-biased,
-and thus these segments remain dark.
-
-The positive poles of all segments are connected to the driver circuit in the center through a spiral pattern. Each arm
-of the spiral is made up of two segments, one diagonal on the inside, and one horizontal or vertical on the outside.
-The two segments on each spiral arm are on different phases, one on each of the two phases. Thus, during a single cycle
-of the two phases alternating polarity, first one of the two segments has its polarity the right way around, then the
-other. The driver can turn on the active segment by connecting the spiral control line to the positive LED supply
-voltage.
-
-Both phases cross at the center where the driver circuit is located, so the driver can power itself from the two phases
-using a simple full bridge rectifier.
-
-Saving copper with point of load regulation
--------------------------------------------
-
-In the beginning, I experimented with the design above, putting 12V AC on the two phases, and letting the driver switch
-its derived LED supply using some cheap MOSFETs. This simple design totally works, but it has an important shortcoming.
-
-8seg is designed to be physically *very* large. This means that not only does it have a large number of LEDs that
-together need a lot of current, it also has to transmit all of that current across significant physical distances. The
-consequence of this was that in the initial design, I was looking at either needing hundreds of Euros worth of copper
-cables, or burning hundreds of Watts of electricity into heat if I were to use thinner cables. In this case, cables act
-like resistors. In a resistor, power dissipation rises with the square of the current inside the cable. This is bad for
-8seg since it means halving the amount of copper in those wires increases power dissipation in these wires fourfold.
-
-Despite that downside, this square law does come with an upside, too. If we assume we have wires of a particular fixed
-diameter, if we can halve the current through those wires, we can quarter the wires' power dissipation. If we want to
-deliver the same amount of power to the LEDs as before, to halve wire current, we have to double the voltage, and add
-some circuitry on the drivers to convert that increased voltage back down to close to our LED tape's nominal 12V.
-
-Alas, simply doubling the voltage leads to one question: How is it that we can pass double the voltage through our LED
-tape to the center control circuit? Isn't the LED tape made for 12V operation only, not 24V? The answer to this
-apparent problem is that the center is connected to the AC bus voltage only through the negative side of the LED tapes,
-and controls their positive sides to turn them on or off. The AC bus voltage never appears directly across any single of
-the eight segments. At the same time, a simple buck converter stepping down our new 24V bus voltage to 12V, and feeding
-the segment control transistors with that instead of feeding them straight from the rectified AC bus allows us to feed
-the segments with 12V. The only difference between this circuit and the straight 12V variant is that now, during OFF
-times, the LED tapes see a negative 24 v across them. To make sure that's not a problem, I tested a number of them with
-different LED colors and from different manufacturers, and all of them held up past the 50 V I could easily generate
-with my lab power supply.
-
-Synchronous rectification
--------------------------
-
-I implemented the point-of-load regulation in a new revision of the center circuit, and built a prototype digit. When I
-tested this prototype, to my dismay, I noticed some really strange behavior. In my tests, the LED tape did not properly
-light up, and when I checked the voltages with my oscilloscope, I noticed that the center circuit's ground was floating
-several volts *below* the AC bus voltage's negative phase. How come?
-
-After some head-scratching, I found that this problem was due to a simple instance of Kirchhoff's current law. Consider
-the point where the AC bus voltage's currently negative phase enters the center circuit board. Let's say that we
-dissipate 24 Watts in the segments' LEDs. In this case, at 24 Volts, 1 Ampère will flow into the center circuit's
-terminal connected to the currently positive phase, and out from the center circuit's terminal connected to the
-currently negative phase.
-
-Now consider the current through the LED tape. During one half-cycle of the AC bus, the center circuit can only address
-the four segments that have their negative rail connected to the currently negative phase of the AC bus. If one of these
-four segments is currently on and dissipating our 24 Watts, that segment will be fed 2 Ampère of current from the center
-circuit through its positive rail. My mistake was that I did not consider what happened to the return current here.
-The corresponding 2 Ampère return current of course flows back through the segment's negative rail into the center
-circuit, and herein lies the issue: That negative rail is where our center circuit's supply current comes from! This
-means that according to Kirchhoff's current law, the 1 A flowing out from the center circuit at its input are adding up
-with the 2 A flowing into it. The result of this is that in the currently positive phase's connection, we get 1 A
-flowing into the center circuit, while in the negative phase connection, we get (-1) + (+2) resulting in another 1 A
-flowing into it! The only terminal where current flows *out* of the center circuit is the positive terminal connected to
-the active segment, out of which 2 A of current are flowing.
-
-The big problem with this confusing scenario is that this means the bridge recitifier in our center circuit cannot work,
-since its negative-side diodes are reverse biased while any of the segments are on. We can't just add more diodes here,
-since that would just short both AC bus rails together. Instead, the solution is to add one rather chonky MOSFET in
-parallel with each of the two negative-side diodes of the bridge rectifier that are controlled by the center circuit to
-act as a sort of synchronous rectifier. When we turn on one of the segments, we have to turn on the MOSFET on the
-currently negative rail to allow the segment's return current to bypass the bridge rectifier's negative-side diode. Fun
-fact: If we turn on the wrong MOSFET out of the pair, we short the AC bus, resulting in a very quick end of life for that
-poor MOSFET.
-
-Power line data communication
------------------------------
-
-As we saw above, the driver providing power to a string of digits has to continuously alternate the polarity of its
-output voltage to provide one part of the digit circuits' multiplexing. Since we want to provide the control information
-to the center circuits through those same two wires, we can choose between a number of viable power line communication
-schemes. These schemes usually require a beefy transmitter adding a modulation at a frequency much larger than the
-underlying bus frequency, and a filter circuit at each receiver to filter that signal from the much stronger fundamental
-AC waveform. In our application, I saw two issues with these classical approaches. First, they require fairly complex
-circuitry, especially the beefy transmitter at the driver. Second, they are susceptible to attenuation with either
-changing load or over long distances, which could potentially be a problem with the high currents and long(ish) wiring
-runs 8seg needs.
-
-Because of these disadvantages, I decided on another approach entirely. Instead of modulating our control signal on top
-of the AC power waveform, we modulate our control data *into* the AC power waveform. To not interfere with the display
-and cause outages or flicker, and to avoid having to blank the display during transmissions, we choose a modulating
-technique that leaves the proportions of negative and positive half-waves undisturbed. The practical realization of this
-is that instead of alternating positive and negative half-waves, we send a positive half wave for each "one" bit, and a
-negative half wave for each "zero" bit, effectively creating a phase shift keyed signal with two states with an
-180-degree phase shift, with the transmitted bit rate synchronized to twice the underlying carrier frequency.
-
-The remaining question is how one can encode arbitrary binary data into a continuous stream of ones and zeros that is
-precisely 50 % ones and 50 % zeros across any time span longer than a few dozen bits. There exists a near-optimal
-solution to this question from ethernet over copper twisted pairs. In ethernet, the encoded and modulated signal passes
-through an isolation transformer to protect the ethernet transceiver from interference or dangerous voltages coming in
-through the ethernet port. For this isolation transformer to work, the modulated ethernet signal must be exactly
-balanced to avoid saturating the transformer's core with a DC offset. Ethernet solves this issue by using an encoding
-known as `8b/10b encoding`_. 8b/10b encoding is named like that because it specifies a way to produce a 10 bit codeword
-from any 8 bit input data word while guaranteeing that the resulting codewords are always precisely balanced when
-looking at two or more consecutively.
-
-Framing
--------
-
-Since 8b/10b encoding maps a space of 256 data words to 1024 code words, there necessarily are a number of unused code
-words. While for some of them, leaving them unallocated is beneficial because it improves error tolerance by decreasing
-the probability of one code word turning into another undetectably when a single one of its bits is flipped, even
-accounting for that it leaves some room for other uses. In 8b/10b, these leftover code words are used for synchronizing
-the receiver to the transmitter, and for framing transmissions. Synchronization is necessary for the receiver to know
-where a code word stards, and 8b/10b has a handful of special "comma" code words that can be uniquely identified in a
-continuous stream of received ones and zeros, because no other combination of 8b/10b code words could produce the same
-sequence of ones and zeros of the comma code word anywhere.
-
-The leftover code words that are not commas are useful, too. They can be used, for instance, as filler code words
-betwene actual data transmissions, or to act as framing markers denoting things like the end of a protocol message.
-
-The 8seg driver produces its modulation waveform by translating all data to be transmitted into 8b/10b codes, padding
-the result with framing markers and filler codes, and copy-pasting together the corresponding AC waveform from a small
-set of pre-programmed waveform transitions.
-
-.. _matelight: https://github.com/jaseg/matelight
-.. _`8b/10b encoding`: https://en.wikipedia.org/wiki/8b/10b_encoding
+For further questions, please email me at the email linked above, or message me on mastodon at `chaos.social/@jaseg
+<https://chaos.social/@jaseg>`__.