Языки описания схем — различия между версиями

Материал из Кафедра математической кибернетики
Перейти к: навигация, поиск
м
(не показаны 45 промежуточные версии 1 участника)
Строка 1: Строка 1:
Обязательный курс для студентов группы 518/2. Курс проводит [[Подымов Владислав Васильевич|Подымов В.В.]]
+
''Актуальность информации: осенний семестр 2021/2022 учебного года.''
 +
 
 +
Обязательный курс для студентов группы 518мк_дус. Курс проводит [[Подымов Владислав Васильевич|Подымов В.В.]]
  
 
= Материалы занятий =
 
= Материалы занятий =
  
''Здесь будут выкладываться план и слайды занятий по мере их проведения''
+
'''[[Media: Hdl_lecture_01.pdf|Блок 1.]]''' Организационные вопросы.
  
'''[[Media: Hdl_lecture_01.pdf|Блок 1.]]''' Небольшое вступление и организационные вопросы.
+
'''[[Media: Hdl_lecture_02.pdf|Блок 2.]]''' Вспоминаем дискретную математику: булевы функции, булевы формулы, схемы из функциональных элементов.
  
'''[[Media: Hdl_lecture_02.pdf|Блок 2.]]''' КМОП-транзисторы: как это работает, и причём тут схемы из функциональных элементов.
+
'''[[Media: Hdl_lecture_03.pdf|Блок 3.]]''' Как устроена цифровая аппаратура. Немного физики: как схемы из функциональных элементов связаны с реальным миром.
  
'''[[Media: Hdl_lecture_03.pdf|Блок 3.]]''' Комбинационные схемы.
+
'''[[Media: Hdl_lecture_04.pdf|Блок 4.]]''' Логические вентили. Комбинационные схемы.
  
'''[[Media: Hdl_lecture_04.pdf|Блок 4.]]''' Последовательные схемы, и немного о тактовом сигнале
+
'''[[Media: Hdl_lecture_05.pdf|Блок 5.]]''' Вспоминаем дискретную математику: схемы из функциональных элементов с задержкой.
  
'''[[Media: Hdl_lecture_05.pdf|Блок 5.]]''' Модули. Шины. Регистры. RTL.
+
'''[[Media: Hdl_lecture_06.pdf|Блок 6.]]''' Комбинационные схемы с обратной связью. Основные триггеры.
  
'''[[Media: Hdl_lecture_06.pdf|Блок 6.]]''' Практика: построение последовательных схем.
+
'''[[Media: Hdl_lecture_07.pdf|Блок 7.]]''' Ещё несколько слов о сигналах: активный уровень, передний фронт, задний фронт, такт.
  
'''[[Media: Hdl_lecture_07.pdf|Блок 7.]]''' ASIC и ПЛИС.
+
'''[[Media: Hdl_lecture_08.pdf|Блок 8.]]''' Ещё несколько слов о триггерах: синхронные триггеры, асинхронные триггеры, типичные входы триггеров.
  
'''[[Media: Hdl_lecture_08.pdf|Блок 8.]]''' Verilog: базовый синтаксис.
+
'''[[Media: Hdl_lecture_09.pdf|Блок 9.]]''' Последовательные схемы.
  
'''[[Media: Hdl_lecture_09.pdf|Блок 9.]]''' Verilog: симуляция.
+
'''[[Media: Hdl_lecture_10.pdf|Блок 10.]]''' Шины. Регистры. Уровень регистровых передач (RTL).
  
'''[[Media: Hdl_lecture_10.pdf|Блок 10.]]''' Практика: Verilog (база).
+
'''[[Media: Hdl_practice_01.pdf|Практический блок 1.]]''' Разработка комбинационных и последовательных схем.
  
'''[[Media: Hdl_lecture_11.pdf|Блок 11.]]''' Что такое процессор. Архитектура системы команд.
+
----
 +
''Слайды будут обновляться по мере проведения занятий''
  
'''[[Media: Hdl_lecture_12.pdf|Блок 12.]]''' Основные функциональные блоки процессора.
+
'''[[Media: Hdl_lecture_11.pdf|Блок 11.]]''' Verilog: от логических значений до комбинационных схем.
  
'''[[Media: Hdl_lecture_13.pdf|Блок 13.]]''' Verilog: синтез.
+
'''[[Media: Hdl_lecture_12.pdf|Блок 12.]]''' Verilog: основы программной симуляции.
  
'''[[Media: Hdl_lecture_14.pdf|Блок 14.]]''' Понятия операционного и управляющего автоматов.
+
'''[[Media: Hdl_practice_02.pdf|Практический блок 2.]]''' Verilog и непрерывное присваивание.
  
