Open Source nástroje pro FPGA

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
Zmije
Příspěvky: 1513
Registrován: 30 čer 2005, 02:00
Bydliště: Pardubický kraj

Open Source nástroje pro FPGA

#1 Příspěvek od Zmije »

Ahoj. Vždycky mě štvalo, že kvůli práci s FPGA musím rebootovat z Linuxu na Windows a používat tu několika GB obludu s uzavřeným kódem a od určitého vydání free verze záměrně zpomalenou.

Když jsem se snažil najít Open Source variantu nástrojů objevil jsem jen několik zmínek v diskusním fóru, že se tím zabývají na univerzitách v rámci výzkumu, ale pro běžné použití to není, protože výrobci tají popis bitstreamu a vnitřního uspořádání a než se reverzním inženýrstvím potřebné informace získají, daný čip se přestane vyrábět.

V posledních letech se ledy hnuly a nemožné se stává skutečností. Našel jsem spoustu odkazu a videí. Některá jsou v češtině. Nejlépe jsou podporovány FPGA od Lattice a částečně některé řady od Xilinx. Trochu mi kazí radost jen to, že preferovaným jazykem je Verilog na úkor VHDL, které jsem se kdysi učil a mám k němu literaturu a tutoriály. Jak se zdá, Verilog se stává použávanějším jazykem v praxi, tak mi asi nezbyde než se jej naučit.

Nejdříve videa v češtině
FPGA: Nebojte se hradlových polí (Tomáš Mudruňka)
LinuxDays 2015 - FPGA pro BFU - Marek Vašut
FPGA intimne (Marek Vašut)
Martin Hubáček: Jak na FPGA s open-source nástroji (horší kvalita zvuku)
Genetické vylepšování a aproximace hardware a software - Lukáš Sekanina
Zlepšení evolučními výpočty - Lukáš Sekanina

Anglicky
Open-Source Tools for FPGA Development - Marek Vašut
Open-Source FPGA tools, how and why?
35C3 - Snakes and Rabbits
Timothy Ansell - Xilinx Series 7 FPGAs Now Have a Fully Open Source Toolchain!
Taking nextpnr to the next level! - David Shah - ORConf 2019
Open Source FormalVerification in VHDL - Pepijn de Vos

Web
yosys
symbiflow.github.io
icestudio.io
icestorm
Icarus Verilog
GHDL
Migen
nMigen
Amaranth HDL (ex. nMigen)
enjoy-digital.fr
LiteX
Pepijn de Vos - Web
nightly builds of open source FPGA tools
MyHDL
Silice

VHDL <--> VERILOG translator
Open Source
ocean-logic vhd2vl
github vhd2vl
vhd2icestorm
github vhdlpp
Komerční
Synapticad V2V

I don’t often convert VHDL to Verilog but when I do
Will SymbiFlow ever run VHDL as it does Verilog and if not why?

Open Source IP jádra
opencores
LiteDRAM
Naposledy upravil(a) Zmije dne 09 bře 2023, 11:02, celkem upraveno 21 x.

Wolfik
Příspěvky: 1076
Registrován: 28 črc 2009, 02:00

#2 Příspěvek od Wolfik »

Pro profesionální použití se bez těch uzavřených nástrojů výrobců neobejdeš.


Wolfik
Příspěvky: 1076
Registrován: 28 črc 2009, 02:00

#4 Příspěvek od Wolfik »

Cokoliv, co může obsahovat vysokorychlostní přenos dat (>1Gb), tcp/ip stacky, PCI-E-like sběrnice, DSP zpracování.

Co vím v naší firmě, tak jakékoliv pokusy tohoto typu kvůli plnění termínů totálně shořeli. :D
Prostě se jede Xilinx Vivado a pokud se dá koupit nějaké řešení, tak se to vezme, i když ten support stojí často dost na hovno.

Jsi ochotný tu tvoji sbírku materiálů nasdílet?

Uživatelský avatar
Habesan
Příspěvky: 6924
Registrován: 12 led 2009, 01:00
Bydliště: Plzeňsko
Kontaktovat uživatele:

#5 Příspěvek od Habesan »

Jenže vy víte, že za svoje úsilí ty prachy dostanete zpátky.

Tuhle jistotu běžný bastlíř nemá.
A proto se dodnes používaj orloje s deseti pouzdry 74xx.

