Вы абсолютно правы, что, главное преимущества ПЛИС перед МК это параллельность работы в ПЛИС. Но только, что Вы в конце показали на любом даже не самом производительном МК будет прекрасно работать, т.к. скорость опроса портов очень высокая и глаз это не увидит конечно. Тут для зрителей может быть какой другой пример привести со временем. А так урок замечательный, спасибо Вам! Так держать!
Ну справедливости ради, надо сказать, что МК считывает и изменяет состояния портов всё-таки одновременно, т.к. разряды портов группируются в байты, МК считывает и записывает весь байт за раз. А вот анализировать биты в считанном байте и изменять их он будет уже последовательно, путём наложения маск и прочего.
Существуют, однако, МК, содержащие блок программируемой пользователем логики, способные выдать на определенную лапку результат логической функции от нескольких входных сигналов, не пиная ядро. Например, AtTiny416/816 содержат по две таблицы истинности на 3 входа с опционально подключаемым к выходу триггером, туда пара мультиплексоров как раз войдёт. Хотя это, конечно, экзотика.
Интересно, не слышал о таком. Кстати, как известно Альтеру выкупила Интел и теперь не за горами процы с плисками внутри. То что в новых топовых плисинах есть хардовые процы типа ARM - это одно, а вот теперь плиска внутри процессора, как часть АЛУ, т.е. можно реконфигурировать процессор под конкретные задачи, по сути добавлять хитрые ассемблерные команды.
Спасибо за видео. Кто же это додумался такой порядок задать - сначала выходы потом входы. И так в голове каша от синтаксисов разных языков, а тут еще и параметры шиворот на выворот.
Это, видимо , от того что у примитива может быть только один выход, и много входов. А вот то что выход всего один - это неудобно, можно было бы комбинационные схемы в табличном виде задавать легко и просто. Но нет.
21:48 я уже начал изучать Верилог и полагаю, компилятор просто воспринял тип провода по умолчанию как wire, даже если убрать его совсем. Наверно с типом reg так не получилось бы перемещать в модуле куда угодно. Возможно я неправ.
Кстати, наверно, схема не будет один в один со всеми элементами и их наименованиями. Я сделал код, который в одном ассигне делает операцию И и в другом тоже И, у каждого элемента своё имя. А потом взял и третий элемент И поставил между ними. В результате компилятор оптимизировал по своему и выставил просто один элемент 4И-НЕ. (Программа Квартус версии 18)
Да, оптимизирует, притом по жёсткому. Если, скажем, выход какого-нибудь элемента никуда не подключён, то делается вывод что элемент ненужен и он удаляется, следовательно те элементы которые были подключены на его вход становятся не подключёнными, а значит тоже не нужны. И в итоге он так всю схему может выкинуть.
Доброго времени суток! Не сразу, но появился вопрос - в чем смысл именно такого программирования? Cоздание руками очень простых схем или объединение нескольких модулей в один? В этом уроке схемный ввод заменили текстовым вводом. Но что бы или текстовый или графический ввод схемы сделать эту схему надо как минимум в/на чем-то другом создать и уже ее готовую переносить. Тот же счетчик - его руками из DFF строить ? Гугл говорит что счетчик можно и так описать на Verilog, а не строить его руками из wire и dff. reg [3:0]counter; always @(posedge clk) counter
Всё верно. Вы смотрели нулевую серию? Посмотрите. Там мы говорим о том что схемы можно создавать на трёх уровнях абстракции. Здесь рассмотрен самый низкий, так называемый структурный. Есть ещё потоковый, о нём в следующей серии. А есть поведенческий, это Ваш пример. Его мы естественно тоже рассмотрим.
Буду дальше изучать, по вашим видео. Сейчас столкнулся с тем, что не всегда понимаю как сделать назначение регистру или выводу(блокирующее не блокирующее присваивание) Компилятор ругается на мою писанину:D
@@alexroman6246 Начал я со структурного описания потому, что хотел чтобы у начинающих сложилось правильное представление о ПЛИС, что это не программирование, а именно проектирование схем, но об этом уже упоминалось в нулевой серии. Ну а про блокирующее / неблокирующее присвоение это всё есть в следующих сериях, но предлагаю идти последовательно, по порядку, так общая картина сложится в полном объёме.
@@ПЛИСоводство да, я так и сделаю,почему блокирующее и не блокирующее я понимаю, как и то, как работает плис, но вот когда это в тексте все, порой затыкаюсь. Еще не понравился редактор в квартусе, сейчас буду наверное искать что то сторонее, поскольку в 9.1 он не подсвечивает скажем так открывающиеся и закрывающиеся скобки, а когда условий много и модуль объемный - проверить будет очень сложно. Даже после keil и конечно visual studio это шаг назад в отображении синтаксиса.Может прайм и лучше, но мне знающие люди сказали, что после 9.1 сделали отдельную прогу для симуляции, для средних проектов, чтобы произвести симуляцию надо порой больше кода написать, чем для синтеза нужной логики. В общем еще раз спасибо за отличные видео, будем побеждать плис)
@@alexroman6246 Я, в качестве редактора, Notepad++ юзаю, немного вручную подправил подсветку синтаксиса и стало очень даже неплохо. А прогу для симуляции они не сделали, она и раньше была, притом это сторонние производители, просто встроенный симулятор убрали и теперь рекомендуют использовать её, ModelSim называется, вот со следующей серии как раз её и начнём изучать. Но она не единственная, имеются и альтернативы. И да, тесты для схем тоже на Верилоге пишутся, зато это даёт возможность создавать более сложные, динамические тестовые последовательности. В общем удачи в освоении.
Обратите внимание, нумерация серий начинается с §0.
ua-cam.com/video/FSRaHsGdTYo/v-deo.html
Вы абсолютно правы, что, главное преимущества ПЛИС перед МК это параллельность работы в ПЛИС. Но только, что Вы в конце показали на любом даже не самом производительном МК будет прекрасно работать, т.к. скорость опроса портов очень высокая и глаз это не увидит конечно. Тут для зрителей может быть какой другой пример привести со временем. А так урок замечательный, спасибо Вам! Так держать!
Ну справедливости ради, надо сказать, что МК считывает и изменяет состояния портов всё-таки одновременно, т.к. разряды портов группируются в байты, МК считывает и записывает весь байт за раз. А вот анализировать биты в считанном байте и изменять их он будет уже последовательно, путём наложения маск и прочего.
Существуют, однако, МК, содержащие блок программируемой пользователем логики, способные выдать на определенную лапку результат логической функции от нескольких входных сигналов, не пиная ядро. Например, AtTiny416/816 содержат по две таблицы истинности на 3 входа с опционально подключаемым к выходу триггером, туда пара мультиплексоров как раз войдёт. Хотя это, конечно, экзотика.
Интересно, не слышал о таком. Кстати, как известно Альтеру выкупила Интел и теперь не за горами процы с плисками внутри. То что в новых топовых плисинах есть хардовые процы типа ARM - это одно, а вот теперь плиска внутри процессора, как часть АЛУ, т.е. можно реконфигурировать процессор под конкретные задачи, по сути добавлять хитрые ассемблерные команды.
@@ПЛИСоводство habr.com/ru/post/372509/ а вот статья про CLC в PIC
Отличный урок. Спасибо!
Благодарю за мотивацию посдувать пыль с DE10-Standart или DE10-Lite и снова попробовать ПЛИС на вкус.
Желаю удачи в этом интереснейшем деле.
Отличные уроки спасибо
Шикарный урок!
спасибо большое, отличные уроки
already 2021 but its not known. i liked Verilog . thanks for videos
Ценная информация. Спасибо!
Спасибо за видео.
Кто же это додумался такой порядок задать - сначала выходы потом входы.
И так в голове каша от синтаксисов разных языков, а тут еще и параметры шиворот на выворот.
Это, видимо , от того что у примитива может быть только один выход, и много входов. А вот то что выход всего один - это неудобно, можно было бы комбинационные схемы в табличном виде задавать легко и просто. Но нет.
21:48 я уже начал изучать Верилог и полагаю, компилятор просто воспринял тип провода по умолчанию как wire, даже если убрать его совсем. Наверно с типом reg так не получилось бы перемещать в модуле куда угодно. Возможно я неправ.
Если совсем не объявить - даст ошибку. С reg то же самое. Прикол просто у Квартуса такой, видимо как-то в два прохода компилирует.
Кстати, наверно, схема не будет один в один со всеми элементами и их наименованиями. Я сделал код, который в одном ассигне делает операцию И и в другом тоже И, у каждого элемента своё имя. А потом взял и третий элемент И поставил между ними. В результате компилятор оптимизировал по своему и выставил просто один элемент 4И-НЕ. (Программа Квартус версии 18)
Да, оптимизирует, притом по жёсткому. Если, скажем, выход какого-нибудь элемента никуда не подключён, то делается вывод что элемент ненужен и он удаляется, следовательно те элементы которые были подключены на его вход становятся не подключёнными, а значит тоже не нужны. И в итоге он так всю схему может выкинуть.
Спасибо вам!
Смотрите на здоровье.
Доброго времени суток!
Не сразу, но появился вопрос - в чем смысл именно такого программирования? Cоздание руками очень простых схем или объединение нескольких модулей в один?
В этом уроке схемный ввод заменили текстовым вводом. Но что бы или текстовый или графический ввод схемы сделать эту схему надо как минимум в/на чем-то другом создать и уже ее готовую переносить. Тот же счетчик - его руками из DFF строить ?
Гугл говорит что счетчик можно и так описать на Verilog, а не строить его руками из wire и dff.
reg [3:0]counter;
always @(posedge clk)
counter
Всё верно. Вы смотрели нулевую серию? Посмотрите. Там мы говорим о том что схемы можно создавать на трёх уровнях абстракции. Здесь рассмотрен самый низкий, так называемый структурный. Есть ещё потоковый, о нём в следующей серии. А есть поведенческий, это Ваш пример. Его мы естественно тоже рассмотрим.
второй день плис изучаю и так сложно описано все.
мне кажется или
module muxer
(input X1,input X2,input A,output reg Y);
always@(A)
begin
case (A)
0:Y
Именно, но это так называемое поведенческое описание, о нём рассказано в следующих сериях.
Буду дальше изучать, по вашим видео. Сейчас столкнулся с тем, что не всегда понимаю как сделать назначение регистру или выводу(блокирующее не блокирующее присваивание) Компилятор ругается на мою писанину:D
@@alexroman6246 Начал я со структурного описания потому, что хотел чтобы у начинающих сложилось правильное представление о ПЛИС, что это не программирование, а именно проектирование схем, но об этом уже упоминалось в нулевой серии. Ну а про блокирующее / неблокирующее присвоение это всё есть в следующих сериях, но предлагаю идти последовательно, по порядку, так общая картина сложится в полном объёме.
@@ПЛИСоводство да, я так и сделаю,почему блокирующее и не блокирующее я понимаю, как и то, как работает плис, но вот когда это в тексте все, порой затыкаюсь. Еще не понравился редактор в квартусе, сейчас буду наверное искать что то сторонее, поскольку в 9.1 он не подсвечивает скажем так открывающиеся и закрывающиеся скобки, а когда условий много и модуль объемный - проверить будет очень сложно. Даже после keil и конечно visual studio это шаг назад в отображении синтаксиса.Может прайм и лучше, но мне знающие люди сказали, что после 9.1 сделали отдельную прогу для симуляции, для средних проектов, чтобы произвести симуляцию надо порой больше кода написать, чем для синтеза нужной логики. В общем еще раз спасибо за отличные видео, будем побеждать плис)
@@alexroman6246 Я, в качестве редактора, Notepad++ юзаю, немного вручную подправил подсветку синтаксиса и стало очень даже неплохо. А прогу для симуляции они не сделали, она и раньше была, притом это сторонние производители, просто встроенный симулятор убрали и теперь рекомендуют использовать её, ModelSim называется, вот со следующей серии как раз её и начнём изучать. Но она не единственная, имеются и альтернативы. И да, тесты для схем тоже на Верилоге пишутся, зато это даёт возможность создавать более сложные, динамические тестовые последовательности. В общем удачи в освоении.
Уроки хорошие. Но ничего не видно.
Неужели мелко?
@@ПЛИСоводствонормально видно