blog: home logic: describe reading/writing magnetic cores

This commit is contained in:
colin 2022-07-08 00:42:21 -07:00
parent 2de53d4b1d
commit 038f687ed9
2 changed files with 629 additions and 1 deletions

View File

@ -0,0 +1,578 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with matplotlib (https://matplotlib.org/) -->
<svg
height="180pt"
version="1.1"
viewBox="0 0 216 180"
width="216pt"
id="svg345"
sodipodi:docname="M-H-curve.svg"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview347"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="pt"
showgrid="false"
inkscape:zoom="5.114739"
inkscape:cx="166.08863"
inkscape:cy="95.215024"
inkscape:window-width="1714"
inkscape:window-height="1394"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="axes_1" />
<defs
id="defs4">
<style
type="text/css"
id="style2">
*{stroke-linecap:butt;stroke-linejoin:round;}
</style>
</defs>
<g
id="figure_1">
<g
id="patch_1">
<path
d="M 0 180 L 216 180 L 216 0 L 0 0 z "
style="fill:#ffffff;"
id="path6" />
</g>
<g
id="axes_1">
<g
id="patch_2">
<path
d="M 36.72 149.4 L 213.84 149.4 L 213.84 1.8 L 36.72 1.8 z "
style="fill:#ffffff;"
id="path9" />
</g>
<g
id="line2d_1">
<path
clip-path="url(#pc68bf1a8b6)"
d="M 36.684355 115.448638 L 44.537151 114.259871 L 50.779116 113.100842 L 56.014314 111.905584 L 60.242742 110.720922 L 63.86711 109.482313 L 67.088769 108.141236 L 69.907722 106.717505 L 72.323967 105.254264 L 74.538858 103.664433 L 76.552395 101.967753 L 78.565932 99.987507 L 80.57947 97.681367 L 82.593007 95.013932 L 84.606545 91.965978 L 86.821436 88.184216 L 89.439034 83.223572 L 94.271524 73.41132 L 97.493184 67.159829 L 99.909429 62.957914 L 102.12432 59.570271 L 104.137857 56.890342 L 106.151395 54.572668 L 108.164932 52.582223 L 110.379823 50.720253 L 112.594714 49.146337 L 115.010959 47.697116 L 117.628558 46.378442 L 120.648864 45.108551 L 124.071878 43.915194 L 128.098952 42.756066 L 132.730088 41.656886 L 138.367993 40.553703 L 145.21402 39.449534 L 153.670877 38.320523 L 164.342625 37.13272 L 177.833326 35.865038 L 195.552455 34.435717 L 213.875645 33.124373 L 213.875645 33.124373 "
style="fill:none;stroke:#808080;stroke-linecap:square;stroke-width:1.5;"
id="path12" />
</g>
<g
id="line2d_2">
<path
clip-path="url(#pc68bf1a8b6)"
d="M 36.684355 118.075627 L 61.048157 116.299289 L 78.565932 114.810941 L 91.653926 113.488404 L 101.721612 112.260235 L 109.775762 111.060602 L 116.219082 109.880774 L 121.454279 108.701351 L 125.682707 107.535246 L 129.307075 106.318935 L 132.528735 105.004976 L 135.347687 103.612831 L 137.763932 102.184311 L 139.978823 100.633907 L 142.193714 98.800427 L 144.207251 96.840436 L 146.220789 94.557244 L 148.234326 91.914729 L 150.247864 88.892257 L 152.462755 85.136594 L 155.080353 80.199443 L 159.308782 71.620936 L 162.933149 64.492256 L 165.349394 60.222324 L 167.564285 56.765009 L 169.577823 54.022301 L 171.59136 51.646366 L 173.604897 49.604218 L 175.819789 47.693711 L 178.03468 46.079648 L 180.450925 44.595042 L 183.068523 43.24619 L 186.088829 41.949655 L 189.511843 40.733871 L 193.538918 39.555683 L 198.170054 38.44105 L 203.807958 37.324923 L 210.653985 36.210252 L 213.875645 35.751362 L 213.875645 35.751362 "
style="fill:none;stroke:#808080;stroke-linecap:square;stroke-width:1.5;"
id="path15" />
</g>
<g
id="patch_9-3"
style="stroke-linecap:butt;stroke-linejoin:round"
transform="rotate(-145.0955,136.81682,41.592953)">
<path
d="m 101.37248,60.668337 q -0.38262,0.631614 -0.76524,1.263228 l 2.13826,1.295313 q -2.36446,1.490633 -4.728918,2.981266 0.226199,-2.785946 0.452398,-5.571892 l 2.13826,1.295313 q 0.38262,-0.631614 0.76524,-1.263228 z"
style="stroke:#000000;stroke-linecap:round"
id="path267-6" />
</g>
<g
id="patch_9-3-3"
style="stroke-linecap:butt;stroke-linejoin:round"
transform="rotate(176.51488,128.7576,69.995227)">
<path
d="m 101.37248,60.668337 q -0.38262,0.631614 -0.76524,1.263228 l 2.13826,1.295313 q -2.36446,1.490633 -4.728918,2.981266 0.226199,-2.785946 0.452398,-5.571892 l 2.13826,1.295313 q 0.38262,-0.631614 0.76524,-1.263228 z"
style="stroke:#000000;stroke-linecap:round"
id="path267-6-5" />
</g>
<g
id="matplotlib.axis_1">
<g
id="xtick_1">
<g
id="line2d_3">
<defs
id="defs19">
<path
d="M 0 0 L 0 3.5 "
id="mfbb6d068d8"
style="stroke:#000000;stroke-width:0.8;" />
</defs>
<g
id="g23">
<use
style="stroke:#000000;stroke-width:0.8;"
x="40.937143"
xlink:href="#mfbb6d068d8"
y="149.4"
id="use21" />
</g>
</g>
<g
id="text_1">
<!-- 2 -->
<defs
id="defs28">
<path
d="M 10.59375 35.5 L 73.1875 35.5 L 73.1875 27.203125 L 10.59375 27.203125 z "
id="DejaVuSans-8722" />
<path
d="M 19.1875 8.296875 L 53.609375 8.296875 L 53.609375 0 L 7.328125 0 L 7.328125 8.296875 Q 12.9375 14.109375 22.625 23.890625 Q 32.328125 33.6875 34.8125 36.53125 Q 39.546875 41.84375 41.421875 45.53125 Q 43.3125 49.21875 43.3125 52.78125 Q 43.3125 58.59375 39.234375 62.25 Q 35.15625 65.921875 28.609375 65.921875 Q 23.96875 65.921875 18.8125 64.3125 Q 13.671875 62.703125 7.8125 59.421875 L 7.8125 69.390625 Q 13.765625 71.78125 18.9375 73 Q 24.125 74.21875 28.421875 74.21875 Q 39.75 74.21875 46.484375 68.546875 Q 53.21875 62.890625 53.21875 53.421875 Q 53.21875 48.921875 51.53125 44.890625 Q 49.859375 40.875 45.40625 35.40625 Q 44.1875 33.984375 37.640625 27.21875 Q 31.109375 20.453125 19.1875 8.296875 z "
id="DejaVuSans-50" />
</defs>
<g
transform="translate(33.566049 163.998437)scale(0.1 -0.1)"
id="g34">
<use
xlink:href="#DejaVuSans-8722"
id="use30" />
<use
x="83.789062"
xlink:href="#DejaVuSans-50"
id="use32" />
</g>
</g>
</g>
<g
id="xtick_2">
<g
id="line2d_4">
<g
id="g40">
<use
style="stroke:#000000;stroke-width:0.8;"
x="83.108571"
xlink:href="#mfbb6d068d8"
y="149.4"
id="use38" />
</g>
</g>
<g
id="text_2">
<!-- 1 -->
<defs
id="defs44">
<path
d="M 12.40625 8.296875 L 28.515625 8.296875 L 28.515625 63.921875 L 10.984375 60.40625 L 10.984375 69.390625 L 28.421875 72.90625 L 38.28125 72.90625 L 38.28125 8.296875 L 54.390625 8.296875 L 54.390625 0 L 12.40625 0 z "
id="DejaVuSans-49" />
</defs>
<g
transform="translate(75.737478 163.998437)scale(0.1 -0.1)"
id="g50">
<use
xlink:href="#DejaVuSans-8722"
id="use46" />
<use
x="83.789062"
xlink:href="#DejaVuSans-49"
id="use48" />
</g>
</g>
</g>
<g
id="xtick_3">
<g
id="line2d_5">
<g
id="g56">
<use
style="stroke:#000000;stroke-width:0.8;"
x="125.28"
xlink:href="#mfbb6d068d8"
y="149.4"
id="use54" />
</g>
</g>
<g
id="text_3">
<!-- 0 -->
<defs
id="defs60">
<path
d="M 31.78125 66.40625 Q 24.171875 66.40625 20.328125 58.90625 Q 16.5 51.421875 16.5 36.375 Q 16.5 21.390625 20.328125 13.890625 Q 24.171875 6.390625 31.78125 6.390625 Q 39.453125 6.390625 43.28125 13.890625 Q 47.125 21.390625 47.125 36.375 Q 47.125 51.421875 43.28125 58.90625 Q 39.453125 66.40625 31.78125 66.40625 z M 31.78125 74.21875 Q 44.046875 74.21875 50.515625 64.515625 Q 56.984375 54.828125 56.984375 36.375 Q 56.984375 17.96875 50.515625 8.265625 Q 44.046875 -1.421875 31.78125 -1.421875 Q 19.53125 -1.421875 13.0625 8.265625 Q 6.59375 17.96875 6.59375 36.375 Q 6.59375 54.828125 13.0625 64.515625 Q 19.53125 74.21875 31.78125 74.21875 z "
id="DejaVuSans-48" />
</defs>
<g
transform="translate(122.09875 163.998437)scale(0.1 -0.1)"
id="g64">
<use
xlink:href="#DejaVuSans-48"
id="use62" />
</g>
</g>
</g>
<g
id="xtick_4">
<g
id="line2d_6">
<g
id="g70">
<use
style="stroke:#000000;stroke-width:0.8;"
x="167.451429"
xlink:href="#mfbb6d068d8"
y="149.4"
id="use68" />
</g>
</g>
<g
id="text_4">
<!-- 1 -->
<g
transform="translate(164.270179 163.998437)scale(0.1 -0.1)"
id="g75">
<use
xlink:href="#DejaVuSans-49"
id="use73" />
</g>
</g>
</g>
<g
id="xtick_5">
<g
id="line2d_7">
<g
id="g81">
<use
style="stroke:#000000;stroke-width:0.8;"
x="209.622857"
xlink:href="#mfbb6d068d8"
y="149.4"
id="use79" />
</g>
</g>
<g
id="text_5">
<!-- 2 -->
<g
transform="translate(206.441607 163.998437)scale(0.1 -0.1)"
id="g86">
<use
xlink:href="#DejaVuSans-50"
id="use84" />
</g>
</g>
</g>
<g
id="text_6">
<!-- $H$ (MA/m) -->
<defs
id="defs98">
<path
d="M 16.890625 72.90625 L 26.8125 72.90625 L 21 43.015625 L 56.78125 43.015625 L 62.59375 72.90625 L 72.515625 72.90625 L 58.296875 0 L 48.390625 0 L 55.171875 34.71875 L 19.390625 34.71875 L 12.59375 0 L 2.6875 0 z "
id="DejaVuSans-Oblique-72" />
<path
id="DejaVuSans-32" />
<path
d="M 31 75.875 Q 24.46875 64.65625 21.28125 53.65625 Q 18.109375 42.671875 18.109375 31.390625 Q 18.109375 20.125 21.3125 9.0625 Q 24.515625 -2 31 -13.1875 L 23.1875 -13.1875 Q 15.875 -1.703125 12.234375 9.375 Q 8.59375 20.453125 8.59375 31.390625 Q 8.59375 42.28125 12.203125 53.3125 Q 15.828125 64.359375 23.1875 75.875 z "
id="DejaVuSans-40" />
<path
d="M 9.8125 72.90625 L 24.515625 72.90625 L 43.109375 23.296875 L 61.8125 72.90625 L 76.515625 72.90625 L 76.515625 0 L 66.890625 0 L 66.890625 64.015625 L 48.09375 14.015625 L 38.1875 14.015625 L 19.390625 64.015625 L 19.390625 0 L 9.8125 0 z "
id="DejaVuSans-77" />
<path
d="M 34.1875 63.1875 L 20.796875 26.90625 L 47.609375 26.90625 z M 28.609375 72.90625 L 39.796875 72.90625 L 67.578125 0 L 57.328125 0 L 50.6875 18.703125 L 17.828125 18.703125 L 11.1875 0 L 0.78125 0 z "
id="DejaVuSans-65" />
<path
d="M 25.390625 72.90625 L 33.6875 72.90625 L 8.296875 -9.28125 L 0 -9.28125 z "
id="DejaVuSans-47" />
<path
d="M 52 44.1875 Q 55.375 50.25 60.0625 53.125 Q 64.75 56 71.09375 56 Q 79.640625 56 84.28125 50.015625 Q 88.921875 44.046875 88.921875 33.015625 L 88.921875 0 L 79.890625 0 L 79.890625 32.71875 Q 79.890625 40.578125 77.09375 44.375 Q 74.3125 48.1875 68.609375 48.1875 Q 61.625 48.1875 57.5625 43.546875 Q 53.515625 38.921875 53.515625 30.90625 L 53.515625 0 L 44.484375 0 L 44.484375 32.71875 Q 44.484375 40.625 41.703125 44.40625 Q 38.921875 48.1875 33.109375 48.1875 Q 26.21875 48.1875 22.15625 43.53125 Q 18.109375 38.875 18.109375 30.90625 L 18.109375 0 L 9.078125 0 L 9.078125 54.6875 L 18.109375 54.6875 L 18.109375 46.1875 Q 21.1875 51.21875 25.484375 53.609375 Q 29.78125 56 35.6875 56 Q 41.65625 56 45.828125 52.96875 Q 50 49.953125 52 44.1875 z "
id="DejaVuSans-109" />
<path
d="M 8.015625 75.875 L 15.828125 75.875 Q 23.140625 64.359375 26.78125 53.3125 Q 30.421875 42.28125 30.421875 31.390625 Q 30.421875 20.453125 26.78125 9.375 Q 23.140625 -1.703125 15.828125 -13.1875 L 8.015625 -13.1875 Q 14.5 -2 17.703125 9.0625 Q 20.90625 20.125 20.90625 31.390625 Q 20.90625 42.671875 17.703125 53.65625 Q 14.5 64.65625 8.015625 75.875 z "
id="DejaVuSans-41" />
</defs>
<g
transform="translate(101.73 177.676562)scale(0.1 -0.1)"
id="g116">
<use
transform="translate(0 0.125)"
xlink:href="#DejaVuSans-Oblique-72"
id="use100" />
<use
transform="translate(75.195312 0.125)"
xlink:href="#DejaVuSans-32"
id="use102" />
<use
transform="translate(106.982422 0.125)"
xlink:href="#DejaVuSans-40"
id="use104" />
<use
transform="translate(145.996094 0.125)"
xlink:href="#DejaVuSans-77"
id="use106" />
<use
transform="translate(232.275391 0.125)"
xlink:href="#DejaVuSans-65"
id="use108" />
<use
transform="translate(300.683594 0.125)"
xlink:href="#DejaVuSans-47"
id="use110" />
<use
transform="translate(334.375 0.125)"
xlink:href="#DejaVuSans-109"
id="use112" />
<use
transform="translate(431.787109 0.125)"
xlink:href="#DejaVuSans-41"
id="use114" />
</g>
</g>
</g>
<g
id="matplotlib.axis_2">
<g
id="ytick_1">
<g
id="line2d_8">
<defs
id="defs121">
<path
d="M 0 0 L -3.5 0 "
id="m5dc9bd873f"
style="stroke:#000000;stroke-width:0.8;" />
</defs>
<g
id="g125">
<use
style="stroke:#000000;stroke-width:0.8;"
x="36.72"
xlink:href="#m5dc9bd873f"
y="117.771429"
id="use123" />
</g>
</g>
<g
id="text_7">
<!-- 1 -->
<g
transform="translate(14.977813 121.570647)scale(0.1 -0.1)"
id="g132">
<use
xlink:href="#DejaVuSans-8722"
id="use128" />
<use
x="83.789062"
xlink:href="#DejaVuSans-49"
id="use130" />
</g>
</g>
</g>
<g
id="ytick_2">
<g
id="line2d_9">
<g
id="g138">
<use
style="stroke:#000000;stroke-width:0.8;"
x="36.72"
xlink:href="#m5dc9bd873f"
y="75.6"
id="use136" />
</g>
</g>
<g
id="text_8">
<!-- 0 -->
<g
transform="translate(23.3575 79.399219)scale(0.1 -0.1)"
id="g143">
<use
xlink:href="#DejaVuSans-48"
id="use141" />
</g>
</g>
</g>
<g
id="ytick_3">
<g
id="line2d_10">
<g
id="g149">
<use
style="stroke:#000000;stroke-width:0.8;"
x="36.72"
xlink:href="#m5dc9bd873f"
y="33.428571"
id="use147" />
</g>
</g>
<g
id="text_9">
<!-- 1 -->
<g
transform="translate(23.3575 37.22779)scale(0.1 -0.1)"
id="g154">
<use
xlink:href="#DejaVuSans-49"
id="use152" />
</g>
</g>
</g>
<g
id="text_10">
<!-- $M$ (MA/m) -->
<defs
id="defs159">
<path
d="M 16.890625 72.90625 L 31.6875 72.90625 L 40.1875 23.78125 L 68.40625 72.90625 L 83.59375 72.90625 L 69.390625 0 L 59.8125 0 L 72.21875 63.921875 L 43.609375 14.015625 L 33.984375 14.015625 L 24.703125 64.109375 L 12.3125 0 L 2.6875 0 z "
id="DejaVuSans-Oblique-77" />
</defs>
<g
transform="translate(8.898125 99.7)rotate(-90)scale(0.1 -0.1)"
id="g177">
<use
transform="translate(0 0.125)"
xlink:href="#DejaVuSans-Oblique-77"
id="use161" />
<use
transform="translate(86.279297 0.125)"
xlink:href="#DejaVuSans-32"
id="use163" />
<use
transform="translate(118.066406 0.125)"
xlink:href="#DejaVuSans-40"
id="use165" />
<use
transform="translate(157.080078 0.125)"
xlink:href="#DejaVuSans-77"
id="use167" />
<use
transform="translate(243.359375 0.125)"
xlink:href="#DejaVuSans-65"
id="use169" />
<use
transform="translate(311.767578 0.125)"
xlink:href="#DejaVuSans-47"
id="use171" />
<use
transform="translate(345.458984 0.125)"
xlink:href="#DejaVuSans-109"
id="use173" />
<use
transform="translate(442.871094 0.125)"
xlink:href="#DejaVuSans-41"
id="use175" />
</g>
</g>
</g>
<g
id="line2d_11" />
<g
id="line2d_12" />
<g
id="patch_3">
<path
d="M 36.72 149.4 L 36.72 1.8 "
style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"
id="path190" />
</g>
<g
id="patch_4">
<path
d="M 213.84 149.4 L 213.84 1.8 "
style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"
id="path193" />
</g>
<g
id="patch_5">
<path
d="M 36.72 149.4 L 213.84 149.4 "
style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"
id="path196" />
</g>
<g
id="patch_6">
<path
d="M 36.72 1.8 L 213.84 1.8 "
style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"
id="path199" />
</g>
<g
id="line2d_14"
transform="translate(20.617117,-11.807558)">
<path
clip-path="url(#pc68bf1a8b6)"
d="M 105.24879,55.56879"
style="fill:none"
id="path202" />
<defs
id="defs205">
<path
d="M 0,4 C 1.060812,4 2.078319,3.578535 2.828427,2.828427 3.578535,2.078319 4,1.060812 4,0 4,-1.060812 3.578535,-2.078319 2.828427,-2.828427 2.078319,-3.578535 1.060812,-4 0,-4 -1.060812,-4 -2.078319,-3.578535 -2.828427,-2.828427 -3.578535,-2.078319 -4,-1.060812 -4,0 -4,1.060812 -3.578535,2.078319 -2.828427,2.828427 -2.078319,3.578535 -1.060812,4 0,4 Z"
id="macac97780a"
style="stroke:#000000" />
</defs>
<g
clip-path="url(#pc68bf1a8b6)"
id="g209">
<use
style="fill:#0000ff;stroke:#000000"
x="105.24879"
xlink:href="#macac97780a"
y="55.56879"
id="use207"
width="100%"
height="100%" />
</g>
</g>
<g
id="line2d_16"
transform="translate(36.027544,21.715734)">
<path
clip-path="url(#pc68bf1a8b6)"
d="M 87.506134,86.93216"
style="fill:none"
id="path222" />
<defs
id="defs225">
<path
d="m 0,-5 -1.12257,3.454915 H -4.755283 L -1.816356,0.59017 -2.938926,4.045085 0,1.90983 2.938926,4.045085 1.816356,0.59017 4.755283,-1.545085 H 1.12257 Z"
id="m12656b7c75"
style="stroke:#000000;stroke-linejoin:bevel" />
</defs>
<g
clip-path="url(#pc68bf1a8b6)"
id="g229">
<use
style="stroke:#000000;stroke-linejoin:bevel"
x="87.506134"
xlink:href="#m12656b7c75"
y="86.932159"
id="use227"
width="100%"
height="100%" />
</g>
</g>
<g
id="patch_7">
<path
d="M 180.81734 38.114573 Q 178.217887 37.087272 175.618435 36.059971 Q 177.999947 34.59679 180.381459 33.133608 z "
style="stroke:#000000;stroke-linecap:round;"
id="path261" />
</g>
</g>
</g>
<defs
id="defs343">
<clipPath
id="pc68bf1a8b6">
<rect
height="147.6"
width="177.12"
x="36.72"
y="1.8"
id="rect340" />
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -87,7 +87,57 @@ but that's not to say one _couldn't_ perform this amplification using ferromagne
can we assemble these components into one of the primitive digital logic gates?
## TODO: review magnetic core theory
## Ferromagnetic Cores: Theory/Operation
iron (ferrite) is among the materials on earth which have interesting [_coercivity_](https://en.wikipedia.org/wiki/Coercivity) properties:
that is, the material experiences some internal changes during the application of an external magnetic field.
you can see this yourself by finding some volcanic rock or visiting a volcano: liquid magma emerges from the earth, and this magma
contains iron. while liquid, the iron has low coercivity: its magnetic domains will orient along the earth's own magnetic field.
when the iron cools, its coercivity increases. take the rock somewhere else on earth, and its domains _won't_ reorient;
place a compass next to it and that compass will point as if you were at the location where the rock was created!
this effect can last for a substantial amount of time: it's one of the ways we know that the earth's magnetic field has changed throughout history.
we see immediately that the iron in this scenario is storing _information_.
meanwhile, [Faraday's Law of Induction](https://en.wikipedia.org/wiki/Faraday%27s_law_of_induction#Faraday's_law)
describes the symmetric relationship between a time-varying magnetic field, and the electric field (voltage along some loop).
in its basic form, we can wrap a wire around some material, apply a voltage across that wire, and induce a change in the magnetic
field over that material.
by pulsing a voltage in one direction or the other, we can induce a change in the material's magnetic polarization,
and that change can persist after the voltage is removed. if we choose a material with the right coercivity properties,
this can cleanly store one bit of information.
![](m-h-curve.svg)
the above curve describes the magnetization (M) of a material as the applied field (H) varies (image: edited, original by [Nanite](https://en.wikipedia.org/wiki/Coercivity#/media/File:Coercivities_in_M-H_curve.svg)).
if the material starts unpolarized and we apply a positive field, its state will move up along the right half of this grey curve.
remove the applied field and M will fall slightly, to where the blue dot is.
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.
## Reading and Writing Bits
![](minimal-magnetic-core.jpeg)
here we've got an iron toroid with two separate wires coiled around it.
the device is symmetric, but consider the left loop the "drive wire" and the right loop the "sense wire".
we can write a logic '1' (move the material's state to the blue circle) with a clockwise (CW) pulse through the drive wire,
and write a logic '0' (black star) with a counter-clockwise (CCW) pulse.
we used Faraday's Law to show that an external voltage can induce a changing magnetic field and cause the material to change state.
but this relationship goes in both directions: a changing magnetic field also induces a voltage.
consider the transition from logic '1' to logic '0': as the magnetic field changes, this induces a voltage around
the wire loops, and we could detect this by attaching a voltmeter to the sense wire.
on the other hand, if we applied a negative field to put the device back to '0', and it was previously in '0',
there's no significant change in the device's magnetic field: the voltmeter would show a much weaker signal.
so we can write a bit by pulsing the drive wire either CW or CCW, and then read it back later
by forcing the device back to '0' with a CCW pulse. this is a "destructive" read, because
it destroys the state of the device, but it's still a way to store data across time.
## TODO: show illustrations of basic logic gates
- include simulation results