(Pamatuj, tohle je Bastlírna !)
Sháním hasičák s CO2 "sněhový", raději funkční.
(Nemusí mít platnou revizi.)
(Celkově budu raději, když se to obejde bez papírů.)

Wolfik
Příspěvky: 1076
Registrován: 28 črc 2009, 02:00

#6 Příspěvek od Wolfik »

Jsem názoru že na typické "bastl" projekty i s megalomanským nádechem jsou FPGA overkill. ;)
Vždycky se tam dá nasrat nějaký procesor.

Uživatelský avatar
Zmije
Příspěvky: 1513
Registrován: 30 čer 2005, 02:00
Bydliště: Pardubický kraj

#7 Příspěvek od Zmije »

Záleží na tom, čemu říkáš profesionální použítí. Každý výrobek nutně nepotřebuje nejvyšší řady FPGA se speciálními bloky, navíc se bude dostupnost otevřených IP jader zlepšovat. Pokud s těmito nástroji jsou schopni udělat RISC-V procesor a rozjet na tom Linux, tak je to perfektní výsledek, na hranici toho co umožní free verze nástrojů od výrobců.

Před deseti lety nebylo z těchto nástrojů opensource nic. Možná se za několik (10, 15, ..) let výrobci FPGA vzpamatují a akceptují Open Source nástroje tak jak to to před 15 lety udělali výrobci procesorů s podporou překladače GCC a Linuxu.
Naposledy upravil(a) Zmije dne 31 led 2023, 12:01, celkem upraveno 1 x.

Uživatelský avatar
Zmije
Příspěvky: 1513
Registrován: 30 čer 2005, 02:00
Bydliště: Pardubický kraj

#8 Příspěvek od Zmije »

Vysokorychlostní periferie to pravděpodobně nezvládá, DSP možná částečně. Myslím že je jen otázka času, kdy to bude umět.

Pro studenty a bastlíře je to ideální.
Že je FPGA pro bastliřské projekty overkil? Možná je, ale když je cena za desku se středně velkým FPGA méně než 100$, vývojové prostředí zdarma, tak proč se nenaučit něco nového a zajímavého. Oni ti "profíci" nepadají z nebe.

Open Source nástroje mají přidanou hodnotu v tom, že se člověk může podívat i pod kapotu, tam kam ho komeršní SW kvůli své uzavřenosti nepustí, tím získat hlubší vhled do problematiky než má majitel super drahého profi klikátka.
Naposledy upravil(a) Zmije dne 31 led 2023, 12:46, celkem upraveno 10 x.

Uživatelský avatar
Zmije
Příspěvky: 1513
Registrován: 30 čer 2005, 02:00
Bydliště: Pardubický kraj

#9 Příspěvek od Zmije »

GHDL se zdá být použitelný alespoň na simulace kódu ve VHDL.
Na Ubuntu 18.04 bohužel není v repozitářích. Zkompiloval jsem ho podle skriptu a ještě doinstaloval GTKWave a editor Atom, který měl uvedený v prezentaci Martin Hubáček.

Kód: Vybrat vše

sudo apt install gtkwave atom
Našel jsem web FPGA simulace, blog Using GHDL to simulate VHDL a video Getting Started with VHDL on Linux (GHDL & GTKWave). Nevýhoda je špatná čitelnost kódu v malém oknu. Když už jsem to přepisoval, tak to dávám k dispozici.

ha.vhdl

Kód: Vybrat vše

library ieee;
use ieee.std_logic_1164.all;

entity ha is
  port (
    a: in  std_ulogic;
    b: in  std_ulogic;
    o: out std_ulogic;
    c: out std_ulogic
  );
end ha;

architecture behave of ha is
begin
  o <= a xor b;
  c <= a and b;
end behave;
ha_tb.vhdl

Kód: Vybrat vše

library ieee;
use ieee.std_logic_1164.all;

entity ha_tb is
end ha_tb;

architecture test of ha_tb is
  component ha
    port (
      a: in  std_ulogic;
      b: in  std_ulogic;
      o: out std_ulogic;
      c: out std_ulogic
    );
  end component;

  signal a, b, o, c : std_ulogic;
