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

Материал из Кафедра математической кибернетики
Перейти к: навигация, поиск
м
Строка 1: Строка 1:
''Актуальность информации: осенний семестр 2017/2018 учебного года.''
+
''Актуальность информации: осенний семестр 2018/2019 учебного года.''
  
 
Обязательный курс для студентов группы 518/2. Курс проводит [[Подымов Владислав Васильевич|Подымов В.В.]]
 
Обязательный курс для студентов группы 518/2. Курс проводит [[Подымов Владислав Васильевич|Подымов В.В.]]
  
 +
<!--
 
{| border="2" cellpadding="5" cellspacing="0"
 
{| border="2" cellpadding="5" cellspacing="0"
 
|-
 
|-
Строка 9: Строка 10:
 
* Обнаружилось, что в простом варианте управляющего автомата в основном задании курса нет состояний (это схема с комбинационным функционалом). Реализовать этот автомат по-прежнему достаточно для получения зачёта (раз не уследил, то сам виноват).
 
* Обнаружилось, что в простом варианте управляющего автомата в основном задании курса нет состояний (это схема с комбинационным функционалом). Реализовать этот автомат по-прежнему достаточно для получения зачёта (раз не уследил, то сам виноват).
 
|}
 
|}
 +
-->
  
 
= Материалы занятий =
 
= Материалы занятий =
  
''Здесь будут выкладываться план и слайды занятий по мере их проведения''
+
''Слайды будут обновляться по мере проведения занятий''
  
 
'''[[Media: Hdl_lecture_01.pdf|Блок 1.]]''' Небольшое вступление и организационные вопросы.
 
'''[[Media: Hdl_lecture_01.pdf|Блок 1.]]''' Небольшое вступление и организационные вопросы.
Строка 54: Строка 56:
 
= Условия получения зачёта =
 
= Условия получения зачёта =
  
Необходимое и достаточное условие получения зачёта - это выполнение большого задания, коротко описываемого так: спроектировать и функционально протестировать процессор на языке Verilog.
+
Необходимое и достаточное условие получения зачёта - это выполнение большого задания, коротко формулируемого так: спроектировать и функционально протестировать упрощённый процессор на языке Verilog.
  
 
Обязательное требование для операционного и управляющего автоматов процессора (части 1-3):
 
Обязательное требование для операционного и управляющего автоматов процессора (части 1-3):
Строка 63: Строка 65:
 
== Часть 1 ==
 
== Часть 1 ==
  
Спроектировать на языке Verilog основные функциональные блоки процессора (блок 12) для модельной архитектуры системы команд (блок 11). Фактическое число ячеек в памяти данных можно выбирать произвольным - достаточным для полноценной наглядной функциональной симуляции. По согласованию может быть выбран и другой набор особенностей архитектуры процессора (другая система команд, другая конфигурация блоков, ...).
+
Спроектировать на языке Verilog основные функциональные блоки процессора (блок 12) для модельной архитектуры системы команд (блок 11). Фактическое число ячеек в памяти данных можно выбирать произвольным - достаточным для полноценной наглядной функциональной симуляции.
 +
 
 +
По согласованию может быть выбран и другой набор особенностей архитектуры процессора (другая система команд, другая конфигурация блоков, ...).
  
 
== Часть 2 ==
 
== Часть 2 ==
Строка 69: Строка 73:
 
Используя написанные в части 1 модули, спроектировать операционный автомат процессора (блок 16) с модельной архитектурой системы команд (блок 11) на языке Verilog.
 
Используя написанные в части 1 модули, спроектировать операционный автомат процессора (блок 16) с модельной архитектурой системы команд (блок 11) на языке Verilog.
  
''По желанию, рекомендуется'': спроектировать и программно просимулировать однотактовый процессор.
+
''По желанию, рекомендуется'': спроектировать и программно просимулировать однотактовый процессор (блок 16).
  
''По согласованию'' может быть выбрана другая архитектура системы команд (например, совместимая с архитектурой MIPS).
+
По согласованию может быть выбрана другая архитектура системы команд (например, совместимая с архитектурой MIPS).
  
 
== Часть 3 ==
 
== Часть 3 ==
  
Добавив к спроектированному в части 2 операционному автомату подходящий управляющий автомат, спроектировать процессор с модельной архитектурой системы команд (блок 11) со следующими особенностями работы.
+
Добавив к спроектированному в части 2 операционному автомату подходящий управляющий автомат (блок 17), спроектировать процессор с модельной архитектурой системы команд (блок 11) со следующими особенностями работы:
 
