1 line
7.1 KiB
HTML
1 line
7.1 KiB
HTML
<!doctype html><title>etc-nand</title><meta charset=utf-8><meta content="width=device-width,initial-scale=1" name=viewport><link href=res/favicon.png rel=icon sizes=512x512><link href=res/favicon.png rel=image_src type=image/png><link title="alexs168's blog" href=atom.xml rel=alternate type=application/atom+xml><body><style>@font-face{font-family:DejaVu Sans Mono;src:local(DejaVu Sans Mono),url(res/DejaVuSansMono.woff2)format("woff2"),local(Courier New),local(Courier),local(monospace);font-weight:400;font-style:normal;font-display:swap}body{font-family:DejaVu Sans Mono;font-size:17pt}td{vertical-align:top;width:100%;display:inline}h1,h2,h3,h4{margin-top:1%;margin-bottom:.75%;margin-left:-.75%}p{margin-top:.75%;margin-bottom:.75%}ul{margin-top:0%}.current{font-weight:700}pre{margin-top:0;margin-bottom:0;display:inline}a,a:visited{color:#3f51b5;text-decoration:none}</style><table><tr><td><span class=sidebar><span class=column-fixed style=justify-content:center;width:25%;display:inline-flex;position:fixed><table><tr><td><span class=table-of-contents><div style="border:1.2pt solid #000;border-radius:2pt;padding:3%"><p><span style=text-decoration:underline>Table of contents</span><br><p style=line-height:1.1><span style=text-indent:0;display:flex><span style=margin-right:11pt>├─</span> <span style=flex:1><span class=headingr id=headingr-0><a href=#loc-1>Overview</a></span></span></span><p style=line-height:1.1><span style=text-indent:0;display:flex><span style=margin-right:11pt>| ├─</span> <span style=flex:1><span class=headingr id=headingr-1><a href=#loc-2>Estimates</a></span></span></span><p style=line-height:1.1><span style=text-indent:0;display:flex><span style=margin-right:11pt>| └─</span> <span style=flex:1><span class=headingr id=headingr-2><a href=#loc-3>Planned Specifications</a></span></span></span><p style=line-height:1.1><span style=text-indent:0;display:flex><span style=margin-right:11pt>├─</span> <span style=flex:1><span class=headingr id=headingr-3><a href=#loc-4>Purchase</a></span></span></span><p style=line-height:1.1><span style=text-indent:0;display:flex><span style=margin-right:11pt>└─</span> <span style=flex:1><span class=headingr id=headingr-4><a href=#loc-5>Images</a></span></span></span><p style=line-height:1.1><span style=text-indent:0;display:flex><span style=margin-right:11pt> ├─</span> <span style=flex:1><span class=headingr id=headingr-5><a href=#loc-6>16 bit register</a></span></span></span><p style=line-height:1.1><span style=text-indent:0;display:flex><span style=margin-right:11pt> ├─</span> <span style=flex:1><span class=headingr id=headingr-6><a href=#loc-7>8 bit ALU slice</a></span></span></span><p style=line-height:1.1><span style=text-indent:0;display:flex><span style=margin-right:11pt> └─</span> <span style=flex:1><span class=headingr id=headingr-7><a href=#add8>8 bit adder</a></span></span></span></div></span><span class=table-of-contents><script>document.addEventListener(`DOMContentLoaded`,(()=>{let a=[`h2`,`h3`,`h4`].flatMap(a=>Array.from(document.getElementsByTagName(a))).sort((a,b)=>a.getBoundingClientRect().top- b.getBoundingClientRect().top);let b=document.documentElement.scrollHeight- window.innerHeight;document.addEventListener(`scroll`,c=>{let d=-(document.documentElement.getBoundingClientRect().y/b);let e=d*window.innerHeight;let f=a.map(a=>0>a.getBoundingClientRect().top- e).lastIndexOf(!0);Array.from(document.getElementsByClassName(`headingr`)).map(a=>a.classList.remove(`current`));f!=-1&&document.getElementById(`headingr-`+ f).classList.add(`current`)})}))</script><style>.table-of-contents>p>span{width:100%}</style></span><tr><td><br> <a href=index.html><b>Website Home</b></a> <br><tr><td><p>Renderings of this page:<ul><li><a onclick='gotoVariant(".min.pdf");' href=#>minimal PDF (printable)</a><li><a onclick='gotoVariant(".nano.html");' href=#>minimal HTML</a></ul><tr><td><a href=atom.xml>Atom feed</a> <br><tr><td><style>@media only screen and (width<=1200px){.sidebar{display:none!important}.column-fixed{width:0%!important}.body-column{left:3%!important}}@media only screen and (width<=1800px){.body-column>span{width:75%!important}}@media only screen and (width<=1200px){.body-column{width:97%!important}.body-column>span{width:100%!important}}.hide{background:#000;transition:background .3s linear;display:inline}.hide:hover,.hide:focus{background:0 0}</style></table><style>.column-fixed>table>tbody>tr>td>*{width:100%}</style></span></span><td><span class=body-column style=width:72%;position:absolute;left:28%><span style=width:50%;display:inline-block><div><p><br><h1>etc-nand</h1></div><div><br>You can click the PCB images to switch to the other side.</div><div><p><br><span id=loc-1 style=text-decoration:underline><h2>Overview</h2></span><p>etc-nand is a real-world <a href=https://github.com/ETC-A/etca-spec/>ETC.A</a> CPU built from almost only quad NAND gate ICs (74hc00)<p>It will probably be finished in a few months.</div><div><p><br><span id=loc-2 style=text-decoration:underline><h3>Estimates</h3></span><p>Estimated gate count:<ul><li>2800 NAND gates<li>320 tristate buffers</ul><p><br> Estimated component counts:<ul><li>700x 74hc00 quad NAND gates<li>40x 74HC54 octal tristate buffers<li>a few simple resistors</ul></div><div><p><br><span id=loc-3 style=text-decoration:underline><h3>Planned Specifications</h3></span> ETC.A base instruction set + byte operations + S&F + Von Neumann<p>The CPU will communicate with peripherals over a 16 bit data + 15 bit address memory bus</div><div><p><br><span id=loc-4 style=text-decoration:underline><h2>Purchase</h2></span> You will be able to purchase one in the future.<p>Stay tuned!</div><div><br><span id=loc-5 style=text-decoration:underline><h2>Images</h2></span> Images of PCBs that are either already manifactured or currently beeing manifactured by JLCPCB.</div><div><p><br><span id=loc-6 style=text-decoration:underline><h3>16 bit register</h3></span></p><img tite="Click Me!" data-other=res/etc-nand/reg16_back.png draggable=false onclick=swapFrontBack(this); src=res/etc-nand/reg16_front.png style=cursor:pointer;width:80%><script>var swapFrontBack=(a=>{let b=a.src;a.src=a.dataset.other;a.dataset.other=b})</script></div><div><p><br><span id=loc-7 style=text-decoration:underline><h3>8 bit ALU slice</h3></span> A <a href=#add8>8 bit adder module</a> will be placed in the middle</p><img tite="Click Me!" data-other=res/etc-nand/alu8_back.png draggable=false onclick=swapFrontBack(this); src=res/etc-nand/alu8_front.png style=cursor:pointer;width:80%><script>var swapFrontBack=(a=>{let b=a.src;a.src=a.dataset.other;a.dataset.other=b})</script></div><div><p><br><span id=add8 style=text-decoration:underline><h3>8 bit adder</h3></span></p><img tite="Click Me!" data-other=res/etc-nand/add8_back.png draggable=false onclick=swapFrontBack(this); src=res/etc-nand/add8_front.png style=cursor:pointer;width:80%><script>var swapFrontBack=(a=>{let b=a.src;a.src=a.dataset.other;a.dataset.other=b})</script></div></span></span><td></table><script>var gotoVariant=(a=>{window.location.href=window.location.href.replace(/\.\w+.html/g,a)});window.addEventListener(`beforeprint`,a=>{gotoVariant(`.min.pdf`)})</script><script async src=coffee.js></script> |