Vlákno názorů k článku Navrhujeme a vyrábíme vlastní CPU: kolik nás to bude stát a proč to chceme? od KarelE - Ten popis toho, co je VHDL, se mi...

  • Článek je starý, nové názory již nelze přidávat.
  • 26. 2. 2025 23:01

    KarelE

    Ten popis toho, co je VHDL, se mi moc nelíbí. Tyhle jazyky (my jsme na škole programovali FPGA ve Verilogu, ale je to skoro stejné) jsou zvláštní tím, že umožňují fungovat na mnoha úrovních najednou.

    Část obvodu můžete popsat tím, co tam je a jak je to propojené. Jinou část popíšete pomocí funkcí a časování. Ještě jinou část zadáte jako stavový automat. O překlad těhle věcí na "hardware" se stará velice komplexní software, jehož součástí je obrovská knihovna popisující různý HW. Není to překlad jako u klasických jazyků, je to syntéza a jejím výsledkem je návod pro konfiguraci pro konkrétní FPGA nebo podklady pro jiný SW, který podle toho zpracuje návrh skutečného obvodu.

    A pak je ještě další úroveň, že je to vlastně programovací jazyk. Má to smyčky, podmínky, funkce, proměnné. Vy si nadefinujete nějakou část obvodu a pak ji můžete opakovaně použít. Například si uděláte sčítačku na 4 bity a tu si nasekáte kam potřebujete, klidně ve smyčce. Překladač tenhle kód vykoná tak, aby získal výsledný celý obvod. A ten syntetizuje. A začátečníkům to podráží nohy tím, že část programu je sekvenční, ale výsledek je paralelní (ve smyslu ve smyčce to natáhlo 32 drátů mezi hradly/LUT/apod., ale ty už pak fungují všechny najednou).

    Něco jako assembler + C + python + bash v jednom. Hodně lidí to z počátku mátlo, protože nevěděli jak začít. Ty jazyky vám dávají obrovskou volnost a vše se dá dělat mnoha různými způsoby a na jiných úrovních abstrakce. Ale také za to platíte tím, že musíte vědět, jak něco dělat a jak ne - protože fakt, že něco jde, neznamená, že je to tak dobře. I malá kosmetická změna může ve výsledku znamenat, že potřebujete větší FPGA. Respektive se vám prodraží výroba a i pár centů je znát, když to pak vyrábíte v sériích po milionech.

    Důležité je se těch jazyků nebát. Experimentovat a simulovat. Zažijete mraky "aha momentů". A zábavy. Pro hračičky nutnost! Ale je lepší na to nebýt sám, protože tohle je hodně o snaze porozumět. A to se dělá nejlépe tak, že se to snažíte někomu vysvětlit.

  • 27. 2. 2025 9:24

    Martin Beran

    Ten popis toho, co je VHDL, se mi moc nelíbí.

    Já se chci soustředit na návrh CPU, nemám v úmyslu psát další tutoriál VHDL. Proto jsem se o něm v prvním dílu zmínil jen stručně a něco málo víc bude příště. Chtěl jsem je vypíchnout to, že kód ve VHDL nepopisuje algoritmus, ale zapojení obvodu.

    A pak je ještě další úroveň, že je to vlastně programovací jazyk. Má to smyčky, podmínky, funkce, proměnné. Vy si nadefinujete nějakou část obvodu a pak ji můžete opakovaně použít.

    Není to programování ve smyslu, že by ty smyčky, podmínky... vykonával výsledný obvod. Vyhodnotí se jednou při syntéze a podle výsledku se nakonfiguruje FPGA, Pro jednoduchost pomíjím simulace, kde se kód opravdu vykonává.

  • 4. 3. 2025 0:05

    KarelE

    Chápu. Co jsem chtěl napsat já je, že VHDL nepopisuje nutně zapojení obvodu. Klidně v něm napiště algoritmus. Pokud použijete správné konstrukce (a knihovny), tak vám to dá očekávaný výsledek. Kupříkladu si můžete signály definovat pomocí výrazů: "X <= A when S = '1' else B;"

    Syntéza se pak sama postará o to, aby navrhla nějaký HW, který tohle bude realizovat. V zásadě tak nemusíte vědět nic o věcech jako jsou komparátory, jak pospojovat D obvody apod. S tímhle si v zásadě hrají jen studenti a autoři knihoven.

    Právě to, že můžete použít různé úrovně abstrakce a ty spolu míchat v jednom kódu, je pro tyhle jazyky specifické. CPU si v tom napíšete i v případě, že o obvodech moc nevíte. Zapojí je to za vás.