+
* Он имеет тактовый вход clk, вход сброса rst, а также однобитовые входы change, step.
=== Сложный вариант для желающих лучше разобраться в управляющих автоматах ===
+
* Входы change и step являются синхронными: значения считываются в моменты передних фронтов сигнала clk (тактов).
 
+
* Он имеет два режима работы: обычный и приостановленный.
* Он имеет тактовый вход clk, вход сброса rst, а также однобитовые входы hold, step и go.
+
* После сброса процессор оказывается в приостановленном режиме.
* Он имеет три режима работы: обычный (команды выполняются одна за одной согласно семантике), приостановленный (выполнение команд контролируется сигналами на входах) и заблокированный.
+
* Если на предыдущем такте change=0, а на текущем change=1, то режим работы процессора переключается (с обычного на приостановленный, с приостановленного на обычный), в противном случае не переключается.
* Он выполняет каждую команду оптимально по времени в предположении о том, что каждый основной функциональный блок (блок 12) распространяет сигнал за 1 единицу времени, а остальные подсхемы работают мгновенно.
+
* Последовательность инструкций, выполняемых процессором, определяется архитектурой системы команд, каждая инструкция выполняется один такт.
* По переднему фронту clk: если hold = 1, то процессор не выполняет команду, и вместо этого переходит в приостановленный режим работы.
+
* В обычном режиме инструкции выполняются на каждом такте.
* В приостановленном режиме
+
* В приостановленном режиме выполнение инструкций управляется сигналом на входе step:
** если step = go = 0 во время переднего фронта clk, то не происходит перезаписи ячеек памяти, и текущая выполняемая команда не изменяется;
+
** если на предыдущем такте step=0, а на текущем step=1, то инструкция выполняется;
** если go = 1 во время переднего фронта clk, то процессор переходит в обычный режим работы;
+
** в противном случае (сейчас step=0; и на предыдущем такте, и сейчас step=1) инструкция не выполняется.
** если go = 0 и step = 1 во время переднего фронта clk, то процессор выполняет одну команду и переходит в заблокированный режим.
+
* В заблокированном режиме
+
** если go = 1 во время переднего фронта clk, то процессор переходит в обычный режим работы;
+
** если go = 0 и step = 0 во время переднего фронта clk, то процессор переходит в приостановленный режим работы;
+
** если go = 1 и step = 1 во время переднего фронта clk, то не происходит перезаписи ячеек памяти, и текущая выполняемая команда не изменяется.
+
 
+
=== Простой вариант для всех остальных, не влекущий никаких штрафов ===
+
 
+
* Он имеет тактовый вход clk, вход сброса rst, а также однобитовые входы go, br, dir и hold.
+
* Он работает обычным образом всегда, кроме одной ''особой'' ситуации: hold = 1, текущая команда - условное ветвление, и сейчас передний фронт clk, во время которого команда должна выполниться.
+
* В особой ситуации происходит следующее:
+
** если go = 0, то процессор ничего не делает: на следующем такте пытается выполниться та же команда условного ветвления, что и на текущем;
+
** если go = 1 и br = 1, то процессор выполняет ветвление как обычно;
+
** если go = 1 и br = 0, то процессор игнорирует результат сравнения значений регистров команды ветвления: если dir = 0, то на следующем такте выполняет следующую команду памяти инструкций, а если dir = 1, то ту, к которой совершился бы "прыжок" при срабатывании ветвления (равенстве значений в beq, неравенстве значений в bne).
+
 
+
  
 
== Часть 4 ==
 
== Часть 4 ==
  
Описать модули тестирования (блок 9), демонстрирующие работу описанного в предыдущих частях процессора, корректную с точки зрения функциональной симуляции.
+
Описать модули тестирования (блок 9), демонстрирующие работу процессора, спроектированного в части 3, корректную с точки зрения функциональной симуляции.
  
 
= Достаточное техническое оснащение =
 
= Достаточное техническое оснащение =

Версия 15:40, 6 сентября 2018

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

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


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

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

Блок 1. Небольшое вступление и организационные вопросы.

Блок 2. КМОП-транзисторы: как это работает, и причём тут схемы из функциональных элементов.

Блок 3. Комбинационные схемы.

