blog: home logic: plan how to correct the parity on these buffers.
this is not easy to explain well.
This commit is contained in:
parent
e026739c24
commit
b700e0d596
|
@ -117,6 +117,8 @@ apply a positive field again, and M won't change much.
|
|||
apply a negative field, and M will repeat the process in reverse, settling at the star instead.
|
||||
crucially, applying a _small_ negative field won't change M much, so the data storage is resilient to some amount of noise.
|
||||
|
||||
TODO: need to explain somewhere that "square-loop" is what we want -- most importantly, the thresholding allows us to amplify partially polarized states to a fully polarized state, giving us well-defined logic levels.
|
||||
|
||||
## Reading and Writing Bits
|
||||
|
||||
![](minimal-magnetic-core.jpeg)
|
||||
|
@ -269,25 +271,42 @@ and therefore nothing downstream of it would be effected by S1's transition.
|
|||
this hints that we can isolate data transfers by inserting buffer cores into this chain
|
||||
which are fixed at the '0' state during the CTL1 transition.
|
||||
|
||||
![](buffered-inverter-stage.svg)
|
||||
![TODO: add CTL2 0V signal; CTL0 and CTL3 should be +Vdd instead of negative; make the buffer cores be non-inverting](buffered-inverter-stage.svg)
|
||||
for brevity i replaced the visual polarizations with their logic values
|
||||
and whatever way they're transitioning. note that current still _flows_ into the buffers,
|
||||
it just doesn't do anything. crucially, not current flows out the other end of the buffers.
|
||||
it just doesn't do anything. crucially, no current flows out the other end of the buffers.
|
||||
|
||||
we keep the two buffer cores at '0' by driving them with a negative voltage.
|
||||
we keep the two buffer cores (CTL0 and CTL3) at '0' by driving them with a negative voltage.
|
||||
not strictly necessary, but the real circuit experiences things like reflections
|
||||
which would otherwise nudge the buffers away from their set point.
|
||||
|
||||
finally, we can tile this group of four cores to construct inverter chains of arbitrary length
|
||||
finally, we can tile this group of four cores to construct inverter chains of arbitrary length:
|
||||
|
||||
![](staged-inverter-chain.svg)
|
||||
note that i've annotated only two of the cores as having a state:
|
||||
each of these two "inverters" carries only one bit, with the rest of the cores being used as buffers.
|
||||
as we mess with the control signal, that state will propagate downstream and eventually leave the inverter.
|
||||
each of these two outlined "inverters" carries only one bit, with the rest of the cores being used as buffers.
|
||||
|
||||
you might think that when we cascade these devices, we could remove the input buffer of the second
|
||||
device because it's already guarded by the output buffer of the first device.
|
||||
unfortunately, that's not the case: i showed that buffer cores are needed when we discharge the inverter,
|
||||
but after we discharge it we need to charge it _back_ to logic '1', and this requires an additional buffer.
|
||||
|
||||
but this does present a problem: each stage of this chain performs 4 inversions -- so it's no longer
|
||||
an inverter chain, but rather a shift register. we can solve this by inverting the wiring on 3 of these
|
||||
cores, and leaving just one inverting core:
|
||||
|
||||
<!-- there are other ways, too. we can have a 3-clock device if we switch to
|
||||
differential signals: +Vdd for logic '1' and -Vdd for logic '0'. but this requires either
|
||||
6 cores per device, or three more-difficult-to-manufacture '8'-shaped cores -->
|
||||
|
||||
![TODO](buffered-inverter-stage-correct-parity.svg)
|
||||
|
||||
as data arrives into this device, it's immediately inverted, and will later be propagated downstream.
|
||||
if we're deliberate with our control signals, we can cascade these inverter devices without issue.
|
||||
here's what that looks like over time:
|
||||
|
||||
TODO: show four clock cycles: from data arriving into the element, to data leaving it.
|
||||
TODO: VALIDATE THAT WE ACTUALLY NEED FOUR CORES. am i sure we don't need only 3?
|
||||
TODO: need to switch one of these inverters into a strict buffer stage.
|
||||
|
||||
in effect, this is a chain of _two_ inverters,
|
||||
where each inverter has four clock cycles of latency.
|
||||
|
|
|
@ -23,15 +23,15 @@
|
|||
inkscape:pagecheckerboard="0"
|
||||
inkscape:document-units="mm"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.27496365"
|
||||
inkscape:cx="1811.1485"
|
||||
inkscape:cy="825.56367"
|
||||
inkscape:zoom="0.38885732"
|
||||
inkscape:cx="1221.5277"
|
||||
inkscape:cy="-156.86988"
|
||||
inkscape:window-width="2183"
|
||||
inkscape:window-height="1394"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="g114256"
|
||||
inkscape:current-layer="g75800"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
|
@ -682,13 +682,13 @@
|
|||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="-183.09274"
|
||||
x="-56.20657"
|
||||
y="83.87973"
|
||||
id="text2118"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2116"
|
||||
style="stroke-width:0.264583"
|
||||
x="-183.09274"
|
||||
x="-56.20657"
|
||||
y="83.87973">S<tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
|
||||
id="tspan103027">1</tspan></tspan></text>
|
||||
|
@ -1298,13 +1298,13 @@
|
|||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="-183.09274"
|
||||
x="-57.387417"
|
||||
y="83.87973"
|
||||
id="text114254"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan114252"
|
||||
style="stroke-width:0.264583"
|
||||
x="-183.09274"
|
||||
x="-57.387417"
|
||||
y="83.87973">S<tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal"
|
||||
id="tspan115544">0</tspan></tspan></text>
|
||||
|
|
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 80 KiB |
Loading…
Reference in New Issue