Theming, logo d'en-tête, page FPGA
Some checks failed
build configuration / build (push) Failing after 16s
Some checks failed
build configuration / build (push) Failing after 16s
This commit is contained in:
parent
edbdb09cda
commit
e304b79eff
13 changed files with 133 additions and 30 deletions
|
@ -3,9 +3,11 @@
|
||||||
Le site hackens.org est construit via [mkDocs](https://www.mkdocs.org/) et
|
Le site hackens.org est construit via [mkDocs](https://www.mkdocs.org/) et
|
||||||
déployé statiquement. Les PR sont bienvenues pour ajouter du contenu !
|
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
|
||||||
|
pip install mkdocs-terminal
|
||||||
```
|
```
|
||||||
ou la méthode adaptée à sa distribution le cas échéant. Ensuite, le site peut
|
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
|
être déployé localement à l'addresse 127.0.0.1:8000 en exécutant
|
||||||
|
|
|
@ -1,13 +1,4 @@
|
||||||
# Chimie
|
# Solvants
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
Les produits les plus souvent utilisés sont les solvants. Il en existe
|
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 ?
|
en gros 4 types en fonction de deux paramètres : mon solvant est-il polaire ?
|
BIN
docs/img/logo.png
Normal file
BIN
docs/img/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.9 KiB |
|
@ -1,18 +1,4 @@
|
||||||
# Outils
|
# Routeur CNC
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
La CNC est une fraiseuse à commande numérique. Une tête, munie d'une fraise
|
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
|
tournant rapidement, va effectuer un parcours dicté par l'ordinateur, ici
|
0
docs/tools/defonceuse.md
Normal file
0
docs/tools/defonceuse.md
Normal file
0
docs/tools/imprimante3d.md
Normal file
0
docs/tools/imprimante3d.md
Normal file
0
docs/tools/perceuse_colonne.md
Normal file
0
docs/tools/perceuse_colonne.md
Normal file
0
docs/tools/ponceuse.md
Normal file
0
docs/tools/ponceuse.md
Normal file
100
docs/tutorials/fpga.md
Normal file
100
docs/tutorials/fpga.md
Normal 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
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
```
|
14
mkdocs.yml
14
mkdocs.yml
|
@ -1,9 +1,17 @@
|
||||||
site_name: hackens.org
|
site_name: hackens.org
|
||||||
|
|
||||||
|
theme:
|
||||||
|
name: terminal
|
||||||
|
custom_dir: overrides
|
||||||
|
# features: navigation.top.hide
|
||||||
nav:
|
nav:
|
||||||
- Hackens: index.md
|
|
||||||
- Projets:
|
- Projets:
|
||||||
- Borne d'arcade: projects/arcade.md
|
- Borne d'arcade: projects/arcade.md
|
||||||
- Outils:
|
- Outils:
|
||||||
- Outils: tools.md
|
- Perceuse à colonne: tools/perceuse_colonne.md
|
||||||
|
- CNC: tools/cnc.md
|
||||||
- Chimie:
|
- 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
14
overrides/main.html
Normal 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 %}
|
1
overrides/partials/banner.html
Normal file
1
overrides/partials/banner.html
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<h1> HackENS.org </h1>
|
|
@ -2,7 +2,8 @@
|
||||||
pkgs.mkShell {
|
pkgs.mkShell {
|
||||||
packages = [
|
packages = [
|
||||||
(pkgs.python3.withPackages (ps: [
|
(pkgs.python3.withPackages (ps: [
|
||||||
ps.mkdocs
|
ps.mkdocs,
|
||||||
|
ps.mkdocs-terminal
|
||||||
]))
|
]))
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue