Курс по FPGA и Clash
В данном курсе мы научимся программировать ПЛИС (Программируемые Логические Интегральные Схемы, они же FPGA). Для этого пройдём путь от элементарных битовых операций на SystemVerilog до описания относительно нетривиальной логики на Clash.
В данном курсе нас будет интересовать применение ПЛИС прежде всего для разработки и отладки внутренней логики (архитектуры) процессоров. По этой причине мы практически не будем уделять внимание особенностям работы с периферией (различного рода датчиками, индикаторами, которые могут подключаться или даже уже присутствуют на многих современных платах с ПЛИС).
Цель курса — познакомиться с высокоуровневым средством программирования ПЛИС Clash. Тем не менее, предполагается, что слушатель не знаком с ПЛИС и разработкой для них, и потому курс начнётся с основ. При этом, многие сопутствующие разделы, такие как основы математической логики, архитектура процессора, язык программирования Haskell (его подробное изучение) будут оставлены на самостоятельное изучение.
В качестве введения, для ознакомления с предметом и историей вопроса, предлагается прочитать минимум первые четыре раздела статьи "Разработка цифровой аппаратуры нетрадиционным методом: Yosys, SpinalHDL, VexRiscv".
Рекомендуемые для изучения материалы
Для тех, кто чувствует дискомфорт при словах bash, Linux, Haskell, цифровая аппаратура, архитектура процессора, могут быть полезны следующие материалы.
-
Сара Л. Харрис, Дэвид Харрис. Цифровая схемотехника и архитектура компьютера: RISC-V / пер. с англ. В. С. Яценкова, А. Ю. Романова; под ред. А. Ю. Романова. – М.: ДМК Пресс, 2021. – 810 с.: ил.
-
В идеале целиком, для наших целей стоит прочитать первые 4-5 глав.
-
-
Школа синтеза цифровых схем.
-
Курс, ориентированный, скорее, на разработку классических процессоров (на примере RISC-V).
-
Денис Москвин. Функциональное программирование на языке Haskell.
-
Базовый курс, направленный на понимание функциональной парадигмы.
-
Слегка устарел: например стандартным способом установки Haskell теперь является GHCup, а класс Monad зависит от Applicative.
-
Stephen Diehl. What I Wish I Knew When Learning Haskell.
-
Не книга, а скорее сборник различных библиотек и технологий, используемых в современном Haskell.
-
Miran Lipovača. Learn You a Haskell for Great Good!
-
Классическая книга по Haskell.
-
-
Антон Холомьёв. Учебник по Haskell.
-
Ещё один учебник по Haskell. Тоже слегка устаревший.
-
-
Весьма разносторонний курс вокруг Haskell и функционального программирования в целом. От основ, до различный специфичных расширений.
-
-
Gergő Érdi. Retrocomputing with Clash: Haskell for FPGA Hardware Design.
-
Книга по Clash. На текущий момент (2024 год) единственная в своём роде.
-
Страничка, посвящённая книге, с описанием, содержанием, ссылками на репозитории с кодом, который используется в ней.
-
-
Richard Blum, Linux Fundamentals.
-
Базовая книга по Linux.
-