По просьбе преподавателя одного из российских вузов выписал список тем, связанных с MIPSfpga
По просьбе преподавателя одного из российских вузов выписал список тем, связанных с MIPSfpga. Это теоретически может помочь встроить лабы в различные программы. Список является микстурой из Харриса & Харриса и всяких индустриальных навыков. Короче чего вижу, о том пою:
-
Концепции, которыми, как мы ожидаем, студент уже владеет. Если чем-то нет, можно будет устроить короткий ликбез:
-
Общие вопросы электронной промышленности
-
Электронная индустрия, полупроводниковая индустрия, индустрия средств автоматизации проектирования (Electronic Design Automation — EDA), индустрия полупроводниковой интеллектуальной собственности (Semiconductor IP).
-
Уровни абстракции системы на кристалле — программы, архитектура / система команд, микроархитектура / устройство конвейера, уровень регистровых передач (Register Transfer Level — RTL), уровень логических элементов, уровень транзисторов, уровень физики.
-
Маршрут разработки системы на кристалле: спецификация, описание на RTL, logic synthesis, place & route, GDSII, производство.
-
Уровни моделирования: моделирование системы, моделирование на уровне системы команд (instruction set simulator), моделирование на уровне языка описание аппаратуры (Hardware Description Language — HDL), дискретное моделирование, очередь событий, дельта-цикл.
-
Почему FPGA? Почему ASIC? Экономика разработки и производства разных типов микросхем — Application-Specific Integrated Circuit (ASIC) и Field-Programmable Gate Array (FPGA). Баланс между стоимостью, гибкостью, количеством, начальными тратами и тратами за время жизни проекта.
-
-
Основый цифровой логики
-
Комбинационная логика: базовые логические элементы, базовые комбинационные блоки (мультиплексоры, дешифраторы), временные характеристики (задержка распостранения, задержка реакции)
-
Последовательностная логика: D-триггеры, временные характеристики (время предустановки, время удержания), временные ограничения, максимальная тактовая частота, синхронизаторы асинхронных входов
-
Цифровые функциональные узлы: арифметические схемы, базовые последовательностные блоки (счетчики, сдвигающие регистры), память (статическая, динамическая)
-
Конечные автоматы, диаграммы состояний, использование
-
Концепция конвейера, применимость для повышения пропускной способности
-
-
Языки описания аппаратуры, желательно Verilog (хотя и VHDL OK)
-
Модули, порты, экземпляры (instance), иерархия модулей, параметризованные модули
-
Типы данных (reg, wire, logic), значения x, регистовые файлы, выражения
-
Оператор непрерывного присваивания, always-блоки, блокирующие и неблокирующие единовременные присваивания
-
Операторы if, case, for; конструкции task и function; полезно но не обязательно — generate
-
Подмножество для синтеза и симуляции, правила использования присваиваний в синтезируемом RTL-подмножестве
-
Среда тестирования на Verilog (не SystemVerilog), timescale, спецификация задержек, несинтезируемые циклы while, генерация тактового сигнала и сброса
-
Использование любого симулятора Verilog-а (Synopsys VCS, Cadence IUS / NCVerilog, Mentor ModelSim / Questa, Icarus Verilog)
-
Понимание временных диаграмм
-
Общее представление, как синтезируются различные конструкции синтезируемого подмножеста HDL
-
-
Концепция архитектуры компьютера, ассемблер
-
Команды, операнды, регистры, константы
-
Адрес, память, базовый регистр, смещение, прямое и обратное размещение байтов (little/big endian)
-
Арифметические и логические операции
-
Метки, условные и безусловные переходы
-
Вызов подпрограммы, стек, передача параметров, возврат значения
-
Представление соответствия конструкций и деклараций языка программирования Си и ассемблера
-
Исключения и прерывания
-
-
Элементы микроархитектуры, устройство конвейера
-
Измерение производительности, максимальная тактовая частота, IPC, DMIPS / MHz, CoreMark / MHz
-
Сравнение однотактного процессора, многотактного процессора и конвейерного процессора, приостановки, сбросы, байпас / форвардинг
-
Основы кэшей, локальность обращений к памяти, ассоциативные кэши, кэши прямого отбражения, наборно-ассоциативные кэши, алгоритмы выткснения
-
-
Протоколы для систем на кристалле и систем на плате
-
Протоколы систем на кристалле — AMBA APB, AHB-Lite, AXI, OCP
-
Протоколы систем на плате — SPI, UART, I2C — общие принципы
-
-
Общие для разработчика навыки работы с компьютером
-
Программирование на Си, использование make, системы контроля версий (GitHub) итд
-
-
-
Концепции и навыки, которыми владеть желательно, но их можно ввести и в процессе семинара по MIPSfpga
-
Работа с Xilinx Vivado и Altera Quartus II — общие вопросы
-
Создание проекта
-
Связывание портов с выходами FPGA
-
Задание ограничений по временным характеристикам
-
Рассматривание схем до и после синтеза и mapping-а
-
Чтение отчетов синтезатора, place & route, negative slack, max frequency, utilization
-
Загрузка в FPGA
-
-
Работа с Xilinx Vivado и Altera Quartus II — более специальные вопросы
-
Генерация макро для PLL. Что это такое, зачем это нужно, как это сделать
-
Как подсказать синтезатору, что тот или иной модуль — память. Файлы инициализации памяти, директивы ram_style (Xilinx), ram_init_file (Altera), синтезируемого $readmemh
-
-
Работа с симулятором Verilog-а Mentor ModelSim Student Edition
-
Структура среды тестирования / testbench
-
Создание проекта, симуляция
-
Анализ временных диаграм, использование waveform viewer
-
-
Работа с Codescape — средой разработки программного обеспечения для MIPS на основе GNU (gcc, gdb и т.д.)
-
Использование BusBlaster и OpenOCD
-
BusBlaster — проба для загрузки программ с PC в устройство с интерфейсом JTAG (в данном случае MIPS-specific EJTAG) и работе с отладчиком GDB
-
OpenOCD — программное обеспечение для BusBlaster
-
-
Элементы ассемблера MIPS
-
Можно для скорости введения попрактиковаться полчаса на MIPS MARS Simulator
-
-
Обзор процессорного ядра MIPS microAptiv UP, на основе которого сделан MIPSfpga
-
Структура конвейера
-
Кэши и управление ими
-
Протокол внешней шины AHB-Lite
-
-
-
Разного рода связанные темы, которые привязаны к тематике (их знать для начала работы с MIPSfpga не требуется, более того, MIPSfpga может помочь их освоить)
-
Улучшенные микроархитектуры, длинные конвейеры, предсказание переходов, суперскалярные конвейеры, внеочередное выполнение команд, векторные расширения, многопоточность — как вообще, так и на примере MIPS
-
Виртуальная память вообще и конкретно в MIPSfpga, трансляция адресов и ее применение, буфер ассоциативной трансляции и его строение, защита памяти
-
Создание многоядерных систем с когерентными кэшами, протоколы MESI, directory-based и т.д. — как вообще, так и на примере MIPS
-
Технологии верификации on-chip протоколов и RTL блоков используя SystemVerilog и coverage-driven constrained-random verification methodology, обзор библиотеки Universal Verification Methodology (UVM)
-
Технологии верификации процессора и систем, совместная симуляция аппаратного и программного обеспечения
-
Создание сопроцессоров, специализированных вычислителей на основе UDI/CorExtend и Cop2
-
Исследование баланса между вычислениями в софтвере и хардвере, создание специализированных средств разработки для гибкого распределения подобныз вычислений
-
Изначально текст опубликован в http://panchul.livejournal.com/484787.html