Блок 4. Последовательные схемы, и немного о тактовом сигнале

Блок 5. Модули. Шины. Регистры. RTL.

Блок 6. Практика: построение последовательных схем.

Блок 7. ASIC и ПЛИС.

Блок 8. Verilog: базовый синтаксис.

Блок 9. Verilog: симуляция.

Блок 10. Практика: Verilog (база).

Блок 11. Что такое процессор. Архитектура системы команд.

Блок 12. Основные функциональные блоки процессора.

Блок 13. Verilog: синтез.

Блок 14. Понятия операционного и управляющего автоматов.

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

Блок 16. Процессор: операционный автомат, комбинационный управляющий автомат.

Блок 17. Как спроектировать управляющий автомат.

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

Блок 19. Verilog: реализация управляющего автомата.

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

Необходимое и достаточное условие получения зачёта - это выполнение большого задания, коротко формулируемого так: спроектировать и функционально протестировать упрощённый процессор на языке Verilog.

Обязательное требование для операционного и управляющего автоматов процессора (части 1-3): они должны полностью удовлетворять стандарту синтеза (блок 13).

Макроопределения для удобной работы с архитектурой системы команд блока 11.

Часть 1

Спроектировать на языке Verilog основные функциональные блоки процессора (блок 12) для модельной архитектуры системы команд (блок 11). Фактическое число ячеек в памяти данных можно выбирать произвольным - достаточным для полноценной наглядной функциональной симуляции.

По согласованию может быть выбран и другой набор особенностей архитектуры процессора (другая система команд, другая конфигурация блоков, ...).

Часть 2

Используя написанные в части 1 модули, спроектировать операционный автомат процессора (блок 16) с модельной архитектурой системы команд (блок 11) на языке Verilog.

По желанию, рекомендуется: спроектировать и программно просимулировать однотактовый процессор (блок 16).

По согласованию может быть выбрана другая архитектура системы команд (например, совместимая с архитектурой MIPS).

Часть 3

Добавив к спроектированному в части 2 операционному автомату подходящий управляющий автомат (блок 17), спроектировать процессор с модельной архитектурой системы команд (блок 11) со следующими особенностями работы:

  • Он имеет тактовый вход clk, вход сброса rst, а также однобитовые входы change, step.
  • Входы change и step являются синхронными: значения считываются в моменты передних фронтов сигнала clk (тактов).
  • Он имеет два режима работы: обычный и приостановленный.
  • После сброса процессор оказывается в приостановленном режиме.
  • Если на предыдущем такте change=0, а на текущем change=1, то режим работы процессора переключается (с обычного на приостановленный, с приостановленного на обычный), в противном случае не переключается.
  • Последовательность инструкций, выполняемых процессором, определяется архитектурой системы команд, каждая инструкция выполняется один такт.
  • В обычном режиме инструкции выполняются на каждом такте.
  • В приостановленном режиме выполнение инструкций управляется сигналом на входе step:
    • если на предыдущем такте step=0, а на текущем step=1, то инструкция выполняется;
    • в противном случае (сейчас step=0; и на предыдущем такте, и сейчас step=1) инструкция не выполняется.

Часть 4

Описать модули тестирования (блок 9), демонстрирующие работу процессора, спроектированного в части 3, корректную с точки зрения функциональной симуляции.

Достаточное техническое оснащение

Для полноценного выполнения задания курса достаточно иметь компьютер с Linux и установленными на нём (как правило, стандартными) пакетами

  • iverilog (компилятор схемных дизайнов) и
  • gtkwave (визуализатор диаграмм сигналов).

Допускается (хотя и не поощряется ввиду возможных проблем и неудобств) работа в Windows: достаточно скачать и установить Icarus Verilog, в стандартной комплектации содержащий исполняемые файлы

  • iverilog.exe (компилятор схемных дизайнов),
  • vvp.exe (средство исполнения скомпилированных дизайнов) и
  • gtkwave.exe (визуализатор диаграмм сигналов).

Работа со схемными дизайнами при помощи других средств не возбраняется.

Литература

Основная

  • Harris, Harris, Digital Design and Computer Architecture, 2nd Edition, Elseveir, 2013
  • 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
  • S. Palnitkar, Verilog HDL, 2nd Edition, 2003
  • F. Vahid, Digital Design with RTL Design, VHDL, and Verilog 2nd Edition, Wiley, 2010