Files
website-build/build/project-etc-nand.typ.desktop.html
2025-08-29 15:28:30 +02:00

258 lines
11 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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