FPGA (ПЛИС) - подключаем LCD-дисплей Часть 1/2

Поделиться
HTML-код
  • Опубликовано: 17 окт 2024

Комментарии • 64

  • @motoday3580
    @motoday3580 4 года назад +2

    Продолжайтеи...уроки по плис .. пожалуйста !!!! Делайте уроки с различной переферией ...

  • @коментатор-н1г
    @коментатор-н1г 4 года назад

    скажите, а lcd индикатор этот нужно к ножкам плис через токоограничивающие резисторы подключать? или можно без них, как бы у меня отладочная плата и гнездо для индикатора, но резисторов там нет

    • @ПЛИСоводство
      @ПЛИСоводство  4 года назад

      Принципиальная схема показана на 2:20, резисторы есть только на подсветке и регулировке яркости, на сигнальных цепях они не требуются. Для собственного успокоения можно, конечно, подключить и через какие-нибудь низкоомные резисторы, но у ПЛИС есть своё ограничение по току на выводах.

    • @коментатор-н1г
      @коментатор-н1г 4 года назад

      @@ПЛИСоводство спасибо, а такой еще вопросик, подключаю несколько кнопок к ножкам плиса которые также не имеют подтяжки, есть ли такие настройки которые позволяют подтягивать "ИСПОЛЬЗУЕМЫЕ" ножки к плюсу или к минусу? если нету такой опции то как вариант может подойти подтяжка константой 1'h1; или элементом -И- ? т.е представить что вместо резистора снаружи я дописываю в модуль елемент -И- со входами по "1" который подключаю выходом к INPUT внутри модуля для кнопки и он дает постоянный плюс на INPUT, а кнопка с наружи прижимает потенциал к земле при нажатии.

    • @ПЛИСоводство
      @ПЛИСоводство  4 года назад

      @@коментатор-н1г У плисин есть встроенные подтяжки. Если мне не изменяет память, делается это через выставление опций в пинпланере, сейчас у меня нет доступа до Квартуса, так что точнее сказать не могу. Но такими методами как у Вас действовать не получится, компилятор просто не позволит подать выход элемента И на вход, или, скажем, соединить выходы двух элементов вместе, т.к. в архитектуре ПЛИС такого не заложено.
      В общем посмотрите что там есть в PinPlaner-e.

  • @Dima21272
    @Dima21272 4 года назад

    Здравствуйте! Jack0v. Не могли бы вы помочь? Есть пару вопросов по Fpga... Можно как-то с вами связаться?

    • @ПЛИСоводство
      @ПЛИСоводство  4 года назад

      Спрашивайте смело.

    • @Dima21272
      @Dima21272 4 года назад

      @@ПЛИСоводство вы в контакте есть?

    • @ПЛИСоводство
      @ПЛИСоводство  4 года назад

      @@Dima21272 Вопрос в чём, кратко? Помочь с курсовиком/дипломом? Извините, но на это нет времени.

    • @Dima21272
      @Dima21272 4 года назад

      @@ПЛИСоводство, не курсовая...)) У меня такая ситуация, предложили сходить в компанию на собеседование связанную с SystemVerilog, верификацией UVM... Сам не был связан с этими вещами... Но хочу подготовиться.. Вот нашёл ваши видео, изучаю. Хочу сказать очень даже познавательные. Скачал книгу Цифровая схемотехника и архитектура компьютера второе издание Дэвид М. Харрис и Сара Л. Харрис. Может что-нибудь подскажите ??? В каком направление двигаться..
      Хотелось бы с вами пообщаться, если вы не против вот мой адрес: vk.com/id12641716

    • @ПЛИСоводство
      @ПЛИСоводство  4 года назад

      @@Dima21272 Сложно сказать... Я сам с SystemVerilog не очень, а про UVM только что-то мельком слышал.
      Из книг по Verilog-у могу посоветовать:
      Основы языка проектирования цифровой аппаратуры Verilog - Соловьёв
      Проектирование и верификация цифровых систем на кристаллах. Verilog & System Verilog - Хаханов
      Логическое проектирование и верификация систем на SystemVerilog - Дональ Томас, но в сети я её найти не смог.

  • @ИгорьБрыков-з4с
    @ИгорьБрыков-з4с 3 года назад

    Здравствуйте. Не могу разобраться как строится алгоритм работы дисплея и как писать файл lcdcd.v. подскажите, если не трудно что почитать/посмотреть чтоб понять

    • @ИгорьБрыков-з4с
      @ИгорьБрыков-з4с 3 года назад

      И ещё, какого типа регистр используете для хранения инструкций? С входами l0-l5, d0-d5 и выходом q. Заранее извиняюсь если это было в предыдущих видео, пока не со всеми материалами ознакомился

    • @ПЛИСоводство
      @ПЛИСоводство  3 года назад +1

      @@ИгорьБрыков-з4с Не совсем понятен вопрос по поводу типа регистра. Это обычный регистр хранения с параллельной загрузкой и параллельным чтением, особенность только в том что каналов для загрузки шесть штук. Или интересует номер интегральной микросхемы с аналогичными функциями? Такой нет.
      Алгоритм работы дисплея исполняет управляющее устройство, оно же управляющий автомат, оно же конечный автомат. По конечным автоматам в сети информации много, только, по большей части, сухая теория из которой непонятен смысл происходящего. Если кратко, то сначала рисуется алгоритм работы автомата, его можно нарисовать в виде графа (кружочки со стрелочками), можно в виде блок-схемы (как в видео), далее уже по имеющемуся алгоритму либо вручную составляется таблица переходов и выходов с последующим построением по ней схемы, либо пишется код на HDL-языке, например на Верилоге.
      Если интересуют подробности по автоматам, то могу порекомендовать посмотреть мои лекции, начиная с 17 и далее
      ruclips.net/p/PL4UMfOeGYsvZs-gvs0dC8oO3HXrmGC1bm
      Как написать код автомата на Верилоге смотреть тут начиная с 2:00:40
      ruclips.net/video/2w6DJIATTa4/видео.html

    • @ИгорьБрыков-з4с
      @ИгорьБрыков-з4с 3 года назад

      @@ПЛИСоводство я примерно уловил для чего он нужен, но мне больше по душе мультиплексоры, попробую через него решить. Ещё у меня немного другой дисплей (типа 12864) но в целом он на тех же принципах работает. К моей плате шёл пример от китайцев, он как то непонятно описан, видимо тоже автомат используется. Решил написать свой вариант модуля и наткнулся на ваши видео. Спасибо за развёрнутый ответ

    • @ПЛИСоводство
      @ПЛИСоводство  3 года назад

      @@ИгорьБрыков-з4с 12864 у меня тоже есть, настанет время и про него видос сделаю.
      Удачи в освоении.

    • @ИгорьБрыков-з4с
      @ИгорьБрыков-з4с 3 года назад

      @@ПЛИСоводство а если рассмотреть задачу выводить не символы а картинку, то нужно будет передавать картинку в память cgram по типу как самодельные символы? А поскольку cgram ограничена по объёму то нужно будет картинку разбивать на части и грузить на экран порционно? Я в верном направлении мыслю, или есть более простой способ, как считаете?

  • @None-sh9sw
    @None-sh9sw 4 года назад

    Сенсей вернулся!

    • @ПЛИСоводство
      @ПЛИСоводство  4 года назад

      Раз в три месяца видос. Чаще пока не получается, увы.

    • @None-sh9sw
      @None-sh9sw 4 года назад

      @@ПЛИСоводство А вот и вопросы..
      Как сделать подобие стека и "подпрограмм" и как работать с двунаправленными шинами?
      Условный пример (обрезан по максимуму, с кучей нарушений, команда с аргументами будет браться из сдвигового регистра):
      module NAND_CIV
      ( inout reg [7:0] NAND_DATA,
      input wire CLK,
      output reg ALE,CLE,CE1,RE,WE);
      reg [7:0] state_reg, next_state, tmp_state, tmp_nand;
      parameter Idle = 0, wr_cmd_1 = 1, wr_cmd_2 = 2, wr_cmd_3 = 3, wr_adr_1 = 4, wr_adr_2 = 5, wr_adr_3 = 6, rd_id_0 = 10;
      initial state_reg

    • @ПЛИСоводство
      @ПЛИСоводство  4 года назад

      @@None-sh9sw Не уловил сути, но по поводу возникновения защёлок могу сказать, что причина их возникновения - не до конца прописанные значения на всех переходах условия. Например в ветке "wr_cmd_1" tmp_state не определён, и компилятор пытается хранить предыдущее состояние, а так как tmp_state это не регистр а выход комбинационной схемы (ибо always @*) то он и реализует запоминание на защёлках. Вообще от защёлок в комбинационных схемах надо избавляться, а если нужно запоминание то его надо создавать на регистрах (always @(posedge Clk)).
      По поводу двунаправленной шины - да, assign = ( ? : {WIDTH{1'bz}}); так обычно и делают. Порт объявляется как
      inout ;
      Ну да, в Квартусе довольно интересно симулятор показывает двунаправленные шины. Отдельно показывает что выдаётся на шину по каждому источнику, и отдельно показывает итоговое состояние шины (если правильно помню).

    • @None-sh9sw
      @None-sh9sw 4 года назад

      @@ПЛИСоводство Нашлась статья habr.com/ru/post/347928/ где подглядел интересный вариант с одним always.
      Получился такой черновик с одним always yadi.sk/d/pMs5LMikn3aH1Q , где можно менять только один сигнал без образования кучи защелок.
      Получилось что-то типа конечного автомата внутри конечного автомата.
      (Прошлый код проверял в железе - работает, в Hi-Z линии переходят, нужные последовательности создает, ответ смотрится через логический анализатор.)
      "так как tmp_state это не регистр а выход комбинационной схемы (ибо always @*)"
      Как их отличать? Любое присвоение внутри "always @*" и получаю выход комбинационной схемы и при попытке еще раз присвоить в другом месте получу защелки?
      "если нужно запоминание то его надо создавать на регистрах (always @(posedge Clk))"
      Можно увидеть максимально короткий пример?
      Насколько порочная практика вместо "L3_REGDataY = 0;" и так далее использовать объединение в стиле {ALE,CLE,CE1,RE,WE}

    • @ПЛИСоводство
      @ПЛИСоводство  4 года назад

      ​@@None-sh9sw Странная статья, дело не в количестве always-ов, а в том какая схема получится после компиляции.
      Да тем и отличается, если always-блок объявлен как always @*, то это комбинационная схема, и все переменные в ней - это выходы комбинационной логики. А если always-блок объявлен как always @(posedge Clk), то это уже регистры. И вот для регистров необязательно прописывать значения на всех ветках условия, регистр умеет хранить своё значение по умолчанию, это его свойство, в отличии от комб. схем.
      "и при попытке еще раз присвоить в другом месте получу защелки?"
      Наоборот, если не присвоить значение комб. схеме НЕ на всех ветках условия, то компилятор попытается сохранить прошлое значение путём установления защёлок. Этого надо избегать, и присваивать значения на ВСЕХ ветках условия.
      "Можно увидеть максимально короткий пример?"
      Об автоматах коротко, к сожалению, не получается. Первый этап - надо понять принцип работы автомата, чем отличается автомат Мили от Мура, их свойства и прочее. Второй этап - научится кодировать автоматы в Верилоге. Второе без первого смысла не имеет. Как создаются автоматы в Верилоге можно посмотреть здесь (с таим-кодом):
      ruclips.net/video/2w6DJIATTa4/видео.html
      А вот теорию автоматов рассматривали в курсе по цифровой схемотехнике, начиная с 17-ой лекции. Но, я так понимаю, его никто не смотрит, видимо из-за того что долго и нудно. Может попозже сделаю видос по автоматам где попробую изложить суть покомпактнее.
      "Насколько порочная практика вместо "L3_REGDataY = 0;" и так далее использовать объединение в стиле {ALE,CLE,CE1,RE,WE}

  • @sovchem1275
    @sovchem1275 4 года назад

    Ой, а я вроде хде то его уже видел, этот 1620 ?! :))) Правда он у меня выводил : I HEAT PUTLER !, I HEAT CHUBAIS ! :))))

  • @bablon1981
    @bablon1981 Год назад +2

    конечно классно обьясняете,но чёрный фон это жесть просто хоть глаз выколи особенно синие и красные символы как в анекдоте негры ночью воруют уголь

    • @ПЛИСоводство
      @ПЛИСоводство  Год назад +1

      Да, с телефона такое смотреть плохо.

    • @bablon1981
      @bablon1981 Год назад

      @@ПЛИСоводство моник 22 дюйма смотрю почти в упор зрение 100%

    • @bablon1981
      @bablon1981 Год назад

      @@ПЛИСоводство посмотрите любую схему или даташит везде белый фон ,пожалуйста возьмите это за правило

    • @ПЛИСоводство
      @ПЛИСоводство  Год назад +1

      @@bablon1981 В этом нет стиля.

    • @phenomx653
      @phenomx653 Год назад

      я на 27 дюймовом смотрю, мне не мешает)

  • @ЭндиДюфрейн-ь3я
    @ЭндиДюфрейн-ь3я 2 года назад

    Здравствуйте! Всё интересно, но не читабельно, после СИ сплошная каша, нет Вы молодец! только контингент у нас разный и код не все могут понять.

    • @ПЛИСоводство
      @ПЛИСоводство  2 года назад +1

      Для того чтобы понять код есть отдельный курс по Verilog-у
      ruclips.net/p/PL4UMfOeGYsvblwrP3VYKHq11xgkxVqoUj

  • @Илья-г9п3з
    @Илья-г9п3з Год назад

    если в даташите указанно питание 5 вольт, значит надо подавать 5 вольт и даталинии тоже 5 вольт. помню два вечера потерял, не было инициализации, а аак только 5 вольт подал, сразу все взлетело.

    • @ПЛИСоводство
      @ПЛИСоводство  Год назад

      Хочешь сказать мне просто повезло?

    • @Илья-г9п3з
      @Илья-г9п3з Год назад

      @@ПЛИСоводство да.

    • @Илья-г9п3з
      @Илья-г9п3з Год назад

      @@ПЛИСоводство они бывают на 3.6 вольта вроде, но их днем с огнем не найти.

    • @ПЛИСоводство
      @ПЛИСоводство  Год назад

      ​@@Илья-г9п3з То ли в даташите каком-то прочёл, то ли ещё где-то. Не помню откуда я эту инфу взял.

  • @СергейМоскалёв-с3ь
    @СергейМоскалёв-с3ь 4 года назад

    Первый!

    • @ПЛИСоводство
      @ПЛИСоводство  4 года назад +3

      Надо же, вот теперь и у меня первонахи появились. Успех!

  • @sovchem1275
    @sovchem1275 4 года назад

    *НАРОД, а вы в курсе что он умет по человечески, как на Си писать на Verilog ?!*
    И боле того, может абсолютно понятным микроконтрольщику Си-шнику языком объяснить на примере кода что где и как !
    Я после 2ч таких комментов сразу сел и с 1ого раза прогу на плис нахерачил на 5стр!
    НО вот зачем то зрителей терроризируют низкоуровневым джихадом.. загадка :))) И не признается что можно делать ИНАЧЕ ;)

    • @ПЛИСоводство
      @ПЛИСоводство  4 года назад +1

      Потому что если делать "иначе" то не сложится правильного понимания вещей.

  • @vladimirpavlov1885
    @vladimirpavlov1885 3 года назад

    Можно было инструкции по инициализации загнать в рам файл

    • @ПЛИСоводство
      @ПЛИСоводство  3 года назад

      Можно было бы, но как-то жирно под несколько команд ОЗУ выделять.

    • @vladimirpavlov1885
      @vladimirpavlov1885 3 года назад

      @@ПЛИСоводство в комментах ко 2ой части писали похожий моему, про что-то подобное макросу, для управления управляющим устройством, код управляющего автомата мне кажется был бы не таким громоздким

    • @vladimirpavlov1885
      @vladimirpavlov1885 3 года назад

      @@ПЛИСоводство я это просто к чему: вполне вероятно можно превратить управляющий автомат в некое подобие ядра процессора

    • @ПЛИСоводство
      @ПЛИСоводство  3 года назад

      @@vladimirpavlov1885 Да как сказать... Проще скорее всего не будет. Возможно будет гибче. Хотя, с другой стороны, чем так плохо? Заполняй ОЗУ букавками, а они сами на экране высвечиваются.

    • @vladimirpavlov1885
      @vladimirpavlov1885 3 года назад

      @@ПЛИСоводство для узко специализированного назначения и так сойдёт) спасибо за хорошие ролики, удачи!

  • @Rot9711
    @Rot9711 4 года назад

    Arduino must die!
    Хотя она перешла на STM, так что ещё немного поживёт)

    • @ПЛИСоводство
      @ПЛИСоводство  4 года назад

      Интересно. Не знал...

    • @sovchem1275
      @sovchem1275 4 года назад

      @@dmitryveselov5546 Да полное кощунство и издевательство над камнем..... Хотя есть кубы и халы, куда уж проще !
      То над AVR измывались, хотя был CAVR, с кодгеном, клик клик мышкой и код, но неееет им нужно было либы в жопу диска запихать, расширение Си-файлов как и прошивки черными матюгами обозвать...., лишить пользователя отладки итп...

  • @sovchem1275
    @sovchem1275 4 года назад

    Говорю выложи ты тот, высокоуровневый, современный код в стиле Си для 1620 и ПРОКОММЕНТИРУЙ, будет толпа народу !!!
    А то ну это садизм.... Высокоуровневым языком писать низкоуровневые схемные алгоритмы.... ;/
    Круто конечно , большущая работа, с кириллицей в CGRAM, с RAM плиски!, но читаемость.... Это пиздец :( Если только либу сделать...

    • @ПЛИСоводство
      @ПЛИСоводство  4 года назад +2

      Это который, из китайского примера? Его даже показывать людям стыдно. Да и FPGA это само по себе "низкоуровневые схемы", это её природа.
      А толпы народу не будет, в принципе - вся эта тема с FPGA специфическая, а канал не раскручен.