Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
12 changes: 9 additions & 3 deletions apps/website/i18n/course-ladder.ru.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"SAY_LADDER": "Лестница: первые три курса бесплатные, четвёртый и все следующие открываются с клубом. Какие три — выбираете вы.",
"SAY_LADDER": "Лестница: первые три курса бесплатные и без регистрации, четвёртый и все следующие открываются с клубом. Какие три — выбираете вы.",
"SAY_RUNG": "Ступень {0} вашей лестницы",
"SAY_FREE_TITLE": "Этот курс для вас бесплатный",
"SAY_FREE_LINE": "Откройте одним нажатием. Ничего не спрашиваем, из браузера ничего не уходит.",
Expand All @@ -19,7 +19,7 @@
"SAY_SHARED": "Ваши пройденные уроки видит автор курса.",
"SAY_COURSES": "Все курсы",
"SAY_CATALOG_TITLE": "Курсы",
"SAY_CATALOG_LEAD": "Каждый курс — 27 коротких уроков в браузере, в каждом живой виджет или спека, которую можно запустить. Любые три — бесплатно, остальные открывает клуб.",
"SAY_CATALOG_LEAD": "Каждый курс — 27 коротких уроков в браузере, в каждом живой виджет или спека, которую можно запустить. Любые три — бесплатно, без регистрации и почты; остальные открывает клуб.",
"SAY_FREE_LEFT": "Осталось бесплатных курсов: {0} из 3",
"SAY_FREE_NONE": "Три бесплатных курса выбраны. Все остальные открываются с клубом.",
"SAY_IN_CLUB": "Вы в клубе: открыты все курсы.",
Expand All @@ -41,5 +41,11 @@
"SAY_PAY_WAITING": "Ждём подтверждения оплаты...",
"SAY_PAY_SLOW": "Оплата ещё не подтверждена. Если вы оплатили, страница продолжает проверять; можно обновить её позже.",
"SAY_PAY_DONE": "Оплата получена. Добро пожаловать в клуб.",
"SAY_PAY_OR_BOT": "Или оплатить звёздами Telegram в нашем боте"
"SAY_PAY_OR_BOT": "Или оплатить звёздами Telegram в нашем боте",
"SAY_MORE_TITLE": "Другие курсы",
"SAY_PROMO_TITLE": "Три курса бесплатно, без регистрации",
"SAY_PROMO_LINE": "Каждый урок идёт прямо в браузере, с живым виджетом или спецификацией, которую можно запустить. Любые три курса бесплатно, без регистрации.",
"SAY_PROMO_PRESS": "Смотреть курсы",
"SAY_SIGN_IN": "Уже в клубе? Войти через Telegram",
"SAY_SIGNED_IN": "Вы вошли: ключ клуба сохранён в этом браузере."
}
1 change: 1 addition & 0 deletions apps/website/public/learn/a-bar-detector/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -123,5 +123,6 @@ <h1>A bar detector</h1>
<section><h2>All lessons</h2><ul class="outline"><li><h3>Module 1 · Three values</h3><p>Why three, how balanced ternary writes every number without a sign, and what flipping and cutting trits do.</p><ol><li><a href="/learn/why-three/">01 Why three</a></li><li><a href="/learn/balanced-ternary/">02 Balanced ternary</a></li><li><a href="/learn/flip-and-cut/">03 Flip to negate, cut to round</a></li></ol></li><li><h3>Module 2 · Logic with unknown</h3><p>Kleene's three-valued gates, two gates binary has no twin for, and addition as a pair of tables.</p><ol><li><a href="/learn/kleene-logic/">04 Three-valued logic</a></li><li><a href="/learn/consensus-and-any/">05 Consensus and any</a></li><li><a href="/learn/sum-and-carry/">06 Sum and carry</a></li></ol></li><li><h3>Module 3 · Adding trits</h3><p>The half adder, the full adder and a carry that ripples left, one place at a time.</p><ol><li><a href="/learn/half-adder/">07 The half adder</a></li><li><a href="/learn/full-adder/">08 The full adder</a></li><li><a href="/learn/ripple-carry/">09 Ripple carry</a></li></ol></li><li><h3>Module 4 · Multiplying without a multiplier</h3><p>Copy, drop or flip: a product by one trit, long multiplication, and a MAC that only adds.</p><ol><li><a href="/learn/times-a-trit/">10 Times one trit</a></li><li><a href="/learn/long-multiplication/">11 Long multiplication</a></li><li><a href="/learn/ternary-mac/">12 A ternary MAC</a></li></ol></li><li><h3>Module 5 · Trits in binary memory</h3><p>Two bits per trit, five trits per byte, and the bits a 27-trit word needs.</p><ol><li><a href="/learn/two-bits-per-trit/">13 Two bits per trit</a></li><li><a href="/learn/five-trits-a-byte/">14 Five trits in a byte</a></li><li><a href="/learn/a-word-of-27/">15 A word of 27 trits</a></li></ol></li><li><h3>Module 6 · The TRI-27 instruction word</h3><p>The 32-bit word the Trinity emulator decodes: its fields, its 47 opcodes and its 15-bit immediate.</p><ol><li><a href="/learn/the-instruction-word/">16 The instruction word</a></li><li><a href="/learn/the-opcode-map/">17 The opcode map</a></li><li><a href="/learn/the-immediate/">18 The immediate</a></li></ol></li><li><h3>Module 7 · A ternary machine</h3><p>An ALU built from this course's adders, a three-way jump, and a program you can step.</p><ol><li><a href="/learn/a-ternary-alu/">19 A ternary ALU</a></li><li><a href="/learn/three-way-jump/">20 A three-way jump</a></li><li><a href="/learn/run-a-program/">21 Run a program</a></li></ol></li><li><h3>Module 8 · Three answers</h3><p>Compare at the highest differing trit, find a number in thirds, sort with three-way compares.</p><ol><li><a href="/learn/compare-at-the-top/">22 Compare at the top</a></li><li><a href="/learn/questions-in-thirds/">23 Questions in thirds</a></li><li><a href="/learn/sort-by-three/">24 Sort with three-way compares</a></li></ol></li><li><h3>Module 9 · Ternary neurons</h3><p>Weights of -1, 0, +1: one neuron, a detector and a small layer, with no multiplier anywhere.</p><ol><li><a href="/learn/one-ternary-neuron/">25 One ternary neuron</a></li><li class="on" aria-current="page"><a href="/learn/a-bar-detector/">26 A bar detector</a></li><li><a href="/learn/a-tiny-layer/">27 A tiny layer</a></li></ol></li></ul></section>
<footer><p><a href="/learn/ternary-computing.t27">This course is itself a t27 spec: read it</a></p><p>Widgets keep their own English words: each one lives in its own t27 spec.</p></footer>
</main>
<script>(function(){var q=location.search;if(!/[?&]utm_source=/.test(q))return;document.querySelectorAll('a[href^="/#/"]').forEach(function(a){a.setAttribute('href','/'+q+a.getAttribute('href').slice(1))})})()</script>
</body>
</html>
1 change: 1 addition & 0 deletions apps/website/public/learn/a-bend-at-zero/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -94,5 +94,6 @@ <h1>A bend at zero</h1>
<section><h2>All lessons</h2><ul class="outline"><li><h3>Module 1 · Lab: our own research</h3><p>A number format of our own, an honest scoreboard, and a model's tables multiplied on the board.</p><ol><li><a href="/learn/t27-number-format/">01 T27: a number format of our own</a></li><li><a href="/learn/an-honest-scoreboard/">02 An honest scoreboard</a></li><li><a href="/learn/a-model-on-the-board/">03 A model's tables on the board</a></li></ol></li><li><h3>Module 2 · AI numbers: the MX block</h3><p>How AI chips keep weights in a few bits: one shared scale per block, the scale byte itself, and what one outlier does to its neighbours.</p><ol><li><a href="/learn/one-scale-per-block/">04 One scale for a block of weights</a></li><li><a href="/learn/scale-byte-native/">05 The scale byte on a real machine</a></li><li><a href="/learn/one-outlier/">06 One outlier, many zeros</a></li></ol></li><li><h3>Module 3 · Ternary weights</h3><p>Weights that are only minus, zero or plus a scale, the five rules a ternary alphabet must pass, and a test pass that checked nothing.</p><ol><li><a href="/learn/phi-scaled-ternary/">07 Weights of minus phi, zero and plus phi</a></li><li><a href="/learn/a-pass-that-checked-nothing/">08 A pass that checked nothing</a></li><li><a href="/learn/five-rules-for-weights/">09 Five rules for a weight alphabet</a></li></ol></li><li><h3>Module 4 · The Ternary Network Float</h3><p>A rule the compiler enforces before any test runs, and a 17-bit float whose exponent is four balanced trits.</p><ol><li><a href="/learn/blocked-is-not-failed/">10 Blocked is not failed</a></li><li><a href="/learn/four-trit-exponent/">11 A float whose exponent is four trits</a></li><li><a href="/learn/negate-twice/">12 Negate twice, get the number back</a></li></ol></li><li><h3>Module 5 · Arithmetic on signed numbers</h3><p>Multiply two signed numbers, add them when their signs differ, and do both at once in a multiply-accumulate.</p><ol><li><a href="/learn/a-sign-is-one-bit/">13 A sign is one bit</a></li><li><a href="/learn/opposite-signs-subtract/">14 Opposite signs subtract</a></li><li><a href="/learn/multiply-then-add/">15 Multiply, then add</a></li></ol></li><li><h3>Module 6 · Parts of a neuron</h3><p>A ReLU that bends at zero, a power of two for softmax, and an argmax that names the answer.</p><ol><li class="on" aria-current="page"><a href="/learn/a-bend-at-zero/">16 A bend at zero</a></li><li><a href="/learn/two-to-the-x/">17 Two to the x</a></li><li><a href="/learn/pick-the-largest/">18 Pick the largest</a></li></ol></li><li><h3>Module 7 · Learning from a mistake</h3><p>A loss that prices a wrong guess in bits, one step that moves a weight against its gradient, and the hidden layer that XOR needs.</p><ol><li><a href="/learn/a-loss-in-bits/">19 A loss in bits</a></li><li><a href="/learn/one-step-downhill/">20 One step downhill</a></li><li><a href="/learn/xor-needs-a-bend/">21 XOR needs a bend</a></li></ol></li><li><h3>Module 8 · BitNet: ternary networks</h3><p>A threshold that squeezes a sum back to three values, one neuron that becomes a different function when its weights change, and a neuron that reads its inputs 27 trits at a time.</p><ol><li><a href="/learn/back-to-three-values/">22 Back to three values</a></li><li><a href="/learn/same-neuron-new-weights/">23 Same neuron, new weights</a></li><li><a href="/learn/a-neuron-in-chunks/">24 A neuron in chunks</a></li></ol></li><li><h3>Module 9 · The ternary MAC as a chip</h3><p>The 27-trit dot product as wires with no register, the same sum added into a register on every clock, and a small whole network to close the course.</p><ol><li><a href="/learn/a-dot-product-in-wires/">25 A dot product made of wires</a></li><li><a href="/learn/add-it-up-every-clock/">26 Add it up on every clock</a></li><li><a href="/learn/a-whole-network/">27 A whole network</a></li></ol></li></ul></section>
<footer><p><a href="/learn/ai-numbers.t27">This course is itself a t27 spec: read it</a></p><p>Widgets keep their own English words: each one lives in its own t27 spec.</p></footer>
</main>
<script>(function(){var q=location.search;if(!/[?&]utm_source=/.test(q))return;document.querySelectorAll('a[href^="/#/"]').forEach(function(a){a.setAttribute('href','/'+q+a.getAttribute('href').slice(1))})})()</script>
</body>
</html>
1 change: 1 addition & 0 deletions apps/website/public/learn/a-build-receipt/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -170,5 +170,6 @@ <h1>A build, itemised</h1>
<section><h2>All lessons</h2><ul class="outline"><li><h3>Module 1 · The chip</h3><p>What an FPGA is, which chip we use, and how its pins meet the board.</p><ol><li><a href="/learn/fpga-is-a-grid/">01 An FPGA is a grid you configure</a></li><li><a href="/learn/which-chip/">02 Which chip is this?</a></li><li><a href="/learn/pins-and-package/">03 Pins, balls and the package</a></li></ol></li><li><h3>Module 2 · Numbers in hardware</h3><p>Bits, trits and number formats, and what arithmetic costs in logic.</p><ol><li><a href="/learn/bits-and-trits/">04 Bits, trits and GF16</a></li><li><a href="/learn/what-arithmetic-costs/">05 What arithmetic costs</a></li><li><a href="/learn/how-much-fits/">06 How much fits on the chip</a></li></ol></li><li><h3>Module 3 · Your t27 program</h3><p>Write a spec, test it, and see why compiling is not the same as being right.</p><ol><li><a href="/learn/hello-t27/">07 Hello, t27</a></li><li><a href="/learn/tests-are-the-spec/">08 Tests are part of the spec</a></li><li><a href="/learn/compiles-is-not-correct/">09 Compiles is not the same as correct</a></li></ol></li><li><h3>Module 4 · Inside t27c</h3><p>How the compiler reads a spec and what it writes, including the native t27b.</p><ol><li><a href="/learn/compiler-stages/">10 The stages of t27c</a></li><li><a href="/learn/t27c-on-a-real-machine/">11 t27c on a real machine</a></li><li><a href="/learn/seven-backends-and-t27b/">12 Seven backends, and t27b</a></li></ol></li><li><h3>Module 5 · From spec to hardware</h3><p>The Verilog t27c writes, the cells it becomes, and what one LUT does.</p><ol><li><a href="/learn/spec-to-verilog/">13 From a spec to Verilog</a></li><li><a href="/learn/count-the-cells/">14 Count the cells</a></li><li><a href="/learn/one-lut-up-close/">15 One LUT, up close</a></li></ol></li><li><h3>Module 6 · Reading synthesis</h3><p>What yosys reports about your design, and which warnings matter.</p><ol><li><a href="/learn/synthesis-warnings/">16 Synthesis warnings that matter</a></li><li><a href="/learn/state-machines/">17 State machines</a></li><li><a href="/learn/where-the-luts-go/">18 Where the LUTs go</a></li></ol></li><li><h3>Module 7 · Place, route, timing</h3><p>Where the cells land on the die, and whether the clock is met.</p><ol><li><a href="/learn/placement/">19 Placement: where the cells land</a></li><li><a href="/learn/logic-depth/">20 Logic depth</a></li><li><a href="/learn/timing-slack/">21 Timing and slack</a></li></ol></li><li><h3>Module 8 · The bitstream</h3><p>How a routed design becomes the bits the chip loads, with no Vivado.</p><ol><li><a href="/learn/fasm-to-frames/">22 From FASM to frames</a></li><li class="on" aria-current="page"><a href="/learn/a-build-receipt/">23 A build, itemised</a></li><li><a href="/learn/read-a-bitstream/">24 Read a bitstream</a></li></ol></li><li><h3>Module 9 · On the board</h3><p>Ask the chip who it is, load the bits, and check them.</p><ol><li><a href="/learn/jtag-asks-the-chip/">25 JTAG asks the chip</a></li><li><a href="/learn/same-bits-on-the-board/">26 The same bits, on the board</a></li><li><a href="/learn/capstone/">27 Capstone: out-guess yosys</a></li></ol></li></ul></section>
<footer><p><a href="/learn/course.t27">This course is itself a t27 spec: read it</a></p><p>Widgets keep their own English words: each one lives in its own t27 spec.</p></footer>
</main>
<script>(function(){var q=location.search;if(!/[?&]utm_source=/.test(q))return;document.querySelectorAll('a[href^="/#/"]').forEach(function(a){a.setAttribute('href','/'+q+a.getAttribute('href').slice(1))})})()</script>
</body>
</html>
Original file line number Diff line number Diff line change
Expand Up @@ -284,5 +284,6 @@ <h1>A correlator finds the frame</h1>
<section><h2>All lessons</h2><ul class="outline"><li><h3>Module 1 · Adding numbers</h3><p>Why addition is slow: the carry that walks up the word, the dedicated chain in every slice, prefix networks and carry-save trees.</p><ol><li><a href="/learn/the-carry-chain/">01 The carry chain</a></li><li><a href="/learn/prefix-adders/">02 Looking ahead: prefix adders</a></li><li><a href="/learn/carry-save/">03 Three numbers at once</a></li></ol></li><li><h3>Module 2 · Multiplying</h3><p>A product is a sum of shifted copies; Booth recoding halves them, and the DSP48E1 slice does the rest in one block.</p><ol><li><a href="/learn/shift-and-add/">04 Shift and add</a></li><li><a href="/learn/booths-trick/">05 Booth's trick</a></li><li><a href="/learn/the-dsp48e1-slice/">06 The DSP48E1 slice</a></li></ol></li><li><h3>Module 3 · Fixed point</h3><p>Where the binary point sits, what rounding does to a value and to its average, and what each bit of a quantizer buys.</p><ol><li><a href="/learn/q-formats/">07 Q formats</a></li><li><a href="/learn/rounding-and-saturation/">08 Rounding and saturation</a></li><li><a href="/learn/quantization-noise/">09 Quantization noise</a></li></ol></li><li><h3>Module 4 · Functions in hardware</h3><p>Sine, cosine, angle and length from shifts and adds, and when a table is the better answer.</p><ol><li><a href="/learn/rotating-by-shifts/">10 Rotating by shifts</a></li><li><a href="/learn/angle-and-magnitude/">11 Angle and magnitude</a></li><li><a href="/learn/tables-and-interpolation/">12 Tables and interpolation</a></li></ol></li><li><h3>Module 5 · Signals and sampling</h3><p>What sampling does to a frequency, how an oscillator is built from an adder, and what a DFT bin measures.</p><ol><li><a href="/learn/sampling-and-aliasing/">13 Sampling and aliasing</a></li><li><a href="/learn/the-nco/">14 A numerically controlled oscillator</a></li><li><a href="/learn/bins-of-a-spectrum/">15 Bins of a spectrum</a></li></ol></li><li><h3>Module 6 · FIR filters</h3><p>The moving average, a windowed-sinc design with integer taps, and folding the taps onto DSP slices.</p><ol><li><a href="/learn/the-moving-average/">16 The moving average</a></li><li><a href="/learn/designing-taps/">17 Designing taps</a></li><li><a href="/learn/folding-taps-onto-slices/">18 Folding taps onto slices</a></li></ol></li><li><h3>Module 7 · Multirate</h3><p>Lowering the sample rate without folding noise in: decimation, the CIC filter and the polyphase form.</p><ol><li><a href="/learn/lowering-the-rate/">19 Lowering the rate</a></li><li><a href="/learn/the-cic-filter/">20 The CIC filter</a></li><li><a href="/learn/polyphase/">21 Polyphase</a></li></ol></li><li><h3>Module 8 · The FFT</h3><p>N log N instead of N^2: butterflies, the bit-reversed input order and the bits each stage adds.</p><ol><li><a href="/learn/the-butterfly/">22 The butterfly</a></li><li><a href="/learn/twiddles-and-bit-reversal/">23 Twiddles and bit reversal</a></li><li><a href="/learn/growth-through-the-stages/">24 Growth through the stages</a></li></ol></li><li><h3>Module 9 · On the bench</h3><p>From the arithmetic to the board: a correlator from the modem spec, a budget of slices and timing, and the capstone filter.</p><ol><li class="on" aria-current="page"><a href="/learn/a-correlator-finds-the-frame/">25 A correlator finds the frame</a></li><li><a href="/learn/does-it-fit-and-close-timing/">26 Does it fit and close timing?</a></li><li><a href="/learn/capstone-a-filter-on-the-board/">27 Capstone: a filter on the board</a></li></ol></li></ul></section>
<footer><p><a href="/learn/arithmetic-and-dsp.t27">This course is itself a t27 spec: read it</a></p><p>Widgets keep their own English words: each one lives in its own t27 spec.</p></footer>
</main>
<script>(function(){var q=location.search;if(!/[?&]utm_source=/.test(q))return;document.querySelectorAll('a[href^="/#/"]').forEach(function(a){a.setAttribute('href','/'+q+a.getAttribute('href').slice(1))})})()</script>
</body>
</html>
Loading
Loading