Языки описания схем — различия между версиями
PodymovVV (обсуждение | вклад) |
PodymovVV (обсуждение | вклад) |
||
Строка 54: | Строка 54: | ||
== Часть 1 == | == Часть 1 == | ||
− | Спроектировать на языке Verilog основные функциональные блоки процессора (блок 12) для модельной архитектуры системы команд (блок 11). Фактическое число ячеек в памяти данных можно выбирать произвольным - достаточным для полноценной наглядной функциональной симуляции. | + | Спроектировать на языке Verilog основные функциональные блоки процессора (блок 12) для модельной архитектуры системы команд (блок 11). Фактическое число ячеек в памяти данных можно выбирать произвольным - достаточным для полноценной наглядной функциональной симуляции. По согласованию может быть выбран и другой набор особенностей архитектуры процессора (другая система команд, другая конфигурация блоков, ...). |
== Часть 2 == | == Часть 2 == | ||
Строка 66: | Строка 66: | ||
== Часть 3 == | == Часть 3 == | ||
− | Добавив к спроектированному в части 2 операционному автомату подходящий управляющий автомат, спроектировать процессор с модельной архитектурой системы команд (блок 11) со следующими особенностями работы | + | Добавив к спроектированному в части 2 операционному автомату подходящий управляющий автомат, спроектировать процессор с модельной архитектурой системы команд (блок 11) со следующими особенностями работы. |
− | * | + | |
− | * | + | === Сложный вариант для желающих лучше разобраться в управляющих автоматах === |
− | * | + | |
− | * | + | * Он имеет тактовый вход clk, вход сброса rst, а также однобитовые входы hold, step и go. |
− | * | + | * Он имеет три режима работы: обычный (команды выполняются одна за одной согласно семантике), приостановленный (выполнение команд контролируется сигналами на входах) и заблокированный. |
+ | * Он выполняет каждую команду оптимально по времени в предположении о том, что каждый основной функциональный блок (блок 12) распространяет сигнал за 1 единицу времени, а остальные подсхемы работают мгновенно. | ||
+ | * По переднему фронту clk: если hold = 1, то процессор не выполняет команду, и вместо этого переходит в приостановленный режим работы. | ||
+ | * В приостановленном режиме | ||
** если step = go = 0 во время переднего фронта clk, то не происходит перезаписи ячеек памяти, и текущая выполняемая команда не изменяется; | ** если step = go = 0 во время переднего фронта clk, то не происходит перезаписи ячеек памяти, и текущая выполняемая команда не изменяется; | ||
** если go = 1 во время переднего фронта clk, то процессор переходит в обычный режим работы; | ** если go = 1 во время переднего фронта clk, то процессор переходит в обычный режим работы; | ||
− | ** если go = 0 и step = 1 во время переднего фронта clk, то процессор выполняет одну команду и переходит в заблокированный режим | + | ** если go = 0 и step = 1 во время переднего фронта clk, то процессор выполняет одну команду и переходит в заблокированный режим. |
− | * | + | * В заблокированном режиме |
** если go = 1 во время переднего фронта clk, то процессор переходит в обычный режим работы; | ** если go = 1 во время переднего фронта clk, то процессор переходит в обычный режим работы; | ||
** если go = 0 и step = 0 во время переднего фронта clk, то процессор переходит в приостановленный режим работы; | ** если go = 0 и step = 0 во время переднего фронта clk, то процессор переходит в приостановленный режим работы; | ||
** если go = 1 и step = 1 во время переднего фронта 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 == |
Версия 14:03, 8 декабря 2017
Обязательный курс для студентов группы 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.
По желанию, рекомендуется: спроектировать и программно просимулировать однотактовый процессор.
По согласованию может быть выбрана другая архитектура системы команд (например, совместимая с архитектурой MIPS).
Часть 3
Добавив к спроектированному в части 2 операционному автомату подходящий управляющий автомат, спроектировать процессор с модельной архитектурой системы команд (блок 11) со следующими особенностями работы.
Сложный вариант для желающих лучше разобраться в управляющих автоматах
- Он имеет тактовый вход clk, вход сброса rst, а также однобитовые входы hold, step и go.
- Он имеет три режима работы: обычный (команды выполняются одна за одной согласно семантике), приостановленный (выполнение команд контролируется сигналами на входах) и заблокированный.
- Он выполняет каждую команду оптимально по времени в предположении о том, что каждый основной функциональный блок (блок 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, то не происходит перезаписи ячеек памяти, и текущая выполняемая команда не изменяется.
Простой вариант для всех остальных, не влекущий никаких штрафов
- Он имеет тактовый вход 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
Описать модули тестирования (блок 9), демонстрирующие работу описанного в предыдущих частях процессора, корректную с точки зрения функциональной симуляции.
Достаточное техническое оснащение
Для полноценного выполнения задания курса достаточно иметь компьютер с 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