'''[[Media: Hdl_lecture_15.pdf|Блок 15.]]''' Как спроектировать операционный автомат. Комбинационный управляющий автомат.
+
'''[[Media: Hdl_lecture_13.pdf|Блок 13.]]''' Verilog: синтезируемость кода
  
'''[[Media: Hdl_lecture_16.pdf|Блок 16.]]''' Процессор: операционный автомат, комбинационный управляющий автомат.
+
'''[[Media: Hdl_lecture_14.pdf|Блок 14.]]''' Verilog: ещё пара слов о процедурных командах.
  
'''[[Media: Hdl_lecture_17.pdf|Блок 17.]]''' Как спроектировать управляющий автомат.
+
'''[[Media: Hdl_lecture_15.pdf|Блок 15.]]''' Verilog: аппаратная семантика постоянной процедуры.
  
'''[[Media: Hdl_lecture_18.pdf|Блок 18.]]''' Verilog: немного синтаксического сахара.
+
'''[[Media: Hdl_practice_03.pdf|Практический блок 3.]]''' Verilog и процедуры.
  
'''[[Media: Hdl_lecture_19.pdf|Блок 19.]]''' Verilog: реализация управляющего автомата.
+
'''[[Media: Hdl_lecture_16.pdf|Блок 16.]]''' Вспоминаем дискретную математику: автоматы.
  
= Условия получения зачёта =
+
'''[[Media: Hdl_lecture_17.pdf|Блок 17.]]''' Автоматы и синхронные схемы.
  
Необходимое и достаточное условие получения зачёта - это выполнение большого задания, коротко описываемого так: спроектировать и функционально протестировать процессор на языке Verilog.
+
'''[[Media: Hdl_lecture_18.pdf|Блок 18.]]''' Пара слов о символьных автоматах.
  
Обязательное требование для операционного и управляющего автоматов процессора (части 1-3):
+
'''[[Media: Hdl_practice_04.pdf|Практический блок 4.]]''' Автоматы.
'''они должны полностью удовлетворять стандарту синтеза''' (блок 13).
+
  
[[Media: Hdl isa macros.zip|Макроопределения для удобной работы с архитектурой системы команд блока 11.]]
+
'''[[Media: Hdl_lecture_19.pdf|Блок 19.]]''' Verilog: немного синтаксического сахара.
  
== Часть 1 ==
+
'''[[Media: Hdl_practice_05.pdf|Практический блок 5.]]''' Verilog и продвинутый синтаксис: параметры, массивы, генерация.
  
Спроектировать на языке Verilog основные функциональные блоки процессора (блок 12) для модельной архитектуры системы команд (блок 11). Фактическое число ячеек в памяти данных можно выбирать произвольным - достаточным для полноценной наглядной функциональной симуляции. По согласованию может быть выбран и другой набор особенностей архитектуры процессора (другая система команд, другая конфигурация блоков, ...).
+
'''[[Media: Hdl_lecture_20.pdf|Блок 20.]]''' Verilog: как реализовать автомат.
  
== Часть 2 ==
+
'''[[Media: Hdl_lecture_21.pdf|Блок 21.]]''' "Грамотная" разработка схем. Данные и управление. Операционный и управляющий автоматы.
  
Используя написанные в части 1 модули, спроектировать операционный автомат процессора (блок 16) с модельной архитектурой системы команд (блок 11) на языке Verilog.
+
'''[[Media: Hdl_lecture_22.pdf|Блок 22.]]''' Как спроектировать операционный автомат.
  
''По желанию, рекомендуется'': спроектировать и программно просимулировать однотактовый процессор.
+
'''[[Media: Hdl_lecture_23.pdf|Блок 23.]]''' Как дополнить операционный автомат управляющим.
  
''По согласованию'' может быть выбрана другая архитектура системы команд (например, совместимая с архитектурой MIPS).
+
'''[[Media: Hdl_lecture_24.pdf|Блок 24.]]''' Как уменьшить автомат. Автоматы с таймерами.
  
== Часть 3 ==
+
'''[[Media: Hdl_practice_06.pdf|Практический блок 6.]]''' Операционный и управляющий автоматы в Verilog.
  
Добавив к спроектированному в части 2 операционному автомату подходящий управляющий автомат, спроектировать процессор с модельной архитектурой системы команд (блок 11) со следующими особенностями работы.
+
'''[[Media: Hdl_lecture_aux_01.pdf|Кое-что ещё 1.]]''' Протоколы передачи данных. Общее описание протокола UART.
  
=== Сложный вариант для желающих лучше разобраться в управляющих автоматах ===
+
'''[[Media: Hdl_lecture_aux_02.pdf|Кое-что ещё 2.]]''' Схемная реализация протокола UART.
  
