Jump to content

    

Flip-fl0p

Свой
  • Content Count

    895
  • Joined

  • Last visited

Everything posted by Flip-fl0p


  1. А почему если не секрет ? Поделитесь опытом
  2. Асинхронное шамантсво - это уже удар ниже пояса Тогда уж проще защелкнуть фронтом nWRx, с прибитием гвоздями триггеров-приемников, и переносом данных в домен FCLK.
  3. Частотой FCLK Вы никак надежно не словите сигналы, порожденные в домене SCLK. А поскольку Вам в ПЛИС недоступна частота SCLK, и из частоты FCLK Вы никак не можете получить более высокую, то вообще плохо. Не проще ли поставить более быстрый генератор на плату ?
  4. Таков удел разработчиков - читать документацию.
  5. Ну да, в любом описалове на динамическую память это написано. И применение готовых ip ядер контроллеров памяти, не освобождает о чтения описалова на память.
  6. Я так же не говорил, что у Вас рабочий синхрогенератор.... Я не проверял работоспособность Вашего кода, это Вы уже как-нибудь сами. Менять генератор или нет - решать Вам. Вот только как Вы в текущей реализации планирует отобразить память на пиксели ?
  7. Ну у меня это "промежуточный" вариант синхрогененарота. В релизном проекте у меня в реальном времени возможна смена разрешения на любое в диапазоне от 640*480 до 1650:1200. Плюс там куча специфических фич для подстроек и синхронизации между несколькими каналами видео потока и пр. нюансы. Вот там такой подход экономит ресурсы ибо у меня отсутствуют какие-либо вычисления таймингов, и для выбора нужного разрешения мне достаточно из ROM памяти загрузить новые тайминги VESA. Да и у меня обычно не стоит вопрос по экономии ресурсов, поэтому пишу чтобы было проще и быстрее на отладке и проще в дальнейшем сопровождении кода. Тут скорее пример, как альтернативно можно написать синхрогенератор, быстро его отладить, и при этом получить пару счетчиков, показывающих текущие координаты пикселя. Сейчас у меня счётчик считает от 799 до 0, а переделать наоборот - делов на 5 минут. В любом варианте выбор сейчас за автором.
  8. У signal tap есть одно поганое свойство: он может сигналы интвертировать, если ему будет так удобнее разложить проект по кристаллу. Хотите быстро и правильно: берете modelsim, берете модель памяти. И гоняете это дело, пока моделирование не даст положительный результат.
  9. Вот пример как я это делаю. В моей текущей реализации сделано через вычитающий счетчик (ибо в моем проекте мне не нужно было получать координаты отрисовываемой области) но переделать под нужный вариант - делов на 5 минут. Вот как можно сделать генератор HS сигнала без всяких вычислений типа: HVisible_area + HFront_porch + HSync_pulse + HBack_porch Эти вычисления - зло. HS_FSM.vhd
  10. А я разве говорил что у Вас где-то ошибки ? Я говорил совершенно про другое. Я говорил про разработку модуля таким образом, чтобы этот модуль был удобен для дальнейшего применения. Советую ещё раз прочитать что я Вам писал. А синхрогенератор у Вас самый простой. Только он как неуловимый Джо - нафиг никому не нужный. Приеду домой - могу скинуть пример, правда на VHDL, и он чуть-чуть не тот, который был бы Вам удобен. Но Вы увидите саму концепцию, и сделать нужное Вам - не должно составить труда.
  11. Для начала сделайте нормальный синхрогенератор. Например строб горизонтальной синхронизации можно формировать так: Ждем время back porch --> отрисовываем видимую область --> ждем время front_porch_st --> выдаем импульс горизонтальной синхронизации --> Ждем время back porch... И.Т.Д Описывается все это простейшим автоматом и одним счетчиком. Так вот в чем фича такого подхода: у меня так сделано, что время проведенное в каждом состоянии отсчитывается одним и тем же загружаемым счетчиком. И например при разрешении 800х600 у меня в состоянии отрисовки видимой области счетчик считает от 799 до 0. Итого я всегда имею счтчик, который мне показывает текущую координату пикселя. Аналогично сделано и для вертикальной синхронизации. Имея имея набор двух счетчиков я всегда имею координаты отрисовываемого пикселя. Ну а вывести из памяти картинку по нужным координатам - вообще становится простейшей задачей. Сейчас же у Вас может быть сделан и рабочий синхрогенератор. Но абсолютно неудобный для работы. От этого и все проблемы. P.S. Более того, имея такой подход я имею возможность в любое время переключиться на то разрешение, которое мне нужно. Правда PLL реконфигурить надо, но это уже другая задача
  12. Используйте вместо типа std_logic_vecor тип bit_vector
  13. Так может надо не подстраиваться под чужие проекты, а свой проект написать ? И Вы моделирование запускали ?
  14. А Вы знаете в чем разница между variable и signal ?
  15. Понадобился мне в проекте декодер 8b/10b. Но я почему-то не наблюдаю его в IP каталоге. Неужели в 2019 году уже никому не нужна кодировка 8/10 и за ненадобностью в Vivado выкинули это ядро ? Подскажите, а где искать ядро декодера ?
  16. Спасибо ! Вроде нашёл где сайта Xilinx скачать ядро декодера. Странно, что во многих IP используется этот декодер, а как отдельное ядро он отсутствует. Буду разбираться, как запустить скачанное с сайта ядро.
  17. Ваша картинка с телефона открывается в ужасающей низком качестве. Разобрать, что там написано невозможно.
  18. Ну так нужен протокол общения. Вот и делайте его.
  19. Не работать со схемный вводом. Что у Altera, что у Xilinx - схемный ввод порождает больше проблем, чем ускоряет разработку.
  20. Смотреть надо на код и очень внимательно. Ткнул я в Ваши файлы. и слегка СИЛЬНО ! ужаснулся. Например модуль timer8bit - это же тихий ужас. Работа по двум фронтам. Да ещё из разных always блоков с одним регистром... С модулем timer16bit ситуация та-же. Сделайте правильно один таймер, и меняйте его коэффициент пересчета при помощи параметров. Бегло просмотрел другие модули - там тоже жуть жуткая. Мало того ,что код абсолютно не читаемый. Комментариев нет. Форматирования нет. Так ещё по стилю похоже что Вы пытаетесь писать на HDL также как и в программировании. Такой подход с FPGA не пройдет. if(cnt_g == st_param + k_param + a_param + c_param + d_param + (e_param - b_param)) Я даже представить боюсь во что такое будет синтезироваться. Учитывая, что почти все сигналы формируются в разных доменах, да ещё и по разным фронтам.... Извините меня, мне конечно ещё самому учиться и учиться. Но я бы за такой код бил по рукам сильно ругал сотрудника
  21. Для начала вопрос. Что такое обратный код ? После ответа на это вопрос частный случай Вашей задачи ищется первой же ссылкой в гугле. А если немного постараться - то этот частный случай легко переделывается в решение Вашей задачи. Во всяком случая я исхожу из того, что изображено на Вашем рисунке . Хотя лично мне кажется, что на рисунке какое-то уж простое задание....
  22. А шо это за такой супер-секретный код, который не работает, а мы аки Настрадамусы угадать пытаемся где заковыка ? Может лучше выложить этот код сюда, тогда и сразу конструктивный диалог состоится...
  23. Стесняюсь спросить, а Вы моделировали Ваш код ?
  24. И у альтеры. Называется show ahead FIFO.
  25. А почему так лучше не делать. Лично я бы делал так: 1. Синхронизировал все сигналы SPI с внутренней частотой ПЛИС. 2. В случае если SPI медленный - поставил бы простейший антидребезг, чтобы исключить влияние пологих фронтов сигналов SPI. 3. Поставил бы детекторы фронтов на сигналы SPI. 4. Вся схема работала бы на внутренней частоте ПЛИС, а вся обработка бы велась событийно - по детектированным фронтам SPI. Если можно как-то иначе работать - расскажите пожалуйста, всегда интересно узнавать что-то альтернативное.