begin
  half_adder: ha port map(a => a, b => b, o => o, c =>c);

  process begin

    a <= 'X';
    b <= 'X';
    wait for 1 ns;

    a <= '0';
    b <= '0';
    wait for 1 ns;

    a <= '0';
    b <= '1';
    wait for 1 ns;

    a <= '1';
    b <= '0';
    wait for 1 ns;

    a <= '1';
    b <= '1';
    wait for 1 ns;

    assert false report "Reached end of test";
    wait;
  end process;
end test;
Příkazy

Kód: Vybrat vše

# Kontrola syntaxe
ghdl -s ha.vhdl
ghdl -s ha_tb.vhdl
# Analýza
ghdl -a ha.vhdl
ghdl -a ha_tb.vhdl
# Build simulace
ghdl -e ha_tb
# Spuštění simulace
ghdl -r ha_tb
# Vytvoření vcd
ghdl -r ha_tb --vcd=ha.vcd
# Zobrazení
gtkwave ha.vcd

Uživatelský avatar
h_honza
Příspěvky: 109
Registrován: 01 úno 2020, 01:00
Bydliště: Praha 1

#10 Příspěvek od h_honza »

Celý problém s uzavřenými nástroji pro FPGA vězí v "zadním konci", tedy ve fyzickém návrhu. Ve Vivadu se tomu říká Place and Route a generování bitstreamu. Tohle totiž potřebuje hodně detailní informace o tom, jak je FPGA udělané, tolik, že by se prý ten obvod dal podle toho okopírovat. To nám aspoň tvrdili lidi z vývoje Xilinxu. Teď už asi architektura a obvodová technika jednotlivých výrobců zkonvergovaly natolik, že výrobci ty informace uvolňují. Následkem toho se hodně pracuje na různých alternativních návrhových systémech. Pokud já vím, poskytované informace jsou komplet snad právě jen u Lattice.
Že existují otevřené simulátory a "přední konec", tedy syntéza z RTL, není až takové překvapení. Algoritmy se vyvíjejí od osmdesátých let. Nicméně vrtat se v tom není příliš snadné, jsou to navrstvené heuristiky na problémy, které se exaktně nedají řešit ani náhodou.
Vivado funguje pod linuxem OK, aspoň nám ano. Je to hrozná obluda, ale to je hodně dáno právě knihovnami informací o jednotlivých čipech. A existují volné omezené licence, které by pro menší nekomerční projekty mohly stačit.
FPGA pro amatérské projekty vůbec nemusí být overkill. Jakékoli zpracování rychlejších signálů, třeba z kamery, vyjde podstatně lépe. Problém jsou samozřejmě počáteční investice (čas, sádlo :-)).

Uživatelský avatar
Zmije
Příspěvky: 1513
Registrován: 30 čer 2005, 02:00
Bydliště: Pardubický kraj

#11 Příspěvek od Zmije »

Lattice ice40, Lattice ecp5 by mělý být blízko 100%, stejně tak QuickLogic EOS S3 a QuickLogic QLF K4N8.

Xillinx 7 jen základ.

Altera je zatím bez podpory.

Edit: Už se pracuje i na Alteře (projekt Mistral)

Uživatelský avatar
petula
Příspěvky: 836
Registrován: 22 kvě 2016, 02:00
Bydliště: Čelákovice / Brandýs n.L / Stará Boleslav
Kontaktovat uživatele:

#12 Příspěvek od petula »

FPGA má smysl u projektů, kde se zaplatí náklady na vývoj. Jestliže budu dělat projekt, kde prodám 100 kusů desek a obvodové řešení dokážu udělat s 20 digitálními obvody bez procesoru nebo s pěti digitálními obvody a jedním procesorem, pak nemá smysl řešit FPGA.
Další případ, kdy se FPGA nechá použít, jsou ustálené a známé FPGA řešení pro bridge ke sběrnicím (PCI, VME). Zde netřeba již nic vyvíjet, vezme se hotové řešení.

Uživatelský avatar
Zmije
Příspěvky: 1513
Registrován: 30 čer 2005, 02:00
Bydliště: Pardubický kraj

#13 Příspěvek od Zmije »

V čem je vývoj s FPGA/CPLD složitější než s logickými obvody? Podle mě se u obojího řeší stejný typ problému. U FPGA s řešením pomůže vývojové prostředí, u log. obvodů je více ruční práce.

Jestli máš řešení s CPU a 20 log. obvody, tak tam nech CPU a místo 20 log. obvodů dej jedno CPLD, ve výsledku to bude menší, flexibilní s menší spotřebou a levnější.

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“