Theming, logo d'en-tête, page FPGA
Some checks failed
build configuration / build (push) Failing after 16s

This commit is contained in:
Sélène Corbineau 2024-09-23 22:16:34 +02:00
parent edbdb09cda
commit e304b79eff
13 changed files with 133 additions and 30 deletions

View file

@ -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

View file

@ -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 ?

BIN
docs/img/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

View file

@ -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

0
docs/tools/defonceuse.md Normal file
View file

View file

View file

0
docs/tools/ponceuse.md Normal file
View file

100
docs/tutorials/fpga.md Normal file
View file

@ -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 <nixpkgs> {} }:
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
'';
}
```

View file

@ -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

14
overrides/main.html Normal file
View file

@ -0,0 +1,14 @@
{% extends "base.html" %}
{% block top_nav %}
<div class="container">
<div class="terminal-nav">
<header class="terminal-logo">
<a href="{% if config.site_url %}{{ config.site_url}}{% else %}/{% endif %}">
<img src="/img/logo.png">
</a>
</header>
{% include "partials/top-nav/menu.html" %}
</div>
</div>
{% endblock %}

View file

@ -0,0 +1 @@
<h1> HackENS.org </h1>

View file

@ -2,7 +2,8 @@
pkgs.mkShell {
packages = [
(pkgs.python3.withPackages (ps: [
ps.mkdocs
ps.mkdocs,
ps.mkdocs-terminal
]))
];
}