* Он имеет тактовый вход clk, вход сброса rst, а также однобитовые входы hold, step и go.
+
'''[[Media: Hdl_lecture_aux_03.pdf|Кое-что ещё 3.]]''' Классификация протоколов передачи данных.
* Он имеет три режима работы: обычный (команды выполняются одна за одной согласно семантике), приостановленный (выполнение команд контролируется сигналами на входах) и заблокированный.
+
* Он выполняет каждую команду оптимально по времени в предположении о том, что каждый основной функциональный блок (блок 12) распространяет сигнал за 1 единицу времени, а остальные подсхемы работают мгновенно.
+
* По переднему фронту clk: если hold = 1, то процессор не выполняет команду, и вместо этого переходит в приостановленный режим работы.
+
* В приостановленном режиме
+
** если step = go = 0 во время переднего фронта clk, то не происходит перезаписи ячеек памяти, и текущая выполняемая команда не изменяется;
+
** если go = 1 во время переднего фронта clk, то процессор переходит в обычный режим работы;
+
** если go = 0 и step = 1 во время переднего фронта clk, то процессор выполняет одну команду и переходит в заблокированный режим.
+
* В заблокированном режиме
+
** если go = 1 во время переднего фронта clk, то процессор переходит в обычный режим работы;
+
** если go = 0 и step = 0 во время переднего фронта clk, то процессор переходит в приостановленный режим работы;
+
** если go = 1 и step = 1 во время переднего фронта clk, то не происходит перезаписи ячеек памяти, и текущая выполняемая команда не изменяется.
+
  
=== Простой вариант для всех остальных, не влекущий никаких штрафов ===
+
'''[[Media: Hdl_lecture_aux_04.pdf|Кое-что ещё 4.]]''' Протокол SPI для двух устройств.
  
* Он имеет тактовый вход clk, вход сброса rst, а также однобитовые входы go, br, dir и hold.
+
'''[[Media: Hdl_lecture_aux_04.pdf|Кое-что ещё 5.]]''' Протокол SPI для произвольного числа устройств. Состояние высокого импеданса.
* Он работает обычным образом всегда, кроме одной ''особой'' ситуации: hold = 1, текущая команда - условное ветвление, и сейчас передний фронт clk, во время которого команда должна выполниться.
+
* В особой ситуации происходит следующее:
+
** если go = 0, то процессор ничего не делает: на следующем такте пытается выполниться та же команда условного ветвления, что и на текущем;
+
** если go = 1 и br = 1, то процессор выполняет ветвление как обычно;
+
** если go = 1 и br = 0, то процессор игнорирует результат сравнения значений регистров команды ветвления: если dir = 0, то на следующем такте выполняет следующую команду памяти инструкций, а если dir = 1, то ту, к которой совершился бы "прыжок" при срабатывании ветвления (равенстве значений в beq, неравенстве значений в bne).
+
  
 +
= Условия получения зачёта =
  
== Часть 4 ==
+
(Cм. слайды "Блок 1")
 
+
Для получения зачёта достаточно '''в срок''' сдать решения четырёх заданий, которые будут выдаваться по мере проведения занятий.
Описать модули тестирования (блок 9), демонстрирующие работу описанного в предыдущих частях процессора, корректную с точки зрения функциональной симуляции.
+
Если хотя бы одно решение не сдано в срок, то для получения зачёта потребуется выполнить особое ''штрафное задание''.
 
+
= Достаточное техническое оснащение =
+
 
+
Для полноценного выполнения задания курса достаточно иметь компьютер с Linux и установленными на нём (как правило, стандартными) пакетами
+
* '''iverilog''' (компилятор схемных дизайнов) и
+
* '''gtkwave''' (визуализатор диаграмм сигналов).
+
 
+
Допускается (хотя и не поощряется ввиду возможных проблем и неудобств) работа в Windows: достаточно скачать и установить '''[http://iverilog.icarus.com/ Icarus Verilog]''', в стандартной комплектации содержащий исполняемые файлы
+
* '''iverilog.exe''' (компилятор схемных дизайнов),
+
* '''vvp.exe''' (средство исполнения скомпилированных дизайнов) и
+
* '''gtkwave.exe''' (визуализатор диаграмм сигналов).
+
 
+
Работа со схемными дизайнами при помощи других средств не возбраняется.
+
  
 
= Литература =
 
= Литература =
 
== Основная ==
 
== Основная ==
* Harris, Harris, Digital Design and Computer Architecture, 2nd  Edition, Elseveir, 2013
+
* Harris, Harris. Digital Design and Computer Architecture, 2nd  Edition. Elseveir. 2013.
* Thomas, Moorby, The Verilog Hardware Description Language, 5th Edition, Springer, 2008
+
** Перевод: "Харрис, Харрис. Цифровая схемотехника и архитектура компьютера. ДМК Пресс. 2018."
 +
** В сети в открытом доступе лежат и другие версии перевода (не выпущенные официально в печать).
 +
