Verilog - Язык Проектирования Схем §2

  Рет қаралды 10,387

ПЛИСоводство

ПЛИСоводство

Күн бұрын

Пікірлер: 51
@user-zj8ib5sw7l
@user-zj8ib5sw7l 5 жыл бұрын
Спасибо за труды!
@ПЛИСоводство
@ПЛИСоводство 5 жыл бұрын
Смотрите на здоровье. )
@__dimoon__
@__dimoon__ 5 жыл бұрын
Спасибо за лекции, все понятно и очень интересно!
@None-sh9sw
@None-sh9sw 5 жыл бұрын
Добавлю пару фраз про работу в FARе: При сохранении файла из редактора (F4), нажать Shift+F2 - будет меню с выбором символа-символов перевода строки. Так же находясь в редакторе можно ввести любой код символа, нажав Alt на клавиатуре и на дополнительной(NUM) клавиатуре десятичный код символа (действует только на дополнительной, num клавиатуре. с цифрами под клавишами F1-F12 не сработает). Для примера - зажав и удерживая Alt нажать и отпустить цифру 1 на дополнительной клавиатуре, отпустить Alt и увидим смайлик ☺. Если ввести код 3 - увидим лайк в виде сердца ♥.
@ПЛИСоводство
@ПЛИСоводство 5 жыл бұрын
Про Shift+F2 не знал. Спасибо.
@liliansirbu840
@liliansirbu840 4 жыл бұрын
eto super kanal, spasibo. a mozhete sdelat' primer kak skrestit' cy7c68013a i FPGA v meste? ili kak c ADC prjamo na LCD? ocheni mne interesno kak eto realizovat' )))
@ПЛИСоводство
@ПЛИСоводство 4 жыл бұрын
cy7c68013a eto mikroshema USB-PHY? USB v planah est', no ne obeshay chto budet imeno eta mikroshema. ADC tozhe budet, a pro LCD mozhno posmotret' sdes': kzbin.info/www/bejne/d6m0pZWInc-jj6M
@ВикторАнтонович-э6ы
@ВикторАнтонович-э6ы 4 жыл бұрын
Длина результата умножения равна сумме длин умножаемых переменных. Я удивлён, что компилятор позволил тебе поставить 10 бит выход, когда требуется 16. В Vivado такое в ошибку сразу выходит. Компилятор не будет составлять таблицу истинности для операций. У него есть уже готовые образы схем. Он проверяет есть ли DSP элементы и если их нет, то берёт готовый модуль(схему). Если бы компиляторы составляли таблицу истинности, то, к примеру, таблица истинности со 100 переменными компилировалась бы больше дня, а то и намного больше(точные цифры не помню). В крайнем случае используют BDD(Бинарные решающие диаграммы).
@ПЛИСоводство
@ПЛИСоводство 4 жыл бұрын
Какая минута?
@ВикторАнтонович-э6ы
@ВикторАнтонович-э6ы 4 жыл бұрын
@@ПЛИСоводство Про умножение 21:00. Про таблицу истинности 35:10.
@ПЛИСоводство
@ПЛИСоводство 4 жыл бұрын
@@ВикторАнтонович-э6ы 1. Мда, чёт я тут зарапортовался, десятичную и двоичную системы в кучу свалил. А Квартус - да, у него бывают такие приколы с разрядностями. 2. Не, ну почему? Как он возьмёт готовый модуль, если у нас в выражении, скажем не одна операция стоит, а несколько? Каскадировать начнёт? Тогда схема чрезмерно распухнет. Как он работает достоверно неизвестно, очень может быть что и таблицу истинности составляет. Сминимизировать таблицу истинности на 16 переменных (как в данном случае) не так уж сложно, там же по мимо карт Карно есть куча разных методов хорошо ложащихся на компьютерную обработку. А таблица истинности на 100 переменных это таблица на 2^100 строчек, такая-то может и действительно день компилироваться, таких лучше избегать, и тут уже, по-моему, никакие методы не спасут.
@ВикторАнтонович-э6ы
@ВикторАнтонович-э6ы 4 жыл бұрын
@@ПЛИСоводство Он будет выполнять операции отдельно по приоритету. Это как в языках высокого уровня, каждая операция подразумевает какую-либо функцию. Так и тут для операций используются готовые модули. Только они потом оптимизируются под длину входных переменных. А на счёт методов, то уже давно используют BDD вместо таблиц истинности. BDD позволяют минимизировать функции состоящие даже из 400 переменных. Вы думаете, что при большом количестве операций, к примеру умножение, деление, сложение и тд., компилятор создаст одну схему, а не будет создавать отдельно для каждой операции схему(если нет DSP-блоков)?
@ПЛИСоводство
@ПЛИСоводство 4 жыл бұрын
@@ВикторАнтонович-э6ы >компилятор создаст одну схему, а не будет создавать отдельно для каждой операции схему Я не проверял, но по логике вещей - да, иначе жутко не оптимально получается. Предположим имеем выражение наподобие "X = A х B / C + D - Е". По-вашему он сначала поставит умножитель, потом на его выходе делитель, потом сумматор, потом вычитатель и всё это вместе не минимизирует?
@galchenko61
@galchenko61 3 жыл бұрын
Почему у вас так быстро происходит компиляция? у меня версия 20.1, компиляция идет раз в 8 дольше.
@ПЛИСоводство
@ПЛИСоводство 3 жыл бұрын
Потому-что у меня версия 9.1. После неё Квартус испортился. Ну и плюс я компиляцию на монтаже вырезаю.
@ЭндиДюфрейн-ь3я
@ЭндиДюфрейн-ь3я 2 жыл бұрын
Здравствуте! я не досмотрел до конца, поставил на паузу, хотел спросить эта среда чувствительна к регистру?
@ПЛИСоводство
@ПЛИСоводство 2 жыл бұрын
да
@G4era
@G4era 2 жыл бұрын
Здравствуйте! Скажите, а в чём различие RTL viewer и Technology map viewer? Я когда пробовал написать компаратор, смотрел и туда и туда, в RTL всё понятно и ожидаемо, а в Technology map viewer схема сложнее и больше почему то.
@ПЛИСоводство
@ПЛИСоводство 2 жыл бұрын
RTL - это, упрощённо говоря, внутреннее представление Quartus-а Verilog-кода, тот же код только в графическом виде, как бы идеальная математическая модель кода. Technology map - это тот же RTL, но уже предварительно размещённый по ячейкам FPGA, а для этого немного преобразованный, но ещё не до конца, финальный вариант это то что будет в разделе Fitter.
@G4era
@G4era 2 жыл бұрын
@@ПЛИСоводство спасибо!
@andreya3423
@andreya3423 2 жыл бұрын
Спасибо за видио. Язык описания жесть. Думаю чужой код тут вообще не прочесть. Если не смотреть с начало, а сразу перейти 1:46:00, и посмотреть код... то не кто не сказал что он делает.
@ПЛИСоводство
@ПЛИСоводство 2 жыл бұрын
Потоковое описание - оно такое. Мне сейчас самому минут пять потребовалось чтобы разобраться.
@nikitagrishin306
@nikitagrishin306 5 жыл бұрын
Написал все как в примере и не получается увидеть результат на плате. Из этого вопросы: 1. Откуда брать тактовый сигнал C. Ведь именно эти импульсы считает счётчик 2. Зачем нужны триггеры для сигналов T, R и зачем нужен вход T (вход счета)?
@ПЛИСоводство
@ПЛИСоводство 5 жыл бұрын
1. Тактовый сигнал поступает от тактового генератора, это такой внешний элемент относительно ПЛИС, вырабатывает прямоугольные импульсы, конкретно этот работает на частоте 25МГц, и подключён он в моём случае к выводу 23. 2. Триггеры для сигналов T, R нужны для синхронизации. T, R - это сигналы от кнопок, на кнопки мы жмём не синхронно с тактовой частотой, и если такой сигнал придёт в неудачный момент, то схема может сбойнуть. Потому-то и нужно все асинхронные сигналы синхронизировать. Подробнее тут kzbin.info/www/bejne/bmOwepaunpqjhtE А вход Т нужен для возможности остановки счёта и его продолжения.
@nikitagrishin306
@nikitagrishin306 5 жыл бұрын
@@ПЛИСоводствонужно какие то дополнительные действия производить, чтобы получить эту тактовую частоту с встроенного кварца на ПЛИС?
@ПЛИСоводство
@ПЛИСоводство 5 жыл бұрын
@@nikitagrishin306 Конкретно в этой ПЛИС (Циклон 4) встроенного кварца нет. Тактовую частоту можно получить только с внешнго тактового генератора. И это должен быть именно генератор, а не кварц, т.е. он должен выдавать готовый прямоугольный сигнал. Если плата покупная, то он уже должен быть распаян на плате.
@nikitagrishin306
@nikitagrishin306 5 жыл бұрын
@@ПЛИСоводство ещё вопрос, если у меня на плате есть тактовый генератор с кварцем на 50МГц как тогда мне получить с него частоту, можете подсказать?
@ПЛИСоводство
@ПЛИСоводство 5 жыл бұрын
@@nikitagrishin306 Да точно так же. Надо выяснить на какую ногу ПЛИС он заведён и указать её в коде, у меня на плате это 23 нога, что и указано в 4-ой строчке. И так как генератор 50МГц, т.е. в два раза быстрее чем тут, то и разрядность счётчика надо уменьшить в два раза, если хотим сохранить туже скорость мигания диода.
@TSkale1
@TSkale1 4 жыл бұрын
Делал счетчик полностью по примеру, только гора предупреждений по поводу неиспользуемых pinов почему то не исчезла даже после конкатенации. Не пойму в чем может быть проблема: module Counter (output [23:0]Q, output T, R, input C); wire TQ, RQ; DT Sync[1:0](.Q({TQ, RQ}), .D({T, R}), .C(C)); wire [23:0]Y = {24{!RQ}} & (({24{TQ}} & (Q + 1'd1)) | ({24{!TQ}} & Q)); DT DT[23:0](.Q(Q), .D(Y), .C(C)); endmodule module DT(output Q, input D, input C); DFF DT(.q(Q), .d(D), .clk(C), .clrn(1'd1), .prn(1'd1)); endmodule Warning (10030): Net "T" at Counter.v(2) has no driver or initial value, using a default initial value '0' Warning (10030): Net "R" at Counter.v(2) has no driver or initial value, using a default initial value '0' Warning: Output pins are stuck at VCC or GND Warning: Design contains 1 input pin(s) that do not drive logic
@ПЛИСоводство
@ПЛИСоводство 4 жыл бұрын
Может T, R это input-ы должны быть, а не output-ы?
@TSkale1
@TSkale1 4 жыл бұрын
@@ПЛИСоводство благодарю, самые глупые ошибки в упор не вижу, но запятые не забываю. Кстати а есть ли какие нибудь редакторы кода, которые в HDL среде котируются?
@ПЛИСоводство
@ПЛИСоводство 4 жыл бұрын
@@TSkale1 Я notepad++ юзаю, мне там подсветка синтаксиса нравится, если поднастроить немного.
@putman77
@putman77 3 жыл бұрын
Спасибо за видео. А неужели нельзя создать мультиплексор на условиях типа: if selector=1 output_1 = input endif if selector=2 output_2 = input endif if selector=3 output_3 = input endif и так далее ... я правда ПЛИС никогда не программировал, только начал изучать. Иссемблер, си, только знаю.
@ПЛИСоводство
@ПЛИСоводство 3 жыл бұрын
Какой мультиплексор, на какой минуте?
@putman77
@putman77 3 жыл бұрын
@@ПЛИСоводство ой, наверное это я с прошлым видео перепутал. Смотрю на протяжение дня, с перерывами Вас. Там где про мультиплексоры рассказывали, с минимизацией расходования блоков. Можно же и условиями сделать, а не логикой. Но так похоже будет больше ячеек расходоваться ? Но мне так, как знакомым с программированием, понятнее.
@ПЛИСоводство
@ПЛИСоводство 3 жыл бұрын
@@putman77 Тут, как бы, повествование идёт последовательно, от низкого до высокого уровня абстракции, на условиях будет в §4. И если делать условиями, то логики будет тратится не больше чем если так.
@putman77
@putman77 3 жыл бұрын
@@ПЛИСоводство спасибо, обязательно просмотрю все Ваши ролики. Хочу сделать на ПЛИС майнер, как это ни смешно с моей стороны звучит.
@ПЛИСоводство
@ПЛИСоводство 3 жыл бұрын
@@putman77 Ну вообще делают, тут главное в алгоритмах разобраться и TCP/IP наладить.
Verilog - Язык Проектирования Схем §3
2:25:40
ПЛИСоводство
Рет қаралды 6 М.
Verilog - Язык Проектирования Схем §0
37:24
ПЛИСоводство
Рет қаралды 33 М.
An Unknown Ending💪
00:49
ISSEI / いっせい
Рет қаралды 50 МЛН
He bought this so I can drive too🥹😭 #tiktok #elsarca
00:22
Elsa Arca
Рет қаралды 60 МЛН
大家都拉出了什么#小丑 #shorts
00:35
好人小丑
Рет қаралды 96 МЛН
Как написать "Hello World!" на ассембли
53:58
БоркаБорик
Рет қаралды 7 М.
Verilog - Язык Проектирования Схем §1
1:19:06
ПЛИСоводство
Рет қаралды 17 М.
Кто и почему убивает Фронтенд?
20:40
Миша Ларченко
Рет қаралды 24 М.
1. ПЛИС (FPGA) Введение
15:20
Страничка инженера
Рет қаралды 49 М.
FPGA (ПЛИС) - подключаем кнопку
29:01
ПЛИСоводство
Рет қаралды 10 М.
OLD CRT MONITORS ARE BETTER THAN LCD MONITORS AND HERE'S WHY...
15:00
Макс Спот
Рет қаралды 107 М.