Курс по FPGA и Clash
В данном курсе мы научимся программировать ПЛИС (Программируемые Логические Интегральные Схемы, они же FPGA). Для этого пройдём путь от элементарных битовых операций на SystemVerilog до описания относительно нетривиальной логики на Clash.
В данном курсе нас будет интересовать применение ПЛИС прежде всего для разработки и отладки внутренней логики (архитектуры) процессоров. По этой причине мы практически не будем уделять внимание особенностям работы с периферией (различного рода датчиками, индикаторами, которые могут подключаться или даже уже присутствуют на многих современных платах с ПЛИС), хотя базовое знакомство и с ними, безусловно, будет. Если при знакомстве с ПЛИС не "поморгать диодами", то знакомство нельзя считать успешным.
Цель курса — познакомиться с высокоуровневым средством программирования ПЛИС Clash. Тем не менее, предполагается, что слушатель не знаком с ПЛИС и разработкой для них, и потому курс начнётся с основ и будет разбит на два больших блока: сперва изучим основы работы с ПЛИС на основе SystemVerilog, а затем перейдём к 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. 
 
-