* Thomas, Moorby. The Verilog Hardware Description Language, 5th Edition. Springer. 2008.
  
 
== Дополнительная ==
 
== Дополнительная ==
* J. Hennesy, D. Patterson, Computer Organization and Design: The Hardware/Software Interface, 5th Edition, Morgan Kaufmann, 2013
+
* Hennesy, Patterson. Computer Organization and Design: The Hardware/Software Interface, 5th Edition. Morgan Kaufmann. 2013.
* S. Palnitkar, Verilog HDL, 2nd Edition, 2003
+
* Palnitkar. Verilog HDL, 2nd Edition. 2003.
* F. Vahid, Digital Design with RTL Design, VHDL, and Verilog 2nd Edition, Wiley, 2010
+
* Vahid. Digital Design with RTL Design, VHDL, and Verilog, 2nd Edition. Wiley. 2010.

Версия 12:39, 24 сентября 2021

Актуальность информации: осенний семестр 2021/2022 учебного года.

Обязательный курс для студентов группы 518мк_дус. Курс проводит Подымов В.В.

Материалы занятий

Блок 1. Организационные вопросы.

Блок 2. Вспоминаем дискретную математику: булевы функции, булевы формулы, схемы из функциональных элементов.

Блок 3. Как устроена цифровая аппаратура. Немного физики: как схемы из функциональных элементов связаны с реальным миром.

Блок 4. Логические вентили. Комбинационные схемы.

Блок 5. Вспоминаем дискретную математику: схемы из функциональных элементов с задержкой.

Блок 6. Комбинационные схемы с обратной связью. Основные триггеры.

Блок 7. Ещё несколько слов о сигналах: активный уровень, передний фронт, задний фронт, такт.

Блок 8. Ещё несколько слов о триггерах: синхронные триггеры, асинхронные триггеры, типичные входы триггеров.

Блок 9. Последовательные схемы.

Блок 10. Шины. Регистры. Уровень регистровых передач (RTL).

Практический блок 1. Разработка комбинационных и последовательных схем.


Слайды будут обновляться по мере проведения занятий

Блок 11. Verilog: от логических значений до комбинационных схем.

Блок 12. Verilog: основы программной симуляции.

Практический блок 2. Verilog и непрерывное присваивание.

Блок 13. Verilog: синтезируемость кода

Блок 14. Verilog: ещё пара слов о процедурных командах.

Блок 15. Verilog: аппаратная семантика постоянной процедуры.

Практический блок 3. Verilog и процедуры.

Блок 16. Вспоминаем дискретную математику: автоматы.

Блок 17. Автоматы и синхронные схемы.

Блок 18. Пара слов о символьных автоматах.

Практический блок 4. Автоматы.

Блок 19. Verilog: немного синтаксического сахара.

Практический блок 5. Verilog и продвинутый синтаксис: параметры, массивы, генерация.

Блок 20. Verilog: как реализовать автомат.

Блок 21. "Грамотная" разработка схем. Данные и управление. Операционный и управляющий автоматы.

Блок 22. Как спроектировать операционный автомат.

Блок 23. Как дополнить операционный автомат управляющим.

Блок 24. Как уменьшить автомат. Автоматы с таймерами.

Практический блок 6. Операционный и управляющий автоматы в Verilog.

Кое-что ещё 1. Протоколы передачи данных. Общее описание протокола UART.

Кое-что ещё 2. Схемная реализация протокола UART.

Кое-что ещё 3. Классификация протоколов передачи данных.

Кое-что ещё 4. Протокол SPI для двух устройств.

Кое-что ещё 5. Протокол SPI для произвольного числа устройств. Состояние высокого импеданса.

Условия получения зачёта

(Cм. слайды "Блок 1") Для получения зачёта достаточно в срок сдать решения четырёх заданий, которые будут выдаваться по мере проведения занятий. Если хотя бы одно решение не сдано в срок, то для получения зачёта потребуется выполнить особое штрафное задание.

Литература

Основная

  • Harris, Harris. Digital Design and Computer Architecture, 2nd Edition. Elseveir. 2013.
    • Перевод: "Харрис, Харрис. Цифровая схемотехника и архитектура компьютера. ДМК Пресс. 2018."
    • В сети в открытом доступе лежат и другие версии перевода (не выпущенные официально в печать).
  • Thomas, Moorby. The Verilog Hardware Description Language, 5th Edition. Springer. 2008.

Дополнительная

  • Hennesy, Patterson. Computer Organization and Design: The Hardware/Software Interface, 5th Edition. Morgan Kaufmann. 2013.
  • Palnitkar. Verilog HDL, 2nd Edition. 2003.
  • Vahid. Digital Design with RTL Design, VHDL, and Verilog, 2nd Edition. Wiley. 2010.