Pull to refresh

Comments 6

прикольная идея с «одна команда делает закладку, а вторая — ищет». Расскажете, как попробуете?
Да. Но это лучше делать на семинаре по MIPSfpga для более взрослой аудитории (а-ля bit.ly/mips-open-at-dac-2019 ). Там промышленное ядро микроконтроллера, в котором 60,000 строк кода, так что найти нетривиально. В schoolMIPS все быстро находится, он слишком маленький (менее тысячи строк кода).
Ну это не закладка, это просто баг. Закладка — это чтобы сделать нечто вредоносное в системе с управлением снаружи. Например хардверная закладка может помочь софтверному трояну внутри обычной программы помочь сделать что-то нехорошее :-)
Внимательно слежу за вашими публикациями (в этот раз ваш русский язык немного смущает меня, особенно «на школе»… должно быть «в школе»). Вы много уделяете внимания образованию и подготовке кадров. Я с вами полностью согласен — «кадры решают всё»! Но кадры надо готовить, нужны рабочие места для стажёров, инженеров, программистов. Если взять 10 студентов старших курсов, то половина из них по окончании ВУЗа не будет работать по специальности. Ещё 2-3 продержаться год-два, а потом или декретный отпуск или коммерция. Останется 2-3 инженера, которые за лет 5 станут ведущими инженерами, а через 10 лет лишь 1 станет тем локомотивом, который будет тянуть коллектив. И это оптимальный вариант при наличии соц пакета и плюшек.
Теперь к учебному курсу. Предварительная подготовка и вводный базовый курс — это хорошая идея для слушателей (летней школы). На этом этапе можно отобрать заинтересованных людей. А программу курса я бы скорректировал. Мне кажется надо начинать со светодиода и кнопки/выключателя.
1) Знакомим с wire & reg (Verilog). Кнопка нажата — LED горит, а не нажата — не горит.
2) Делаем инвертор (NOT). Делаем 2 кнопки и знакомим с AND, OR, XOR.
3) Используем кнопку №1 для задания состояния (0/1), кнопку №2 — для режима (set/reset), сохраняем/читаем значение в регистр.
4) Тактирование. Фронты сигнала (нарастание/спад). Мигание светодиодом, делители частоты на 2, 4, 8… Смотрим результаты лог.анализатором.
5) Умножитель частоты. Основы PLL, фазовые сдвиги. Стабилизация генератора.
6) Семисегментный индикатор, автомат состояний и др.
7) Основы работы VGA, расчёт частот, сигналы, виды ЦАП, заливка экрана, двухпортовая память.
Удачи вам!
Программа обучения кажется слишком насыщенной.
*** 1) Знакомим с wire & reg (Verilog). Кнопка нажата — LED горит, а не нажата — не горит. 2) Делаем инвертор (NOT). Делаем 2 кнопки и знакомим с AND, OR, XOR. ***

Простой логический элемент в ПЛИС с кнопками на входе у меня есть — см. отчет с прошедшего семинара — habr.com/ru/post/452872

*** 3) Используем кнопку №1 для задания состояния (0/1), кнопку №2 — для режима (set/reset), сохраняем/читаем значение в регистр. ***

Я считаю, что D-триггер нужно показывать на микросхемах малой степени интеграции, до упражнений с ПЛИС. Это по моему опыту нагляднее и доходчивее, чем сразу в ПЛИС:



Кроме этого я ввожу D-триггеры в теоретическом курсе.

*** 4) Тактирование. Фронты сигнала (нарастание/спад). Мигание светодиодом, делители частоты на 2, 4, 8… Смотрим результаты лог.анализатором. ***

Логический анализатор я собираюсь в следующий семинар включить. Тактирование я ввожу в онлайн-курсе и потом в упражнении на D-триггере выше.

Что касается делителя частоты на 2,4,… с помощью битов счетчика, то я его хочу из упражнений убрать и вместо этого везде использовать enable signal. Так принято в design IP для ASIC и так методологически правильнее, так как это избегает гонок при моделировании и проблем в static timing analysis.

Т.е. вместо:

always @ (posedge clk ...)… counter <= counter + 1;
wire clk2 = counter [3];
always @ (posedge clk ...)…
always @ (posedge clk2 ...)…

везде писать:

always @ (posedge clk ...)… counter <= counter + 1;
wire enable = counter [3];
always @ (posedge clk ...)…
always @ (posedge clk ...)… else if (enable)…

*** 5) Умножитель частоты. Основы PLL, фазовые сдвиги. Стабилизация генератора. ***

Объяснить аналоговую часть PLL детям нереально, а для понимания циклов и микроархитектуры не нужно. Пусть вначале поделают кучу упражнений с фиксированным clock-ом на 50 MHz или 100 MHz на плате и просто следят по результатам static timing analysis, что их дизайн в эту частоту вписывается.

*** 6) Семисегментный индикатор, автомат состояний и др. ***

Семисегментный индикатор у меня есть — см. habr.com/ru/post/452872

7) Основы работы VGA, расчёт частот, сигналы, виды ЦАП, заливка экрана, двухпортовая память.

Если просто показать основы работы VGA, они зевнут, скажут спасибо и об этом забудут. Так как на летнюю школу есть три недели, пусть сделают полноценную простую игру со спрайтами. Виды ЦАП можно опустить — это не необходимо для простой игры.

Стоит ли иметь в двухнедельном курсе процессор — это еще неясно, но мы проведем эксперимент. Может и стоит, а может нет.
Sign up to leave a comment.

Articles