Jump to content

    

Flip-fl0p

Свой
  • Content Count

    931
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Flip-fl0p

  • Rank
    «Я знаю, что я ничего не знаю»(С)
  • Birthday 01/03/1990

Контакты

  • Сайт
    http://
  • ICQ
    226550164

Информация

  • Город
    Санкт-Петербург

Старые поля

  • skype
    Flip-fl0p
  • Vkontakte
    https://vk.com/id4024060

Recent Profile Visitors

5013 profile views
  1. А Вам самостоятельно написать слабо ? Синхрогенератор - это 2 простейших цифровых автомата + 2 счетчика. Вот и весь синхрогенератор. Тем более у Вас есть даже готовый пример автомата, генерирующего H_sync. Вот Вам недостающий счетчик, для моделирования: P.S. Генерируйте клок 25.175 на PLL.... KAA_counter_sload.vhd P.S.S Ещё раз повторю. Пока Вы не получите положительный результат моделирования - никаких тестов в "железе".
  2. А сколько требуется по стандарту Vesa ?
  3. Ну значит у Вас правильный и рабочий теплый ламповый синхрогенератор. А во всем виновата буржуйская железяка. P.S. Только вот ПК мониторы, как правило, содержат в себе достаточно умные контроллеры, которые могут "проглотить" кривые тайминги, не соответствующие vesa.А дешёвые китайские нет... Я не понимаю Вас, Вы хотите убедить всех, что у Вас хороший код и проблема в железе ? Только вот Ваши доводы неубедительны. Могли бы давно разобраться и сделать...
  4. Верить описанию на Али экспрессе - ну не знаю, не знаю. Я верю официальным таймингам Vesa, в соответствии с которыми и должны работать все мониторы.
  5. неправильно. Изучайте что такое конечный автомат. У меня автомат, который циклически " прыгает" по состояниям. Сколько находится в том или ином состоянии определяется счётчиком, в который загружаются необходимые тайминги vesa.
  6. Задавайте вопросы. Хотя у меня код снабжен комментариями, и порой даже они слегка избыточны. Но я уже объяснял, как он работает, читайте внимательнее.
  7. Тайминги должны быть точными и соответствовать стандартам vesa. Все остальное на Ваш страх и риск. Можете попробовать сделать как меня (фактически переписать на verilog). Но главное не бездумно переписывать чужой код, главное понимать зачем было так сделано...
  8. Желаю удачи в решении Вашей задачи с таким синхрогенератором За то экономите аж 10 триггеров !
  9. Значит у Вас неправильный синхрогенератор...
  10. Не все можно отладить "визуально". Например конфликт на двунаправленной шине из-за ошибки. Что-то может и погореть... Хоть производители FPGA и пытаются на уровне софта запретить пользователям стрелять себе в ногу, однако пытливый ум инженера всегда находит способ сделать это в обход всем запретам. А между прочим существуют чипы стоимостью сопоставимой с хорошим автомобилем... Рискнули бы в такой чип зашить непроверенную схему ?
  11. я там имел ввиду другое, то что нарисовало бы букву/слово/предложение и нормально (типа светодиод заморгал и круто!)) и неважно правильно или нет, главное "рисует", а мне хочентся разобраться... По поводу значит вернусь обратно и буду проверять таким образом. я с самого начала не очень понимал (и не стал развивать это направление) для чего он конкретно нужен и тем более визуально вроде бы лучше (прошил и результат), но придётся посмотреть в эту сторону. так и есть. вот это мне как раз и непонятно, если нельзя синтезировать, то зачем моделировать?). Затем, чтобы посмотреть реакцию Вашей схемы на внешние воздействия. Приведу банальный пример. Вот написали Вы обычный счётчик. И хотите проверить его работу. Для этого Вы пишете тест, в котором создаётся тактовая частота, которая подключается к счётчику. И в программе моделирования Вы видете как у Вас счётчик считает. Применительно к синхрогенератору Вы также на вход синхрогенератора подаете виртуальную тактовую частоту и смотрите как у Вас все работает. Ну или не работает, но Вы можете увидеть причину этого. Срмуляор - один и важнейших инструментов разработчика !
  12. Стремление разобраться и научиться оно правильно и похвальное. Ибо профессионалами не рождаются, а становятся. Да что уж говорить, мне самому ещё учиться, учиться и ещё раз учиться, как завещал один известный мудрый человек. Однако за столь долгий срок только сейчас Вы сознались в том, что не владеете симулятором. А между тем, если судить по моему личному опыту, работа с симулятором у разработчика FPGA занимает большую часть времени разработки... Более того, симулятор позволяет существенно ускорить весь процесс разработки. Сейчас у Вас метод "слепого котенка": вы что-то наваяли в HDL, зашили в плату, убедились, что не работает, снова что-то наваяли. И так пока не заработает... Это тупиковый подход. Хоть бы signal tap прицепили бы к проекту, было бы больше пользы. Всё очень просто: изучайте язык на котором пишите. Языки HDL(Verilog/VHDL) условно делятся на 2 части: Синтезируемое подмножество - т.е языковые конструкции которые могут быть реализованы аппаратно. Несинтезируемое подмножество. Внутри FPGA синтезировать нельзя, однако можно написать всё-что душе угодно, в том числе и написать модель источника данных. Вот например: http://we.easyelectronics.ru/plis/testbench-na-verilog-dlya-novichkov.html Или вот: https://syssec.ethz.ch/content/dam/ethz/special-interest/infk/inst-infsec/system-security-group-dam/education/Digitaltechnik_14/14_Verilog_Testbenches.pdf Научиться писать простенькие тесты на Verilog можно за пару часов. А тест в Вашем проекте простой до безобразия: подаете сбросы, подаете клоки, имитируете нажатие кнопки. И все...
  13. А я Вам не просто так говорил сделайте синхрогенератор немного другим способом, который будет удобен для работы. Даже пример своего рабочего кода привел. Да может у меня немного он избыточен. Однако он удобен на моделировании... Вы прежде чем в железке проверять, запаситесь чаем\кофе и проверяйте в Modelsim. Проверять в железке надо когда в Modelsim все работает... Попробуйте, Вам понравится !
  14. У Вас почти все правильно нарисовано. Теперь реализуйте все блоки отдельно. Один блок - один файл. И на верхнем уровне в соответствии с Вашей структурной схемы объедините все блоки. Соответственно, как Вам уже сказали видеопамять - это двухпортовая память. С одного порта Вы читаете из неё данные и выводите на экран. А с другого порта в эту память пишет процессор (или некое устройство - "заполнитель памяти", которое формирует Вам изображение). Теперь Вы хотите, чтобы видео-память как-то заполнялась. Для этого Вы хотите запустить "заполнитель памяти" с кнопки. Для этого надо правильно обработать нажатие кнопки: 1. Перенести сигнал в рабочий домен и отфильтровать дребезг. 2. Выделить фронт Вашего старт-сигнала. Затем Вам нужен простенький автомат, который по пришествию старт-сигнала с кнопки выполнит запись в видеопамять и остановит свою работу по завершению задачи. Запись должна быть в соответствии с принятым Вами форматом данных. И не забудьте про один важный момент. Вы должны сигналы H_sync и V_sync задержать на время, равное времени доступу к памяти symbol_ROM, иначе Вы будете выводить символы не там где хотите... Я привел свой пример структурной схемы. Только у меня маленькое отличие от Вашей схемы: у меня symbol_rom это массив векторов длинной 8 бит. Соответственно у меня есть некий мультиплексор который выбирает нудный бит из вектора. Но этот момент не принципиальный (главное, чтобы Quartus Ваши одиночные вектора разложил в виде памяти, а не на регистрах) P.S. Как я понимаю Вы не моделировали поведение Вашей схемы в Modelsim ? А зря. Ваш проект можно полностью отладить на симуляторе.