blog: home computation: show an inverter chain

This commit is contained in:
colin 2022-07-11 02:19:58 -07:00
parent 7ea76d9bec
commit 420171c5a9
2 changed files with 500 additions and 3 deletions

View File

@ -230,12 +230,14 @@ switching from +V to -V to +V to -V ...
so now we've got our primitive logic gates.
we should be able to assemble them into something greater.
a good thing to build first would be an inverter chain (maybe even loop it back onto itself to build a ring oscillator).
a good thing to build first would be an inverter chain.
just take our clocked inverter, build 3 of these, and wire them in series, right?
TODO: 3-length inverter chain.
![](inverter-chain-naive.svg)
not that simple: we have a few stray signals we need to look closer at first (this is the part where i said "i'll address this later").
(i'm using the 3-wire inverter just discussed, where SET/CLEAR are folded into one CTL wire).
but it's not that simple: we have a few stray signals we need to look closer at first.
TODO: show why this doesn't work.

View File

@ -0,0 +1,495 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="382.09042mm"
height="102.6858mm"
viewBox="0 0 382.09044 102.68579"
version="1.1"
id="svg5"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
sodipodi:docname="inverter-chain-naive.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.5499273"
inkscape:cx="693.72806"
inkscape:cy="156.38431"
inkscape:window-width="1714"
inkscape:window-height="1394"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<defs
id="defs2">
<inkscape:path-effect
effect="powermask"
id="path-effect21738"
is_visible="true"
lpeversion="1"
uri="#mask-powermask-path-effect21738"
invert="false"
hide_mask="false"
background="false"
background_color="#ffffffff" />
<inkscape:path-effect
effect="powermask"
id="path-effect5161"
is_visible="true"
lpeversion="1"
uri="#mask-powermask-path-effect5161"
invert="false"
hide_mask="false"
background="false"
background_color="#ffffffff" />
<filter
id="mask-powermask-path-effect2467_inverse"
inkscape:label="filtermask-powermask-path-effect2467"
style="color-interpolation-filters:sRGB"
height="100"
width="100"
x="-50"
y="-50">
<feColorMatrix
id="mask-powermask-path-effect2467_primitive1"
values="1"
type="saturate"
result="fbSourceGraphic" />
<feColorMatrix
id="mask-powermask-path-effect2467_primitive2"
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 "
in="fbSourceGraphic" />
</filter>
<filter
id="mask-powermask-path-effect2477_inverse"
inkscape:label="filtermask-powermask-path-effect2477"
style="color-interpolation-filters:sRGB"
height="100"
width="100"
x="-50"
y="-50">
<feColorMatrix
id="mask-powermask-path-effect2477_primitive1"
values="1"
type="saturate"
result="fbSourceGraphic" />
<feColorMatrix
id="mask-powermask-path-effect2477_primitive2"
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 "
in="fbSourceGraphic" />
</filter>
<filter
id="mask-powermask-path-effect3852_inverse"
inkscape:label="filtermask-powermask-path-effect3852"
style="color-interpolation-filters:sRGB"
height="100"
width="100"
x="-50"
y="-50">
<feColorMatrix
id="mask-powermask-path-effect3852_primitive1"
values="1"
type="saturate"
result="fbSourceGraphic" />
<feColorMatrix
id="mask-powermask-path-effect3852_primitive2"
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 "
in="fbSourceGraphic" />
</filter>
<filter
id="mask-powermask-path-effect4240_inverse"
inkscape:label="filtermask-powermask-path-effect4240"
style="color-interpolation-filters:sRGB"
height="100"
width="100"
x="-50"
y="-50">
<feColorMatrix
id="mask-powermask-path-effect4240_primitive1"
values="1"
type="saturate"
result="fbSourceGraphic" />
<feColorMatrix
id="mask-powermask-path-effect4240_primitive2"
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 "
in="fbSourceGraphic" />
</filter>
<filter
id="mask-powermask-path-effect4258_inverse"
inkscape:label="filtermask-powermask-path-effect4258"
style="color-interpolation-filters:sRGB"
height="100"
width="100"
x="-50"
y="-50">
<feColorMatrix
id="mask-powermask-path-effect4258_primitive1"
values="1"
type="saturate"
result="fbSourceGraphic" />
<feColorMatrix
id="mask-powermask-path-effect4258_primitive2"
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 "
in="fbSourceGraphic" />
</filter>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath4654">
<rect
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:5.30437;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4656"
width="83.205811"
height="40.501297"
x="57.484005"
y="40.048008" />
</clipPath>
<mask
maskUnits="userSpaceOnUse"
id="mask-powermask-path-effect5161">
<circle
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.93889;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle5159"
r="35.026619"
cy="80.09198"
cx="96.404594"
clip-path="url(#clipPath4654)" />
</mask>
<mask
maskUnits="userSpaceOnUse"
id="mask-powermask-path-effect21738">
<path
id="path21740"
style="fill:#ffffff;fill-opacity:1"
d="M 18.363333,70.118879 H 77.00259 V 86.690253 H 18.363333 Z" />
<circle
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.93889;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle21742"
r="35.026619"
cy="80.09198"
cx="96.404594"
clip-path="url(#clipPath4654)" />
</mask>
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(242.42947,-43.634406)">
<g
id="g61769-8"
transform="translate(72.076339,51.974463)" />
<g
id="g82560"
transform="translate(-147.53786)">
<g
id="g82579"
transform="translate(1.0084752,-0.00992449)">
<g
id="g82598">
<circle
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.82222;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle82526"
cx="96.404594"
cy="80.09198"
r="35.026619" />
<g
id="g82532"
transform="matrix(0.78622179,0,0,-0.91168702,11.8851,133.78797)">
<path
style="fill:none;stroke:#0000a6;stroke-width:1.05833;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 24.976582,66.755829 H 60.352378"
id="path82528"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#0000a6;stroke-width:1.05833;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 24.870685,53.777141 36.132011,-0.174079 c 8.817343,0.119117 21.509533,0.22517 21.698522,6.921089 0.188989,6.695919 -11.489226,6.347484 -15.32365,6.369698"
id="path82530"
sodipodi:nodetypes="cczc" />
</g>
<g
id="g82538"
transform="matrix(0,-1,-1.0303411,0,157.76291,178.53473)">
<path
style="fill:none;stroke:#008b1f;stroke-width:1.05833;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 46.155679,66.755829 H 60.352378"
id="path82534"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#008b1f;stroke-width:1.05833;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 46.026524,53.777141 14.976172,-0.174079 c 8.817343,0.119117 21.509533,0.22517 21.698522,6.921089 0.188989,6.695919 -11.489226,6.347484 -15.32365,6.369698"
id="path82536"
sodipodi:nodetypes="cczc" />
</g>
<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="10.530955"
y="94.195885"
id="text82542"
transform="translate(72.076339,51.974463)"><tspan
sodipodi:role="line"
id="tspan82540"
style="stroke-width:0.264583"
x="10.530955"
y="94.195885">CTL1</tspan></text>
<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="14.608097"
y="85.645226"
id="text82546"
transform="translate(72.076339,51.974463)"><tspan
sodipodi:role="line"
id="tspan82544"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;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;stroke-width:0.264583"
x="14.608097"
y="85.645226">+</tspan></text>
<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="29.011362"
y="85.860802"
id="text82550"
transform="translate(72.076339,51.974463)"><tspan
sodipodi:role="line"
id="tspan82548"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;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;stroke-width:0.264583"
x="29.011362"
y="85.860802">-</tspan></text>
<g
id="g82558"
transform="matrix(-0.71226747,0,0,-0.83697735,176.80699,129.95677)">
<g
id="g82556"
transform="matrix(1,0,0,-1.0894614,0.33829046,126.71598)">
<path
style="fill:none;stroke:#b31800;stroke-width:1.05833;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 24.976582,66.755829 H 60.352378"
id="path82552"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#b31800;stroke-width:1.05833;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 24.870685,53.777141 36.132011,-0.174079 c 8.817343,0.119117 21.509533,0.22517 21.698522,6.921089 0.188989,6.695919 -11.489226,6.347484 -15.32365,6.369698"
id="path82554"
sodipodi:nodetypes="cczc" />
</g>
</g>
</g>
</g>
</g>
<g
id="g82718"
transform="translate(-20.200805,0.00992039)">
<g
id="g82716"
transform="translate(1.0084752,-0.00992449)">
<g
id="g82714">
<circle
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.82222;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle82680"
cx="96.404594"
cy="80.09198"
r="35.026619" />
<g
id="g82686"
transform="matrix(0.78622179,0,0,-0.91168702,11.8851,133.78797)">
<path
style="fill:none;stroke:#0000a6;stroke-width:1.05833;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 24.976582,66.755829 H 60.352378"
id="path82682"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#0000a6;stroke-width:1.05833;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 24.870685,53.777141 36.132011,-0.174079 c 8.817343,0.119117 21.509533,0.22517 21.698522,6.921089 0.188989,6.695919 -11.489226,6.347484 -15.32365,6.369698"
id="path82684"
sodipodi:nodetypes="cczc" />
</g>
<g
id="g82692"
transform="matrix(0,-1,-1.0303411,0,157.76291,178.53473)">
<path
style="fill:none;stroke:#008b1f;stroke-width:1.05833;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 46.155679,66.755829 H 60.352378"
id="path82688"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#008b1f;stroke-width:1.05833;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 46.026524,53.777141 14.976172,-0.174079 c 8.817343,0.119117 21.509533,0.22517 21.698522,6.921089 0.188989,6.695919 -11.489226,6.347484 -15.32365,6.369698"
id="path82690"
sodipodi:nodetypes="cczc" />
</g>
<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="10.530955"
y="94.195885"
id="text82696"
transform="translate(72.076339,51.974463)"><tspan
sodipodi:role="line"
id="tspan82694"
style="stroke-width:0.264583"
x="10.530955"
y="94.195885">CTL2</tspan></text>
<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="14.608097"
y="85.645226"
id="text82700"
transform="translate(72.076339,51.974463)"><tspan
sodipodi:role="line"
id="tspan82698"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;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;stroke-width:0.264583"
x="14.608097"
y="85.645226">+</tspan></text>
<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="29.011362"
y="85.860802"
id="text82704"
transform="translate(72.076339,51.974463)"><tspan
sodipodi:role="line"
id="tspan82702"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;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;stroke-width:0.264583"
x="29.011362"
y="85.860802">-</tspan></text>
<g
id="g82712"
transform="matrix(-0.71226747,0,0,-0.83697735,176.80699,129.95677)">
<g
id="g82710"
transform="matrix(1,0,0,-1.0894614,0.33829046,126.71598)">
<path
style="fill:none;stroke:#b31800;stroke-width:1.05833;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 24.976582,66.755829 H 60.352378"
id="path82706"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#b31800;stroke-width:1.05833;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 24.870685,53.777141 36.132011,-0.174079 c 8.817343,0.119117 21.509533,0.22517 21.698522,6.921089 0.188989,6.695919 -11.489226,6.347484 -15.32365,6.369698"
id="path82708"
sodipodi:nodetypes="cczc" />
</g>
</g>
</g>
</g>
</g>
<g
id="g82758"
transform="translate(-274.87492,-0.00992039)">
<g
id="g82756"
transform="translate(1.0084752,-0.00992449)">
<g
id="g82754">
<circle
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.82222;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle82720"
cx="96.404594"
cy="80.09198"
r="35.026619" />
<g
id="g82726"
transform="matrix(0.78622179,0,0,-0.91168702,11.8851,133.78797)">
<path
style="fill:none;stroke:#0000a6;stroke-width:1.05833;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 24.976582,66.755829 H 60.352378"
id="path82722"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#0000a6;stroke-width:1.05833;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 24.870685,53.777141 36.132011,-0.174079 c 8.817343,0.119117 21.509533,0.22517 21.698522,6.921089 0.188989,6.695919 -11.489226,6.347484 -15.32365,6.369698"
id="path82724"
sodipodi:nodetypes="cczc" />
</g>
<g
id="g82732"
transform="matrix(0,-1,-1.0303411,0,157.76291,178.53473)">
<path
style="fill:none;stroke:#008b1f;stroke-width:1.05833;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 46.155679,66.755829 H 60.352378"
id="path82728"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#008b1f;stroke-width:1.05833;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 46.026524,53.777141 14.976172,-0.174079 c 8.817343,0.119117 21.509533,0.22517 21.698522,6.921089 0.188989,6.695919 -11.489226,6.347484 -15.32365,6.369698"
id="path82730"
sodipodi:nodetypes="cczc" />
</g>
<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="10.530955"
y="94.195885"
id="text82736"
transform="translate(72.076339,51.974463)"><tspan
sodipodi:role="line"
id="tspan82734"
style="stroke-width:0.264583"
x="10.530955"
y="94.195885">CTL0</tspan></text>
<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="14.608097"
y="85.645226"
id="text82740"
transform="translate(72.076339,51.974463)"><tspan
sodipodi:role="line"
id="tspan82738"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;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;stroke-width:0.264583"
x="14.608097"
y="85.645226">+</tspan></text>
<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="29.011362"
y="85.860802"
id="text82744"
transform="translate(72.076339,51.974463)"><tspan
sodipodi:role="line"
id="tspan82742"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;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;stroke-width:0.264583"
x="29.011362"
y="85.860802">-</tspan></text>
<g
id="g82752"
transform="matrix(-0.71226747,0,0,-0.83697735,176.80699,129.95677)">
<g
id="g82750"
transform="matrix(1,0,0,-1.0894614,0.33829046,126.71598)">
<path
style="fill:none;stroke:#b31800;stroke-width:1.05833;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 24.976582,66.755829 H 60.352378"
id="path82746"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#b31800;stroke-width:1.05833;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 24.870685,53.777141 36.132011,-0.174079 c 8.817343,0.119117 21.509533,0.22517 21.698522,6.921089 0.188989,6.695919 -11.489226,6.347484 -15.32365,6.369698"
id="path82748"
sodipodi:nodetypes="cczc" />
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 22 KiB