Jump to content

    

Aleksei_Rostov

Свой
  • Content Count

    311
  • Joined

  • Last visited

Everything posted by Aleksei_Rostov


  1. Приходит кадр из 720 строк, за длительность кадра необходимо выдать подряд 360 строк. Причем 360-ую строку буду формировать во время прихода 719 и 720. То есть в любом случае необходимо копить линии, т.к. нельзя выдать одну линию, следующую не выдавать (сигналы hsync и valid бланкированы). VESA стандарт pdf VESA_standart.pdf
  2. Сигнал valid в HDMI в течении линии будет прерываться, если я правильно понял. То есть записали в buf3 данные рассчитали первый выходной пиксель, как сумму четного, нечетного пикселя 1-ой и 2-ой строки, деленную на 4. Ждем пока запишется в buf3 четный пиксель второй строки, рассчитываем второй выходной пиксель. Когда ожидаем в сигнале valid разрыв. Кадр не отобразится на мониторе.
  3. Вывод это я для себя сделал) Если на две пришедшие выходит одна, то бланкирование через линию неизбежно при уменьшении в два раза, в этом случае монитор кадры не воспринимает.
  4. Данное усреднение или прореживание актуально только по горизонтальной развертке, тогда действительно пару буферов на 640 точек будет достаточно. Но как быть с вертикальной разверткой? Просто бланкировать каждую вторую линию для получения 360-ти линий не получится: зона active pixels должна быть без пропусков.
  5. У меня задача попроще чем у ТС. Входной поток 1280х720 60 Гц (74.25 МГц пиксельклок). Необходимо масштабировать с коэффициентом равным 2, т.е. получить 640х360 разрешение. При этом алгоритм использует только внутреннюю память ПЛИС, т.е. места для хранения всего кадра нет. Решение вижу следующее: 1. Генерировать пиксельклок ниже чем 74.25 (при этом как прочитал выше значение частоты выбирается согласно стандарта VESA), использовать буферизацию только по одной линии и расставлять согласно стандарта vsync, hsync со своими back\front porch'ами и длительностями. При этом в буфер записывать каждый второй пиксель. Кто нибудь реализовывал аналогичным способом или есть другой вариант? Собрал свой источник видеосигнала 1280х720 60 Гц, уменьшал зону active pixel в несколько раз, монитор кадры отображает. Если в зоне active pixel бланкировать через линию и в линии через пиксель (для масштабирования на 2), то монитор не отображает видео кадр. Отсюда вывод: зона active pixel должна быть без разрывов.
  6. Решаю аналогичную задачу, только интерфейс HDMI. Действительно porch можно менять в определенных пределах. Масштабирование получилось только если выдавать синхросигналы все на своих местах (кроме datavalid), изменять только datavalid сигнал, причем сначала необходимо выдавать все активные пиксели. Можно поподробней про "отскалируйте". Как я понимаю делаем следующее: прореживаем каждую линию видео кадра, буферизируем полученный масштабированный кадр и выдаем его на экран 800х600. А если необходимо обойтись без внешней памяти для буферизации? менять пиксельклок?
  7. Большое спасибо! Сегодня только рассуждали, как видеокарта определяет наличие монитора. Данные сигналы заведены в ПЛИС на hdmi mojo shield
  8. HPD это сигнал для микросхемы типа ADV7513, мне на вход ПЛИС TMDS сигналы и i2c приходят на прямую.
  9. 1. Работаю со Spartan 6. 2. LVDS буфер (вообще использую готовую приставку HDMI https://embeddedmicro.com/products/hdmi-shield) 3. Для синхронизации во входных сериализованных данных вылавливаю Video Guardband (два пикселя длительноситью) Замкнул i2c монитора и видеокарты, побежал клок и сигналы с карты. Rom для EDID с i2c слейвом придется все равно реализовывать. На гитхабе есть вот такой проект https://github.com/tmatsuya/i2c_edid/blob/m.../rtl/i2c_edid.v
  10. То есть помимо TMDS с десериализатором в приемнике должен быть реализован I2C слейв, через который видеокарта вычитывает информацию о мониторе? После этого карта генерирует соответствующий пиксельклок и параллельные видеоданные.
  11. Можно поподробней? Речь идет о параметрах монитора, настраиваемых в ПК или самом мониторе?
  12. Добрый день! Поделитесь опытом, кто работал с hdmi на ПЛИС. Сделал свой HDMI передатчик на 720p 74.25 MHz. Подключаю к монитору, наблюдаю кадры, которые формирую с заданным разрешением. Сделал свой HDMI приемник на 720p 74.25 MHz. На вход подключил выход своего передатчика. Chipscope вылавливаю данные, которые отправляю. Подаю на вход приемника выход видеокарты компьютера, при этом разрешение экрана задаю 720p. Выловить данные не могу (даже пиксельклока нет). Вопрос: видеокарта генерирует пиксельклок постоянной частоты (максимальной), независимо от выставляемого разрешения экрана? В качестве источника видеосигнала могу использовать HDMI transmiter с MAX 10 Development kit. HDMI выполнен на микросхеме ADV7513. Кто нибудь запускал данную микросхему? Генерирую видеоданные параллельной шиной (hsync, vsync, de, rgb[23:0]) но видео сигнала на выходе HDMI нет. Там еще I2C интерфейс для конфигурирования контрольных регистров. Может есть у кого готовый паттерн по I2C для запуска микросхемы? Интересует 480p или 720p для RGB.
  13. Жизненный опыт собственный и опыт друзей\знакомых показал, что учишься по одной специальности, а работаешь все равно по другой. Если у парня склонность к математике, технике, воображение развито, то только вперед! Не понравится, всегда можно перестроиться позже к тому, что более нравится (экономика, финансы и тд). А в плане востребованности специалистов переживать не стоит: люди с руками и головой нужны всегда! Если человек специалист в одной области (экономика, радиотехника, математика) и плюс программист, то точно без хлеба не останется.
  14. Листаю этот же документ. Проблема в том, что в единицу не возвращается. Прошиться получилось! В чем причина так и не понял. Возможно где то присутствовал плохой контакт.
  15. Питание на месте и при загрузке не меняет своего значения (в том числе и питание второго банка, на котором находится пин DONE). Во время прошивки пин переходит в состояние логического нуля из единицы. Пин DONE bidirectional, внешних устройств, влияющих на него по идее нет. Пин выведен через транзистор на светодиоид. Пытаюсь разобраться не держит ли микроконтроллер на плате данный пин .
  16. Скорость снижал, Done параллельно заведен на светодиод, к земле не притянут (на плате есть возможность сконфигурировать через Atmega контроллер, при данном способе конфигурации сигнал Done срабатывает), качество клока не смотрел, т.к. device ID, device Signature через impact читаются. Настройки в Generate programming File САПР менял на Done high, unused pins pull up, clock JTAG clock и тд. Без результатов.
  17. Добрый день! Подскажите пожалуйста, кто какие решения применял для прошивки .bit в Spartan 6 через IMPACT + Platform Cable USB II при возникновении ошибки '1': Programming terminated. DONE did not go high. Полный лог IMPACT PROGRESS_START - Starting Operation. Maximum TCK operating frequency for this device chain: 25000000. Validating chain... Boundary-scan chain validated successfully. '1': Programming device... LCK_cycle = NoWait. LCK cycle: NoWait done. '1': Reading status register contents... [0] CRC ERROR : 0 [1] IDCODE ERROR : 0 [2] DCM LOCK STATUS : 0 [3] GTS_CFG_B STATUS : 0 [4] GWE STATUS : 0 [5] GHIGH STATUS : 0 [6] DECRYPTION ERROR : 0 [7] DECRYPTOR ENABLE : 0 [8] HSWAPEN PIN : 0 [9] MODE PIN M[0] : 0 [10] MODE PIN M[1] : 0 [11] RESERVED : 0 [12] INIT_B PIN : 0 [13] DONE PIN : 0 [14] SUSPEND STATUS : 0 [15] FALLBACK STATUS : 0 INFO:iMPACT:2219 - Status register values: INFO:iMPACT - 0000 0000 0000 0000 INFO:iMPACT:579 - '1': Completed downloading bit file to device. INFO:iMPACT:188 - '1': Programming completed successfully. LCK_cycle = NoWait. LCK cycle: NoWait INFO:iMPACT - '1': Checking done pin....done. '1': Programming terminated. DONE did not go high. PROGRESS_END - End Operation. Elapsed time = 2 sec. Отладочная плата Mojo Spartan 6 https://embeddedmicro.com/products/mojo-v3 При этом Get deviceID и Get device Signature выполняются без проблем.
  18. На мой взгляд каждый специалист проходит подобный путь. В диалектике определен только такой путь перехода количественного в качественное, другими словами, заложить фундамент на профессиональное будущее. А вот потом начинается самое интересное: применение накопленных знаний для самореализации.
  19. Спасибо! уже догадался: команды из GUI для tcl, когда импортируем файлы без копирования!
  20. Хорошо, перенес я например исходники в папку project_1/verilog, в скрипте указал, что исходники находятся в данной папке, после запуска скрипта получил проект со скопированными исходниками в папке project_1.src. В процессе работы начинаются правки исходников в папке project_1.src. Делаю commit текущих исходников, в репозитории они сохранятся в project_1/project_1.src. Потом при клонировании репозитория необходимо будет опять переносить исходники в папку project_1/verilog, запускать скрипт для создания проекта. Можно ли обойтись без данных манипуляций с переносом в папку project_1/verilog?
  21. Хотелось бы: 1. Получить из репозитория в локальную папку example_1v файлы : project_1/project_1.src/... и write_prj.tcl. 2. Запустить write_prj.tcl и получить готовый проект в каталоге project_1 со всеми остальными папками .src, .sim и т.д., и подхваченными исходниками без лишних манипуляций с файлами исходниками. По первому пункту вопросов нет, по второму - требуются дополнительные манипуляции с файлами исходниками в tcl файле и локальной папке example_1v.
  22. Использую tcl в системе контроля версий для сборки проекта из исходников репозитория, скопированных в локальную папку. В локальную папку из репозитория залил write_project.tcl файл, полученный из vivado, и набор исходников в папке .../project_1/project_1.src/source_1/new/ Запуск tcl скрипта должен привести к сборке проекта с исходниками в папке project_1/project_1.src/source_1/new/ Но после запуска появляется ошибка ERROR: [Common 17-53] User Exception: Project already exists on disk, please use '-force' option to overwrite: D:/example_1v/project_1/project_1.srcs если добавлю -force, то папка project_1/project_1.src/source_1/new/ с исходниками удаляется. В скрипте добавление файлов прописано # Set 'sources_1' fileset object set obj [get_filesets sources_1] set files [list \ "[file normalize "$origin_dir/project_1/project_1.srcs/sources_1/new/BRAM_Memory_24x24.v"]"\ "[file normalize "$origin_dir/project_1/project_1.srcs/sources_1/new/kernel_3x3.v"]"\ ] add_files -norecurse -fileset $obj $files Если исходники вынесу по адресу $origin_dir/project_1.srcs/sources_1/new/ , т.е. за пределы папки project_1 и отредактирую пути в скрипте, то новым проектом файлы подхватываются, но каталог project_1.srcs будет находится за пределами папки project_1. Как отредактировать tcl файл, чтобы происходила сборка проекта в требуемом каталоге с исходниками на своих местах? tcl файл прилагаю. write.rar
  23. Вероятно проще поставить драйвер usb-uart для com порта, чем под jtag, если я вас правильно понял. То есть вы используете jtag для информационного обмена ПК-плата? Как FIFO позволяет увеличить скорость, это же просто буфер?
  24. Добрый день! Кто использует при разработке на FPGA tcl скрипты, поделитесь пожалуйста опытом, какие преимущества можно получить за счет использования tcl. Пока обнаружил только преимущество перед gui в виде автоматизации при переносе проектов с одного кристалла на другой. Если можно конкретные примеры.