index: add more aside notes

Signed-off-by: Sean Cross <sean@xobs.io>
This commit is contained in:
Sean Cross 2019-08-19 15:32:43 +08:00
parent 40f22ea04e
commit 5acf15b4b5
1 changed files with 21 additions and 55 deletions

View File

@ -100,7 +100,9 @@
<h4>A whirlwind introduction to Fomu; a workshop in three levels</h4>
<p align="right">
<small>Sean "xobs" Cross - <a href="https://xobs.io/">https://xobs.io/</a> - @xobs</small>
<small>Tim "mithro" Ansell - <a href="https://github.com/timvideos/litex-buildenv/wiki/">https://github.com/timvideos/litex-buildenv/wiki/</a> - @mithro</small>
<small>Tim "mithro" Ansell - <a
href="https://github.com/timvideos/litex-buildenv/wiki/">https://github.com/timvideos/litex-buildenv/wiki/</a>
- @mithro</small>
</p>
</section>
@ -156,7 +158,7 @@
<section>
<h2>What is an FPGA?</h2>
<img data-src="img/ice40-lut.png" alt="SB_LUT4">
<aside clas="notes">
<aside class="notes">
An FPGA is an array of gates that's field-programmable. A more useful definition might be "a
chip you can reconfigure". Most chips are collections of transistors that take two inputs and
have one output. FPGAs have collections of transistors that look like this -- they take multiple
@ -308,9 +310,13 @@
</code></pre>
<img class="fragment" data-src="img/verilog-synthesis.png" alt="Verilog Synthesis">
<aside class="notes">
It gets really tedious to be thinking about lookup tables all the time, so humans created programming languages to do it for them. This is an example of Verilog code. It makes a simple counter that outputs the xor of some values.
It gets really tedious to be thinking about lookup tables all the time, so humans created
programming languages to do it for them. This is an example of Verilog code. It makes a simple
counter that outputs the xor of some values.
In order to turn this Verilog code into actual LUTs, we run it through a synthesizer. Much like how a compiler turns programming language into CPU opcodes, a synthesizer turns Verilog code into lookup tables
In order to turn this Verilog code into actual LUTs, we run it through a synthesizer. Much like
how a compiler turns programming language into CPU opcodes, a synthesizer turns Verilog code
into lookup tables
</aside>
</section>
@ -338,11 +344,13 @@
<li>USB implemented in HDL</li>
<li class="fragment highlight-blue">Fits in your USB port</li>
</ul>
<!-- <p>
Fomu is an FPGA that fits in your USB port. It has foru buttons, 2 MB of SPI flash, an RGB LED, and an ICE40UP5K with 5280 LCs. It also has 128 kB of dedicated RAM, not counting the block RAM.
<aside class="notes">
Fomu is an FPGA that fits in your USB port. It has foru buttons, 2 MB of SPI flash, an RGB LED,
and an ICE40UP5K with 5280 LCs. It also has 128 kB of dedicated RAM, not counting the block RAM.
Unlike many other PCBs, Fomu does not have a separate USB controller chip. This means that any projects that want to use the USB port must include a USB softcore.
</p> -->
Unlike many other PCBs, Fomu does not have a separate USB controller chip. This means that any
projects that want to use the USB port must include a USB softcore.
</aside>
</section>
<section>
@ -350,48 +358,6 @@
<img data-src="img/fomu-block-diagram.png" alt="Fomu block diagram">
</section>
<section>
<h2>What is this PCB?</h2>
<img data-src="img/tomu-fpga-evt-1-small.jpg" alt="Fomu EVT1">
<h3>Fomu EVT1</h3>
<!-- <p>
This is Fomu EVT1. This is the original stretch prototype of Fomu. The schematics are the same, but much has changed:
* Name changed from Tomu-FPGA to Fomu
* Package changed from SG48 to WLCSP32
Additionally, some patches were needed to get this PCB working:
* SO-8 for SPI flash was too small
* Crystal footprint was upside-down
These are yours to take home with you!
Differences between EVT1 and EVT3:
* Silkscreen on Raspberry Pi header
* Populate Raspberry Pi header
* Add PMOD pins to touchpads
* Swap PMODa pins for I3C
</p> -->
</section>
<section>
<h2>Misleading Datasheets</h2>
<img data-src="img/xtal-datasheet-icon.jpg" alt="Footprint from Crystal">
</section>
<section>
<h2>What modifications does it have?</h2>
<ul>
<li>Shorting out two zero-ohm resistors (R7, PU)</li>
<li>Programming SPI flash</li>
<li>Bending SPI flash pins inward (U4)</li>
<li>Mounting crystal on its side (U7)</li>
<li>Attaching power to crystal</li>
</ul>
</section>
<section>
<h2>Fomu SPI Flash Layout</h2>
<img data-src="img/fomu-memory-layout.png" alt="Fomu memory layout">
@ -426,15 +392,15 @@
<h2>"fail safe" bootloader</h2>
Device Firmware Update - <strong>DFU</strong>
</section>
<section>
<h2>Updating Fomu</h2>
<h2>Uploading Code</h2>
<pre><code>$ dfu-util -l
Found DFU: [1209:5bf0] name="Fomu DFU Bootloader v1.7.2"
$ dfu-util -D evt-installable.dfu
Found DFU: [1209:5bf0] name="Fomu Hacker running DFU Bootloader v1.8.8"
$ dfu-util -D program.bin
Download [========= ] 36% 38912 bytes
Download done.
$ dfu-util -l
Found DFU: [1209:5bf0] name="Fomu DFU Bootloader v1.8.1"
$</code></pre>
</section>
</section>
@ -452,7 +418,7 @@ $</code></pre>
<h2>Loading Programs onto Fomu</h2>
<pre><code>
$ dfu-util -l
Found DFU: [1209:5bf0] name="Fomu DFU Bootloader v1.8.1"
Found DFU: [1209:5bf0] name="Fomu DFU Bootloader v1.8.8"
$ dfu-util -e # Boot current program
$ dfu-util -D new-image.dfu # Load new program</code></pre>
<h3 class="fragment">u<code>5b f0</code>mu</h3>