Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
howtos:fpga [2025/09/20 12:40] – créée hackens-pub | howtos:fpga [2025/09/20 14:04] (Version actuelle) – hackens-pub | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
< | < | ||
- | # FPGA ULX3S (EPC5-85F) | + | # Comment utiliser le FPGA d' |
Ligne 24: | Ligne 24: | ||
## Génération des fichiers verilog à partir de Bluespec | ## Génération des fichiers verilog à partir de Bluespec | ||
- | ```make | + | Bluespec est un langage de description de hardware de haut niveau, il permet de décrire des circuits sous forme d'un ensemble de règles que le compilateur ordonnance. |
- | PACKAGES | + | On peut ainsi faire clignoter une LED avec le programme suivant : |
+ | |||
+ | ```bsc | ||
+ | interface Top; | ||
+ | (* always_ready, | ||
+ | method Bit#(8) led; | ||
+ | endinterface | ||
+ | |||
+ | (* synthesize *) | ||
+ | module mkTop(Top); | ||
+ | Reg# | ||
+ | |||
+ | rule incr_counter; | ||
+ | counter <= counter | ||
+ | endrule | ||
+ | |||
+ | method led = truncateLSB(counter); | ||
+ | endmodule | ||
+ | ``` | ||
+ | et le compiler sous forme de fichiers verilog avec cette commande: | ||
+ | |||
+ | ```bash | ||
bsc \ | bsc \ | ||
-verilog \ | -verilog \ | ||
- | -vdir | + | -vdir |
-no-warn-action-shadowing | -no-warn-action-shadowing | ||
-keep-fires -aggressive-conditions -show-schedule \ | -keep-fires -aggressive-conditions -show-schedule \ | ||
-cpp +RTS -K128M -RTS -show-range-conflict \ | -cpp +RTS -K128M -RTS -show-range-conflict \ | ||
- | -p $(PACKAGES) | + | -p :+ -g mkTop -u Main.bsv |
``` | ``` | ||
- | - ``` PACKAGES``` liste des dossiers dont les fichiers .bs et .bsv sont importés, le + représente la lib standard | + | - ``` -p :+``` liste des dossiers dont les fichiers .bs et .bsv sont importés, le + représente la librarie |
- ``` Top``` est le fichier principale | - ``` Top``` est le fichier principale | ||
- ``` mkTop``` est le module principale | - ``` mkTop``` est le module principale | ||
- | - ``` keep-fires``` utilise le sceduling intuitif: active chaque | + | - ``` keep-fires``` utilise le sceduling intuitif: active chaque |
- | - ``` aggressive-conditions``` | + | - ``` aggressive-conditions``` |
## Génération des LUT (look-up-table) avec yosys | ## Génération des LUT (look-up-table) avec yosys | ||
```make | ```make | ||
- | yosys -DULX3S -q -p " | + | yosys -DULX3S -q -p " |
``` | ``` | ||
- | - ``` LIB``` est la liste des fichiers verilog | + | - ``` rtl/mkTop.v``` est la liste des fichiers verilog, dans ce cas le fichier générer par Bluespec |
- ``` mkTop``` est le module verilog principale | - ``` mkTop``` est le module verilog principale | ||
- ``` mkTop.json``` est la sortie de yosys | - ``` mkTop.json``` est la sortie de yosys | ||
Ligne 63: | Ligne 84: | ||
- ``` --85k``` nombre de LUT du FPGA | - ``` --85k``` nombre de LUT du FPGA | ||
- on peut ajouter ``` -gui``` pour avoir une interface graphique et voir le placement sur le FPGA | - on peut ajouter ``` -gui``` pour avoir une interface graphique et voir le placement sur le FPGA | ||
+ | |||
+ | Pour cet exemple, | ||
+ | |||
+ | ``` | ||
+ | BLOCK RESETPATHS; | ||
+ | BLOCK ASYNCPATHS; | ||
+ | ## ULX3S v2.0 and v2.1 | ||
+ | |||
+ | # The clock " | ||
+ | LOCATE COMP " | ||
+ | IOBUF PORT " | ||
+ | FREQUENCY PORT " | ||
+ | |||
+ | # JTAG and SPI FLASH voltage 3.3V and options to boot from SPI flash | ||
+ | # write to FLASH possible any time from JTAG: | ||
+ | SYSCONFIG CONFIG_IOVOLTAGE=3.3 COMPRESS_CONFIG=ON MCCLK_FREQ=62 MASTER_SPI_PORT=ENABLE SLAVE_SPI_PORT=DISABLE SLAVE_PARALLEL_PORT=DISABLE; | ||
+ | # write to FLASH possible from user bitstream, not possible form JTAG: | ||
+ | # SYSCONFIG CONFIG_IOVOLTAGE=3.3 COMPRESS_CONFIG=ON MCCLK_FREQ=62 MASTER_SPI_PORT=DISABLE SLAVE_SPI_PORT=DISABLE SLAVE_PARALLEL_PORT=DISABLE; | ||
+ | |||
+ | LOCATE COMP " | ||
+ | IOBUF PORT " | ||
+ | |||
+ | ## LED indicators " | ||
+ | LOCATE COMP " | ||
+ | LOCATE COMP " | ||
+ | LOCATE COMP " | ||
+ | LOCATE COMP " | ||
+ | LOCATE COMP " | ||
+ | LOCATE COMP " | ||
+ | LOCATE COMP " | ||
+ | LOCATE COMP " | ||
+ | IOBUF PORT " | ||
+ | IOBUF PORT " | ||
+ | IOBUF PORT " | ||
+ | IOBUF PORT " | ||
+ | IOBUF PORT " | ||
+ | IOBUF PORT " | ||
+ | IOBUF PORT " | ||
+ | IOBUF PORT " | ||
+ | ``` | ||
## Génération du bitstream avec ecppack | ## Génération du bitstream avec ecppack |