Simple Explanation of Left-Right Shift Registers

digital-logiclogic-gatesshift-register

I'm familiar with basic shift registers. I'm having a hard time understanding the one below. I feel like I'm overthinking it due its complicated appearance. Would it be possible to direct me to a way of approaching in a way that makes it easier to understand?

enter image description here

Best Answer

I'd start by redrawing the diagram, slightly:

schematic

simulate this circuit – Schematic created using CircuitLab

The upper four 3-in AND gates are for gating \$D_0\$ through \$D_3\$ to the 4-bit register. You can easily see that \$C_0=1\$ and \$C_1=1\$ in order to enable these four 3-in AND gates.

The middle four 3-in AND gates are for gating \$Q_1\$ through \$Q_3\$ as \$D_0\$ through \$D_2\$, respectively, and the shift right input as \$D_3\$ to the 4-bit register. You can easily see that \$C_0=0\$ and \$C_1=1\$ in order to enable these four 3-in AND gates.

The bottom four 3-in AND gates are for gating \$Q_0\$ through \$Q_2\$ as \$D_1\$ through \$D_3\$, respectively, and the shift left input as \$D_0\$ to the 4-bit register. You can easily see that \$C_0=1\$ and \$C_1=0\$ in order to enable these four 3-in AND gates.

Finally, it's easy to see that the CLK is blocked when \$C_0=0\$ and \$C_1=0\$. So there will be no changes to the 4-bit register in that case.

The four 3-in OR gates simply OR all three of the different groups of four bits. Only one of those three will have been enabled (allowed to have any output other than 0) by the selection based on \$C_0\$ and \$C_1\$. So there's no problem there. They simply pass along whichever value is active at the time to the 4-bit register inputs. If the clock is permitted, then the selected 4-bit value is then latched.

Hopefully, that helps a little. It's not much of a change. I mostly just re-organized a little bit.