Stránka 1 z 1
Open Source nástroje pro FPGA
Napsal: 09 kvě 2020, 12:59
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
Napsal: 09 kvě 2020, 19:35
od Wolfik
Pro profesionální použití se bez těch uzavřených nástrojů výrobců neobejdeš.
Napsal: 09 kvě 2020, 20:22
od Zmije
Napsal: 09 kvě 2020, 22:09
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.
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?
Napsal: 09 kvě 2020, 22:22
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 !)
Napsal: 09 kvě 2020, 22:48
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.
Napsal: 09 kvě 2020, 23:52
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.
Napsal: 14 kvě 2020, 12:27
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.
Napsal: 04 črc 2021, 11:17
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.
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
Napsal: 04 črc 2021, 22:33
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

).
Napsal: 04 črc 2021, 23:10
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)
Napsal: 02 led 2022, 20:47
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í.
Napsal: 04 led 2022, 19:37
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ší.