diff --git a/README.md b/README.md index 2e8245b..d80b9b1 100644 --- a/README.md +++ b/README.md @@ -3,9 +3,11 @@ Le site hackens.org est construit via [mkDocs](https://www.mkdocs.org/) et déployé statiquement. Les PR sont bienvenues pour ajouter du contenu ! -Pour déployer le site chez soi, il suffit d'installer mkDocs via `pip` : +Pour déployer le site chez soi, il suffit d'installer mkDocs et le +thème mkDocs-terminal via `pip` : ``` pip install mkdocs +pip install mkdocs-terminal ``` ou la méthode adaptée à sa distribution le cas échéant. Ensuite, le site peut être déployé localement à l'addresse 127.0.0.1:8000 en exécutant diff --git a/docs/chems.md b/docs/chemistry/solvants.md similarity index 65% rename from docs/chems.md rename to docs/chemistry/solvants.md index d568b97..e87bae5 100644 --- a/docs/chems.md +++ b/docs/chemistry/solvants.md @@ -1,13 +1,4 @@ -# Chimie - -Stockés dans l'armoire métallique d'avant-HackENS avec les peintures -et les vernis, les produits chimiques sont à manipuler avec précaution. -Le port du masque est le plus souvent recommandé, ainsi que de gants. -Un point d'eau est disponible au labo photo. L'eau sortant du robinet est -souvent stagnante, il peut être utile de la laisser couler un peu avant de s'en -servir. - -## Solvants +# Solvants Les produits les plus souvent utilisés sont les solvants. Il en existe en gros 4 types en fonction de deux paramètres : mon solvant est-il polaire ? diff --git a/docs/img/logo.png b/docs/img/logo.png new file mode 100644 index 0000000..d1a2410 Binary files /dev/null and b/docs/img/logo.png differ diff --git a/docs/tools.md b/docs/tools/cnc.md similarity index 54% rename from docs/tools.md rename to docs/tools/cnc.md index 53a28f7..6f61a51 100644 --- a/docs/tools.md +++ b/docs/tools/cnc.md @@ -1,18 +1,4 @@ -# Outils - -HackENS dispose d'une variété d'outils pour réaliser des projets. -Les plus importants sont présentés ici. Se référer aux pages spécifiques -pour plus de précision quand à leur usage et aux précautions de sécurité. - -## Défonceuse - -## Ponceuse à bande - -## Perceuse à colonne - -## Imprimante 3D - -## CNC +# Routeur CNC La CNC est une fraiseuse à commande numérique. Une tête, munie d'une fraise tournant rapidement, va effectuer un parcours dicté par l'ordinateur, ici diff --git a/docs/tools/defonceuse.md b/docs/tools/defonceuse.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/tools/imprimante3d.md b/docs/tools/imprimante3d.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/tools/perceuse_colonne.md b/docs/tools/perceuse_colonne.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/tools/ponceuse.md b/docs/tools/ponceuse.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/tutorials/fpga.md b/docs/tutorials/fpga.md new file mode 100644 index 0000000..f4a09e7 --- /dev/null +++ b/docs/tutorials/fpga.md @@ -0,0 +1,100 @@ +# FPGA ULX3S (EPC5-85F) + +Un FPGA est un océan de portes reprogrammable. Plus puissant qu'un microcontrôlleur, +on peut installer dessus un CPU ou du hardware spécialisé. + +Pour un example d'utilisation voir: +- https://ulx3s.github.io/ +- https://github.com/ulx3s/blink/tree/main +- https://blog.dave.tf/post/getting-started-fpga/ + +Le board d'HackENS est un terrain de jeu avec plein d'IO : +- de la SDRAM +- une carte SD +- un ESP32 +- des boutons +- des leds +- un port jack +- un port hdmi +- ... + +## Génération des fichiers verilog à partir de Bluespec + +```make +PACKAGES = ./src/:+ +bsc \ + -verilog \ + -vdir $(RTL) -bdir $(BUILD) -info-dir $(BUILD) \ + -no-warn-action-shadowing -check-assert \ + -keep-fires -aggressive-conditions -show-schedule \ + -cpp +RTS -K128M -RTS -show-range-conflict \ + -p $(PACKAGES) -g mkTop -u $(TOP) +``` + +- ``` PACKAGES``` liste des dossiers dont les fichiers .bs et .bsv sont importés, le + représente la lib standard +- ``` Top``` est le fichier principale +- ``` mkTop``` est le module principale +- ``` keep-fires``` utilise le sceduling intuitif: active chaque règne dés que possible (moins les conflits) +- ``` aggressive-conditions``` je pense que c'est: si $e_1$ est gardé par la condition $c_1$ et $e_2$ est gardé par la condition $c_2$ alors $(c ? e_1 : e_2)$ a pour condition de garde $(c ? c_1 : c_2)$ plutot que $c_1 \lor c_2$, les conditions sont plus difficile à calculer mais c'est plus intuitif et ne demande pas de faire deux règles pour scheduler $e_1$ et $e_2$ + +## Génération des LUT (look-up-table) avec yosys + +```make +yosys -DULX3S -q -p "synth_ecp5 -abc9 -top mkTop -json mkTop.json" $(LIB) + +``` +- ``` LIB``` est la liste des fichiers verilog +- ``` mkTop``` est le module verilog principale +- ``` mkTop.json``` est la sortie de yosys +- ``` -abc9``` est l'algorithme de génération des LUT par défault, parfois il crash (je pense à cause des inout qui ne sont pas entièrement supporter), dans ce cas utiliser ``` -noabc9``` semble marcher + +## Rooting avec nextpnr + +```make +nextpnr-ecp5 --85k --json mkTop.json \ + --lpf ulx3s.lpf \ + --textcfg mkTop.config +``` + +- ``` ulx3s.lpf``` fichier qui map les variables verilog sur les pins +- ``` --85k``` nombre de LUT du FPGA +- on peut ajouter ``` -gui``` pour avoir une interface graphique et voir le placement sur le FPGA + +## Génération du bitstream avec ecppack + +```make +ecppack mkTop.config mkTop.bit +``` + + +## Flash du fpga avec fujprog + +```make +fujprog mkTop.bit +``` + +Il faut que le tty du fpga soit accessible par l'utilisateur courant! + +## Nix +On peut tout installer avec ce nix-shell: +``` +{ pkgs ? import {} }: + +pkgs.mkShell { + buildInputs = [ + pkgs.bluespec + pkgs.verilator + pkgs.verilog + pkgs.gtkwave + pkgs.openfpgaloader + + pkgs.yosys + pkgs.nextpnrWithGui + pkgs.trellis + ]; + + shellHook = '' + export BLUESPECDIR=${pkgs.bluespec}/lib + ''; +} +``` diff --git a/mkdocs.yml b/mkdocs.yml index 99904ee..8c094b0 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,9 +1,17 @@ site_name: hackens.org + +theme: + name: terminal + custom_dir: overrides +# features: navigation.top.hide nav: - - Hackens: index.md - Projets: - Borne d'arcade: projects/arcade.md - Outils: - - Outils: tools.md + - Perceuse à colonne: tools/perceuse_colonne.md + - CNC: tools/cnc.md - Chimie: - - Chimie: chems.md + - Solvants: chemistry/solvants.md + - Tutoriels: + - FPGA: tutorials/fpga.md +# Section tutoriels ? Genre mill un PCB, ce genre de trucs pas évident diff --git a/overrides/main.html b/overrides/main.html new file mode 100644 index 0000000..00c91b9 --- /dev/null +++ b/overrides/main.html @@ -0,0 +1,14 @@ +{% extends "base.html" %} + +{% block top_nav %} +
+
+ + {% include "partials/top-nav/menu.html" %} +
+
+{% endblock %} diff --git a/overrides/partials/banner.html b/overrides/partials/banner.html new file mode 100644 index 0000000..da93de8 --- /dev/null +++ b/overrides/partials/banner.html @@ -0,0 +1 @@ +

HackENS.org

diff --git a/shell.nix b/shell.nix index c2919c9..c9122f3 100644 --- a/shell.nix +++ b/shell.nix @@ -2,7 +2,8 @@ pkgs.mkShell { packages = [ (pkgs.python3.withPackages (ps: [ - ps.mkdocs + ps.mkdocs, + ps.mkdocs-terminal ])) ]; }